From 1d791ac6059c40747ca83af561a28100948cdc3f Mon Sep 17 00:00:00 2001 From: Carl Friess Date: Wed, 6 Jul 2022 14:22:02 +0200 Subject: [PATCH] Support class attribute as alias for object types --- .../Tiled/TiledMapProcessor.cs | 3 +++ .../Tiled/TiledMapTilesetWriter.cs | 2 +- .../Tiled/TiledMapWriter.cs | 2 +- .../Serialization/TiledMapObjectContent.cs | 4 ++++ .../TestData/test-object-layer.tmx | 2 +- .../TiledMapImporterProcessorTests.cs | 1 + 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapProcessor.cs b/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapProcessor.cs index 93e5b9ac..da130a4c 100644 --- a/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapProcessor.cs +++ b/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapProcessor.cs @@ -69,6 +69,9 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled if (string.IsNullOrWhiteSpace(obj.Type) && !string.IsNullOrWhiteSpace(template.Object.Type)) obj.Type = template.Object.Type; + + if (string.IsNullOrWhiteSpace(obj.Class) && !string.IsNullOrWhiteSpace(template.Object.Class)) + obj.Class = template.Object.Class; } } } diff --git a/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetWriter.cs b/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetWriter.cs index f0b0e9ca..19c52740 100644 --- a/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetWriter.cs +++ b/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetWriter.cs @@ -74,7 +74,7 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled writer.Write(@object.Identifier); writer.Write(@object.Name ?? string.Empty); - writer.Write(@object.Type ?? string.Empty); + writer.Write(@object.Class ?? @object.Type ?? string.Empty); writer.Write(@object.X); writer.Write(@object.Y); writer.Write(@object.Width); diff --git a/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapWriter.cs b/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapWriter.cs index d4966fb1..2c8eab1a 100644 --- a/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapWriter.cs +++ b/src/cs/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapWriter.cs @@ -152,7 +152,7 @@ namespace MonoGame.Extended.Content.Pipeline.Tiled writer.Write(@object.Identifier); writer.Write(@object.Name ?? string.Empty); - writer.Write(@object.Type ?? string.Empty); + writer.Write(@object.Class ?? @object.Type ?? string.Empty); writer.Write(@object.X); writer.Write(@object.Y); writer.Write(@object.Width); diff --git a/src/cs/MonoGame.Extended.Tiled/Serialization/TiledMapObjectContent.cs b/src/cs/MonoGame.Extended.Tiled/Serialization/TiledMapObjectContent.cs index ce47d87d..76e2ba2c 100644 --- a/src/cs/MonoGame.Extended.Tiled/Serialization/TiledMapObjectContent.cs +++ b/src/cs/MonoGame.Extended.Tiled/Serialization/TiledMapObjectContent.cs @@ -29,9 +29,13 @@ namespace MonoGame.Extended.Tiled.Serialization [XmlAttribute(DataType = "string", AttributeName = "name")] public string Name { get; set; } + // Deprecated as of Tiled 1.9.0 (replaced by "class" attribute) [XmlAttribute(DataType = "string", AttributeName = "type")] public string Type { get; set; } + [XmlAttribute(DataType = "string", AttributeName = "class")] + public string Class { get; set; } + [XmlAttribute(DataType = "float", AttributeName = "x")] public float X { get => _x ?? 0; set => _x = value; } diff --git a/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-object-layer.tmx b/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-object-layer.tmx index 2b53c6d8..dcdbee90 100644 --- a/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-object-layer.tmx +++ b/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TestData/test-object-layer.tmx @@ -7,7 +7,7 @@ - + diff --git a/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs b/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs index f92094bf..352457a1 100644 --- a/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs +++ b/src/cs/Tests/MonoGame.Extended.Content.Pipeline.Tests.Tiled/TiledMapImporterProcessorTests.cs @@ -177,6 +177,7 @@ namespace MonoGame.Extended.Content.Pipeline.Tests.Tiled Assert.Equal((uint)0, tmxObjectGroup.Objects[1].GlobalIdentifier); Assert.Equal((uint)23, tmxObjectGroup.Objects[5].GlobalIdentifier); Assert.Equal("rectangle", tmxObjectGroup.Objects[2].Type); + Assert.Equal("sprite", tmxObjectGroup.Objects[1].Class); Assert.NotNull(tmxPolygon); Assert.Equal("0,0 180,90 -8,275 -45,81 38,77", tmxPolygon.Points); Assert.NotNull(tmxPolyline);