// extern crate piston_window; // use piston_window::*; extern crate minifb; use minifb::{Key, Window, WindowOptions}; mod engine; use engine::Tile; const WIDTH: usize = 320; const HEIGHT: usize = 240; fn main() { let mut buffer: Vec = vec![0; WIDTH * HEIGHT]; let mut window = Window::new("Rustenstein", WIDTH, HEIGHT, WindowOptions::default()) .unwrap_or_else(|e| { panic!("{}", e); }); // Limit to max ~60 fps update rate window.limit_update_rate(Some(std::time::Duration::from_micros(16600))); let (width, height) = window.get_size(); let mut engine = engine::Engine::new(width, height); #[rustfmt::skip] 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 window.is_open() && !window.is_key_down(Key::Escape) { for i in buffer.iter_mut() { *i = 0; // write something more funny here! } // if let Some(Button::Keyboard(key)) = event.press_args() { // match key { // Key::W | Key::Up => engine.add_movement(engine::Movement::Forward), // Key::S | Key::Down => engine.add_movement(engine::Movement::Backward), // Key::A | Key::Left => engine.add_movement(engine::Movement::TurnLeft), // Key::D | Key::Right => engine.add_movement(engine::Movement::TurnRight), // _ => (), // }; // }; engine.render(&mut buffer); // if let Some(args) = event.update_args() { // engine.update(args.dt); // } // We unwrap here as we want this code to exit if it fails. // Real applications may want to handle this in a different way window.update_with_buffer(&buffer, WIDTH, HEIGHT).unwrap(); } }