summaryrefslogtreecommitdiff
path: root/src/systems/registernew.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-04-04 23:48:07 +0200
committertroido <troido@protonmail.com>2020-04-04 23:48:07 +0200
commit068f98cec100772defce8ba966e5b917558b191c (patch)
tree80124cf89852dbedec9322258af36167cc99277b /src/systems/registernew.rs
parent2cc5b468cfd4c28bf1ad17ef1b3600c3d42f8b83 (diff)
draw the room after new entities have been added
Diffstat (limited to 'src/systems/registernew.rs')
-rw-r--r--src/systems/registernew.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/systems/registernew.rs b/src/systems/registernew.rs
index c53309f..0091296 100644
--- a/src/systems/registernew.rs
+++ b/src/systems/registernew.rs
@@ -1,5 +1,4 @@
-use std::collections::HashSet;
use specs::{
ReadStorage,
@@ -11,26 +10,32 @@ use specs::{
use crate::components::{
Position,
- New
+ New,
+ Player
};
use crate::resources::{
- Ground
+ Ground,
+ Players
};
-#[derive(Default)]
pub struct RegisterNew;
impl <'a> System<'a> for RegisterNew {
type SystemData = (
Entities<'a>,
+ ReadStorage<'a, New>,
Write<'a, Ground>,
ReadStorage<'a, Position>,
- ReadStorage<'a, New>,
+ Write<'a, Players>,
+ ReadStorage<'a, Player>
);
- fn run(&mut self, (entities, mut ground, positions, new): Self::SystemData) {
+ fn run(&mut self, (entities, new, mut ground, positions, mut player_list, players): Self::SystemData) {
for (ent, pos, _new) in (&entities, &positions, &new).join() {
- ground.cells.entry(pos.pos).or_insert_with(HashSet::new).insert(ent);
+ ground.insert(pos.pos, ent);
+ }
+ for (ent, player, _new) in (&entities, &players, &new).join(){
+ player_list.entities.insert(player.id.clone(), ent);
}
}
}