Moved geometry to root level
[kaka/rust-sdl-test.git] / src / core / app.rs
index 9298ece..f5452fd 100644 (file)
@@ -1,7 +1,7 @@
 use boll::*;
-use common::{Point, 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<u16>,
+    resolution: Dimension<u16>,
     state: Option<Box<dyn AppState>>,
     title: Option<String>,
 }
 
 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<Box<dyn Boll>>;
 
 #[derive(Default)]
 pub struct ActiveState {
-    screen: Rect<u32>,
+    screen: Dimension<u32>,
     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()
         }
     }