Cow_Life_Sim_RPG/UI/MenuBar/Inventory/InventoryMenu.gd

138 lines
3.9 KiB
GDScript

extends PanelContainer
var groundItemScene = preload("res://Objects/GroundItems/GroundItem.tscn")
var inventoryDisplayer
var keyInventoryDisplayer
var currentInv = "normal"
var clickMenu
var itemSelected
var shortcuts = [KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9]
func _ready():
inventoryDisplayer = %InventoryItems
keyInventoryDisplayer = %KeyInventoryItems
clickMenu = %ClickMenu
inventoryDisplayer.displayScene = load("res://UI/MenuBar/Inventory/ItemInventoryDisplay.tscn")
keyInventoryDisplayer.displayScene = load("res://UI/MenuBar/Inventory/ItemInventoryDisplay.tscn")
update_inventory()
inventoryDisplayer.itemClicked.connect(item_clicked)
keyInventoryDisplayer.itemClicked.connect(item_clicked)
InventoryManager.playerInventoryUpdated.connect(update_inventory)
func _process(delta):
if clickMenu.visible:
for i in range(clickMenu.item_count):
var currentID = clickMenu.get_item_id(i)
if currentID < shortcuts.size() and Input.is_action_just_pressed(str(i+1)):
_on_click_menu_id_pressed(currentID)
break
func update_inventory():
var inventory = InventoryManager.get_inventory()
inventoryDisplayer.inventory = inventory
inventoryDisplayer.update_display()
var keyInventory = InventoryManager.get_inventory("keyItems")
keyInventoryDisplayer.inventory = keyInventory
keyInventoryDisplayer.update_display()
func item_clicked(item):
clear_click_menu()
itemSelected = item
clickMenu.size.x = 0
clickMenu.size.y = 0
clickMenu.add_item("Behold", 0)
if currentInv != "keyItems":
clickMenu.add_item("Drop", 1)
if Item.types.Juice in item.itemTypes:
clickMenu.add_item("Drink", 2)
elif item.get_edibility() >= 50:
clickMenu.add_item("Eat", 3)
if Item.types.Toy in item.itemTypes:
clickMenu.add_item("Play", 4)
clickMenu.show()
var WindowSize = Vector2(880,620)
var MenuSize = clickMenu.size
var PopUpPos = get_viewport().get_mouse_position()
if MenuSize.x + PopUpPos.x > WindowSize.x: PopUpPos.x -= MenuSize.x
if MenuSize.y + PopUpPos.y > WindowSize.y: PopUpPos.y -= MenuSize.y
clickMenu.position = PopUpPos
func clear_click_menu():
clickMenu.clear()
func _on_click_menu_id_pressed(id):
if !InventoryManager.check_if_in_inventory(itemSelected, 1, currentInv):
return
if id == 0:
behold_item(itemSelected)
examine_item(itemSelected)
elif id == 1:
drop_item(itemSelected)
elif id == 2:
drink_item(itemSelected)
elif id == 3:
eat_item(itemSelected)
elif id == 4:
play_with_item(itemSelected)
func behold_item(item):
GameVariables.player.behold_item(item)
func drop_item(item):
var newGroundItem = groundItemScene.instantiate()
newGroundItem.set_item(item.duplicate())
newGroundItem.global_position = GameVariables.player.global_position
if GameVariables.player.swimmingZones.size() > 0:
newGroundItem.assume_water_start(GameVariables.player.swimmingZones[0])
if GameVariables.player.currentInteractingItem != null and GameVariables.player.currentInteractingItem.equals(item):
GameVariables.player.change_state("Idle")
InventoryManager.remove_item_from_inventory(item)
LocationManager.currentLocation.add_child(newGroundItem)
func examine_item(item):
MessageManager.addMessage(item.get_description(), null, "System", Color.MIDNIGHT_BLUE,
true, false)
func drink_item(item):
GameVariables.player.drink_juice(item)
func eat_item(item):
GameVariables.player.eat_item(item)
func play_with_item(item):
GameVariables.player.play_item(item)
if Item.types.Trumpet in item.itemTypes:
var trumpetMenu = preload("res://UI/Trumpet/TrumpetMenu.tscn").instantiate()
add_child(trumpetMenu)
trumpetMenu.popup_centered()
trumpetMenu.position.y -= 200
func _on_inventory_chooser_tab_changed(tab):
if tab == 0:
currentInv = "normal"
else:
currentInv = "keyItems"
tab += 1
var inventories = %InventoryHolder.get_children()
for i in inventories.size():
if i == tab or i == inventories.size() - 1 or i == 0:
inventories[i].visible = true
else:
inventories[i].visible = false