aboutsummaryrefslogtreecommitdiff
path: root/src/tiled
diff options
context:
space:
mode:
Diffstat (limited to 'src/tiled')
-rw-r--r--src/tiled/tiled.odin28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/tiled/tiled.odin b/src/tiled/tiled.odin
index e1627a5..e01f6c5 100644
--- a/src/tiled/tiled.odin
+++ b/src/tiled/tiled.odin
@@ -344,6 +344,34 @@ convert_json_map :: proc(jmap: Json_Map, tmap: ^Map, path: string) -> Error {
return .NONE
}
+Map_Iterate_Callback :: proc(i32, i32, Tile, Tile_Set)
+
+iterate_map_tiles :: proc(tmap: Map, callback: Map_Iterate_Callback) {
+ for layer in tmap.layers {
+ tile_layer, ok := layer.layer.(Tile_Layer)
+ if !ok {
+ continue
+ }
+
+ x: i32 = 0
+ y: i32 = 0
+
+ for cell in tile_layer.data {
+ if cell != 0 {
+ tile := tmap.tiles[cell - 1]
+ tile_set := tmap.tile_sets[tile.tile_set]
+ callback(x, y, tile, tile_set)
+ }
+
+ x += tmap.tile_width
+ if x > (tmap.width - 1) * tmap.tile_width {
+ x = 0
+ y += tmap.tile_height
+ }
+ }
+ }
+}
+
draw_map :: proc(tmap: Map) {
for layer in tmap.layers {
tile_layer, ok := layer.layer.(Tile_Layer)