diff options
| author | troido <troido@protonmail.com> | 2020-03-05 17:52:54 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-03-05 17:52:54 +0100 |
| commit | 23675c3d5dd8ef912f9a46a1bc999e9732bd6526 (patch) | |
| tree | 17298577f0b6316151f256d6e42d17c3036321dc /src/room.rs | |
| parent | 6e4b88fc62e5e2cf008cadd42c65d51cb3dbbf0e (diff) | |
removed code duplication from save_players
Diffstat (limited to 'src/room.rs')
| -rw-r--r-- | src/room.rs | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/room.rs b/src/room.rs index 0d83012..926abd1 100644 --- a/src/room.rs +++ b/src/room.rs @@ -219,24 +219,15 @@ impl <'a, 'b>Room<'a, 'b> { } pub fn save_players(&self) -> HashMap<PlayerId, PlayerState> { + let mut states = HashMap::new(); let players = self.world.read_component::<Player>(); - let inventories = self.world.read_component::<Inventory>(); - let healths = self.world.read_component::<Health>(); - let mut saved = HashMap::new(); - for (player, inventory, health) in (&players, &inventories, &healths).join() { - saved.insert(player.id.clone(), PlayerState::create( - player.id.clone(), - self.id.clone(), - inventory.items.iter().map(|(item, _)| item.ent.clone()).collect(), - inventory.capacity, - health.health, - health.maxhealth, - HashMap::new() - )); + let entities = self.world.entities(); + for (ent, player) in (&entities, &players).join(){ + states.insert(player.id.clone(), self.save_player_ent(ent).unwrap()); } - saved + states } - // todo: merge save_players and save_player_ent + fn save_player_ent(&self, ent: Entity) -> Option<PlayerState> { let players = self.world.read_component::<Player>(); let player = players.get(ent)?; |
