Cow_Life_Sim_RPG/UI/Cleaning/CleaningMenu.gd

79 lines
2.3 KiB
GDScript

extends Window
@onready var inventoryItemDisplayer = %Inventory
var itemTransitionScene = preload("res://UI/Sugaring/ItemFadeTransition.tscn")
var playerInventory:Inventory
func _ready():
inventoryItemDisplayer.fiveButtons = true
inventoryItemDisplayer.allButtons = true
inventoryItemDisplayer.buttonPressed.connect(clean_item)
inventoryItemDisplayer.fiveButtonPressed.connect(clean_item.bind(5))
inventoryItemDisplayer.allButtonPressed.connect(clean_item.bind(999999))
inventoryItemDisplayer.set_title("Modified Items")
func opened():
get_tree().paused = true
playerInventory = InventoryManager.get_inventory()
inventoryItemDisplayer.inventory = filter_inventory(playerInventory)
inventoryItemDisplayer.update_display()
func clean_item(item:Item, quantity:int = 1):
var itemsInInv = InventoryManager.get_item_count(item)
if itemsInInv < quantity:
quantity = itemsInInv
InventoryManager.remove_item_from_inventory(item, quantity)
var cleanedItem:Item = item.duplicate()
cleanedItem.itemModifications = []
InventoryManager.add_item_to_inventory(cleanedItem, quantity)
spawn_item_transition(item, cleanedItem)
inventoryItemDisplayer.inventory = filter_inventory(playerInventory)
inventoryItemDisplayer.update_display()
func spawn_item_transition(startItem, cleanedItem):
var itemTransition = itemTransitionScene.instantiate()
itemTransition.start_transition(startItem.get_sprite(), cleanedItem.get_sprite())
if Item.modifications.Concentrated in cleanedItem.itemModifications:
itemTransition.transDuration = 0.2
itemTransition.finalMomentsDuration = 2
else:
itemTransition.finalMomentsDuration = 1
var antsLeaving = preload("res://UI/Cleaning/AntsLeaving.tscn").instantiate()
antsLeaving.emitting = true
add_child(antsLeaving)
add_child(itemTransition)
itemTransition.scale = Vector2(2, 2)
itemTransition.position = Vector2(440, 380)
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.itemModifications.size() > 0:
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()