X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Fgame.rs;h=e8893de5b6a41ae0fdd91f1679a5cc1a4b8bd6db;hb=7991463123d291446f06630ae0fe0bbe2427ad23;hp=125bd1a8cdbf267f853f774187ff1eba16ceaf0b;hpb=1f8c3018c79993d7ec07dc5622016d78e3d71f50;p=kaka%2Frust-sdl-test.git diff --git a/src/core/game.rs b/src/core/game.rs index 125bd1a..e8893de 100644 --- a/src/core/game.rs +++ b/src/core/game.rs @@ -1,10 +1,10 @@ -use AppState; use ActiveState; +use AppState; use common::{Point2D, Radians}; use core::app::StateChange; use core::controller::Controller; use core::controller::ControllerManager; -use core::level::Level; +use core::level::{Level, LevelGenerator}; use core::render::Renderer; use point; use sdl2::event::Event; @@ -21,12 +21,15 @@ use time::Duration; #[derive(Default)] pub struct GameState { world: World, + lvlgen: LevelGenerator, } impl GameState { pub fn new() -> Self { + let lvlgen = LevelGenerator::new(0, 5); GameState { - world: World::new(), + world: World::new(lvlgen.generate()), + lvlgen, } } } @@ -58,16 +61,18 @@ impl AppState for GameState { return Some(StateChange::Push(Box::new(ActiveState::new((800, 600))))) } Event::KeyDown { keycode: Some(Keycode::Space), .. } => { - self.world.level = Level::new(self.world.level.gravity); + self.lvlgen.seed = std::time::UNIX_EPOCH.elapsed().unwrap().as_secs() as u32; + self.world.level = self.lvlgen.generate(); } Event::KeyDown { keycode: Some(Keycode::KpPlus), .. } => { - self.world.level.increase_iteration(); + self.lvlgen.iterations += 1; + println!("{} iteration(s) of cellular automata", self.lvlgen.iterations); + self.world.level = self.lvlgen.generate(); } Event::KeyDown { keycode: Some(Keycode::KpMinus), .. } => { - self.world.level.decrease_iteration(); - } - Event::KeyDown { keycode: Some(Keycode::KpEnter), .. } => { - self.world.level.filter_regions(); + self.lvlgen.iterations = 1.max(self.lvlgen.iterations - 1); + println!("{} iteration(s) of cellular automata", self.lvlgen.iterations); + self.world.level = self.lvlgen.generate(); } _ => {} } @@ -84,9 +89,9 @@ pub struct World { } impl World { - pub fn new() -> Self { + pub fn new(level: Level) -> Self { World { - level: Level::new(point!(0.0, 0.1)), + level, ..Default::default() } }