From 4f256d606793e4c6f2627f4a10e71cc219ea8b67 Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 3 Apr 2020 11:51:21 +0200 Subject: also replace lootlist parameter with list --- src/componentwrapper.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/componentwrapper.rs') diff --git a/src/componentwrapper.rs b/src/componentwrapper.rs index 0fb46d0..038b526 100644 --- a/src/componentwrapper.rs +++ b/src/componentwrapper.rs @@ -15,6 +15,7 @@ use crate::{ }, parameter::{Parameter, ParameterType}, Timestamp, + Template, Result, aerr }; @@ -182,7 +183,25 @@ components!( Home (home: Pos); Faction (faction: String) {Faction::from_str(faction.as_str()).ok_or(aerr!("invalid faction name"))?}; Interactable (action: Interaction) {action}; - Loot (loot: LootList); + Loot (loot: List) { + Loot { loot: + loot + .iter() + .map(|param| {match param { + Parameter::Template(template) => Some((template.clone(), 1.0)), + Parameter::List(l) => { + if l.len() == 2 { + if let (Parameter::Template(template), Parameter::Float(chance)) = (l[0].clone(), l[1].clone()) { + return Some((template.clone(), chance)) + } + } + None? + }, + _ => None? + }}) + .collect::>>().ok_or(aerr!("invalid loot definition"))? + } + }; Grow ( into: Template (Grow.into.clone()), delay: Int (Grow.delay), -- cgit