X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Fgame.rs;h=6c049692b3359f95ca18189833e94edf006a3b98;hb=eb253fcc25b0af3ec7b804ea8e1b73426564883b;hp=1e657cbe1d4ed523a121aed6031af2a5d5d8ab23;hpb=afbecec4140ea0f723621bf7a14509dbbcb899ab;p=kaka%2Frust-sdl-test.git diff --git a/src/core/game.rs b/src/core/game.rs index 1e657cb..6c04969 100644 --- a/src/core/game.rs +++ b/src/core/game.rs @@ -1,5 +1,7 @@ use AppState; +use ActiveState; use common::{Point2D, Radians}; +use core::app::StateChange; use core::controller::Controller; use core::controller::ControllerManager; use core::level::Level; @@ -38,16 +40,23 @@ impl AppState for GameState { fn leave(&mut self) {} - fn update(&mut self, dt: Duration) { + fn update(&mut self, dt: Duration) -> Option { self.world.update(dt); + None } fn render(&mut self, renderer: &mut Renderer, sprites: &SpriteManager) { self.world.render(renderer, sprites); } - fn handle_event(&mut self, event: Event) { + fn handle_event(&mut self, event: Event) -> Option { match event { + Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { + return Some(StateChange::Pop) + } + Event::KeyDown { keycode: Some(Keycode::Return), .. } => { + return Some(StateChange::Push(Box::new(ActiveState::new((800, 600))))) + } Event::KeyDown { keycode: Some(Keycode::Space), .. } => { self.world.level.regenerate(); } @@ -62,6 +71,7 @@ impl AppState for GameState { } _ => {} } + None } }