extends Window @onready var inventoryItemDisplayer = %Inventory var itemTransitionScene = preload("res://UI/Sugaring/ItemFadeTransition.tscn") var lastRefilled = [] var refillableItemNames = [] var refilledItemScripts = [] var playerInventory:Inventory func _ready(): refillableItemNames = ["Empty Wustard Packet", "Empty Ketchup Packet", "Empty Relish Packet", "Empty Sugar Packet", "Green Soda Can", "Blue Soda Can", "Empty Key Packet", "Empty Silica Gel Packet"] refilledItemScripts = [preload("res://Items/Foods/Packaged/WustardPacket.gd"), preload("res://Items/Foods/Packaged/KetchupPacket.gd"), preload("res://Items/Foods/Packaged/RelishPacket.gd"), preload("res://Items/Foods/Packaged/SugarPacket.gd"), preload("res://Items/Foods/Liquids/GreenSoda.gd"), preload("res://Items/Foods/Liquids/BlueSoda.gd"), preload("res://Items/Artificial/Products/KeyPacket.gd"), preload("res://Items/Artificial/Products/SilicaGelPacket.gd")] inventoryItemDisplayer.buttonPressed.connect(refill_item) inventoryItemDisplayer.set_title("Empty Items") func opened(): get_tree().paused = true playerInventory = InventoryManager.get_inventory() inventoryItemDisplayer.inventory = filter_inventory(playerInventory) inventoryItemDisplayer.update_display() lastRefilled = [] func refill_item(item:Item, quantity:int = 1): var itemsInInv = InventoryManager.get_item_count(item) if itemsInInv < quantity: quantity = itemsInInv if item.get_name() in lastRefilled: lastRefilled = [] lastRefilled.append(item.get_name()) if lastRefilled.size() >= 3: AchievementManager.complete_achievement("Reuse Reuse Reuse") InventoryManager.remove_item_from_inventory(item, quantity) var refilledItem = null for i in range(refillableItemNames.size()): var currentName = refillableItemNames[i] if item.get_name(false) == currentName: refilledItem = refilledItemScripts[i].new() refilledItem.itemModifications = item.itemModifications InventoryManager.add_item_to_inventory(refilledItem, quantity) spawn_refill_particles(refilledItem) spawn_item_transition(item, refilledItem) inventoryItemDisplayer.inventory = filter_inventory(playerInventory) inventoryItemDisplayer.update_display() func spawn_refill_particles(refilledItem:Item): var averageColor = refilledItem.get_average_color() var newParticles = preload("res://UI/Refilling/RefillingParticles.tscn").instantiate() newParticles.position = Vector2(442, 202) newParticles.set_color(averageColor) newParticles.emitting = true add_child(newParticles) func spawn_item_transition(startItem, driedItem): var itemTransition = itemTransitionScene.instantiate() itemTransition.start_transition(startItem.get_sprite(), driedItem.get_sprite()) itemTransition.transDuration = 0.2 itemTransition.finalMomentsDuration = 1.3 add_child(itemTransition) itemTransition.scale = Vector2(2, 2) itemTransition.position = Vector2(442, 295) func filter_inventory(inventory): var filteredInv:Inventory = inventory.duplicate() var i = filteredInv.items.size() - 1 while i >= 0: var currentItem = filteredInv.items[i] var keepItem = false if currentItem.get_name(false) in refillableItemNames: keepItem = true if !keepItem: filteredInv.remove_item(currentItem, filteredInv.quantities[i]) i -= 1 return filteredInv func _on_leave_button_pressed(): get_tree().paused = false hide()