New events and consolidated event manager procs.

This commit is contained in:
2026-09-18 07:23:46 +02:00
parent 6b76ad6874
commit 3fb194c57d
2 changed files with 45 additions and 65 deletions
-65
View File
@@ -267,69 +267,4 @@ make_gameplay_scene :: proc() -> Scene {
type = .Gameplay,
level = init_level(),
}
}
// ------------------------------------------------------------------------------
// Unified Scene Dispatchers
// ------------------------------------------------------------------------------
scene_render :: proc(scene: ^Scene) {
if level, ok := scene.level.?; ok {
render_level(level)
render_hud(level)
}
#partial switch scene.type {
case .Pause_Menu:
render_pause_menu(scene^)
case .Game_Over:
render_game_over(scene^)
case .Main_Menu:
render_main_menu(scene^)
}
}
scene_update :: proc(scene: ^Scene, game: ^Game, input: Input_Event, dt: f32) {
#partial switch scene.type {
case .Main_Menu:
update_main_menu(scene, input)
case .Pause_Menu:
update_pause_menu(scene, input)
case .Gameplay:
level, level_ok := &scene.level.?
assert(level_ok, "scene_update: .Gameplay scene is missing a Level component")
update_level(level, input, dt)
if input.pause_pressed {
emit_event(Event{ type = .Game_Pause })
}
case .Game_Over:
update_game_over(scene, input)
}
for event in GLOBAL_EVENTS {
#partial switch event.type {
case .Game_Start:
game.overlay_scene = nil
game.scene = make_gameplay_scene()
case .Game_Pause:
game.overlay_scene = make_pause_overlay()
case .Game_Resume:
game.overlay_scene = nil
case .Game_Main_Menu:
game.overlay_scene = nil
game.scene = make_main_menu()
case .Game_Over:
game.overlay_scene = make_game_over_overlay(event.winner_is_player)
case .Game_Quit:
game.should_close = true
}
}
}