Skip to content
Snippets Groups Projects
Unverified Commit 738da05f authored by aleok's avatar aleok Committed by GitHub
Browse files

Merge pull request #114 from SiegeLord/object_property

Support object properties.
parents 363346b0 b4535724
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
- Support for 'object'-type properties.
## [0.9.2] - 2020-Apr-25
### Added
......
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="2" height="2" tilewidth="32" tileheight="32" infinite="0" nextlayerid="3" nextobjectid="4">
<layer id="1" name="Tile Layer 1" width="2" height="2">
<data encoding="csv">
0,0,
0,0
</data>
</layer>
<objectgroup id="2" name="Object Layer 1">
<object id="2" x="0" y="0" width="32" height="32">
<properties>
<property name="object property" type="object" value="3"/>
</properties>
</object>
<object id="3" x="32" y="32" width="32" height="32">
<properties>
<property name="object property" type="object" value="0"/>
</properties>
</object>
</objectgroup>
</map>
......@@ -45,6 +45,8 @@ pub enum PropertyValue {
StringValue(String),
/// Holds the path relative to the map or tileset
FileValue(String),
/// Holds the id of a referenced object, or 0 if unset
ObjectValue(u32),
}
impl PropertyValue {
......@@ -70,6 +72,10 @@ impl PropertyValue {
))),
},
"string" => Ok(PropertyValue::StringValue(value)),
"object" => match value.parse() {
Ok(val) => Ok(PropertyValue::ObjectValue(val)),
Err(err) => Err(TiledError::Other(err.to_string())),
},
"file" => Ok(PropertyValue::FileValue(value)),
_ => Err(TiledError::Other(format!(
"Unknown property type \"{}\"",
......
......@@ -190,3 +190,16 @@ fn test_ldk_export() {
assert!(false, "It is wrongly recognised as an infinite map");
}
}
#[test]
fn test_object_property() {
let r = read_from_file(&Path::new("assets/tiled_object_property.tmx")).unwrap();
let prop_value = if let Some(PropertyValue::ObjectValue(v)) =
r.object_groups[0].objects[0].properties.get("object property")
{
*v
} else {
0
};
assert_eq!(3, prop_value);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment