X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fapp.rs;fp=src%2Fapp.rs;h=746f98db7abd6befe4cff45aa577f01eeb77c81a;hb=3bfea951f8059b01b1671be7dd78f2dc5a7ac4ee;hp=0000000000000000000000000000000000000000;hpb=fcbc5786908a32f68597961203d8c30e8a70c9ba;p=kaka%2Frust-sdl-test.git diff --git a/src/app.rs b/src/app.rs new file mode 100644 index 0000000..746f98d --- /dev/null +++ b/src/app.rs @@ -0,0 +1,45 @@ +use sdl2::EventPump; +use sdl2::pixels::Color; +use sdl2::render::BlendMode; +use sdl2::render::Canvas; +use sdl2::video::Window; + +use {SCREEN_HEIGHT, SCREEN_WIDTH}; +use sprites::SpriteManager; + +pub struct App { + pub canvas: Canvas, + pub event_pump: EventPump, + pub sprites: SpriteManager, +} + +impl App { + pub fn new() -> App { + let context = sdl2::init().unwrap(); + sdl2::image::init(sdl2::image::InitFlag::PNG).unwrap(); + let window = context.video().unwrap().window("SDL test", SCREEN_WIDTH, SCREEN_HEIGHT) + .position_centered() + .opengl() + .build() + .unwrap(); + context.mouse().show_cursor(false); + let mut canvas = window.into_canvas().build().unwrap(); + canvas.set_blend_mode(BlendMode::Add); + canvas.set_draw_color(Color::RGB(0, 0, 0)); + canvas.clear(); + canvas.present(); + let event_pump = context.event_pump().unwrap(); + let sprites = SpriteManager::new(canvas.texture_creator()); + App { + canvas, + event_pump, + sprites, + } + } + + pub fn load_sprites(&mut self, sprites: &[(&'static str, &str)]) { + for (name, file) in sprites { + self.sprites.load(name, file); + } + } +}