Add ability to set a sprite's angle

This commit is contained in:
Yash Karandikar 2022-03-09 11:37:10 -06:00
parent 9d0ce1aafb
commit c75e2ded4c
Signed by untrusted user: karx
GPG key ID: A794DA2529474BA5
2 changed files with 11 additions and 1 deletions

View file

@ -82,6 +82,7 @@ impl Iterator for Events {
pub struct Sprite {
rect: Rect,
surf: Surface<'static>,
angle: f64,
}
impl Sprite {
@ -95,6 +96,7 @@ impl Sprite {
Ok(Self {
rect: dest_rect,
surf,
angle: 0.0,
})
}
@ -104,7 +106,7 @@ impl Sprite {
canvas.fill_rect(None)?;
canvas.clear();
canvas.copy_ex(&text, None, self.rect, 0.0, None, false, false)?;
canvas.copy_ex(&text, None, self.rect, self.angle, None, false, false)?;
Ok(())
}
@ -116,6 +118,10 @@ impl Sprite {
self.rect.set_x(new_x);
self.rect.set_y(new_y);
}
pub fn angle(&mut self, angle: f64) {
self.angle = angle;
}
}
pub struct Game {

View file

@ -3,8 +3,11 @@ use catbox::{Event, Game, Keycode, Sprite};
fn main() {
let game = Game::new("catbox demo", 1000, 800);
let mut i = 0.0;
let mut s = Sprite::new("duck.png", 500, 400).unwrap();
game.run(|canvas, event_pump| {
i = (i + 1.0) % 360.0;
for event in event_pump {
match event {
Event::Quit { .. }
@ -28,6 +31,7 @@ fn main() {
}
}
s.angle(i);
s.draw(canvas).unwrap();
})
.unwrap();