PokemonMaster124

Menu Problem

Jun 18th, 2022 (edited)
1,977
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extends Control
  2.  
  3. enum {
  4.     MenuNone,
  5.     MenuRegular,
  6.     MenuPartyItem,
  7.     MenuItems,
  8.     MenuItemOpt,
  9.     MenuItemUse,
  10.     MenuItemGive,
  11.     MenuItemInfo,
  12.     MenuItemToss
  13. }
  14.  
  15. # Regular Menu Nodes
  16. onready var regmenu = $MenuLayer/RegularMenu
  17. onready var regcurs = $MenuLayer/RegularMenu/RegularPanel/OptPanel/Cursor
  18.  
  19. onready var pmcont = $MenuLayer/RegularMenu/RegularPanel/PartyMembers/PMCont
  20. onready var pmcurs = $MenuLayer/RegularMenu/RegularPanel/PartyMembers/Cursor
  21.  
  22. # Item Menu Nodes
  23. onready var itemmenu = $MenuLayer/ItemMenu
  24. onready var itemcurs = $MenuLayer/ItemMenu/ItemPanel/Cursor
  25. onready var itemcont = $MenuLayer/ItemMenu/ItemPanel/ItemCont
  26.  
  27. onready var itemoptmenu = $MenuLayer/ItemMenu/ItemPanel/Cursor/ItemOptPanel
  28. onready var itemoptcurs = $MenuLayer/ItemMenu/ItemPanel/Cursor/ItemOptPanel/Cursor
  29.  
  30. # Other Nodes
  31. onready var popuppanel = $MenuLayer/PopupPanel
  32. onready var timer = $MenuLayer/Timer
  33.  
  34. var curr_menu: int
  35.  
  36. var selected_pm: int
  37. var selected_item: int
  38.  
  39. func _ready():
  40.     curr_menu = MenuNone
  41.     PlayerStuff.connect("pms_updated", self, "_onPMsUpdated")
  42.     popuppanel.hide()
  43.  
  44. func _process(_delta):
  45.     # \ - Visibilities - / #
  46.     ### Regular Menu ###
  47.     regmenu.visible = curr_menu in [MenuRegular, MenuPartyItem]
  48.    
  49.     # Regular Menu Cursor #
  50.     regcurs.visible = regmenu.visible
  51.     regcurs.movable = curr_menu == MenuRegular
  52.    
  53.     # Party Cursor #
  54.     pmcurs.visible = curr_menu in [MenuPartyItem]
  55.     pmcurs.movable = pmcurs.visible
  56.    
  57.     ### End of Regular Menu ###
  58.    
  59.     ### Item Menu ###
  60.     itemmenu.visible = curr_menu in [MenuItems, MenuItemOpt, MenuItemInfo, MenuItemToss]
  61.    
  62.     # Item Menu Cursor #
  63.     itemcurs.visible = itemmenu.visible
  64.     itemcurs.movable = curr_menu == MenuItems
  65.    
  66.     # Item Option Menu #
  67.     itemoptmenu.visible = curr_menu in [MenuItemOpt, MenuItemInfo, MenuItemToss]
  68.    
  69.     # Item Option Cursor #
  70.     itemoptcurs.visible = itemoptmenu.visible
  71.     itemoptcurs.movable = curr_menu == MenuItemOpt
  72.     # \ - End of Visibilities - / #
  73.    
  74.     if Input.is_action_just_pressed("confirm"):
  75.         match curr_menu:
  76.             MenuRegular:
  77.                 match regcurs.v_id:
  78.                     0:
  79.                         curr_menu = MenuPartyItem
  80.                     6:
  81.                         close()
  82.             MenuPartyItem:
  83.                 if PlayerStuff.pms[pmcurs.v_id].inv.size() < 1:
  84.                     AudioManager.playSound(SoundPaths.Wrong)
  85.                     popup("%s has no items." % PlayerStuff.pms[pmcurs.v_id].name, 1)
  86.                 else:
  87.                     selected_pm = pmcurs.v_id
  88.                     itemcurs.g_id = Vector2.ZERO
  89.                     curr_menu = MenuItems
  90.             MenuItems:
  91.                 selected_item = itemcurs.g_id.x + itemcurs.g_id.y * itemcont.columns
  92.                 curr_menu = MenuItemOpt
  93.             MenuItemOpt:
  94.                 match itemoptcurs.v_id:
  95.                     0:
  96.                         curr_menu = MenuItemUse
  97.                     1:
  98.                         curr_menu = MenuItemGive
  99.                     2:
  100.                         curr_menu = MenuItemInfo
  101.                         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)
  102.                         yield(Dialogue, "d_done")
  103.                         curr_menu = MenuItems
  104.                     3:
  105.                         curr_menu = MenuItemToss
  106.    
  107.     if Input.is_action_just_pressed("cancel"):
  108.         match curr_menu:
  109.             MenuRegular:
  110.                 close()
  111.             MenuPartyItem:
  112.                 curr_menu = MenuRegular
  113.             MenuItems:
  114.                 curr_menu = MenuPartyItem
  115.             MenuItemOpt:
  116.                 curr_menu = MenuItems
  117.             MenuItemUse, MenuItemGive:
  118.                 curr_menu = MenuItemOpt
  119.    
  120.     ### Regular Menu Variable Stuff
  121.     $MenuLayer/RegularMenu/RegularPanel/OtherPanel/Ora/Value.text = str(PlayerStuff.currency)
  122.     $MenuLayer/RegularMenu/RegularPanel/OtherPanel/Steps/Value.text = str(PlayerStuff.steps)
  123.    
  124.     for key in ImportantStuff.keys.size():
  125.         var key_type: String = "no"
  126.         if ImportantStuff.keys[key]:
  127.             match key:
  128.                 0:
  129.                     key_type = "water"
  130.                 1:
  131.                     key_type = "fire"
  132.                 2:
  133.                     key_type = "earth"
  134.                 3:
  135.                     key_type = "air"
  136.         else:
  137.             key_type = "no"
  138.         $MenuLayer/RegularMenu/RegularPanel/OtherPanel/Keys/KeyCont.get_child(key).texture = load("res://assets/images/keys/%s_key.png" % key_type)
  139.    
  140.     ### Party Member Stuff
  141.     for pm in pmcont.get_child_count():
  142.         match curr_menu:
  143.             MenuPartyItem:
  144.                 if PlayerStuff.pms[pm].inv.size() < 1:
  145.                     pmcont.get_child(pm).get_node("Name").self_modulate = Color8(56, 56, 56)
  146.                 else:
  147.                     pmcont.get_child(pm).get_node("Name").self_modulate = Color8(255, 255, 255)
  148.    
  149.     ### Item Menu Stuff
  150.     itemmenu.get_node("ItemPanel/NamePanel/Name").text = "%s's Items" % PlayerStuff.pms[selected_pm].name
  151.  
  152.  
  153. func open():
  154.     curr_menu = MenuRegular
  155.     get_node("..").movable = false
  156.  
  157. func close():
  158.     curr_menu = MenuNone
  159.     get_node("..").movable = true
  160.  
  161. func _onPMsUpdated():
  162.     for pm in PlayerStuff.pms.size():
  163.         if pmcont.get_child_count() < pm + 1:
  164.             var new_pm = preload("res://scenes/subscenes/ui/menus/world/PartyMember.tscn").instance()
  165.             pmcont.add_child(new_pm)
  166.    
  167.     for extra in range(PlayerStuff.pms.size(), pmcont.get_child_count()):
  168.         pmcont.get_child(extra).queue_free()
  169.    
  170.     for pm in PlayerStuff.pms.size():
  171.         pmcont.get_child(pm).get_node("Name").text = PlayerStuff.pms[pm].name
  172.         pmcont.get_child(pm).get_node("Level/Val").text = str(PlayerStuff.pms[pm].lvl)
  173.         pmcont.get_child(pm).get_node("HP/Cur").text = str(PlayerStuff.pms[pm].hp)
  174.         pmcont.get_child(pm).get_node("HP/Max").text = str(PlayerStuff.pms[pm].maxhp)
  175.         pmcont.get_child(pm).get_node("SP/Cur").text = str(PlayerStuff.pms[pm].sp)
  176.         pmcont.get_child(pm).get_node("SP/Max").text = str(PlayerStuff.pms[pm].maxsp)
  177.    
  178.     # Items #
  179.     for item in PlayerStuff.pms[selected_pm].inv.size():
  180.         if itemcont.get_child_count() < item + 1:
  181.             var new_item = Label.new()
  182.             new_item.rect_min_size.x = 16 * 12
  183.             new_item.rect_min_size.y = 16
  184.             itemcont.add_child(new_item)
  185.    
  186.     for extra in range(PlayerStuff.pms[selected_pm].inv.size(), itemcont.get_child_count()):
  187.         itemcont.get_child(extra).queue_free()
  188.    
  189.     for item in PlayerStuff.pms[selected_pm].inv.size():
  190.         itemcont.get_child(item).text = PlayerStuff.pms[selected_pm].inv[item].name
  191.  
  192. func popup(text: String, time: float) -> void:
  193.     popuppanel.get_node("Text").text = text
  194.     popuppanel.show()
  195.     timer.start(0.5)
  196.     yield(timer, "timeout")
  197.     popuppanel.hide()
  198.  
Advertisement
Add Comment
Please, Sign In to add comment