summaryrefslogtreecommitdiff
path: root/src/room.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-17 02:24:14 +0100
committertroido <troido@protonmail.com>2020-02-17 02:24:14 +0100
commitc921686355c86afb5bf47e4b6c696057ede01b1f (patch)
treecb55b0d464010e44aeeca16f0f734ac3464da600 /src/room.rs
parent625ab5bb37cbe35fd9662a33bc92f73520e59c81 (diff)
persistently save the room state
Diffstat (limited to 'src/room.rs')
-rw-r--r--src/room.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/room.rs b/src/room.rs
index 501b587..28abfa7 100644
--- a/src/room.rs
+++ b/src/room.rs
@@ -31,6 +31,7 @@ use crate::components::{Position, Serialise};
use crate::encyclopedia::Encyclopedia;
use crate::roomtemplate::RoomTemplate;
use crate::savestate::SaveState;
+use crate::template::Template;
use crate::{Pos, PlayerId};
@@ -82,7 +83,7 @@ impl <'a, 'b>Room<'a, 'b> {
let y = (idx as i64) / width;
for template in templates {
- self.world.fetch_mut::<NewEntities>().templates.push((Pos{x, y}, template.clone().unsaved()));
+ self.create_entity(template.clone().unsaved(), Pos{x, y});
}
}
}
@@ -110,6 +111,17 @@ impl <'a, 'b>Room<'a, 'b> {
state
}
+ pub fn load_saved(&mut self, state: &SaveState) {
+ for (pos, templates) in state.changes.iter() {
+ for template in templates {
+ self.create_entity(template.clone(), *pos);
+ }
+ }
+ }
+
+ fn create_entity(&mut self, template: Template, pos: Pos){
+ self.world.fetch_mut::<NewEntities>().templates.push((pos, template));
+ }
}