From 290eb2791b1da5836641df935c9bac5b21273e7b Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 31 Dec 2021 14:38:26 +0100 Subject: made assemblage fields private --- src/assemblage.rs | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'src/assemblage.rs') diff --git a/src/assemblage.rs b/src/assemblage.rs index 24d4539..7b36085 100644 --- a/src/assemblage.rs +++ b/src/assemblage.rs @@ -8,16 +8,18 @@ use crate::{ components::{Serialise, Clan}, Template, Result as AnyResult, - aerr + aerr, + sprite::Sprite, + compmap }; #[derive(Debug, PartialEq, Clone)] pub struct Assemblage { - pub arguments: HashMap>, - pub components: Vec<(ComponentType, HashMap)>, - pub save: bool, - pub extract: Vec<(String, ComponentType, String)> + arguments: HashMap>, + components: Vec<(ComponentType, HashMap)>, + save: bool, + extract: Vec<(String, ComponentType, String)> } impl Assemblage { @@ -67,6 +69,26 @@ impl Assemblage { } Ok(components) } + + pub fn apply_arguments(&self, arguments: HashMap) -> Self { + let mut assemblage = self.clone(); + for (key, val) in arguments { + assemblage.arguments.insert(key, Some(val)); + } + assemblage + } + + pub fn new_item(id: String, sprite: Sprite, name: String) -> Assemblage { + Assemblage { + arguments: HashMap::new(), + save: true, + extract: Vec::new(), + components: vec![ + (ComponentType::Visible, compmap!{height: 0.3_f64, sprite: sprite.0, name: name}), + (ComponentType::Item, compmap!{item: id}) + ] + } + } } #[macro_export] -- cgit