proposal stock price done

master
potatoxel 7 months ago
parent a1f566d9d8
commit 3cea73b82a
  1. 13
      scenes/game/country.gd
  2. 53
      scenes/game/game.gd
  3. 75
      scenes/game/game.tscn

@ -8,6 +8,8 @@ var money = 8
var stock_price = 1
var total_stocks = 0
var player_stocks = [0,0,0]
var player_acceptance = [false, false, false]
var proposal = 0
var tile_positions
var armies = []
var boats = []
@ -40,3 +42,14 @@ func get_controller_id():
if player_stocks[i] >= 4:
return i
return -1
func process_proposal():
for i in len(player_acceptance):
var acceptance = player_acceptance[i]
var stocks = player_stocks[i]
if (not acceptance) and stocks > 0:
return false
stock_price += proposal
proposal = 0
player_acceptance = [false, false, false]
return true

@ -91,10 +91,18 @@ func _setup_stock_ui():
buy_btn.text = "Buy"
var sell_btn = Button.new()
sell_btn.text = "Sell"
var proposal_lbl = Label.new()
proposal_lbl.text = "0$"
var acceptance_btn = Button.new()
acceptance_btn.text = "Accept"
acceptance_btn.toggle_mode = true
acceptance_btn.connect("toggled", self, "_on_acceptance_btn_toggled", [country])
stocks_ui.append({
stock_price_lbl = stock_price_lbl,
stock_lbl = stock_lbl
stock_lbl = stock_lbl,
proposal_lbl = proposal_lbl,
acceptance_btn = acceptance_btn,
})
buy_btn.connect("pressed", self, "_on_stock_buy_button_pressed", [country])
@ -105,6 +113,8 @@ func _setup_stock_ui():
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(stock_lbl)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(buy_btn)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(sell_btn)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(proposal_lbl)
$CanvasLayer/Control/VBoxContainer/Stocks.add_child(acceptance_btn)
func _refresh_stock_ui():
for country in countries:
@ -112,6 +122,34 @@ func _refresh_stock_ui():
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])
ui.proposal_lbl.text = str(country.proposal) + "$"
ui.acceptance_btn.pressed = country.player_acceptance[turn.object.id]
func set_proposal_display(cur_btn):
cur_btn.pressed = true
for button in $CanvasLayer/Control/VBoxContainer/CountryProposal.get_children():
if button is Button and button != cur_btn:
button.pressed = false
func _on_ProposalMinus1_pressed():
if turn.object.stock_price > 1:
set_proposal_display($CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalMinus1)
turn.object.proposal = -1
else:
$CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalMinus1.pressed = false
func _on_ProposalZero_pressed():
set_proposal_display($CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalZero)
turn.object.proposal = 0
func _on_ProposalPlus1_pressed():
set_proposal_display($CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalPlus1)
turn.object.proposal = 1
func _on_acceptance_btn_toggled(value, country):
country.player_acceptance[turn.object.id] = value
country.process_proposal()
_refresh_stock_ui()
func _on_stock_buy_button_pressed(country):
if turn.object.money >= country.stock_price and country.total_stocks < 7:
@ -148,7 +186,7 @@ func _process(delta):
$CanvasLayer/Control/VBoxContainer/BuyBoat.visible = turn.layer == "country"
$CanvasLayer/Control/VBoxContainer/Stocks.visible = turn.layer == "player"
$CanvasLayer/Control/VBoxContainer/PayDividends.visible = turn.layer == "country"
$CanvasLayer/Control/VBoxContainer/CountryProposal.visible = turn.layer == "country"
func _on_EndTurnButton_pressed():
@ -168,9 +206,16 @@ func _on_EndTurnButton_pressed():
_refresh_stock_ui()
else:
$CanvasLayer/Control/ControllerLabel.text = "Controller: " + (players[turn.object.get_controller_id()].name if turn.object.get_controller_id() >= 0 else "none")
var proposal_btns = [
$CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalMinus1,
$CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalZero,
$CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalPlus1
]
set_proposal_display(proposal_btns[turn.object.proposal + 1])
$CanvasLayer/Control/ControllerLabel.visible = turn.layer == "country"
$CanvasLayer/Control/VBoxContainer/TurnLabel.text = turn.object.name + "'s turn."
func _on_BuyFactory_pressed():
if button_selected: button_selected.pressed = false
@ -227,3 +272,5 @@ func _input(event):
button_selected.pressed = false
mouse_click_mode = null

