summaryrefslogtreecommitdiff
path: root/src/roomtemplate.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-05-19 10:40:22 +0200
committertroido <troido@protonmail.com>2020-05-19 10:40:22 +0200
commit0d382ea19f8f964c35761f6a3ff80bc9bfc25375 (patch)
tree051abe24e22edd6aa0c6b9a9efbd03b8c47ce260 /src/roomtemplate.rs
parent78b079df5a26ce94142737605ec36ddde8310336 (diff)
add room build permissions to rooms
Diffstat (limited to 'src/roomtemplate.rs')
-rw-r--r--src/roomtemplate.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/roomtemplate.rs b/src/roomtemplate.rs
index d853b20..2614441 100644
--- a/src/roomtemplate.rs
+++ b/src/roomtemplate.rs
@@ -1,11 +1,12 @@
use std::collections::HashMap;
-use serde_json::{json, Value};
+use serde_json::{json, Value, value};
use crate::{
Pos,
Template,
PResult,
- perr
+ perr,
+ resources::RoomPermissions
};
#[derive(Debug, Clone)]
@@ -13,7 +14,8 @@ pub struct RoomTemplate {
pub size: (i64, i64),
pub spawn: Pos,
pub field: Vec<Vec<Template>>,
- pub places: HashMap<String, Pos>
+ pub places: HashMap<String, Pos>,
+ pub permissions: RoomPermissions
}
impl RoomTemplate {
@@ -54,11 +56,19 @@ impl RoomTemplate {
places.insert(name.to_string(), Pos::from_json(jsonpos).ok_or(perr!("pos of places invalid"))?);
}
+ let permissions: RoomPermissions = value::from_value::<RoomPermissions>(
+ jsonroom
+ .get("permissions")
+ .unwrap_or(&json!({}))
+ .clone()
+ ).map_err(|e| perr!("can't deserialise permissions: {:?}", e))?;
+
Ok(RoomTemplate {
size,
spawn,
field,
- places
+ places,
+ permissions
})
}
}