stocks ui done

master
potatoxel 7 months ago
parent 9e141165f1
commit 5f8bbd297b
  1. 1
      scenes/game/country.gd
  2. 64
      scenes/game/game.gd
  3. 51
      scenes/game/game.tscn
  4. 6
      scenes/game/player.gd

@ -6,6 +6,7 @@ var name
var color
var money = 8
var stock_price = 1
var total_stocks = 0
var tile_positions
var armies = []
var boats = []

@ -21,11 +21,15 @@ var player_count = 3
var button_selected = null
var mouse_click_mode = null
var stocks_ui = []
func _ready():
randomize()
_setup_players()
_setup_countries()
_setup_turns()
_setup_stock_ui()
turn = turns[turn_id]
_on_EndTurnButton_pressed()
@ -73,6 +77,58 @@ func _setup_turns():
object = country
})
func _setup_stock_ui():
stocks_ui.append({})
for country in countries:
if country.id == 0: continue
var name_lbl = Label.new()
name_lbl.text = country.name
var stock_price_lbl = Label.new()
stock_price_lbl.text = str(country.stock_price)
var stock_lbl = Label.new()
stock_lbl.text = "??"
var buy_btn = Button.new()
buy_btn.text = "Buy"
var sell_btn = Button.new()
sell_btn.text = "Sell"
stocks_ui.append({
stock_price_lbl = stock_price_lbl,
stock_lbl = stock_lbl
})
buy_btn.connect("pressed", self, "_on_stock_buy_button_pressed", [country])
sell_btn.connect("pressed", self, "_on_stock_sell_button_pressed", [country])
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(name_lbl)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(stock_price_lbl)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(stock_lbl)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(buy_btn)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(sell_btn)
func _refresh_stock_ui():
for country in countries:
if country.id == 0: continue
var ui = stocks_ui[country.id]
ui.stock_price_lbl.text = str(country.stock_price)
ui.stock_lbl.text = str(turn.object.stocks[country.id])
func _on_stock_buy_button_pressed(country):
if turn.object.money >= country.stock_price and country.total_stocks < 7:
country.total_stocks += 1
turn.object.stocks[country.id] += 1
turn.object.money -= country.stock_price
country.money += country.stock_price
_refresh_stock_ui()
func _on_stock_sell_button_pressed(country):
if country.money >= country.stock_price and turn.object.stocks[country.id] > 0:
country.total_stocks -= 1
turn.object.stocks[country.id] -= 1
turn.object.money += country.stock_price
country.money -= country.stock_price
_refresh_stock_ui()
func _process(delta):
$CanvasLayer/Control/VBoxContainer/CountryMoneyLabel.text = str(turns[turn_id].object.money) + "$"
if turn.layer == "country":
@ -81,14 +137,16 @@ func _process(delta):
$CanvasLayer/Control/VBoxContainer/BuyFactory.visible = turn.layer == "country"
$CanvasLayer/Control/VBoxContainer/BuyArmy.visible = turn.layer == "country"
$CanvasLayer/Control/VBoxContainer/BuyBoat.visible = turn.layer == "country"
func _on_EndTurnButton_pressed():
if turn.layer == "country":
for army in turn.object.armies:
army.entity.current_turn_movable = true
for boat in turn.object.boats:
boat.entity.current_turn_movable = true
turn.object.compute_balance()
$Grid.selected_thing = null
@ -96,6 +154,8 @@ func _on_EndTurnButton_pressed():
if turn_id == len(turns): turn_id = 0
turn = turns[turn_id]
if turn.layer == "player":
_refresh_stock_ui()
$CanvasLayer/Control/VBoxContainer/TurnLabel.text = turn.object.name + "'s turn."

@ -22,50 +22,85 @@ mouse_filter = 2
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control"]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -176.0
margin_bottom = 135.0
margin_left = -267.0
margin_bottom = 140.0
[node name="TurnLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"]
margin_right = 176.0
margin_right = 267.0
margin_bottom = 14.0
text = "TURN: ####"
align = 2
[node name="CountryMoneyLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 18.0
margin_right = 176.0
margin_right = 267.0
margin_bottom = 32.0
text = "?????$"
align = 2
[node name="StockPriceLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 36.0
margin_right = 176.0
margin_right = 267.0
margin_bottom = 50.0
text = "STOCK PRICE: ?????$"
align = 2
[node name="BuyFactory" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 54.0
margin_right = 176.0
margin_right = 267.0
margin_bottom = 74.0
toggle_mode = true
text = "Buy factory"
[node name="BuyArmy" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 78.0
margin_right = 176.0
margin_right = 267.0
margin_bottom = 98.0
toggle_mode = true
text = "Buy army"
[node name="BuyBoat" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 102.0
margin_right = 176.0
margin_right = 267.0
margin_bottom = 122.0
toggle_mode = true
text = "Buy boat"
[node name="Stocks" type="GridContainer" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 126.0
margin_right = 267.0
margin_bottom = 140.0
columns = 5
[node name="Label" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_right = 38.0
margin_bottom = 14.0
text = "Name"
[node name="Label2" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_left = 42.0
margin_right = 112.0
margin_bottom = 14.0
text = "Stock Price"
[node name="Label3" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_left = 116.0
margin_right = 157.0
margin_bottom = 14.0
text = "Stocks"
[node name="Label4" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_left = 161.0
margin_right = 185.0
margin_bottom = 14.0
text = "Buy"
[node name="Label5" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_left = 189.0
margin_right = 212.0
margin_bottom = 14.0
text = "Sell"
[node name="EndTurnButton" type="Button" parent="CanvasLayer/Control"]
anchor_left = 1.0
anchor_top = 1.0

@ -3,8 +3,12 @@ extends Reference
var id
var name
var money = 8
var money = 4
var stocks = [] #Array of numbers stock[country_id] = stock_amount
func _init():
for i in 8: #Country count
stocks.append(0)
func compute_balance():
pass

Loading…
Cancel
Save