746f98db7abd6befe4cff45aa577f01eeb77c81a
[kaka/rust-sdl-test.git] / src / app.rs
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 }