summaryrefslogtreecommitdiff
path: root/src/world.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-04-08 15:43:57 +0200
committertroido <troido@protonmail.com>2020-04-08 15:43:57 +0200
commitd0d71818c70586d7e2fb806ced57f039bd1d12f6 (patch)
treed2ec5f8f64476daa4e004b17e577694087ac8a32 /src/world.rs
parent7a4a62eb2804b6b19b4e71eee42d6b3d7ad08a3a (diff)
reject player if the savefile player id does not match actual player id
Diffstat (limited to 'src/world.rs')
-rw-r--r--src/world.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/world.rs b/src/world.rs
index 59b3aba..5105df2 100644
--- a/src/world.rs
+++ b/src/world.rs
@@ -66,7 +66,7 @@ impl <'a, 'b>World<'a, 'b> {
} else {
let mut room = Room::new(id.clone(), self.encyclopedia.clone(), None);
let template = self.template_loader.load_room(id.clone())?;
- room.load_from_template(&template);
+ room.load_from_template(&template)?;
room
};
if let Ok(state) = self.persistence.load_room(id.clone()){
@@ -96,6 +96,9 @@ impl <'a, 'b>World<'a, 'b> {
.unwrap_or_else(|_err| // todo: what if player exists but can't be loaded for another reason?
PlayerState::new(playerid.clone())
);
+ if &state.id != playerid {
+ return Err(aerr!("Player ids do not match. Wanted {:?}, got {:?}", playerid, state.id));
+ }
if state.room == Some(purgatory::purgatory_id()){
state.respawn();
}