Commit | Line | Data |
---|---|---|
3bfea951 TW |
1 | use sdl2::EventPump; |
2 | use sdl2::pixels::Color; | |
3 | use sdl2::render::BlendMode; | |
4 | use sdl2::render::Canvas; | |
5 | use sdl2::video::Window; | |
6 | ||
7 | use {SCREEN_HEIGHT, SCREEN_WIDTH}; | |
8 | use sprites::SpriteManager; | |
9 | ||
10 | pub struct App { | |
11 | pub canvas: Canvas<Window>, | |
12 | pub event_pump: EventPump, | |
13 | pub sprites: SpriteManager, | |
14 | } | |
15 | ||
16 | impl App { | |
17 | pub fn new() -> App { | |
18 | let context = sdl2::init().unwrap(); | |
19 | sdl2::image::init(sdl2::image::InitFlag::PNG).unwrap(); | |
20 | let window = context.video().unwrap().window("SDL test", SCREEN_WIDTH, SCREEN_HEIGHT) | |
21 | .position_centered() | |
22 | .opengl() | |
23 | .build() | |
24 | .unwrap(); | |
25 | context.mouse().show_cursor(false); | |
26 | let mut canvas = window.into_canvas().build().unwrap(); | |
27 | canvas.set_blend_mode(BlendMode::Add); | |
28 | canvas.set_draw_color(Color::RGB(0, 0, 0)); | |
29 | canvas.clear(); | |
30 | canvas.present(); | |
31 | let event_pump = context.event_pump().unwrap(); | |
32 | let sprites = SpriteManager::new(canvas.texture_creator()); | |
33 | App { | |
34 | canvas, | |
35 | event_pump, | |
36 | sprites, | |
37 | } | |
38 | } | |
39 | ||
40 | pub fn load_sprites(&mut self, sprites: &[(&'static str, &str)]) { | |
41 | for (name, file) in sprites { | |
42 | self.sprites.load(name, file); | |
43 | } | |
44 | } | |
45 | } |