diff options
| author | troido <troido@protonmail.com> | 2020-09-24 22:18:30 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-09-24 22:18:30 +0200 |
| commit | 9eb3a9da97e53cee14e585e027badb3783b8e25e (patch) | |
| tree | 4840bc49cbde975289b3e3b663967a368b444f8b /src/worldloader.rs | |
| parent | 13b53f3e89bcd6d33a534403162d1b09502bec70 (diff) | |
turned sprite, playerid and roomid into tuple structs
Diffstat (limited to 'src/worldloader.rs')
| -rw-r--r-- | src/worldloader.rs | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/worldloader.rs b/src/worldloader.rs index 8934fc8..414d443 100644 --- a/src/worldloader.rs +++ b/src/worldloader.rs @@ -3,6 +3,7 @@ use std::path::{PathBuf}; use std::fs; use serde_json; use serde_json::Value; +use serde::Deserialize; use crate::{ RoomId, roomtemplate::RoomTemplate, @@ -27,13 +28,9 @@ impl WorldLoader { let path = self.directory.join("world.json"); let text = fs::read_to_string(path)?; let json: Value = serde_json::from_str(&text)?; - let default_room = RoomId::from_str( - json - .get("default_room") - .ok_or(aerr!("world meta does not have default_room"))? - .as_str() - .ok_or(aerr!("world meta default_room is not a string"))? - ); + let default_room = RoomId::deserialize( + json.get("default_room").ok_or(aerr!("world meta does not have default_room"))? + ).map_err(|e| aerr!("invalid roomid for default room: {}", e))?; let encyclopediae = json .get("encyclopediae") @@ -54,7 +51,7 @@ impl WorldLoader { } pub fn load_room(&self, id: RoomId) -> Result<RoomTemplate> { - let fname = id.name.splitn(2, '+').next().unwrap().to_string() + ".json"; + let fname = id.to_string().splitn(2, '+').next().unwrap().to_string() + ".json"; let path = self.directory.join("maps").join(fname); let text = fs::read_to_string(path)?; let template = serde_json::from_str(&text)?; |
