Cow_Life_Sim_RPG/Objects/SkillSpecific/BasketStorage/BasketStorageSpot.gd

100 lines
2.7 KiB
GDScript

extends Node2D
@export var basketInvName:String
var basketHoldingInvName
var basketItem:Item
func _ready():
basketHoldingInvName = basketInvName + "Basket"
var basketHoldingInv = InventoryManager.get_inventory(basketInvName + "Basket")
if basketHoldingInv.items.size() > 0:
basketItem = basketHoldingInv.items[0]
update_basket_display()
func show_basket_changing_window():
%BasketPlacingWindow.popup_centered()
%BasketPlacingWindow.opened()
func show_basket_storage_window():
%BasketStorageWindow.popup_centered()
%BasketStorageWindow.opened()
func get_current_basket():
return basketItem
func change_current_basket(basket:Item):
if basketItem != null:
InventoryManager.add_item_to_inventory(basketItem)
InventoryManager.remove_item_from_inventory(basketItem, 1, basketHoldingInvName)
if basket != null:
InventoryManager.remove_item_from_inventory(basket)
set_current_basket(basket)
func set_current_basket(basket:Item):
if basket != null:
InventoryManager.add_item_to_inventory(basket, 1, basketHoldingInvName)
basketItem = basket
AchievementManager.hang_up_achievement_checks(basketItem)
func update_basket_display():
if basketItem == null:
$AnimatedSprite2D.visible = true
%BasketSprite.visible = false
else:
$AnimatedSprite2D.visible = false
%BasketSprite.visible = true
%BasketSprite.texture = basketItem.get_sprite()
func get_current_basket_space():
if basketItem == null:
return 0
return BasketWeaving.get_basket_space(basketItem)
func get_used_space(basketOverride:Item = null):
var basketInv:Inventory = InventoryManager.get_inventory(basketInvName)
if SaveManager.get_save_value("ambiQuestComplete", false):
return infinite_space_item_count(basketInv, basketOverride)
else:
return basketInv.get_item_count()
func infinite_space_item_count(inventory:Inventory, basketOverride:Item = null):
var count = 0
for i in range(inventory.items.size()):
var currentItem = inventory.items[i]
if !infinite_check(currentItem, basketOverride):
count += inventory.quantities[i]
return count
func infinite_check(item:Item, basketOverride:Item = null):
var basketToCheckAgainst = basketItem
if basketOverride != null:
basketToCheckAgainst = basketOverride
if basketToCheckAgainst == null:
return false
var basketName = BasketGenerator.generate_basket(item, true)
if basketName == basketToCheckAgainst.get_name(false):
return true
return false
func get_basket_space_left():
return get_current_basket_space() - get_used_space()
func get_current_basket_name():
if basketItem == null:
return "No Basket Placed"
return basketItem.get_name()
func get_current_basket_sprite():
if basketItem == null:
return null
return basketItem.get_sprite()