extends Window @onready var inventoryDisplayer = %InventoryDisplayer var shownBasket var messageFadeDelay = 1 var messageFadeSpeed = 1 func _ready(): inventoryDisplayer.buttonPressed.connect(place_basket) inventoryDisplayer.set_title("Baskets") func _process(delta): if %Message.self_modulate.a > 0: if messageFadeDelay > 0: messageFadeDelay -= delta else: %Message.self_modulate.a -= (messageFadeSpeed * delta) func opened(): get_tree().paused = true %Message.self_modulate.a = 0 shownBasket = get_parent().get_current_basket() initialize_inventory() update_basket_display() func initialize_inventory(): var playerInventory = InventoryManager.get_inventory() inventoryDisplayer.inventory = filter_inventory(playerInventory) inventoryDisplayer.update_display() func update_inventory(): inventoryDisplayer.update_display() func update_basket_display(): if shownBasket != null: %BasketSprite.texture = shownBasket.get_sprite() else: %BasketSprite.texture = null if shownBasket != null: var maxSpace = BasketWeaving.get_basket_space(shownBasket) var spaceUsed = get_parent().get_used_space(shownBasket) %BasketSpace.text = "Space: " + str(spaceUsed) + "/" + str(maxSpace) if maxSpace < spaceUsed: %BasketSpace.set("theme_override_colors/font_color", Color.RED) else: %BasketSpace.set("theme_override_colors/font_color", Color.WHITE) else: %BasketSpace.text = "Space: 0/0" if shownBasket != null: %BasketName.text = shownBasket.get_name() else: %BasketName.text = "No basket placed" if shownBasket != null: %ReturnButton.visible = true else: %ReturnButton.visible = false func remove_basket(): if shownBasket != null: inventoryDisplayer.inventory.add_item(shownBasket) shownBasket = null update_inventory() update_basket_display() func place_basket(basket): if shownBasket != null: inventoryDisplayer.inventory.add_item(shownBasket) inventoryDisplayer.inventory.remove_item(basket) shownBasket = basket update_inventory() update_basket_display() func filter_inventory(inventory): var filteredInv:Inventory = inventory.duplicate() var i = filteredInv.items.size() - 1 while i >= 0: var currentItem:Item = filteredInv.items[i] if not Item.types.Basket in currentItem.itemTypes: filteredInv.remove_item(currentItem, filteredInv.quantities[i]) i -= 1 return filteredInv func not_enough_space_message(): %Message.self_modulate.a = 1 messageFadeDelay = 1 func _on_confirm_button_pressed(): var maxSpace = 0 if shownBasket != null: maxSpace = BasketWeaving.get_basket_space(shownBasket) var spaceUsed = get_parent().get_used_space(shownBasket) if spaceUsed > maxSpace: if shownBasket == null: %Message.text = "Empty basket contents first" else: %Message.text = "Not Enough Space in New Basket" not_enough_space_message() return get_parent().change_current_basket(shownBasket) get_parent().update_basket_display() if shownBasket.get_name(false) == "Wustard Basket": var wustardItems = 0 var basketInv = InventoryManager.get_inventory(get_parent().basketInvName) for item:Item in basketInv.items: if item.get_name().contains("Wustard") and !item.get_name().contains("Empty"): wustardItems += 1 if wustardItems >= 5: AchievementManager.complete_achievement("Wustard Lover") break get_tree().paused = false hide() func _on_cancel_button_pressed(): get_tree().paused = false hide() func _on_return_button_pressed(): remove_basket()