extends Window var itemShopDisplayScene = preload("res://UI/Shopping/ItemShopDisplay.tscn") @onready var inventoryItemDisplayer = $"VBoxContainer/Invs/Inventory/ItemZone/Items" @onready var shopItemDisplayer = $"VBoxContainer/Invs/Shop/ItemZone/Items" @onready var playerTradeItemDisplayer = $"VBoxContainer/TradeZone/TradeSides/PlayerSide/ItemZone/Items" @onready var shopTradeItemDisplayer = $"VBoxContainer/TradeZone/TradeSides/ShopSide/ItemZone/Items" @onready var costDisplay = $VBoxContainer/CostDisplay @export var DeliveryItems:Array[Resource] 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(): var inv = InventoryManager.get_inventory() for item in inv.items: if DeliveryItems.has(item): inventoryItemDisplayer.inventory.items.append(item) pass 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: confirm_trade() 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()