-use ActiveState;
+use teststate::TestState;
use AppState;
use common::{Point, Radians};
use core::app::StateChange;
use core::controller::Controller;
use core::controller::ControllerManager;
-use core::level::{Level, LevelGenerator};
+use core::level::{Level, LevelGenerator, Wall, IntersectResult::Intersection};
use core::render::Renderer;
use point;
use sdl2::event::Event;
return Some(StateChange::Pop)
}
Event::KeyDown { keycode: Some(Keycode::Return), .. } => {
- return Some(StateChange::Push(Box::new(ActiveState::new((800, 600)))))
+ return Some(StateChange::Push(Box::new(TestState::new())))
}
Event::KeyDown { keycode: Some(Keycode::Space), .. } => {
self.lvlgen.seed = std::time::UNIX_EPOCH.elapsed().unwrap().as_secs() as u32;
self.vel += lvl.gravity;
self.pos += self.vel;
- let x = (self.pos.x / lvl.grid.cell_size.width as f64).min(lvl.grid.size.width as f64 - 1.0).max(0.0) as usize;
- let y = (self.pos.y / lvl.grid.cell_size.height as f64).min(lvl.grid.size.height as f64 - 1.0).max(0.0) as usize;
- if lvl.grid.cells[x][y] {
+ if let Intersection(wall, pos) = lvl.intersect_walls(self.pos - self.vel, self.pos) {
if self.bounces == 0 {
return Dead
}
+ self.pos = pos;
self.vel *= -0.25;
self.pos += self.vel;
self.bounces -= 1;