extends Control class_name MenuManager @onready var menus = { "main": $MainMenu, "credits": $CreditsMenu, "settings": $SettingsMenu } @onready var transition = $SceneTransition var menu_stack = ["main"] func _ready(): Global.focus_first_button(menus[menu_stack.back()]) if Global.fade_next: Global.fade_next = false transition.fade_in() func _input(_event): if Input.is_action_just_pressed("ui_cancel") && menu_stack.size() > 1: go_back() func goto(menu_name: String): show_menu(menu_name) menu_stack.push_back(menu_name) print("Go to called. Stack: " + str(menu_stack)) func go_back(): menu_stack.pop_back() if menu_stack.is_empty(): Global.showError("Menu stack empty") show_menu(menu_stack.back()) print("Go back called. Stack: " + str(menu_stack)) func show_menu(menu_name: String): for k in menus.keys(): if k == menu_name: menus[k].show() if menus[k].has_method("prepare"): menus[k].prepare() # Optionally run some code Global.focus_first_button(menus[k]) else: menus[k].hide()