summaryrefslogtreecommitdiff
path: root/src/worldloader.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-09-24 22:18:30 +0200
committertroido <troido@protonmail.com>2020-09-24 22:18:30 +0200
commit9eb3a9da97e53cee14e585e027badb3783b8e25e (patch)
tree4840bc49cbde975289b3e3b663967a368b444f8b /src/worldloader.rs
parent13b53f3e89bcd6d33a534403162d1b09502bec70 (diff)
turned sprite, playerid and roomid into tuple structs
Diffstat (limited to 'src/worldloader.rs')
-rw-r--r--src/worldloader.rs13
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)?;