Cow_Life_Sim_RPG/UI/BasketStorage/BasketPlacingWindow.gd

136 lines
3.4 KiB
GDScript

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