Event manager now handles the new parent field.
This commit is contained in:
+25
-2
@@ -78,16 +78,39 @@ process_events :: proc(game: ^Game) {
|
|||||||
case .Game_Pause:
|
case .Game_Pause:
|
||||||
push_scene(game, make_pause_overlay())
|
push_scene(game, make_pause_overlay())
|
||||||
|
|
||||||
case .Game_Resume, .Game_Back:
|
case .Game_Resume:
|
||||||
pop_scene(game)
|
pop_scene(game)
|
||||||
|
|
||||||
case .Game_Settings:
|
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:
|
case .Game_Main_Menu:
|
||||||
set_root_scene(game, make_main_menu())
|
set_root_scene(game, make_main_menu())
|
||||||
audio_fade_out(&game.audio, duration = 1.0)
|
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:
|
case .Game_Quit:
|
||||||
game.should_close = true
|
game.should_close = true
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user