Move app to module
[kaka/rust-sdl-test.git] / src / app.rs
CommitLineData
3bfea951
TW
1use sdl2::EventPump;
2use sdl2::pixels::Color;
3use sdl2::render::BlendMode;
4use sdl2::render::Canvas;
5use sdl2::video::Window;
6
7use {SCREEN_HEIGHT, SCREEN_WIDTH};
8use sprites::SpriteManager;
9
10pub struct App {
11 pub canvas: Canvas<Window>,
12 pub event_pump: EventPump,
13 pub sprites: SpriteManager,
14}
15
16impl 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}