diff options
Diffstat (limited to 'src/main.odin')
| -rw-r--r-- | src/main.odin | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main.odin b/src/main.odin index 1d3de1a..a0c2fcb 100644 --- a/src/main.odin +++ b/src/main.odin @@ -7,6 +7,7 @@ import "core:c/libc" import "core:fmt" import "core:log" import "core:mem" +import "core:math" import "core:math/linalg" import rl "vendor:raylib" @@ -22,14 +23,18 @@ Rect :: struct { ROOM_FADE_SIZE :: 8 +FIXED_UPDATE_RATE :: 1.0/60 + state: struct { debug_mode: bool, camera_target: Vec2, + last_fixed_update: f64, camera: rl.Camera2D, prop_list: Entity_List(Prop), wiggle_prop_list: Entity_List(Wiggle_Prop), platform_list: Entity_List(Platform), bullet_list: Entity_List(Bullet), + rope_list: Entity_List(Rope), } logger: log.Logger @@ -72,6 +77,13 @@ frame :: proc() { dt := rl.GetFrameTime() + if rl.GetTime() - state.last_fixed_update > FIXED_UPDATE_RATE { + state.last_fixed_update = rl.GetTime() + for cb in fixed_update_callbacks { + cb(FIXED_UPDATE_RATE) + } + } + for cb in update_callbacks { cb(dt) } @@ -98,6 +110,7 @@ frame :: proc() { for cb in draw_callbacks { cb() } + draw_room(current_room.id) rl.DrawRectangleGradientH( @@ -168,6 +181,10 @@ cleanup :: proc() { delete_entity_list(state.bullet_list) delete_entity_list(state.prop_list) delete_entity_list(state.wiggle_prop_list) + + clear_ropes() + delete_entity_list(state.rope_list) + phys.destroy_world() } @@ -221,3 +238,4 @@ main :: proc() { cleanup() } + |
