essences/
types.rs

1use crate::prelude::*;
2use std::collections::BTreeMap;
3
4#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify)]
5pub struct CustomValuesMap(pub BTreeMap<String, i64>);
6
7impl CustomValuesMap {
8    pub fn insert(&mut self, key: &str, value: i64) {
9        self.0
10            .entry(key.to_owned())
11            .and_modify(|x| *x = value)
12            .or_insert(value);
13    }
14}
15
16impl CustomType for CustomValuesMap {
17    fn build(mut builder: TypeBuilder<Self>) {
18        builder.with_name("CustomValuesMap").with_indexer_get(
19            |cvm: &mut CustomValuesMap, idx: String| -> rhai::Dynamic {
20                match cvm.0.get(&idx) {
21                    Some(value) => (*value).into(),
22                    None => ().into(),
23                }
24            },
25        );
26    }
27}