X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcore%2Fapp.rs;h=808277fb0b13c222b9aee193a1e39e78465bbbdf;hb=2e679e6fb2c1a93d1cb9b6cd66d19f6239953394;hp=9298ecea3d9790dd38614af6570f6983fa9a27cc;hpb=e570927ad1703298a2c85599c7e25475c60b33d4;p=kaka%2Frust-sdl-test.git diff --git a/src/core/app.rs b/src/core/app.rs index 9298ece..808277f 100644 --- a/src/core/app.rs +++ b/src/core/app.rs @@ -1,8 +1,8 @@ use boll::*; -use common::{Point, Rect}; use core::controller::ControllerManager; use core::render::Renderer; -use point; // defined in common, but loaded from main... +use geometry::{Point, Dimension}; +use point; use rand::Rng; use sdl2::event::{Event, WindowEvent}; use sdl2::keyboard::Keycode; @@ -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() } }