From 144fe78b857f7b254e2741060f2694e08a6b0eb8 Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 20 Dec 2023 20:36:18 -0800 Subject: [PATCH] Scale cleanup --- src/doodad.rs | 2 +- src/ship.rs | 2 +- src/spriteatlas.rs | 16 +++++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/doodad.rs b/src/doodad.rs index 8c73c1c..37983c3 100644 --- a/src/doodad.rs +++ b/src/doodad.rs @@ -27,7 +27,7 @@ impl Drawable for Doodad { ) -> Result<(), String> { let pos = self.screen_position(canvas, c); let sprite = sa.get(&self.sprite); - sprite.draw(canvas, pos, self.angle)?; + sprite.draw(canvas, pos, self.angle, 1.0)?; return Ok(()); } } diff --git a/src/ship.rs b/src/ship.rs index 5ba4cec..4d618d4 100644 --- a/src/ship.rs +++ b/src/ship.rs @@ -35,7 +35,7 @@ impl Drawable for Ship { ) -> Result<(), String> { let pos = self.screen_position(canvas, c); let sprite = sa.get(self.kind.sprite()); - sprite.draw(canvas, pos, self.body.angle.to_degrees())?; + sprite.draw(canvas, pos, self.body.angle.to_degrees(), 1.0)?; return Ok(()); } } diff --git a/src/spriteatlas.rs b/src/spriteatlas.rs index 17be895..8a27a28 100644 --- a/src/spriteatlas.rs +++ b/src/spriteatlas.rs @@ -26,10 +26,12 @@ impl<'a> Sprite<'a> { canvas: &mut Canvas, position: PhysVec, angle: f64, + scale: f64, ) -> Result<(), String> { let win_size = PhysVec::from(canvas.window().size()); let width = self.rect.width(); let height = self.rect.height(); + let scale = scale * self.scale; // Don't draw if we're not on the screen. // An offset is included to ensure we're completely @@ -45,12 +47,12 @@ impl<'a> Sprite<'a> { let mut dest = Rect::new( 0, 0, - (width as f64 / self.scale) as u32, - (height as f64 / self.scale) as u32, + (width as f64 * scale) as u32, + (height as f64 * scale) as u32, ); dest.center_on(Point::new( - (width as f64 / (2.0 * self.scale)) as i32, - (height as f64 / (2.0 * self.scale)) as i32, + (width as f64 * scale / 2.0) as i32, + (height as f64 * scale / 2.0) as i32, )); // set the current frame for time @@ -64,8 +66,8 @@ impl<'a> Sprite<'a> { Some(dest), angle, // angle Point::new( - (width as f64 / (2.0 * self.scale)) as i32, - (height as f64 / (2.0 * self.scale)) as i32, + (width as f64 * scale / 2.0) as i32, + (height as f64 * scale / 2.0) as i32, ), // center false, false, @@ -88,7 +90,7 @@ impl<'a> SpriteAtlas<'a> { data: HashMap::new(), }; - b.load_one(texture_creator, "gypsum.png", 1.5)?; + b.load_one(texture_creator, "gypsum.png", 0.75)?; b.load_one(texture_creator, "a0.png", 1.0)?; b.load_one(texture_creator, "small.png", 1.0)?; b.load_one(texture_creator, "earth.png", 1.0)?;