Files
VashCaster/vash_caster/src/game_state.rs
Wesley Irvin a0d244d72a Draft 01/28/2024
Draft of the code from date described above.
2024-01-28 17:09:07 -05:00

83 lines
2.2 KiB
Rust

use sdl2::pixels::Color;
use rand::prelude::*;
use crate::Point;
pub struct GameState {
player: Point,
pub p_dx: i16,
pub p_dy: i16,
pub p_rot: f32,
pub p_color: Color,
pub rng: ThreadRng,
}
impl GameState {
pub fn init() -> Self {
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),
),
rng: new_rng,
}
}
pub fn update(&mut self) {
self.player.x += self.p_dx;
if self.player.x < 0 {
self.player.x = 0;
self.p_color = Color::RGB(
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.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.y += self.p_dy;
if self.player.y < 0 {
self.player.y = 0;
self.p_color = Color::RGB(
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.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);
}
}
pub fn player(&self) -> &Point {
&self.player
}
}