diff options
Diffstat (limited to 'src/tiled/tiled.odin')
| -rw-r--r-- | src/tiled/tiled.odin | 28 |
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) |
