tiny_rpg/
lib.rs

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
15/// The main loop. Events and such happen here
16// fix result here, an error enum would be cool to get past
17// dyn errors maybe dont bother with normal errors
18pub 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        // change to one that handles menus
41        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
63/// What occurs after main loop
64pub fn main_end() {}