use specs::prelude::*; use specs_derive::Component; use sdl2::rect::{Point, Rect}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum Direction { Up, Down, Left, Right, } #[derive(Component, Debug, Default)] #[storage(NullStorage)] pub struct KeyboardControlled; #[derive(Component, Debug)] #[storage(VecStorage)] pub struct Position(pub Point); #[derive(Component, Debug)] #[storage(VecStorage)] pub struct Velocity { pub speed: i32, pub direction: Direction, } #[derive(Component, Debug, Clone)] #[storage(VecStorage)] pub struct Sprite { pub spritesheet: usize, pub region: Rect, } #[derive(Component, Debug)] #[storage(VecStorage)] pub struct MovementAnimation { pub current_frame: usize, pub up_frames: Vec, pub down_frames: Vec, pub left_frames: Vec, pub right_frames: Vec, }