Event manager now handles the new parent field.

This commit is contained in:
2026-10-08 07:44:49 +02:00
parent 5395225cc2
commit fb7bfd6bf3
+25 -2
View File
@@ -78,16 +78,39 @@ process_events :: proc(game: ^Game) {
case .Game_Pause:
push_scene(game, make_pause_overlay())
case .Game_Resume, .Game_Back:
case .Game_Resume:
pop_scene(game)
case .Game_Settings:
push_scene(game, make_settings_menu(&game.audio, RESOLUTIONS[game.res_index].label))
parent: Maybe(Scene_Type) = nil
if active := get_active_scene(game); active != nil {
parent = active.type
}
pop_scene(game)
push_scene(game, make_settings_menu(parent, &game.audio, RESOLUTIONS[game.res_index].label))
case .Game_Main_Menu:
set_root_scene(game, make_main_menu())
audio_fade_out(&game.audio, duration = 1.0)
case .Game_Back:
// Read parent from active scene
if active := get_active_scene(game); active != nil {
if parent, ok := active.parent.?; ok {
pop_scene(game)
#partial switch parent {
case .Pause_Menu: push_scene(game, make_pause_overlay())
case .Main_Menu: push_scene(game, make_main_menu())
}
break
}
}
// still pop when no parent linked ie resuming Gameplay
pop_scene(game)
case .Game_Quit:
game.should_close = true