From ea8da5e990c9bdeb8d5f758b9df9f3a3d38e49a8 Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Wed, 9 Mar 2022 11:59:04 -0600 Subject: [PATCH] Expose sprite position --- src/lib.rs | 4 ++++ src/main.rs | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 9ef3a4f..77b8a98 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,6 +122,10 @@ impl Sprite { pub fn angle(&mut self, angle: f64) { self.angle = angle; } + + pub fn position(&self) -> (i32, i32) { + self.rect.center().into() + } } pub struct Game { diff --git a/src/main.rs b/src/main.rs index 2b79393..75cbf3b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,14 @@ fn main() { game.run(|canvas, event_pump| { i = (i + 1.0) % 360.0; + let (start_x, start_y) = s.position(); + let m = sdl2::mouse::MouseState::new(event_pump.as_ref()); + let x_diff = m.x() - start_x; + let y_diff = m.y() - start_y; + + let angle = (y_diff as f64).atan2(x_diff as f64); + s.angle(angle.to_degrees()); + for event in event_pump { match event { Event::Quit { .. } @@ -30,8 +38,8 @@ fn main() { _ => {} } } - - s.angle(i); + + s.draw(canvas).unwrap(); }) .unwrap();