X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Fapp.rs;h=f5452fdaab2f5b34c2ab6f603ccf50c01cb12171;hb=953b4c960649b82f4e186c2a9afee5367270f0fc;hp=b4d2c01aad250cb0462069ac78cf5ad0ec549e75;hpb=eb253fcc25b0af3ec7b804ea8e1b73426564883b;p=kaka%2Frust-sdl-test.git diff --git a/src/core/app.rs b/src/core/app.rs index b4d2c01..f5452fd 100644 --- a/src/core/app.rs +++ b/src/core/app.rs @@ -1,7 +1,7 @@ use boll::*; -use common::{Point2D, Rect}; use core::controller::ControllerManager; use core::render::Renderer; +use geometry::{Point, Dimension}; use point; // defined in common, but loaded from main... use rand::Rng; use sdl2::event::{Event, WindowEvent}; @@ -18,14 +18,14 @@ const NS_PER_FRAME: u32 = 1_000_000_000 / FPS; #[derive(Default)] pub struct AppBuilder { - resolution: Rect, + resolution: Dimension, state: Option>, title: Option, } impl AppBuilder { pub fn with_resolution(mut self, width: u16, height: u16) -> Self { - self.resolution = Rect { width, height }; + self.resolution = Dimension { width, height }; self } @@ -141,7 +141,7 @@ impl App { pub fn start(&mut self) { let mut last_time = Instant::now(); - self.states[0].enter(&mut self.ctrl_man); + self.states[0].enter(&self.ctrl_man); loop { if let Some(change) = self.handle_events() { @@ -171,7 +171,7 @@ impl App { // if let Some(s) = self.states.last_mut() { // s.pause(); // } - state.enter(&mut self.ctrl_man); + state.enter(&self.ctrl_man); self.states.push(state); } StateChange::Pop => { @@ -248,7 +248,9 @@ impl App { } _ => { if let Some(state) = self.states.last_mut() { - return state.handle_event(event) + if let Some(change) = state.handle_event(event) { + return Some(change); + } } else { return Some(StateChange::Exit) } @@ -260,7 +262,7 @@ impl App { fn render(&mut self) { self.renderer.clear(); - self.states.last_mut().unwrap().render(&mut self.renderer, &mut self.sprites); + self.states.last_mut().unwrap().render(&mut self.renderer, &self.sprites); self.renderer.present(); } } @@ -283,7 +285,7 @@ type Bollar = Vec>; #[derive(Default)] pub struct ActiveState { - screen: Rect, + screen: Dimension, bolls: Bollar, boll_size: u32, mario_angle: f64, @@ -294,7 +296,7 @@ impl ActiveState { ActiveState { bolls: Bollar::new(), boll_size: 1, - screen: Rect::from(screen), + screen: Dimension::from(screen), ..Default::default() } }