Cow_Life_Sim_RPG/UI/Shopping/ShopInterface.gd

159 lines
4.5 KiB
GDScript

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