From 4b3d16db5e89bcb7677388907aef49b1e59ba233 Mon Sep 17 00:00:00 2001 From: Pavel Kulyov Date: Fri, 31 Oct 2025 22:48:43 +0300 Subject: [PATCH 1/4] tiled: simplify unknown identifier detection for the user Also print a hash ready to use in the interning process. --- cute_tiled.h | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/cute_tiled.h b/cute_tiled.h index 74f4b0f9..b7cc539d 100644 --- a/cute_tiled.h +++ b/cute_tiled.h @@ -1476,6 +1476,13 @@ static int cute_tiled_try(cute_tiled_map_internal_t* m, char expect) CUTE_TILED_CHECK(cute_tiled_next(m) == (expect), error); \ } while (0) +#define cute_tiled_unknown_identifier(m, h) \ + do { \ + static char error[256]; \ + CUTE_TILED_SNPRINTF(error, sizeof(error), "Unknown identifier found: %s, hash: %llu.", m->scratch, h); \ + CUTE_TILED_CHECK(0, error); \ + } while (0) + char cute_tiled_parse_char(char c) { switch (c) @@ -2096,7 +2103,7 @@ cute_tiled_object_t* cute_tiled_read_object(cute_tiled_map_internal_t* m) break; default: - CUTE_TILED_CHECK(0, "Unknown identifier found."); + cute_tiled_unknown_identifier(m, h); } cute_tiled_try(m, ','); @@ -2276,7 +2283,7 @@ cute_tiled_layer_t* cute_tiled_layers(cute_tiled_map_internal_t* m) break; default: - CUTE_TILED_CHECK(0, "Unknown identifier found."); + cute_tiled_unknown_identifier(m, h); } cute_tiled_try(m, ','); @@ -2401,7 +2408,7 @@ cute_tiled_tile_descriptor_t* cute_tiled_read_tile_descriptor(cute_tiled_map_int break; default: - CUTE_TILED_CHECK(0, "Unknown identifier found."); + cute_tiled_unknown_identifier(m, h); } cute_tiled_try(m, ','); @@ -2438,7 +2445,7 @@ int cute_tiled_read_point_internal(cute_tiled_map_internal_t* m, int* point_x, i break; default: - CUTE_TILED_CHECK(0, "Unknown identifier found."); + cute_tiled_unknown_identifier(m, h); } cute_tiled_try(m, ','); @@ -2625,7 +2632,7 @@ cute_tiled_tileset_t* cute_tiled_tileset(cute_tiled_map_internal_t* m) break; default: - CUTE_TILED_CHECK(0, "Unknown identifier found."); + cute_tiled_unknown_identifier(m, h); } cute_tiled_try(m, ','); @@ -2756,7 +2763,7 @@ static int cute_tiled_dispatch_map_internal(cute_tiled_map_internal_t* m) break; default: - CUTE_TILED_CHECK(0, "Unknown identifier found."); + cute_tiled_unknown_identifier(m, h); } return 1; From c70716d4d52d1d6ac94d45c1022fa5d3885e669b Mon Sep 17 00:00:00 2001 From: Pavel Kulyov Date: Sat, 1 Nov 2025 11:09:24 +0300 Subject: [PATCH 2/4] tiled: add support for staggeraxis --- cute_tiled.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cute_tiled.h b/cute_tiled.h index b7cc539d..abc6f7c8 100644 --- a/cute_tiled.h +++ b/cute_tiled.h @@ -421,7 +421,7 @@ struct cute_tiled_map_t int property_count; // Number of elements in the `properties` array. cute_tiled_property_t* properties; // Array of properties. cute_tiled_string_t renderorder; // Rendering direction (orthogonal maps only). - /* staggeraxis */ // Not currently supported. + cute_tiled_string_t staggeraxis; // Which axis is staggered (staggered and hexagonal maps). /* staggerindex */ // Not currently supported. cute_tiled_string_t tiledversion; // The Tiled version used to save the file. int tileheight; // Map grid height. @@ -2714,6 +2714,10 @@ static int cute_tiled_dispatch_map_internal(cute_tiled_map_internal_t* m) cute_tiled_intern_string(m, &m->map.renderorder); break; + case 18082816309487282231U: // staggeraxis + cute_tiled_intern_string(m, &m->map.staggeraxis); + break; + case 1007832939408977147U: // tiledversion cute_tiled_intern_string(m, &m->map.tiledversion); break; @@ -2848,6 +2852,7 @@ static void cute_tiled_patch_interned_strings(cute_tiled_map_internal_t* m) cute_tiled_deintern_string(m, &m->map.class_); cute_tiled_deintern_string(m, &m->map.orientation); cute_tiled_deintern_string(m, &m->map.renderorder); + cute_tiled_deintern_string(m, &m->map.staggeraxis); cute_tiled_deintern_string(m, &m->map.tiledversion); cute_tiled_deintern_string(m, &m->map.type); cute_tiled_deintern_properties(m, m->map.properties, m->map.property_count); From cd26618dc5859fbe871997f3b9010c196b86cf70 Mon Sep 17 00:00:00 2001 From: Pavel Kulyov Date: Sat, 1 Nov 2025 14:26:12 +0300 Subject: [PATCH 3/4] tiled: add hexsidelength support --- cute_tiled.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cute_tiled.h b/cute_tiled.h index abc6f7c8..ce3f73ee 100644 --- a/cute_tiled.h +++ b/cute_tiled.h @@ -413,7 +413,7 @@ struct cute_tiled_map_t uint32_t backgroundcolor; // Hex-formatted color (#RRGGBB or #AARRGGBB) (optional). cute_tiled_string_t class_; // The class of the map (since 1.9, optional). int height; // Number of tile rows. - /* hexsidelength */ // Not currently supported. + int hexsidelength; // Width or height (by staggered axis) of the tile’s edge, in pixels (hexagonal). int infinite; // Whether the map has infinite dimensions. cute_tiled_layer_t* layers; // Linked list of layers. Can be NULL. int nextobjectid; // Auto-increments for each placed object. @@ -2679,6 +2679,10 @@ static int cute_tiled_dispatch_map_internal(cute_tiled_map_internal_t* m) cute_tiled_read_int(m, &m->map.height); break; + case 5684465468058326115U: // hexsidelength + cute_tiled_read_int(m, &m->map.hexsidelength); + break; + case 16529928297377797591U: // infinite cute_tiled_read_bool(m, &m->map.infinite); break; From fcff390f5ee7a67cd7498ba123b104d2f5470362 Mon Sep 17 00:00:00 2001 From: Pavel Kulyov Date: Sat, 1 Nov 2025 14:26:26 +0300 Subject: [PATCH 4/4] tiled: add staggerindex support --- cute_tiled.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cute_tiled.h b/cute_tiled.h index ce3f73ee..e7f6e15b 100644 --- a/cute_tiled.h +++ b/cute_tiled.h @@ -422,7 +422,7 @@ struct cute_tiled_map_t cute_tiled_property_t* properties; // Array of properties. cute_tiled_string_t renderorder; // Rendering direction (orthogonal maps only). cute_tiled_string_t staggeraxis; // Which axis is staggered (staggered and hexagonal maps). - /* staggerindex */ // Not currently supported. + cute_tiled_string_t staggerindex; // Whether the “even” or “odd” indexes along the staggered axis are shifted (staggered/hexagonal). cute_tiled_string_t tiledversion; // The Tiled version used to save the file. int tileheight; // Map grid height. cute_tiled_tileset_t* tilesets; // Linked list of tilesets. @@ -2722,6 +2722,10 @@ static int cute_tiled_dispatch_map_internal(cute_tiled_map_internal_t* m) cute_tiled_intern_string(m, &m->map.staggeraxis); break; + case 16693286153064272296U: // staggerindex + cute_tiled_intern_string(m, &m->map.staggerindex); + break; + case 1007832939408977147U: // tiledversion cute_tiled_intern_string(m, &m->map.tiledversion); break; @@ -2857,6 +2861,7 @@ static void cute_tiled_patch_interned_strings(cute_tiled_map_internal_t* m) cute_tiled_deintern_string(m, &m->map.orientation); cute_tiled_deintern_string(m, &m->map.renderorder); cute_tiled_deintern_string(m, &m->map.staggeraxis); + cute_tiled_deintern_string(m, &m->map.staggerindex); cute_tiled_deintern_string(m, &m->map.tiledversion); cute_tiled_deintern_string(m, &m->map.type); cute_tiled_deintern_properties(m, m->map.properties, m->map.property_count);