From 23675c3d5dd8ef912f9a46a1bc999e9732bd6526 Mon Sep 17 00:00:00 2001 From: troido Date: Thu, 5 Mar 2020 17:52:54 +0100 Subject: removed code duplication from save_players --- src/room.rs | 21 ++++++--------------- 1 file 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 { + let mut states = HashMap::new(); let players = self.world.read_component::(); - let inventories = self.world.read_component::(); - let healths = self.world.read_component::(); - 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 { let players = self.world.read_component::(); let player = players.get(ent)?; -- cgit