Skip to content

Commit

Permalink
feat: added support for Tiled 1.9.0 class property, #1182
Browse files Browse the repository at this point in the history
  • Loading branch information
AlmasB committed Jul 9, 2022
1 parent b5a0e5d commit 192824e
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 2 deletions.
Expand Up @@ -33,7 +33,7 @@ import javax.xml.stream.events.StartElement
* @author Almas Baimagambetov (almaslvl@gmail.com)
*/

private const val TILED_VERSION_LATEST = "1.4.2"
private const val TILED_VERSION_LATEST = "1.9.0"

class TMXLevelLoader
@JvmOverloads constructor(
Expand Down Expand Up @@ -133,6 +133,7 @@ class TMXLevelLoader
data.run {
put("name", tiledObject.name)
put("type", tiledObject.type)
put("class", tiledObject.type)
put("width", tiledObject.width)
put("height", tiledObject.height)
put("rotation", tiledObject.rotation)
Expand Down Expand Up @@ -407,13 +408,19 @@ class TMXLevelLoader
private fun parseObject(layer: Layer, obj: TiledObject, start: StartElement) {
obj.name = start.getString("name")
obj.type = start.getString("type")
obj.typeClass = start.getString("class")
obj.id = start.getInt("id")
obj.x = start.getInt("x")
obj.y = start.getInt("y")
obj.rotation = start.getFloat("rotation")
obj.width = start.getInt("width")
obj.height = start.getInt("height")

// re-map semantics for 1.9+
if (obj.typeClass.isNotEmpty() && obj.type.isEmpty()) {
obj.type = obj.typeClass
}

// gid is stored as UInt, so parsing as int gives incorrect representation
val gidUInt = start.getUInt("gid")

Expand Down
Expand Up @@ -18,6 +18,8 @@ class TiledObject(var id: Int = 0,
var height: Int = 0,
var name: String = "",
var type: String = "",
// from 1.9
var typeClass: String = "",
var visible: Boolean = true,
var x: Int = 0,
var y: Int = 0,
Expand Down
Expand Up @@ -190,7 +190,7 @@ class TMXLevelLoaderTest {
}

@ParameterizedTest
@CsvSource("sewers_v1_1_2.tmx", "sewers_v1_2_3.tmx")
@CsvSource("sewers_v1_1_2.tmx", "sewers_v1_2_3.tmx", "sewers_v1_9_0.tmx")
fun parse(mapName: String) {
val map = javaClass.getResourceAsStream(mapName).use {
TMXLevelLoader().parse(it)
Expand Down
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.0" orientation="orthogonal" renderorder="right-down" width="64" height="64" tilewidth="24" tileheight="24" infinite="0" nextlayerid="5" nextobjectid="7">
<tileset firstgid="1" name="sewer_tileset" tilewidth="24" tileheight="24" tilecount="72" columns="8">
<image source="sewer_tileset.png" trans="ff00ff" width="192" height="217"/>
</tileset>
<layer id="1" name="Bottom" width="64" height="64">
<data encoding="base64" compression="zlib">
eJztmN1qwkAQRpfeabWgFaHqja1af97D93+kjpiBZdikmwTd7Ho+OFCMRc+E4Vszdc59CN8VE2HqvfYjbCq25rp/LfSetvjfw372f3SN/Vz84/13wlnYV9z+PmTuvxDehGWEf4n3fySMhfce/jrDtujMU/rPhLnw2cNfZxjit+Gazlz36pLA39LFX2focwy8ZgnNPDf/k7vfuz60ue9D679UDMX/S1gJ6xf13wb+b8j+tnf69r/uf5cdTuHv905M//vzKWH//d6J6X9/PiXsf13v1fXfbT7Xaj4l7H+bLrbdHtrx3PY/xa7ijz/++fhrp1me3XGp/LXTmroxNY/2t8+0Svn9F+tvn2mVcv6N9bfPtOrOv6X667l37prPvyX61z3TevYZN5V/DuCPP/74448//vjjjz/++OOPP/74448//vjjjz8hhBBCCCGEkNfLHzZhCrU=
</data>
</layer>
<layer id="2" name="Top" width="64" height="64" opacity="0.49">
<data encoding="base64" compression="zlib">
eJzt1zEOwjAQRFEXhCrJVVKEQIHouP+Z2CK+AhPJ70lfbsfltnYtz/SAMP8f22j/36r97FEd2Tl/96re1fd8P9k57VZN1T28I2WulmpNDwEAAAjpd2FvtPuw34U99yEAAAAAAAAAAAAACT+/lQOV
</data>
</layer>
<objectgroup id="3" name="Collidables">
<object id="1" name="name1" class="type1" x="96" y="0" width="72" height="336">
<properties>
<property name="collidable" type="bool" value="true"/>
<property name="someColor" type="color" value="#ff55ff00"/>
<property name="someInt" type="int" value="33"/>
<property name="someString" value="Text Here"/>
</properties>
</object>
<object id="2" name="name2" class="type2" x="504" y="0" width="360" height="168" rotation="31"/>
<object id="4" name="polygon_name" class="no_type" x="696" y="504">
<polygon points="0,0 120,-72 192,48 24,48"/>
</object>
<object id="6" name="polyline_name" class="no_type" x="936" y="432">
<polyline points="0,0 96,0 96,-96 192,-96 192,96 24,96"/>
</object>
</objectgroup>
<objectgroup id="4" name="Group2">
<object id="3" name="no name" x="240" y="504" width="120" height="120"/>
</objectgroup>
</map>

0 comments on commit 192824e

Please sign in to comment.