rustenstein/src/main.rs

52 lines
1.6 KiB
Rust
Raw Normal View History

2017-10-01 22:13:34 +02:00
extern crate piston_window;
use piston_window::*;
2020-03-12 17:54:31 +01:00
mod engine;
use engine::Tile;
2017-10-01 22:13:34 +02:00
fn main() {
let mut window: PistonWindow =
WindowSettings::new("Rustenstein", [640, 480])
.exit_on_esc(true)
.resizable(false)
2020-03-09 18:30:06 +01:00
.build()
.unwrap_or_else(|e| { panic!("Failed to build PistonWindow: {}", e) });
2017-10-01 22:13:34 +02:00
2020-03-12 17:54:31 +01:00
let mut engine = engine::Engine::new(window.size());
let tiles = vec![
2017-10-01 22:13:34 +02:00
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,
];
2020-03-12 17:54:31 +01:00
let level = engine::Level {
width:5,
height: 5,
tiles
};
engine.load_level(level);
2017-10-01 22:13:34 +02:00
while let Some(event) = window.next() {
2020-03-31 15:14:12 +02:00
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),
_ => (),
};
};
2020-03-12 17:54:31 +01:00
window.draw_2d(&event, |context, graphics, _device| {
2017-10-22 22:22:49 +02:00
engine.render(context, graphics);
2017-10-01 22:13:34 +02:00
});
2020-03-31 15:14:12 +02:00
if let Some(args) = event.update_args() {
engine.update(args.dt);
}
2017-10-01 22:13:34 +02:00
}
}