From 82cc11b55aaa534e3b69a9f025902f2156003ebc Mon Sep 17 00:00:00 2001 From: Wesley Irvin Date: Mon, 29 Jan 2024 20:00:22 -0500 Subject: [PATCH] Draft 01/29/2024 Draft of the code as of the date described above. --- vash_caster/src/caster.rs | 6 +-- vash_caster/src/game_state.rs | 68 ++++++++++++---------------- vash_caster/src/game_state/player.rs | 56 +++++++++++++++++++++++ vash_caster/src/lib.rs | 2 +- 4 files changed, 89 insertions(+), 43 deletions(-) create mode 100644 vash_caster/src/game_state/player.rs diff --git a/vash_caster/src/caster.rs b/vash_caster/src/caster.rs index bb37bcb..ed5a7fd 100644 --- a/vash_caster/src/caster.rs +++ b/vash_caster/src/caster.rs @@ -41,10 +41,10 @@ impl Caster { self.projection_plane.set_draw_color(Color::RGB(0, 0, 0)); self.projection_plane.clear(); self.projection_plane.filled_circle( - gamestate.player().x, - gamestate.player().y, + gamestate.player().position().x, + gamestate.player().position().y, 10, - gamestate.p_color, + gamestate.player().get_color().to_owned(), )?; self.projection_plane.present(); diff --git a/vash_caster/src/game_state.rs b/vash_caster/src/game_state.rs index 5495225..fb7a3ec 100644 --- a/vash_caster/src/game_state.rs +++ b/vash_caster/src/game_state.rs @@ -1,15 +1,10 @@ -use sdl2::pixels::Color; - use rand::prelude::*; -use crate::Point; +mod player; +use self::player::Player; pub struct GameState { - player: Point, - pub p_dx: i16, - pub p_dy: i16, - pub p_rot: f32, - pub p_color: Color, + player: Player, running: bool, pub rng: ThreadRng, } @@ -19,66 +14,61 @@ impl GameState { let mut new_rng = rand::thread_rng(); Self { - player: Point { - x: new_rng.gen_range(0..800), - y: new_rng.gen_range(0..600), - }, - p_dx: new_rng.gen_range(1..=5), - p_dy: new_rng.gen_range(1..=5), - p_rot: 90.0, - p_color: Color::RGB( - new_rng.gen_range(0..=255), - new_rng.gen_range(0..=255), - new_rng.gen_range(0..=255), - ), + player: Player::init(new_rng.gen_range(0..800), new_rng.gen_range(0..600), 0.0), running: true, rng: new_rng, } } pub fn update(&mut self) { - self.player.x += self.p_dx; + self.player.set_position( + self.player.position().x + self.player.dx(), + self.player.position().y, + ); - if self.player.x < 0 { - self.player.x = 0; - self.p_color = Color::RGB( + if self.player.position().x < 0 { + self.player.set_position(0, self.player.position().y); + self.player.set_color( self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), ); - self.p_dx = self.rng.gen_range(1..=5); - } else if self.player.x > 800 { - self.player.x = 800; - self.p_color = Color::RGB( + self.player.set_dx(self.rng.gen_range(1..=5)); + } else if self.player.position().x > 800 { + self.player.set_position(800, self.player.position().y); + self.player.set_color( self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), ); - self.p_dx = self.rng.gen_range(-5..=-1); + self.player.set_dx(self.rng.gen_range(-5..=-1)); } - self.player.y += self.p_dy; + self.player.set_position( + self.player.position().x, + self.player.position().y + self.player.dy(), + ); - if self.player.y < 0 { - self.player.y = 0; - self.p_color = Color::RGB( + if self.player.position().y < 0 { + self.player.set_position(self.player.position().x, 0); + self.player.set_color( self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), ); - self.p_dy = self.rng.gen_range(1..=5); - } else if self.player.y > 600 { - self.player.y = 600; - self.p_color = Color::RGB( + self.player.set_dy(self.rng.gen_range(1..=5)); + } else if self.player.position().y > 600 { + self.player.set_position(self.player.position().x, 600); + self.player.set_color( self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), self.rng.gen_range(0..=255), ); - self.p_dy = self.rng.gen_range(-5..=-1); + self.player.set_dy(self.rng.gen_range(-5..=-1)); } } - pub fn player(&self) -> &Point { + pub fn player(&self) -> &Player { &self.player } diff --git a/vash_caster/src/game_state/player.rs b/vash_caster/src/game_state/player.rs new file mode 100644 index 0000000..600357b --- /dev/null +++ b/vash_caster/src/game_state/player.rs @@ -0,0 +1,56 @@ +use sdl2::pixels::Color; + +use crate::Position; + +pub struct Player { + pos: Position, + dx: i16, + dy: i16, + _rot: f32, + color: Color, +} + +impl Player { + pub fn init(x_pos: i16, y_pos: i16, rotation: f32) -> Self { + Self { + pos: Position { x: x_pos, y: y_pos }, + dx: 1, + dy: 1, + _rot: rotation, + color: Color::RGB(255, 0, 0), + } + } + + pub fn position(&self) -> &Position { + &self.pos + } + + pub fn get_color(&self) -> &Color { + &self.color + } + + pub fn set_position(&mut self, new_x: i16, new_y: i16) { + self.pos.x = new_x; + self.pos.y = new_y; + } + + pub fn set_color(&mut self, r: u8, g: u8, b: u8) { + self.color = Color::RGB(r, g, b); + } + + pub fn set_dx(&mut self, new_dx: i16) { + self.dx = new_dx; + } + + pub fn set_dy(&mut self, new_dy: i16) { + self.dy = new_dy; + } + + pub fn dx(&self) -> i16 { + self.dx + } + + pub fn dy(&self) -> i16 { + self.dy + } +} diff --git a/vash_caster/src/lib.rs b/vash_caster/src/lib.rs index 41e3149..4f6a708 100644 --- a/vash_caster/src/lib.rs +++ b/vash_caster/src/lib.rs @@ -31,7 +31,7 @@ pub fn run() -> Result<(), Box> { Ok(()) } -struct Point { +struct Position { x: i16, y: i16, }