war/utils/darksiders1/
object.rs

1use crate::darksiders1::gfc;
2use std::borrow::Cow;
3
4impl gfc::Object {
5    pub fn get_property(&self, name: &str) -> Option<&gfc::Value> {
6        let (_n, v) = self.properties.iter().find(|(n, _v)| n == name)?;
7        Some(v)
8    }
9
10    pub fn get_property_mut(&mut self, name: &str) -> Option<&mut gfc::Value> {
11        let (_n, v) = self.properties.iter_mut().find(|(n, _v)| n == name)?;
12        Some(v)
13    }
14
15    pub fn set_property<'n>(
16        &mut self,
17        name: impl Into<Cow<'n, str>>,
18        value: gfc::Value,
19    ) {
20        let name = name.into();
21        match self.properties.iter_mut().find(|(n, _v)| n == &*name) {
22            Some((_n, v)) => {
23                *v = value;
24            }
25            None => {
26                self.properties.push((name.into(), value));
27            }
28        }
29    }
30}