war 0.2.0

A viewer/editor for Darksiders saves, worlds, and scripts
Documentation
use crate::darksiders1::gfc;
use std::borrow::Cow;

impl gfc::Object {
    pub fn get_property(&self, name: &str) -> Option<&gfc::Value> {
        let (_n, v) = self.properties.iter().find(|(n, _v)| n == name)?;
        Some(v)
    }

    pub fn get_property_mut(&mut self, name: &str) -> Option<&mut gfc::Value> {
        let (_n, v) = self.properties.iter_mut().find(|(n, _v)| n == name)?;
        Some(v)
    }

    pub fn set_property<'n>(
        &mut self,
        name: impl Into<Cow<'n, str>>,
        value: gfc::Value,
    ) {
        let name = name.into();
        match self.properties.iter_mut().find(|(n, _v)| n == &*name) {
            Some((_n, v)) => {
                *v = value;
            }
            None => {
                self.properties.push((name.into(), value));
            }
        }
    }
}