class_name GameMenu extends ClosableMenu enum Tab { PARTY, ITEMS } @export var SIDEBAR:ItemList @export var PARTY_TAB:GameMenuPartyTab @export var ITEMS_TAB:GameMenuItemsTab var _currentTab:Tab = Tab.PARTY func _ready() -> void: super._ready() SIDEBAR.item_selected.connect(_onTabSelected) func _grabInitialFocus() -> void: _selectTab(_currentTab) SIDEBAR.select(_currentTab) SIDEBAR.grab_focus() func _onTabSelected(index:int) -> void: _selectTab(index as Tab) func _selectTab(tab:Tab) -> void: _currentTab = tab PARTY_TAB.visible = (tab == Tab.PARTY) ITEMS_TAB.visible = (tab == Tab.ITEMS) match tab: Tab.PARTY: PARTY_TAB.refresh() Tab.ITEMS: ITEMS_TAB.refresh() func _input(event:InputEvent) -> void: if not event.is_action_pressed("menu"): return if isOpen: close() elif UI.FOCUS_STACK.top() == null and not UI.dialogueActive and SCENE.currentScene == SceneSingleton.SceneType.OVERWORLD: open() get_viewport().set_input_as_handled() func _unhandled_input(event:InputEvent) -> void: if event.is_action_pressed("ui_cancel"): close() get_viewport().set_input_as_handled()