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