use sdl2::render::Canvas; use sdl2::video::Window; use crate::physics::PhysBody; use crate::physics::PhysVec; use crate::physics::Position; use crate::Camera; use crate::Drawable; use crate::ShipKind; use crate::SpriteAtlas; pub struct Ship { pub body: PhysBody, kind: ShipKind, } impl Ship { pub fn new(kind: ShipKind, pos: Position) -> Self { Ship { body: PhysBody::new(pos.into()), kind, } } } impl Drawable for Ship { fn position(&self) -> PhysVec { return self.body.pos; } fn draw( &self, canvas: &mut Canvas, sa: &SpriteAtlas, c: &Camera, ) -> 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(), 1.0)?; return Ok(()); } }