From 0d382ea19f8f964c35761f6a3ff80bc9bfc25375 Mon Sep 17 00:00:00 2001 From: troido Date: Tue, 19 May 2020 10:40:22 +0200 Subject: add room build permissions to rooms --- src/roomtemplate.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/roomtemplate.rs') 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>, - pub places: HashMap + pub places: HashMap, + 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::( + jsonroom + .get("permissions") + .unwrap_or(&json!({})) + .clone() + ).map_err(|e| perr!("can't deserialise permissions: {:?}", e))?; + Ok(RoomTemplate { size, spawn, field, - places + places, + permissions }) } } -- cgit