aboutsummaryrefslogtreecommitdiff
path: root/src/platform.odin
diff options
context:
space:
mode:
authorXander Swan <[hidden email]>2026-01-01 18:32:20 -0500
committerXander Swan <[hidden email]>2026-01-01 18:32:20 -0500
commit65a2ceda55198dab3bab75c06c0d50adeb0a1101 (patch)
tree2a08400520f60fcd86b381bc840bb5c739ff998a /src/platform.odin
parentdc373b507ca68ada2cbf4c8e0d7949d6bc46ed9b (diff)
lots of changes + player dash
Diffstat (limited to 'src/platform.odin')
-rw-r--r--src/platform.odin33
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)
+}