From 2d6da9f850406c55195d7468ef8acad655343523 Mon Sep 17 00:00:00 2001 From: Jochen Heizmann Date: Wed, 11 Jun 2025 16:50:47 +0200 Subject: [PATCH 1/2] Bugfix: When loading a JSON TiledMap File, the data section of Layers was null and didn't get parsed at all --- packages/tiled/lib/src/layer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tiled/lib/src/layer.dart b/packages/tiled/lib/src/layer.dart index dd25967..f8751e3 100644 --- a/packages/tiled/lib/src/layer.dart +++ b/packages/tiled/lib/src/layer.dart @@ -146,7 +146,7 @@ abstract class Layer { final width = parser.getInt('width'); final height = parser.getInt('height'); final dataNode = parser.formatSpecificParsing( - (json) => null, // data is just a string or list of int on JSON + (json) => json, // data is just a string or list of int on JSON (xml) => xml.getSingleChildOrNull('data'), ); final compression = parser.getCompressionOrNull('compression') ?? From 895d560b651936b8e561c7840a9f5694197dee89 Mon Sep 17 00:00:00 2001 From: Jochen Heizmann Date: Thu, 19 Jun 2025 17:45:35 +0200 Subject: [PATCH 2/2] fix: Object layer parsing for JSON format - When loading in JSON from object layers didn't get parsed and where empty - Default values added for ellipse and point properties (as they might not be present in JSON) --- packages/tiled/lib/src/layer.dart | 7 ++++++- packages/tiled/lib/src/objects/tiled_object.dart | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/tiled/lib/src/layer.dart b/packages/tiled/lib/src/layer.dart index a0e6238..0b6f1a6 100644 --- a/packages/tiled/lib/src/layer.dart +++ b/packages/tiled/lib/src/layer.dart @@ -194,7 +194,12 @@ abstract class Layer { parser.getString('color', defaults: ObjectGroup.defaultColorHex); final color = parser.getColor('color', defaults: ObjectGroup.defaultColor); - final objects = parser.getChildrenAs('object', TiledObject.parse); + + final objects = parser.formatSpecificParsing( + (json) => json.getChildrenAs('objects', TiledObject.parse), + (xml) => xml.getChildrenAs('object', TiledObject.parse), + ); + layer = ObjectGroup( id: id, name: name, diff --git a/packages/tiled/lib/src/objects/tiled_object.dart b/packages/tiled/lib/src/objects/tiled_object.dart index 4f7ab95..d767b82 100644 --- a/packages/tiled/lib/src/objects/tiled_object.dart +++ b/packages/tiled/lib/src/objects/tiled_object.dart @@ -118,11 +118,11 @@ class TiledObject { ); final ellipse = parser.formatSpecificParsing( - (json) => json.getBool('ellipse'), + (json) => json.getBool('ellipse', defaults: false), (xml) => xml.getChildren('ellipse').isNotEmpty, ); final point = parser.formatSpecificParsing( - (json) => json.getBool('point'), + (json) => json.getBool('point', defaults: false), (xml) => xml.getChildren('point').isNotEmpty, ); final text = parser.getSingleChildOrNullAs('text', Text.parse);