aboutsummaryrefslogtreecommitdiff
path: root/client/menu/menu_manager.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/menu/menu_manager.gd')
-rw-r--r--client/menu/menu_manager.gd36
1 files changed, 36 insertions, 0 deletions
diff --git a/client/menu/menu_manager.gd b/client/menu/menu_manager.gd
new file mode 100644
index 00000000..69866377
--- /dev/null
+++ b/client/menu/menu_manager.gd
@@ -0,0 +1,36 @@
+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()])
+
+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()