aboutsummaryrefslogtreecommitdiff
path: root/game/src
diff options
context:
space:
mode:
author Robert Clarke <clarke.john.robert@gmail.com>2023-02-12 09:49:23 +0100
committer Robert Clarke <clarke.john.robert@gmail.com>2023-02-12 09:49:23 +0100
commitb9e452345899d0066fdae143ec21609fc1996831 (patch)
tree0de7878a04c0d46835208147c4ab4faba1d3ebee /game/src
parentd45323cadee9044d8536f7eb9827a43b36e4bdff (diff)
Simple example of Godot querying and updating the state of a C++ object
Diffstat (limited to 'game/src')
-rw-r--r--game/src/MainMenu.gd1
-rw-r--r--game/src/SampleGame.gd40
-rw-r--r--game/src/SampleGame.tscn64
3 files changed, 105 insertions, 0 deletions
diff --git a/game/src/MainMenu.gd b/game/src/MainMenu.gd
index a9cdf10..82b7b2f 100644
--- a/game/src/MainMenu.gd
+++ b/game/src/MainMenu.gd
@@ -16,6 +16,7 @@ func _ready():
func _on_new_game_button_pressed():
print("Start a new game!")
+ get_tree().change_scene_to_file("res://src/SampleGame.tscn")
func _on_continue_button_pressed():
diff --git a/game/src/SampleGame.gd b/game/src/SampleGame.gd
new file mode 100644
index 0000000..0e3a61d
--- /dev/null
+++ b/game/src/SampleGame.gd
@@ -0,0 +1,40 @@
+extends Control
+
+var selectedId = 0
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+ updateVisibleInfo()
+ pass # Replace with function body.
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+#func _process(delta):
+# pass
+
+
+func updateVisibleInfo():
+ $CenterContainer/VBoxContainer2/GridContainer/ProvinceNumDisplay.text = str(selectedId)
+ $CenterContainer/VBoxContainer2/GridContainer/ProvinceSizeDisplay.text = str(Simulation.queryProvinceSize(selectedId))
+
+
+func _on_pass_time_button_pressed():
+ Simulation.conductSimulationStep()
+ updateVisibleInfo()
+
+
+func _on_next_prov_button_pressed():
+ selectedId = (selectedId + 1) % 10
+ updateVisibleInfo()
+
+
+func _on_prev_prov_button_pressed():
+ if selectedId == 0:
+ selectedId = 9
+ else:
+ selectedId -= 1
+ updateVisibleInfo()
+
+
+func _on_to_main_menu_pressed():
+ get_tree().change_scene_to_file("res://src/MainMenu.tscn")
diff --git a/game/src/SampleGame.tscn b/game/src/SampleGame.tscn
new file mode 100644
index 0000000..8221857
--- /dev/null
+++ b/game/src/SampleGame.tscn
@@ -0,0 +1,64 @@
+[gd_scene load_steps=2 format=3 uid="uid://bgnupcshe1m7r"]
+
+[ext_resource type="Script" path="res://src/SampleGame.gd" id="1_eklvp"]
+
+[node name="SampleGame" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_eklvp")
+
+[node name="CenterContainer" type="CenterContainer" parent="."]
+layout_mode = 0
+offset_right = 1152.0
+offset_bottom = 648.0
+
+[node name="VBoxContainer2" type="VBoxContainer" parent="CenterContainer"]
+layout_mode = 2
+
+[node name="GridContainer" type="GridContainer" parent="CenterContainer/VBoxContainer2"]
+layout_mode = 2
+columns = 2
+
+[node name="ProvenceLabel" type="Label" parent="CenterContainer/VBoxContainer2/GridContainer"]
+layout_mode = 2
+text = "Viewing Province #:"
+horizontal_alignment = 2
+
+[node name="ProvinceNumDisplay" type="Label" parent="CenterContainer/VBoxContainer2/GridContainer"]
+layout_mode = 2
+
+[node name="ProvinceSizeLabel" type="Label" parent="CenterContainer/VBoxContainer2/GridContainer"]
+layout_mode = 2
+text = "Province Size:"
+horizontal_alignment = 2
+
+[node name="ProvinceSizeDisplay" type="Label" parent="CenterContainer/VBoxContainer2/GridContainer"]
+layout_mode = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/VBoxContainer2"]
+layout_mode = 2
+
+[node name="PassTimeButton" type="Button" parent="CenterContainer/VBoxContainer2/VBoxContainer"]
+layout_mode = 2
+text = "Pass Time"
+
+[node name="NextProvButton" type="Button" parent="CenterContainer/VBoxContainer2/VBoxContainer"]
+layout_mode = 2
+text = "View Next Province"
+
+[node name="PrevProvButton" type="Button" parent="CenterContainer/VBoxContainer2/VBoxContainer"]
+layout_mode = 2
+text = "View Previous Province"
+
+[node name="ToMainMenu" type="Button" parent="CenterContainer/VBoxContainer2/VBoxContainer"]
+layout_mode = 2
+text = "Exit to Main Menu"
+
+[connection signal="pressed" from="CenterContainer/VBoxContainer2/VBoxContainer/PassTimeButton" to="." method="_on_pass_time_button_pressed"]
+[connection signal="pressed" from="CenterContainer/VBoxContainer2/VBoxContainer/NextProvButton" to="." method="_on_next_prov_button_pressed"]
+[connection signal="pressed" from="CenterContainer/VBoxContainer2/VBoxContainer/PrevProvButton" to="." method="_on_prev_prov_button_pressed"]
+[connection signal="pressed" from="CenterContainer/VBoxContainer2/VBoxContainer/ToMainMenu" to="." method="_on_to_main_menu_pressed"]