From a20bcfed7d3b6aacc3211514d9804651a458e725 Mon Sep 17 00:00:00 2001 From: troido Date: Sun, 27 Sep 2020 15:33:09 +0200 Subject: better serialisation structure for encyclopediae ["list", [1, 2, 3]] is now just [1, 2, 3] and {"type": builtwall", "kwargs": {"health": 50}} is now {":template": "builtwall", "health": 50} --- src/template.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/template.rs') diff --git a/src/template.rs b/src/template.rs index 1ef6fc1..6eb27e1 100644 --- a/src/template.rs +++ b/src/template.rs @@ -23,6 +23,16 @@ enum TemplateSave { save: Option, #[serde(default, skip_serializing_if = "Option::is_none")] clan: Option + }, + New{ + #[serde(rename = ":template")] + name: EntityType, + #[serde(rename="__save__", default, skip_serializing_if = "Option::is_none")] + save: Option, + #[serde(rename="__clan__", default, skip_serializing_if = "Option::is_none")] + clan: Option, + #[serde(default, flatten, skip_serializing_if = "HashMap::is_empty")] + kwargs: HashMap } } @@ -40,7 +50,8 @@ impl From for Template { fn from(ts: TemplateSave) -> Self { match ts { TemplateSave::Name(name) => Self{name, kwargs: HashMap::new(), save: None, clan: None}, - TemplateSave::Full{name, kwargs, save, clan} => Self{name, kwargs, save, clan} + TemplateSave::Full{name, kwargs, save, clan} => Self{name, kwargs, save, clan}, + TemplateSave::New{name, kwargs, save, clan} => Self{name, kwargs, save, clan} } } } @@ -49,7 +60,7 @@ impl Into for Template { if self.kwargs.is_empty() && self.save == None && self.clan == None { return TemplateSave::Name(self.name); } - TemplateSave::Full { + TemplateSave::New { name: self.name, kwargs: self.kwargs, save: self.save, -- cgit