89 lines
2.6 KiB
GDScript
89 lines
2.6 KiB
GDScript
extends Window
|
|
|
|
@onready var inventoryItemDisplayer = %Inventory
|
|
|
|
var itemTransitionScene = preload("res://UI/Sugaring/ItemFadeTransition.tscn")
|
|
|
|
var dryingAnimPositions = []
|
|
var dryingAnimPosIndex = 0
|
|
var playerInventory:Inventory
|
|
|
|
func _ready():
|
|
dryingAnimPositions.append(Vector2(380, 325))
|
|
dryingAnimPositions.append(Vector2(515, 335))
|
|
dryingAnimPositions.append(Vector2(450, 345))
|
|
|
|
inventoryItemDisplayer.fiveButtons = true
|
|
inventoryItemDisplayer.allButtons = true
|
|
|
|
inventoryItemDisplayer.buttonPressed.connect(dry_item)
|
|
inventoryItemDisplayer.fiveButtonPressed.connect(dry_item.bind(5))
|
|
inventoryItemDisplayer.allButtonPressed.connect(dry_item.bind(999999))
|
|
inventoryItemDisplayer.set_title("Wet Items")
|
|
|
|
func opened():
|
|
get_tree().paused = true
|
|
playerInventory = InventoryManager.get_inventory()
|
|
inventoryItemDisplayer.inventory = filter_inventory(playerInventory)
|
|
inventoryItemDisplayer.update_display()
|
|
|
|
func dry_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 dryItem = ItemDrying.sun_dry_item(item)
|
|
InventoryManager.add_item_to_inventory(dryItem, quantity)
|
|
|
|
spawn_item_transition(item, dryItem)
|
|
|
|
inventoryItemDisplayer.inventory = filter_inventory(playerInventory)
|
|
inventoryItemDisplayer.update_display()
|
|
|
|
func spawn_item_transition(startItem, driedItem):
|
|
var itemTransition = itemTransitionScene.instantiate()
|
|
itemTransition.start_transition(startItem.get_sprite(), driedItem.get_sprite())
|
|
|
|
if Item.modifications.Concentrated in driedItem.itemModifications:
|
|
itemTransition.transDuration = 0.2
|
|
itemTransition.finalMomentsDuration = 2
|
|
else:
|
|
itemTransition.finalMomentsDuration = 1
|
|
|
|
add_child(itemTransition)
|
|
itemTransition.scale = Vector2(2, 2)
|
|
itemTransition.position = dryingAnimPositions[dryingAnimPosIndex]
|
|
|
|
dryingAnimPosIndex += 1
|
|
if dryingAnimPosIndex >= dryingAnimPositions.size():
|
|
dryingAnimPosIndex = 0
|
|
|
|
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 Item.modifications.Wet in currentItem.itemModifications:
|
|
keepItem = true
|
|
elif Item.types.Juice in currentItem.itemTypes:
|
|
if not Item.modifications.Concentrated in currentItem.itemModifications:
|
|
keepItem = true
|
|
elif currentItem.get_name(false) == "Grape":
|
|
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()
|