aboutsummaryrefslogtreecommitdiff
path: root/src/platform.odin
diff options
context:
space:
mode:
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)
+}