summaryrefslogtreecommitdiff
path: root/src/assemblage.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/assemblage.rs')
-rw-r--r--src/assemblage.rs32
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]