From 9b7e3d14b3f35163199ed704ae35544fa658931e Mon Sep 17 00:00:00 2001 From: troido Date: Sat, 26 Sep 2020 14:05:14 +0200 Subject: spawned entities are now saved but not spawned again until removed --- src/template.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/template.rs') diff --git a/src/template.rs b/src/template.rs index 5d753a1..1475d42 100644 --- a/src/template.rs +++ b/src/template.rs @@ -22,7 +22,9 @@ enum TemplateSave { #[serde(default, skip_serializing_if = "HashMap::is_empty")] kwargs: HashMap, #[serde(default, skip_serializing_if = "Option::is_none")] - save: Option + save: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + clan: Option } } @@ -33,27 +35,29 @@ pub struct Template { pub args: Vec, pub kwargs: HashMap, pub save: Option, + pub clan: Option } impl From for Template { fn from(ts: TemplateSave) -> Self { match ts { - TemplateSave::Name(name) => Self{name, args: Vec::new(), kwargs: HashMap::new(), save: None}, - TemplateSave::Full{name, args, kwargs, save} => Self{name, args, kwargs, save} + TemplateSave::Name(name) => Self{name, args: Vec::new(), kwargs: HashMap::new(), save: None, clan: None}, + TemplateSave::Full{name, args, kwargs, save, clan} => Self{name, args, kwargs, save, clan} } } } impl Into for Template { fn into(self) -> TemplateSave { - if self.args.is_empty() && self.kwargs.is_empty() && self.save == None { + if self.args.is_empty() && self.kwargs.is_empty() && self.save == None && self.clan == None { return TemplateSave::Name(self.name); } TemplateSave::Full { name: self.name, args: self.args, kwargs: self.kwargs, - save: self.save + save: self.save, + clan: self.clan } } } @@ -65,7 +69,8 @@ impl Template { name: EntityType(name.to_string()), args: Vec::new(), kwargs, - save: None + save: None, + clan: None } } @@ -85,7 +90,8 @@ impl Template { name: typ, args: Vec::new(), kwargs: HashMap::new(), - save: None + save: None, + clan: None } } @@ -100,6 +106,9 @@ impl Template { if self.save == None { self.save = other.save; } + if self.clan == None { + self.clan = other.clan; + } for (key, value) in other.kwargs { self.kwargs.entry(key).or_insert(value); } -- cgit