summaryrefslogtreecommitdiff
path: root/src/room.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-09-26 14:05:14 +0200
committertroido <troido@protonmail.com>2020-09-26 14:05:14 +0200
commit9b7e3d14b3f35163199ed704ae35544fa658931e (patch)
tree9ad3623420f34b48f538ff2ceca6e3a277f16758 /src/room.rs
parent450cf9331803532cb0e3a002fec17d12be18abd6 (diff)
spawned entities are now saved but not spawned again until removed
Diffstat (limited to 'src/room.rs')
-rw-r--r--src/room.rs7
1 files changed, 5 insertions, 2 deletions
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::<Position>();
let serialisers = self.world.read_component::<Serialise>();
+ let clans = self.world.read_component::<Clan>();
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