use specs::{Component, NullStorage, VecStorage, World, WorldExt}; // Components #[derive(Debug, Component, Clone, Copy)] #[storage(VecStorage)] pub struct Position { pub x: u8, pub y: u8, pub z: u8, } impl Position { pub fn new(x: u8, y: u8) -> Self { Position { x, y, z: 0 } } } #[derive(Component)] #[storage(VecStorage)] pub struct Renderable { pub path: String, } impl Renderable { pub fn new(path: &str) -> Self { Renderable { path: path.to_string() } } } #[derive(Component)] #[storage(VecStorage)] pub struct Wall {} #[derive(Component)] #[storage(VecStorage)] pub struct Player {} #[derive(Component)] #[storage(VecStorage)] pub struct Box {} #[derive(Component)] #[storage(VecStorage)] pub struct BoxSpot {} #[derive(Component, Default)] #[storage(NullStorage)] pub struct Movable; #[derive(Component, Default)] #[storage(NullStorage)] pub struct Immovable; pub fn register_components(world: &mut World) { world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); world.register::(); }