100 lines
2.7 KiB
GDScript
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()
|