1extern crate sdl2;
2
3pub mod data;
4pub mod entity;
5pub mod events;
6pub mod helper;
7pub mod maps;
8pub mod math;
9pub mod quests;
10pub mod render;
11pub mod start;
12
13use render::*;
14
15pub fn main_loop(init: start::Init) -> Result<(), ()> {
19 let (sdl_context, mut canvas, environment) = init.release();
20 let mut event_pump = sdl_context.event_pump().unwrap();
21 let mut data = data::Data::new();
22 data.change_entities(data.get_level().get_level_entities().to_vec());
23
24 canvas.set_draw_color(sdl2::pixels::Color::RGB(0, 0, 0));
25 canvas.clear();
26 canvas.present();
27
28 'running: loop {
29 for event in event_pump.poll_iter() {
30 match event {
31 sdl2::event::Event::Quit { .. }
32 | sdl2::event::Event::KeyDown {
33 keycode: Some(sdl2::keyboard::Keycode::Escape),
34 ..
35 } => break 'running,
36 _ => events::handle_events(&event, &mut data),
37 };
38 }
39
40 render_objects(
42 environment.get_tile_size(),
43 environment.get_window_size(),
44 &mut canvas,
45 &data.get_player(),
46 &data.get_entities(),
47 );
48
49 std::thread::sleep(std::time::Duration::new(0, 1_000_000_000u32 / 60));
50 }
51 Ok(())
52}
53
54pub enum Screen {
55 MainMenu,
56 Settings,
57 Inventory,
58 Combat,
59 Game,
60 Dialog,
61}
62
63pub fn main_end() {}