From 2d9334f1bf890094a639ca8eb703dda92f2268bb Mon Sep 17 00:00:00 2001 From: potatoxel Date: Tue, 15 Nov 2022 23:14:05 +0300 Subject: [PATCH] stock price and buying factories --- prefabs/grid/grid.gd | 5 +++- scenes/game/country.gd | 2 +- scenes/game/game.gd | 43 ++++++++++++++++++++++++++++++-- scenes/game/game.tscn | 56 +++++++++++++++++++++++++++++++++--------- 4 files changed, 91 insertions(+), 15 deletions(-) diff --git a/prefabs/grid/grid.gd b/prefabs/grid/grid.gd index 73dd085..3e36af6 100644 --- a/prefabs/grid/grid.gd +++ b/prefabs/grid/grid.gd @@ -1,6 +1,8 @@ class_name Grid extends Node2D +signal tile_pressed(v) + var tileset_texture_2x: ImageTexture var grid: Dictionary# var Army = preload("res://prefabs/units/army/army.tscn") @@ -165,7 +167,8 @@ func _setup_map(): func _process(delta): if Input.is_action_just_pressed("pick_tile"): var position = $TileMap.world_to_map(get_local_mouse_position()/$TileMap.scale) - + if position.x < 8 and position.y < 8: + emit_signal("tile_pressed", position) func _get_atlas_from_tileset(tileset, name, texture): var res = AtlasTexture.new() diff --git a/scenes/game/country.gd b/scenes/game/country.gd index 0a646aa..89d71c4 100644 --- a/scenes/game/country.gd +++ b/scenes/game/country.gd @@ -5,6 +5,7 @@ var id var name var color var money = 8 +var stock_price = 1 var tile_positions var armies = [] var boats = [] @@ -20,6 +21,5 @@ func remove_unit(unit): armies.erase(unit) grid.remove_unit(unit) - func compute_balance(): money += len(factory_positions) - len(armies) - len(boats) diff --git a/scenes/game/game.gd b/scenes/game/game.gd index 77e8ab9..37b0961 100644 --- a/scenes/game/game.gd +++ b/scenes/game/game.gd @@ -12,6 +12,8 @@ var countries = [ ] var country_turn_id = 0 +var button_selected = null +var mouse_click_mode = null func _ready(): randomize() @@ -36,7 +38,8 @@ func _ready(): countries[2].add_unit({}, Vector2(1,2)) func _process(delta): - $CanvasLayer/Control/CountryMoneyLabel.text = str(countries[country_turn_id].money) + "$" + $CanvasLayer/Control/VBoxContainer/CountryMoneyLabel.text = str(countries[country_turn_id].money) + "$" + $CanvasLayer/Control/VBoxContainer/StockPriceLabel.text = "STOCK PRICE: " + str(countries[country_turn_id].stock_price) + "$" func _on_EndTurnButton_pressed(): for army in countries[country_turn_id].armies: @@ -45,4 +48,40 @@ func _on_EndTurnButton_pressed(): country_turn_id += 1 if country_turn_id == 8: country_turn_id = 1 - $CanvasLayer/Control/TurnLabel.text = countries[country_turn_id].name + "'s turn." + $CanvasLayer/Control/VBoxContainer/TurnLabel.text = countries[country_turn_id].name + "'s turn." + + +func _on_BuyFactory_pressed(): + if button_selected: button_selected.pressed = false + button_selected = $CanvasLayer/Control/VBoxContainer/BuyFactory + mouse_click_mode = "buy_factory" + button_selected.pressed = true + +func _on_BuyArmy_pressed(): + if button_selected: button_selected.pressed = false + button_selected = $CanvasLayer/Control/VBoxContainer/BuyArmy + mouse_click_mode = "buy_army" + button_selected.pressed = true + +func _on_BuyBoat_pressed(): + if button_selected: button_selected.pressed = false + button_selected = $CanvasLayer/Control/VBoxContainer/BuyBoat + mouse_click_mode = "buy_boat" + button_selected.pressed = true + + +func _on_Grid_tile_pressed(v): + var country = countries[country_turn_id] + var tile = $Grid.grid[v] + match mouse_click_mode: + "buy_factory": + if country.money >= 5 and tile.country == country and not tile.factory: + country.money -= 5 + $Grid.set_factory(v, true) + +func _input(event): + if event is InputEventMouseButton: + if event.pressed and event.button_index == BUTTON_RIGHT: + if button_selected: + button_selected.pressed = false + mouse_click_mode = null diff --git a/scenes/game/game.tscn b/scenes/game/game.tscn index f7c0482..81da57b 100644 --- a/scenes/game/game.tscn +++ b/scenes/game/game.tscn @@ -18,14 +18,53 @@ margin_top = 10.0 margin_right = -10.0 margin_bottom = -10.0 -[node name="TurnLabel" type="Label" parent="CanvasLayer/Control"] +[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control"] anchor_left = 1.0 anchor_right = 1.0 -margin_left = -79.0 +margin_left = -176.0 +margin_bottom = 135.0 + +[node name="TurnLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"] +margin_right = 176.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_bottom = 32.0 +text = "?????$" +align = 2 + +[node name="StockPriceLabel" type="Label" parent="CanvasLayer/Control/VBoxContainer"] +margin_top = 36.0 +margin_right = 176.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_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_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_bottom = 122.0 +toggle_mode = true +text = "Buy boat" + [node name="EndTurnButton" type="Button" parent="CanvasLayer/Control"] anchor_left = 1.0 anchor_top = 1.0 @@ -35,13 +74,8 @@ margin_left = -79.0 margin_top = -40.0 text = "END TURN" -[node name="CountryMoneyLabel" type="Label" parent="CanvasLayer/Control"] -anchor_left = 1.0 -anchor_right = 1.0 -margin_left = -79.0 -margin_top = 14.0 -margin_bottom = 28.0 -text = "?????$" -align = 2 - +[connection signal="tile_pressed" from="Grid" to="." method="_on_Grid_tile_pressed"] +[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/BuyFactory" to="." method="_on_BuyFactory_pressed"] +[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/EndTurnButton" to="." method="_on_EndTurnButton_pressed"]