rustenstein/src/main.rs

52 lines
1.6 KiB
Rust

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);
}
}
}