use std::collections::HashMap; use serde::{Deserialize, Deserializer, de, Serialize}; use crate::{ Pos, Template, resources::RoomPermissions }; #[derive(Debug, Clone)] pub struct RoomTemplate { pub size: (i64, i64), pub spawn: Pos, pub field: Vec>, pub places: HashMap, pub permissions: RoomPermissions } #[derive(Debug, Clone, Serialize, Deserialize)] struct RoomTemplateSave { pub width: i64, pub height: i64, pub spawn: Pos, pub field: Vec, pub mapping: HashMap, #[serde(default)] pub places: HashMap, #[serde(default)] pub permissions: RoomPermissions } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(untagged)] enum TemplateList { Single(Template), List(Vec