Cow_Life_Sim_RPG/Interactions/Delivery/DeliveryInteface.gd

153 lines
4.4 KiB
GDScript

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