use boll::*;
-use common::{Point2D, 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;
#[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
}
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() {
// 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 => {
}
_ => {
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)
}
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();
}
}
#[derive(Default)]
pub struct ActiveState {
- screen: Rect<u32>,
+ screen: Dimension<u32>,
bolls: Bollar,
boll_size: u32,
mario_angle: f64,
ActiveState {
bolls: Bollar::new(),
boll_size: 1,
- screen: Rect::from(screen),
+ screen: Dimension::from(screen),
..Default::default()
}
}