@ -22,61 +22,95 @@ mouse_filter = 2
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control"]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -267.0
margin_bottom = 140.0
margin_left = -373.0
margin_bottom = 188.0
[node name="TurnLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"]
margin_right = 267.0
margin_right = 373.0
margin_bottom = 14.0
text = "TURN: ####"
align = 2
[node name="CountryMoneyLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 18.0
margin_right = 267.0
margin_right = 373.0
margin_bottom = 32.0
text = "?????$"
align = 2
[node name="StockPriceLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 36.0
margin_right = 267.0
margin_right = 373.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 = 267.0
margin_right = 373.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 = 267.0
margin_right = 373.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 = 267.0
margin_right = 373.0
margin_bottom = 122.0
toggle_mode = true
text = "Buy boat"
[node name="PayDividends" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 126.0
margin_right = 267.0
margin_right = 373.0
margin_bottom = 146.0
text = "Pay dividends"
[node name="Stocks" type="GridContainer" parent="CanvasLayer/Control/VBoxContainer"]
[node name="CountryProposal" type="HBoxContainer" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 150.0
margin_right = 267.0
margin_bottom = 164.0
columns = 5
margin_right = 373.0
margin_bottom = 170.0
[node name="Label" type="Label" parent="CanvasLayer/Control/VBoxContainer/CountryProposal"]
margin_top = 3.0
margin_right = 288.0
margin_bottom = 17.0
size_flags_horizontal = 3
text = "Current Proposal: "
[node name="ProposalMinus1" type="Button" parent="CanvasLayer/Control/VBoxContainer/CountryProposal"]
margin_left = 292.0
margin_right = 317.0
margin_bottom = 20.0
toggle_mode = true
text = "-1"
[node name="ProposalZero" type="Button" parent="CanvasLayer/Control/VBoxContainer/CountryProposal"]
margin_left = 321.0
margin_right = 341.0
margin_bottom = 20.0
toggle_mode = true
pressed = true
text = "0"
[node name="ProposalPlus1" type="Button" parent="CanvasLayer/Control/VBoxContainer/CountryProposal"]
margin_left = 345.0
margin_right = 373.0
margin_bottom = 20.0
toggle_mode = true
text = "+1"
[node name="Stocks" type="GridContainer" parent="CanvasLayer/Control/VBoxContainer"]
margin_top = 174.0
margin_right = 373.0
margin_bottom = 188.0
columns = 7
[node name="Label" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_right = 38.0
@ -107,6 +141,18 @@ margin_right = 212.0
margin_bottom = 14.0
text = "Sell"
[node name="Label6" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_left = 216.0
margin_right = 271.0
margin_bottom = 14.0
text = "Proposal"
[node name="Label7" type="Label" parent="CanvasLayer/Control/VBoxContainer/Stocks"]
margin_left = 275.0
margin_right = 349.0
margin_bottom = 14.0
text = "Acceptance"
[node name="EndTurnButton" type="Button" parent="CanvasLayer/Control"]
anchor_left = 1.0
anchor_top = 1.0
@ -129,4 +175,7 @@ text = "CONTROLLER"
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/BuyArmy" to="." method="_on_BuyArmy_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/BuyBoat" to="." method="_on_BuyBoat_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/PayDividends" to="." method="_on_PayDividends_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalMinus1" to="." method="_on_ProposalMinus1_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalZero" to="." method="_on_ProposalZero_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/CountryProposal/ProposalPlus1" to="." method="_on_ProposalPlus1_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/EndTurnButton" to="." method="_on_EndTurnButton_pressed"]

Loading…
Cancel
Save