You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. use specs::prelude::*;
  2. use specs_derive::Component;
  3. use sdl2::rect::{Point, Rect};
  4. #[derive(Debug, Clone, Copy, PartialEq, Eq)]
  5. pub enum Direction {
  6. Up,
  7. Down,
  8. Left,
  9. Right,
  10. }
  11. #[derive(Component, Debug, Default)]
  12. #[storage(NullStorage)]
  13. pub struct KeyboardControlled;
  14. #[derive(Component, Debug)]
  15. #[storage(VecStorage)]
  16. pub struct Position(pub Point);
  17. #[derive(Component, Debug)]
  18. #[storage(VecStorage)]
  19. pub struct Velocity {
  20. pub speed: i32,
  21. pub direction: Direction,
  22. }
  23. #[derive(Component, Debug, Clone)]
  24. #[storage(VecStorage)]
  25. pub struct Sprite {
  26. pub spritesheet: usize,
  27. pub region: Rect,
  28. }
  29. #[derive(Component, Debug)]
  30. #[storage(VecStorage)]
  31. pub struct MovementAnimation {
  32. pub current_frame: usize,
  33. pub up_frames: Vec<Sprite>,
  34. pub down_frames: Vec<Sprite>,
  35. pub left_frames: Vec<Sprite>,
  36. pub right_frames: Vec<Sprite>,
  37. }