extern crate piston_window; use piston_window::*; mod engine; use engine::Tile; fn main() { let mut window: PistonWindow = WindowSettings::new("Rustenstein", [640, 480]) .exit_on_esc(true) .resizable(false) .build() .unwrap_or_else(|e| { panic!("Failed to build PistonWindow: {}", e) }); let mut engine = engine::Engine::new(window.size()); let tiles = vec![ Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Empty, Tile::Empty, Tile::Empty, Tile::Wall, Tile::Wall, Tile::Empty, Tile::Empty, Tile::Empty, Tile::Wall, Tile::Wall, Tile::Empty, Tile::Empty, Tile::Empty, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, Tile::Wall, ]; let level = engine::Level { width:5, height: 5, tiles }; engine.load_level(level); while let Some(event) = window.next() { if let Some(Button::Keyboard(key)) = event.press_args() { match key { Key::W => engine.add_movement(engine::Movement::Forward), Key::S => engine.add_movement(engine::Movement::Backward), Key::A => engine.add_movement(engine::Movement::TurnLeft), Key::D => engine.add_movement(engine::Movement::TurnRight), _ => (), }; }; window.draw_2d(&event, |context, graphics, _device| { engine.render(context, graphics); }); if let Some(args) = event.update_args() { engine.update(args.dt); } } }