From 0947ce5a918207efeaf2a4f67a1cc410795f057a Mon Sep 17 00:00:00 2001 From: tom barrett Date: Mon, 1 Jul 2019 09:14:17 -0500 Subject: simpilfied interfaces and added new xml properties --- src/property.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/property.rs (limited to 'src/property.rs') diff --git a/src/property.rs b/src/property.rs new file mode 100644 index 0000000..fb4e912 --- /dev/null +++ b/src/property.rs @@ -0,0 +1,44 @@ +use xml::reader::XmlEvent; + +use crate::xmlelements::XMLElements; + +#[derive(Debug, Clone)] +pub struct Property { + pub tile_id: usize, + pub entity: Option, + pub keyframe: Option, + pub delay: Option, + pub spawn: Option, + pub visible: Option, +} + +impl Property { + pub fn new(tile_id: usize, property_elements: Vec) -> Property { + let entity = match XMLElements::get_attribute_value(&property_elements, "entity") { + Ok(entity) => entity.parse().ok(), + Err(_) => None, + }; + let keyframe = match XMLElements::get_attribute_value(&property_elements, "keyframe") { + Ok(keyframe) => keyframe.parse().ok(), + Err(_) => None, + }; + let delay = match XMLElements::get_attribute_value(&property_elements, "delay") { + Ok(delay) => delay.parse().ok(), + Err(_) => None, + }; + let spawn = XMLElements::get_attribute_value(&property_elements, "spawn").ok(); + let visible = match XMLElements::get_attribute_value(&property_elements, "visible") { + Ok(visible) => visible.parse().ok(), + Err(_) => None, + }; + + Property { + tile_id, + entity, + keyframe, + delay, + spawn, + visible, + } + } +} -- cgit v1.2.3