Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Control
- enum {
- MenuNone,
- MenuRegular,
- MenuPartyItem,
- MenuItems,
- MenuItemOpt,
- MenuItemUse,
- MenuItemGive,
- MenuItemInfo,
- MenuItemToss
- }
- # Regular Menu Nodes
- onready var regmenu = $MenuLayer/RegularMenu
- onready var regcurs = $MenuLayer/RegularMenu/RegularPanel/OptPanel/Cursor
- onready var pmcont = $MenuLayer/RegularMenu/RegularPanel/PartyMembers/PMCont
- onready var pmcurs = $MenuLayer/RegularMenu/RegularPanel/PartyMembers/Cursor
- # Item Menu Nodes
- onready var itemmenu = $MenuLayer/ItemMenu
- onready var itemcurs = $MenuLayer/ItemMenu/ItemPanel/Cursor
- onready var itemcont = $MenuLayer/ItemMenu/ItemPanel/ItemCont
- onready var itemoptmenu = $MenuLayer/ItemMenu/ItemPanel/Cursor/ItemOptPanel
- onready var itemoptcurs = $MenuLayer/ItemMenu/ItemPanel/Cursor/ItemOptPanel/Cursor
- # Other Nodes
- onready var popuppanel = $MenuLayer/PopupPanel
- onready var timer = $MenuLayer/Timer
- var curr_menu: int
- var selected_pm: int
- var selected_item: int
- func _ready():
- curr_menu = MenuNone
- PlayerStuff.connect("pms_updated", self, "_onPMsUpdated")
- popuppanel.hide()
- func _process(_delta):
- # \ - Visibilities - / #
- ### Regular Menu ###
- regmenu.visible = curr_menu in [MenuRegular, MenuPartyItem]
- # Regular Menu Cursor #
- regcurs.visible = regmenu.visible
- regcurs.movable = curr_menu == MenuRegular
- # Party Cursor #
- pmcurs.visible = curr_menu in [MenuPartyItem]
- pmcurs.movable = pmcurs.visible
- ### End of Regular Menu ###
- ### Item Menu ###
- itemmenu.visible = curr_menu in [MenuItems, MenuItemOpt, MenuItemInfo, MenuItemToss]
- # Item Menu Cursor #
- itemcurs.visible = itemmenu.visible
- itemcurs.movable = curr_menu == MenuItems
- # Item Option Menu #
- itemoptmenu.visible = curr_menu in [MenuItemOpt, MenuItemInfo, MenuItemToss]
- # Item Option Cursor #
- itemoptcurs.visible = itemoptmenu.visible
- itemoptcurs.movable = curr_menu == MenuItemOpt
- # \ - End of Visibilities - / #
- if Input.is_action_just_pressed("confirm"):
- match curr_menu:
- MenuRegular:
- match regcurs.v_id:
- 0:
- curr_menu = MenuPartyItem
- 6:
- close()
- MenuPartyItem:
- if PlayerStuff.pms[pmcurs.v_id].inv.size() < 1:
- AudioManager.playSound(SoundPaths.Wrong)
- popup("%s has no items." % PlayerStuff.pms[pmcurs.v_id].name, 1)
- else:
- selected_pm = pmcurs.v_id
- itemcurs.g_id = Vector2.ZERO
- curr_menu = MenuItems
- MenuItems:
- selected_item = itemcurs.g_id.x + itemcurs.g_id.y * itemcont.columns
- curr_menu = MenuItemOpt
- MenuItemOpt:
- match itemoptcurs.v_id:
- 0:
- curr_menu = MenuItemUse
- 1:
- curr_menu = MenuItemGive
- 2:
- curr_menu = MenuItemInfo
- Dialogue.startDialogue("%s - %s" % [PlayerStuff.pms[selected_pm].inv[selected_item].name, PlayerStuff.pms[selected_pm].inv[selected_item].what_it_does], "%s" % PlayerStuff.pms[selected_pm].inv[selected_item].description, false, [], 0)
- yield(Dialogue, "d_done")
- curr_menu = MenuItems
- 3:
- curr_menu = MenuItemToss
- if Input.is_action_just_pressed("cancel"):
- match curr_menu:
- MenuRegular:
- close()
- MenuPartyItem:
- curr_menu = MenuRegular
- MenuItems:
- curr_menu = MenuPartyItem
- MenuItemOpt:
- curr_menu = MenuItems
- MenuItemUse, MenuItemGive:
- curr_menu = MenuItemOpt
- ### Regular Menu Variable Stuff
- $MenuLayer/RegularMenu/RegularPanel/OtherPanel/Ora/Value.text = str(PlayerStuff.currency)
- $MenuLayer/RegularMenu/RegularPanel/OtherPanel/Steps/Value.text = str(PlayerStuff.steps)
- for key in ImportantStuff.keys.size():
- var key_type: String = "no"
- if ImportantStuff.keys[key]:
- match key:
- 0:
- key_type = "water"
- 1:
- key_type = "fire"
- 2:
- key_type = "earth"
- 3:
- key_type = "air"
- else:
- key_type = "no"
- $MenuLayer/RegularMenu/RegularPanel/OtherPanel/Keys/KeyCont.get_child(key).texture = load("res://assets/images/keys/%s_key.png" % key_type)
- ### Party Member Stuff
- for pm in pmcont.get_child_count():
- match curr_menu:
- MenuPartyItem:
- if PlayerStuff.pms[pm].inv.size() < 1:
- pmcont.get_child(pm).get_node("Name").self_modulate = Color8(56, 56, 56)
- else:
- pmcont.get_child(pm).get_node("Name").self_modulate = Color8(255, 255, 255)
- ### Item Menu Stuff
- itemmenu.get_node("ItemPanel/NamePanel/Name").text = "%s's Items" % PlayerStuff.pms[selected_pm].name
- func open():
- curr_menu = MenuRegular
- get_node("..").movable = false
- func close():
- curr_menu = MenuNone
- get_node("..").movable = true
- func _onPMsUpdated():
- for pm in PlayerStuff.pms.size():
- if pmcont.get_child_count() < pm + 1:
- var new_pm = preload("res://scenes/subscenes/ui/menus/world/PartyMember.tscn").instance()
- pmcont.add_child(new_pm)
- for extra in range(PlayerStuff.pms.size(), pmcont.get_child_count()):
- pmcont.get_child(extra).queue_free()
- for pm in PlayerStuff.pms.size():
- pmcont.get_child(pm).get_node("Name").text = PlayerStuff.pms[pm].name
- pmcont.get_child(pm).get_node("Level/Val").text = str(PlayerStuff.pms[pm].lvl)
- pmcont.get_child(pm).get_node("HP/Cur").text = str(PlayerStuff.pms[pm].hp)
- pmcont.get_child(pm).get_node("HP/Max").text = str(PlayerStuff.pms[pm].maxhp)
- pmcont.get_child(pm).get_node("SP/Cur").text = str(PlayerStuff.pms[pm].sp)
- pmcont.get_child(pm).get_node("SP/Max").text = str(PlayerStuff.pms[pm].maxsp)
- # Items #
- for item in PlayerStuff.pms[selected_pm].inv.size():
- if itemcont.get_child_count() < item + 1:
- var new_item = Label.new()
- new_item.rect_min_size.x = 16 * 12
- new_item.rect_min_size.y = 16
- itemcont.add_child(new_item)
- for extra in range(PlayerStuff.pms[selected_pm].inv.size(), itemcont.get_child_count()):
- itemcont.get_child(extra).queue_free()
- for item in PlayerStuff.pms[selected_pm].inv.size():
- itemcont.get_child(item).text = PlayerStuff.pms[selected_pm].inv[item].name
- func popup(text: String, time: float) -> void:
- popuppanel.get_node("Text").text = text
- popuppanel.show()
- timer.start(0.5)
- yield(timer, "timeout")
- popuppanel.hide()
Advertisement
Add Comment
Please, Sign In to add comment