Event manager now handles the new parent field.
This commit is contained in:
+25
-2
@@ -78,15 +78,38 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user