diff options
| author | troido <troido@protonmail.com> | 2020-03-02 22:28:03 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-03-02 22:28:03 +0100 |
| commit | 22168c8eedac95fdfde9a536a1d1f6ddf622cfa1 (patch) | |
| tree | 6870bff418367fc635d64b58b3921d85ee0dbbb0 /src/world.rs | |
| parent | 27c0795fb70739ce5609a0f424d80491d4a8c5a1 (diff) | |
added purgatory
Diffstat (limited to 'src/world.rs')
| -rw-r--r-- | src/world.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/world.rs b/src/world.rs index 4152889..87dafb8 100644 --- a/src/world.rs +++ b/src/world.rs @@ -1,5 +1,6 @@ use std::collections::HashMap; +use crate::hashmap; use crate::{ PlayerId, @@ -13,7 +14,8 @@ use crate::{ Result, aerr, worldmessages::WorldMessage, - Timestamp + Timestamp, + purgatory }; pub struct World<'a, 'b> { @@ -26,7 +28,6 @@ pub struct World<'a, 'b> { time: Timestamp } - impl <'a, 'b>World<'a, 'b> { pub fn new(encyclopedia: Encyclopedia, template_loader: WorldLoader, persistence: Box<dyn PersistentStorage>, default_room: RoomId) -> Self { @@ -36,7 +37,7 @@ impl <'a, 'b>World<'a, 'b> { default_room, encyclopedia, players: HashMap::new(), - rooms: HashMap::new(), + rooms: hashmap!(purgatory::purgatory_id() => purgatory::create_purgatory()), time: Timestamp(0) } } @@ -66,11 +67,14 @@ impl <'a, 'b>World<'a, 'b> { } pub fn add_player(&mut self, playerid: &PlayerId) -> Result<()> { - let state = self.persistence + let mut state = self.persistence .load_player(playerid.clone()) .unwrap_or_else(|_err| // todo: what if player exists but can't be loaded for another reason? PlayerState::new(playerid.clone()) ); + if state.room == Some(purgatory::purgatory_id()){ + state.respawn(); + } self.add_loaded_player(state) } |
