From 940b1c762bb98a56dddc6e3e7f208867abb3ebe5 Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 7 Feb 2020 19:10:13 +0100 Subject: added roomtemplate --- src/roomtemplate.rs | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/roomtemplate.rs (limited to 'src/roomtemplate.rs') diff --git a/src/roomtemplate.rs b/src/roomtemplate.rs new file mode 100644 index 0000000..2a71341 --- /dev/null +++ b/src/roomtemplate.rs @@ -0,0 +1,76 @@ + +use std::collections::HashMap; +use serde_json::Value; +use crate::Pos; +use crate::template::Template; + +struct RoomTemplate { + size: (i64, i64), + spawn: Pos, + field: Vec> +} + +impl RoomTemplate { + + pub fn from_json(jsonroom: &Value) -> Result{ + let size = ( + jsonroom.get("width").ok_or("no with")?.as_i64().ok_or("with not a number")?, + jsonroom.get("height").ok_or("no height")?.as_i64().ok_or("height not a number")? + ); + let spawn = Pos::from_json(jsonroom.get("spawn").ok_or("no spawn")?).ok_or("spawn not a pos")?; + + let mut mapping = HashMap::new(); + for (key, value) in jsonroom.get("mapping").ok_or("no mapping")?.as_object().ok_or("mapping not a json object")?.iter() { + let mut templates: Vec