diff --git a/duck.png b/duck.png new file mode 100644 index 0000000..e881adf Binary files /dev/null and b/duck.png differ diff --git a/src/lib.rs b/src/lib.rs index 32aa2bc..8910a3f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -80,7 +80,7 @@ impl Sprite { let surf = ops.load()?; let srect = surf.rect(); - let dest_rect: Rect = Rect::new(x, y, srect.width(), srect.height()); + let dest_rect: Rect = Rect::from_center((x, y), srect.width(), srect.height()); Ok(Self { rect: dest_rect, @@ -88,8 +88,14 @@ impl Sprite { }) } - pub fn draw(&self, canvas: Canvas) { - let surface = canvas.window(); + pub fn draw(&self, canvas: &mut Canvas, events: &Events) -> Result<()> { + let mut surface = canvas.window().surface(events.as_ref())?; + + self.surf.blit(None, &mut *surface, self.rect)?; + + surface.finish()?; + + Ok(()) } } diff --git a/src/main.rs b/src/main.rs index 2ede3ca..6449ffa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,20 @@ -use catbox::{Event, Game, Keycode}; +use catbox::{Event, Game, Keycode, Sprite}; fn main() { let game = Game::new("catbox demo", 1000, 800); let mut i = 0; + let s = Sprite::new("/home/yashkarandikar/code/catbox/duck.png", 500, 400).unwrap(); game.run(|canvas, event_pump| { i = (i + 1) % 255; - canvas.set_draw_color(catbox::Color::RGB(i, 64, 255)); - canvas.clear(); + // canvas.set_draw_color(catbox::Color::RGB(i, 64, 255)); + // canvas.clear(); + s.draw(canvas, event_pump).unwrap(); + + // let m = sdl2::mouse::MouseState::new(event_pump.as_ref()); + // println!("{}, {}", m.x(), m.y()); + + for event in event_pump { match event { Event::Quit { .. }