Fully working menu system

This commit is contained in:
2ndbeam 2024-05-18 12:37:36 +03:00
commit 6eef2c781c
11 changed files with 93 additions and 9 deletions

View file

@ -11,27 +11,33 @@ extends Node
$Action8
]
@export var menu: Menu
const TRANSIT_BUTTON_SCRIPT = preload("res://scripts/Classes/Menu/transit_button.gd")
@export var menu: Menu = null
func _ready():
load_menu()
## Called when menu is changed
func load_menu():
# iterating through all actions
for i in range(len(menu.item_ids)):
if actions[i] is TransitButton:
actions[i].button_up.disconnect(transit_menu)
elif actions[i] is MenuAction:
actions[i].button_up.disconnect(actions[i].action)
actions[i].set_script(null)
actions[i].text = menu.item_ids[i]
match menu.item_actions[i]:
Menu.Action.TransitAction:
actions[i].set_script("res://scripts/Classes/transit_button.gd")
actions[i].text = menu.item_ids[i]
actions[i].set_script(TRANSIT_BUTTON_SCRIPT)
actions[i].id = i
Menu.Action.ButtonAction:
actions[i].set_script(menu.item_data[i])
actions[i].text = menu.item_ids[i]
actions[i].set_script(menu.item_data[i].load())
## Called with transit_button, changes current menu
func transit_menu(id: int):
assert(id < len(menu.item_ids) and id > 0)
var new_menu = menu.item_data[id].duplicate()
assert(id < len(menu.item_ids) and id >= 0)
var new_menu = menu.item_data[id].load().duplicate()
menu = new_menu
load_menu()