summaryrefslogtreecommitdiff
path: root/src/main.rs
blob: 60186b314ec23232da7676d4ef2adbe33ab5fbc2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
pub mod components;
pub mod systems;
pub mod texture_manager;

use components::{Pos, StaticDrawable};
use specs::prelude::*;
use specs::{DispatcherBuilder, World};
use systems::{SysDraw, SysInput};

fn main()
{
    let sdl = sdl2::init().expect("Unable to start SDL context");
    let video_subsys = sdl.video().expect("Unable to get SDL Video context");

    let window = video_subsys
        .window("Pokemon Mystery Dungeon coop clone", 800, 600)
        .position_centered()
        .opengl()
        .resizable()
        .build()
        .expect("Unable to create window");

    let mut world = World::new();
    world.register::<Pos>();
    world.register::<StaticDrawable>();

    world
        .create_entity()
        .with(Pos { x: 0., y: 0. })
        .with(StaticDrawable {
            texture_name: "portraits.png".to_string(),
        })
        .build();

    let sys_input = SysInput::new(&sdl);
    let sys_draw = SysDraw::new(window);
    let mut dispatcher = DispatcherBuilder::new()
        .with_thread_local(sys_input)
        .with_thread_local(sys_draw)
        .build();

    loop {
        dispatcher.dispatch(&mut world);
    }
}