46 lines
1.1 KiB
GDScript
46 lines
1.1 KiB
GDScript
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()
|