146 lines
4.2 KiB
GDScript
146 lines
4.2 KiB
GDScript
extends Window
|
|
|
|
var basketInventoryName
|
|
|
|
func _ready():
|
|
basketInventoryName = get_parent().basketInvName
|
|
|
|
%InventoryDisplayer.fiveButtons = true
|
|
%InventoryDisplayer.allButtons = true
|
|
|
|
%InventoryDisplayer.buttonPressed.connect(store_item_request)
|
|
%InventoryDisplayer.fiveButtonPressed.connect(store_item_request.bind(5))
|
|
%InventoryDisplayer.allButtonPressed.connect(store_item_request.bind(999999))
|
|
%InventoryDisplayer.set_title("Inventory")
|
|
|
|
%BasketInventoryDisplayer.fiveButtons = true
|
|
%BasketInventoryDisplayer.allButtons = true
|
|
|
|
%BasketInventoryDisplayer.buttonPressed.connect(withdraw_item_request)
|
|
%BasketInventoryDisplayer.fiveButtonPressed.connect(withdraw_item_request.bind(5))
|
|
%BasketInventoryDisplayer.allButtonPressed.connect(withdraw_item_request.bind(999999))
|
|
%BasketInventoryDisplayer.set_title("Basket Inventory")
|
|
|
|
update_displays()
|
|
|
|
func opened():
|
|
get_tree().paused = true
|
|
update_displays()
|
|
|
|
func update_displays():
|
|
update_inventory_displays()
|
|
update_space_display()
|
|
|
|
func update_space_display():
|
|
var basketSpace = get_parent().get_current_basket_space()
|
|
var basketSpaceUsed = get_parent().get_used_space()
|
|
%SpaceLabel.text = "Space: " + str(basketSpaceUsed) + "/" + str(basketSpace)
|
|
|
|
func update_inventory_displays():
|
|
%InventoryDisplayer.inventory = InventoryManager.get_inventory()
|
|
%InventoryDisplayer.update_display()
|
|
|
|
%BasketInventoryDisplayer.inventory = InventoryManager.get_inventory(basketInventoryName)
|
|
%BasketInventoryDisplayer.update_display()
|
|
|
|
func store_item_request(item, amount = 1):
|
|
var itemsInInv = InventoryManager.get_item_count(item)
|
|
if itemsInInv < amount:
|
|
amount = itemsInInv
|
|
|
|
if not (SaveManager.get_save_value("ambiQuestComplete", false) and get_parent().infinite_check(item)):
|
|
var basketSpaceLeft = get_parent().get_basket_space_left()
|
|
if amount > basketSpaceLeft:
|
|
amount = basketSpaceLeft
|
|
|
|
if amount > 0:
|
|
store_item(item, amount)
|
|
else:
|
|
no_room_message()
|
|
|
|
func no_room_message():
|
|
pass
|
|
|
|
func store_item(item, amount):
|
|
InventoryManager.remove_item_from_inventory(item, amount)
|
|
|
|
var basketItem:Item = get_parent().get_current_basket()
|
|
if Item.modifications.Wet in basketItem.itemModifications:
|
|
var newItem:Item = ItemSoaking.wet_item(item)
|
|
if amount >= 100 and !newItem.equals(item):
|
|
AchievementManager.complete_achievement("Leaky Basket")
|
|
|
|
InventoryManager.add_item_to_inventory(item, amount, basketInventoryName)
|
|
|
|
update_displays()
|
|
|
|
func withdraw_item_request(item, amount = 1):
|
|
var itemsInStorage = InventoryManager.get_item_count(item, basketInventoryName)
|
|
if itemsInStorage < amount:
|
|
amount = itemsInStorage
|
|
|
|
if amount > 0:
|
|
withdraw_item(item, amount)
|
|
|
|
func withdraw_item(item, amount):
|
|
InventoryManager.remove_item_from_inventory(item, amount, basketInventoryName)
|
|
InventoryManager.add_item_to_inventory(item, amount)
|
|
|
|
update_displays()
|
|
|
|
func achievement_checks():
|
|
var achievementSets = [["1 Fancy Skeleton",
|
|
["Crystal Bone",
|
|
"Dirt Bone",
|
|
"Haunted Bone",
|
|
"Licorice Bone",
|
|
"Parallelogram Bone",
|
|
"Pretzel Bone",
|
|
"Redby Bone",
|
|
"Rex Bone",
|
|
"Rock Bone",
|
|
"Square Bone",
|
|
"Zucchini Bone"], false],
|
|
["Portable Biodome",
|
|
["Amethyst Deceiver",
|
|
"Blue Pinkgill",
|
|
"Hairy Curtain Crust",
|
|
"Lions Mane",
|
|
"Mycena Chlorophos",
|
|
"Veiled Lady",
|
|
"Wolfs Milk Slime Mould"], false]
|
|
]
|
|
|
|
for achievementSet in achievementSets:
|
|
var achievementName = achievementSet[0]
|
|
var modified = achievementSet[2]
|
|
var itemNames = achievementSet[1]
|
|
|
|
var allAccountedFor = true
|
|
for itemName in itemNames:
|
|
var itemsInInv = InventoryManager.get_item_count_by_name(itemName, basketInventoryName, modified)
|
|
if itemsInInv <= 0:
|
|
allAccountedFor = false
|
|
break
|
|
|
|
if allAccountedFor:
|
|
AchievementManager.complete_achievement(achievementName)
|
|
|
|
#Wustard Lover Achievement
|
|
var basketItem = get_parent().get_current_basket()
|
|
if basketItem != null and basketItem.get_name(false) == "Wustard Basket":
|
|
var wustardItems = 0
|
|
var basketInv = InventoryManager.get_inventory(basketInventoryName)
|
|
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
|
|
|
|
|
|
func _on_leave_button_pressed():
|
|
achievement_checks()
|
|
get_tree().paused = false
|
|
hide()
|