105 lines
3.3 KiB
GDScript
105 lines
3.3 KiB
GDScript
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()
|