138 lines
3.9 KiB
GDScript
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
|