Compare commits
1 Commits
draft/0128
...
draft/0129
| Author | SHA1 | Date | |
|---|---|---|---|
| 82cc11b55a |
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
56
vash_caster/src/game_state/player.rs
Normal file
56
vash_caster/src/game_state/player.rs
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user