12345678910111213141516171819202122232425262728293031323334353637 |
- use specs::prelude::*;
- #[derive(Component)]
- pub struct Renderable {
- pub glyph: carpet::CP437,
- pub color: carpet::Color,
- }
- #[derive(Component)]
- pub struct Player;
- impl Player {
- fn get_entity(world: &mut specs::World) -> Entity {
- let storage = (&world.read_component::<Player>(), &world.entities());
- storage
- .join()
- .next()
- .expect("No entities tagged as Player")
- .1
- }
- }
- #[derive(Component)]
- pub struct Motion {
- pub down: i8,
- pub right: i8,
- }
- impl Motion {
- pub fn move_player(world: &mut specs::World, down: i8, right: i8) {
- let player = Player::get_entity(world);
- world
- .write_component::<Motion>()
- .insert(player, Motion { down, right })
- .unwrap();
- }
- }
|