1 Commits

Author SHA1 Message Date
82cc11b55a Draft 01/29/2024
Draft of the code as of the date described above.
2024-01-29 20:00:22 -05:00
4 changed files with 89 additions and 43 deletions

View File

@@ -41,10 +41,10 @@ impl Caster {
self.projection_plane.set_draw_color(Color::RGB(0, 0, 0)); self.projection_plane.set_draw_color(Color::RGB(0, 0, 0));
self.projection_plane.clear(); self.projection_plane.clear();
self.projection_plane.filled_circle( self.projection_plane.filled_circle(
gamestate.player().x, gamestate.player().position().x,
gamestate.player().y, gamestate.player().position().y,
10, 10,
gamestate.p_color, gamestate.player().get_color().to_owned(),
)?; )?;
self.projection_plane.present(); self.projection_plane.present();

View File

@@ -1,15 +1,10 @@
use sdl2::pixels::Color;
use rand::prelude::*; use rand::prelude::*;
use crate::Point; mod player;
use self::player::Player;
pub struct GameState { pub struct GameState {
player: Point, player: Player,
pub p_dx: i16,
pub p_dy: i16,
pub p_rot: f32,
pub p_color: Color,
running: bool, running: bool,
pub rng: ThreadRng, pub rng: ThreadRng,
} }
@@ -19,66 +14,61 @@ impl GameState {
let mut new_rng = rand::thread_rng(); let mut new_rng = rand::thread_rng();
Self { Self {
player: Point { player: Player::init(new_rng.gen_range(0..800), new_rng.gen_range(0..600), 0.0),
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),
),
running: true, running: true,
rng: new_rng, rng: new_rng,
} }
} }
pub fn update(&mut self) { 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 { if self.player.position().x < 0 {
self.player.x = 0; self.player.set_position(0, self.player.position().y);
self.p_color = Color::RGB( self.player.set_color(
self.rng.gen_range(0..=255), self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255), 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); self.player.set_dx(self.rng.gen_range(1..=5));
} else if self.player.x > 800 { } else if self.player.position().x > 800 {
self.player.x = 800; self.player.set_position(800, self.player.position().y);
self.p_color = Color::RGB( self.player.set_color(
self.rng.gen_range(0..=255), self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255), 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 { if self.player.position().y < 0 {
self.player.y = 0; self.player.set_position(self.player.position().x, 0);
self.p_color = Color::RGB( self.player.set_color(
self.rng.gen_range(0..=255), self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255), 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); self.player.set_dy(self.rng.gen_range(1..=5));
} else if self.player.y > 600 { } else if self.player.position().y > 600 {
self.player.y = 600; self.player.set_position(self.player.position().x, 600);
self.p_color = Color::RGB( self.player.set_color(
self.rng.gen_range(0..=255), self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255), 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 &self.player
} }

View File

@@ -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
}
}

View File

@@ -31,7 +31,7 @@ pub fn run() -> Result<(), Box<dyn Error>> {
Ok(()) Ok(())
} }
struct Point { struct Position {
x: i16, x: i16,
y: i16, y: i16,
} }