extends Window var itemShopDisplayScene = preload("res://UI/Shopping/ItemShopDisplay.tscn") @onready var inventoryItemDisplayer = %PlayerInventoryItems @onready var shopItemDisplayer = %ShopInventoryItems @onready var playerTradeItemDisplayer = %PlayerTradeItems @onready var shopTradeItemDisplayer = %ShopTradeItems @onready var costDisplay = %CostDisplay var shopItems = [] var playerTradeItems:Inventory var shopTradeItems:Inventory func _ready(): inventoryItemDisplayer.buttonPressed.connect(add_to_player_trade) playerTradeItemDisplayer.buttonPressed.connect(remove_from_player_trade) shopItemDisplayer.buttonPressed.connect(add_to_shop_trade) shopTradeItemDisplayer.buttonPressed.connect(remove_from_shop_trade) shopItemDisplayer.quantitiesShown = false playerTradeItemDisplayer.negativeOptions = true shopTradeItemDisplayer.negativeOptions = true playerTradeItemDisplayer.positiveOptions = false shopTradeItemDisplayer.positiveOptions = false func opened(): get_tree().paused = true set_up_inventory() set_up_shop_inventory() playerTradeItems = Inventory.new() shopTradeItems = Inventory.new() update_cost_display() func set_up_inventory(): inventoryItemDisplayer.inventory = InventoryManager.get_inventory() inventoryItemDisplayer.update_display() func set_up_shop_inventory(): shopItemDisplayer.inventory.items = shopItems for i in shopItems.size(): shopItemDisplayer.inventory.quantities.append(1) shopItemDisplayer.update_display() func add_to_shop_trade(item): shopTradeItems.add_item(item) shopTradeItemDisplayer.inventory = shopTradeItems shopTradeItemDisplayer.update_display() update_cost_display() func remove_from_shop_trade(item): shopTradeItems.remove_item(item) shopTradeItemDisplayer.inventory = shopTradeItems shopTradeItemDisplayer.update_display() update_cost_display() func add_to_player_trade(item): InventoryManager.remove_item_from_inventory(item) playerTradeItems.add_item(item) playerTradeItemDisplayer.inventory = playerTradeItems playerTradeItemDisplayer.update_display() inventoryItemDisplayer.update_display() update_cost_display() func remove_from_player_trade(item): InventoryManager.add_item_to_inventory(item) playerTradeItems.remove_item(item) playerTradeItemDisplayer.inventory = playerTradeItems playerTradeItemDisplayer.update_display() inventoryItemDisplayer.update_display() update_cost_display() func update_cost_display(): var cost = get_cost() costDisplay.set_display(cost) func get_cost(): var playerOffering = 0 var shopOffering = 0 for i in range(playerTradeItems.items.size()): playerOffering += playerTradeItems.items[i].value * playerTradeItems.quantities[i] for i in range(shopTradeItems.items.size()): shopOffering += shopTradeItems.items[i].value * shopTradeItems.quantities[i] return playerOffering - shopOffering func reset_items(): for i in range(playerTradeItems.items.size()): var currentItem = playerTradeItems.items[i] InventoryManager.add_item_to_inventory(currentItem, playerTradeItems.quantities[i]) playerTradeItems = Inventory.new() playerTradeItemDisplayer.inventory = playerTradeItems playerTradeItemDisplayer.update_display() shopTradeItems = Inventory.new() shopTradeItemDisplayer.inventory = shopTradeItems shopTradeItemDisplayer.update_display() func _on_leave_button_pressed(): reset_items() get_tree().paused = false hide() func _on_confirm_button_pressed(): var currentCost = get_cost()*-1 var currentGrapesOwned = InventoryManager.get_grape_count() if currentGrapesOwned >= currentCost: $NotEnoughGrapesLabel.hide_now() if shopTradeItems.items.size() > 0 or playerTradeItems.items.size() > 0: $AcceptedLabel.show_up() if currentCost > 0: $AcceptedLabel.text = "Offer accepted (" + str(currentCost*-1) + " grapes)" elif currentCost < 0: $AcceptedLabel.text = "Offer accepted (+" + str(currentCost*-1) + " grapes)" else: $AcceptedLabel.text = "Offer accepted" confirm_trade() else: $NotEnoughGrapesLabel.show_up() $AcceptedLabel.hide_now() func confirm_trade(): var currentCost = get_cost() InventoryManager.alter_grape_count(currentCost) for i in range(shopTradeItems.items.size()): InventoryManager.add_item_to_inventory(shopTradeItems.items[i], shopTradeItems.quantities[i]) playerTradeItems = Inventory.new() playerTradeItemDisplayer.inventory = playerTradeItems playerTradeItemDisplayer.update_display() shopTradeItems = Inventory.new() shopTradeItemDisplayer.inventory = shopTradeItems shopTradeItemDisplayer.update_display() inventoryItemDisplayer.update_display() update_cost_display()