extends Control var base @onready var ship = get_tree().current_scene.ship @onready var sell_list = $TradingMenu/SellList @onready var buy_list = $TradingMenu/BuyList @onready var main_menu_header = $MainMenu/Header @onready var sell_input = $TradingMenu/SellInput @onready var buy_input = $TradingMenu/BuyInput @onready var sell_button = $TradingMenu/SellButton @onready var buy_button = $TradingMenu/BuyButton var base_types = ["Power Supply", "Mining", "Food Production", "Trading", "Modules"] func _ready(): update_lists() main_menu_header.text = "{BaseType} Station".format({"BaseType" : base_types[base.type]}) buy_button.button_up.connect(buy_item) sell_button.button_up.connect(sell_item) buy_input.text_changed.connect(buy_text_changed) sell_input.text_changed.connect(sell_text_changed) func update_lists(): buy_list.clear() sell_list.clear() for i in range(len(base.want_to_buy)): var format = { "name" : base.want_to_buy[i].name, "price" : base.buy_prices[i] } var buy_text = "{name} -> {price} MU".format(format) buy_list.add_item(buy_text, base.want_to_buy[i].icon) for i in range(len(base.want_to_sell)): var format = { "name" : base.want_to_sell[i].name, "price" : base.sell_prices[i] } var sell_text = "{name} <- {price} MU".format(format) sell_list.add_item(sell_text, base.want_to_sell[i].icon) func buy_item(): var amount = int(sell_input.text) amount = clamp(amount, 0, amount) if amount <= 0: sell_input.text = "" sell_input.placeholder_text = "Wrong amount!" return if len(sell_list.get_selected_items()) == 0: sell_input.text = "" sell_input.placeholder_text = "Item not chosen!" return var item_data = sell_list.get_item_text(sell_list.get_selected_items()[0]).split(" <- ") var price = float(item_data[1]) var total_price = price * amount if total_price > ship.money: sell_input.text = "" sell_input.placeholder_text = "Insufficient funds!" return if ship.hull.cargo.has(item_data[0]): ship.hull.cargo[item_data[0]] += amount else: ship.hull.cargo[item_data[0]] = amount ship.money -= total_price print(ship.hull.cargo) func sell_item(): if len(buy_list.get_selected_items()) == 0: buy_input.text = "" buy_input.placeholder_text = "Item not chosen!" return var item_data = buy_list.get_item_text(buy_list.get_selected_items()[0]).split(" -> ") if !ship.hull.cargo.has(item_data[0]): buy_input.text = "" buy_input.placeholder_text = "No such item in cargo!" return var price = float(item_data[1]) var amount = int(buy_input.text) var total_price = price * amount amount = clamp(amount, 0, amount) if amount <= 0: buy_input.text = "" buy_input.placeholder_text = "Wrong amount!" return if amount > ship.hull.cargo[item_data[0]]: buy_input.text = "" buy_input.placeholder_text = "Can't sell more than have!" return ship.hull.cargo[item_data[0]] -= amount ship.money += total_price print(ship.hull.cargo) func buy_text_changed(_new_text): buy_input.placeholder_text = "Amount to sell" func sell_text_changed(_new_text): sell_input.placeholder_text = "Amount to buy"