diff options
| author | troido <troido@protonmail.com> | 2021-12-31 14:38:26 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2021-12-31 14:38:26 +0100 |
| commit | 290eb2791b1da5836641df935c9bac5b21273e7b (patch) | |
| tree | 383e5aeaee5b0fe3b5f996f4e6298326247a03b9 /src/assemblage.rs | |
| parent | 755ae8512bfe3ff39a55c22a958e15399e886c5f (diff) | |
Diffstat (limited to 'src/assemblage.rs')
| -rw-r--r-- | src/assemblage.rs | 32 |
1 files changed, 27 insertions, 5 deletions
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<String, Option<Parameter>>, - pub components: Vec<(ComponentType, HashMap<String, ParameterExpression>)>, - pub save: bool, - pub extract: Vec<(String, ComponentType, String)> + arguments: HashMap<String, Option<Parameter>>, + components: Vec<(ComponentType, HashMap<String, ParameterExpression>)>, + save: bool, + extract: Vec<(String, ComponentType, String)> } impl Assemblage { @@ -67,6 +69,26 @@ impl Assemblage { } Ok(components) } + + pub fn apply_arguments(&self, arguments: HashMap<String, Parameter>) -> 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] |
