Scale cleanup

master
Mark 2023-12-20 20:36:18 -08:00
parent cb9e7a602f
commit 144fe78b85
Signed by: Mark
GPG Key ID: C6D63995FE72FD80
3 changed files with 11 additions and 9 deletions

View File

@ -27,7 +27,7 @@ impl Drawable for Doodad {
) -> Result<(), String> { ) -> Result<(), String> {
let pos = self.screen_position(canvas, c); let pos = self.screen_position(canvas, c);
let sprite = sa.get(&self.sprite); let sprite = sa.get(&self.sprite);
sprite.draw(canvas, pos, self.angle)?; sprite.draw(canvas, pos, self.angle, 1.0)?;
return Ok(()); return Ok(());
} }
} }

View File

@ -35,7 +35,7 @@ impl Drawable for Ship {
) -> Result<(), String> { ) -> Result<(), String> {
let pos = self.screen_position(canvas, c); let pos = self.screen_position(canvas, c);
let sprite = sa.get(self.kind.sprite()); 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(()); return Ok(());
} }
} }

View File

@ -26,10 +26,12 @@ impl<'a> Sprite<'a> {
canvas: &mut Canvas<Window>, canvas: &mut Canvas<Window>,
position: PhysVec, position: PhysVec,
angle: f64, angle: f64,
scale: f64,
) -> Result<(), String> { ) -> Result<(), String> {
let win_size = PhysVec::from(canvas.window().size()); let win_size = PhysVec::from(canvas.window().size());
let width = self.rect.width(); let width = self.rect.width();
let height = self.rect.height(); let height = self.rect.height();
let scale = scale * self.scale;
// Don't draw if we're not on the screen. // Don't draw if we're not on the screen.
// An offset is included to ensure we're completely // An offset is included to ensure we're completely
@ -45,12 +47,12 @@ impl<'a> Sprite<'a> {
let mut dest = Rect::new( let mut dest = Rect::new(
0, 0,
0, 0,
(width as f64 / self.scale) as u32, (width as f64 * scale) as u32,
(height as f64 / self.scale) as u32, (height as f64 * scale) as u32,
); );
dest.center_on(Point::new( dest.center_on(Point::new(
(width as f64 / (2.0 * self.scale)) as i32, (width as f64 * scale / 2.0) as i32,
(height as f64 / (2.0 * self.scale)) as i32, (height as f64 * scale / 2.0) as i32,
)); ));
// set the current frame for time // set the current frame for time
@ -64,8 +66,8 @@ impl<'a> Sprite<'a> {
Some(dest), Some(dest),
angle, // angle angle, // angle
Point::new( Point::new(
(width as f64 / (2.0 * self.scale)) as i32, (width as f64 * scale / 2.0) as i32,
(height as f64 / (2.0 * self.scale)) as i32, (height as f64 * scale / 2.0) as i32,
), // center ), // center
false, false,
false, false,
@ -88,7 +90,7 @@ impl<'a> SpriteAtlas<'a> {
data: HashMap::new(), 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, "a0.png", 1.0)?;
b.load_one(texture_creator, "small.png", 1.0)?; b.load_one(texture_creator, "small.png", 1.0)?;
b.load_one(texture_creator, "earth.png", 1.0)?; b.load_one(texture_creator, "earth.png", 1.0)?;