diff options
| author | Xander Swan <[hidden email]> | 2026-01-01 18:32:20 -0500 |
|---|---|---|
| committer | Xander Swan <[hidden email]> | 2026-01-01 18:32:20 -0500 |
| commit | 65a2ceda55198dab3bab75c06c0d50adeb0a1101 (patch) | |
| tree | 2a08400520f60fcd86b381bc840bb5c739ff998a /src/platform.odin | |
| parent | dc373b507ca68ada2cbf4c8e0d7949d6bc46ed9b (diff) | |
lots of changes + player dash
Diffstat (limited to 'src/platform.odin')
| -rw-r--r-- | src/platform.odin | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/platform.odin b/src/platform.odin index 306df3b..bc0e103 100644 --- a/src/platform.odin +++ b/src/platform.odin @@ -2,6 +2,7 @@ package demonchime import "draw" import "phys" +import "tiled" Platform :: struct { handle: Entity_Handle, @@ -24,3 +25,35 @@ draw_platforms :: proc() { } draw.renderer.tint = {1, 1, 1, 1} } + +clear_platforms :: proc() { + iter := iter_entity_list(state.platform_list) + for p in entity_list_iter(&iter) { + phys.remove_body(p.body) + delete_entity(&state.platform_list, p.handle) + } +} + +setup_map_collisions :: proc() { + clear_platforms() + + make_map_collisions :: proc( + x: i32, + y: i32, + tile: tiled.Tile, + tile_set: tiled.Tile_Set, + ) { + objs, is_object_layer := tile.object_group.layer.(tiled.Object_Layer) + if !is_object_layer { + return + } + + for obj in objs { + make_platform({ + Vec2{f32(x), f32(y)} + obj.position, + obj.size, + }) + } + } + tiled.iterate_map_tiles(tiled.current_room.tmap, make_map_collisions) +} |
