Cow_Life_Sim_RPG/UI/Refilling/RefillingMenu.gd

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()