1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use crate::{engine::WarriorComponent, floor::Floor, Player, Warrior}; use specs::{prelude::*, System}; pub struct PlayerSystem { pub player: Box<dyn Player + Send + Sync>, } impl<'a> System<'a> for PlayerSystem { type SystemData = WriteStorage<'a, WarriorComponent>; fn run(&mut self, mut component: Self::SystemData) { for component in (&mut component).join() { let mut warrior = Warrior::new(component); self.player.play_turn(&mut warrior); } } } pub struct UiSystem; impl<'a> System<'a> for UiSystem { type SystemData = ReadStorage<'a, WarriorComponent>; fn run(&mut self, component: Self::SystemData) { for component in (&component).join() { let floor = Floor::new(component.position); floor.draw(); } } }