Cow_Life_Sim_RPG/UI/BasketStorage/BasketStorageWindow.gd

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