diff options
| author | troido <troido@protonmail.com> | 2020-02-17 02:24:14 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-02-17 02:24:14 +0100 |
| commit | c921686355c86afb5bf47e4b6c696057ede01b1f (patch) | |
| tree | cb55b0d464010e44aeeca16f0f734ac3464da600 /src/room.rs | |
| parent | 625ab5bb37cbe35fd9662a33bc92f73520e59c81 (diff) | |
persistently save the room state
Diffstat (limited to 'src/room.rs')
| -rw-r--r-- | src/room.rs | 14 |
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)); + } } |
