From 9b7e3d14b3f35163199ed704ae35544fa658931e Mon Sep 17 00:00:00 2001 From: troido Date: Sat, 26 Sep 2020 14:05:14 +0200 Subject: spawned entities are now saved but not spawned again until removed --- src/room.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/room.rs') diff --git a/src/room.rs b/src/room.rs index db2171a..23545c0 100644 --- a/src/room.rs +++ b/src/room.rs @@ -31,7 +31,8 @@ use crate::{ Player, Inventory, Health, - Removed + Removed, + Clan }, Encyclopedia, roomtemplate::RoomTemplate, @@ -207,8 +208,9 @@ impl <'a, 'b>Room<'a, 'b> { let entities = self.world.entities(); let positions = self.world.read_component::(); let serialisers = self.world.read_component::(); + let clans = self.world.read_component::(); let mut state = SaveState::new(); - for (entity, pos, serialiser) in (&entities, &positions, &serialisers).join() { + for (entity, pos, serialiser, clan) in (&entities, &positions, &serialisers, (&clans).maybe()).join() { let mut template = serialiser.template.clone(); for (argument, component, member) in &serialiser.extract { if let Some(parameter) = extract_parameter(*component, member.as_str(), &self.world, entity){ @@ -217,6 +219,7 @@ impl <'a, 'b>Room<'a, 'b> { println!("failed to extract parameter {:?} from {:?}", member, component); } } + template.clan = clan.map(|c| c.name.clone()); state.changes.entry(pos.pos).or_insert_with(Vec::new).push(template); } state -- cgit