From b9e452345899d0066fdae143ec21609fc1996831 Mon Sep 17 00:00:00 2001 From: Robert Clarke Date: Sun, 12 Feb 2023 03:49:23 -0500 Subject: Simple example of Godot querying and updating the state of a C++ object --- game/src/MainMenu.gd | 1 + game/src/SampleGame.gd | 40 ++++++++++++++++++++++++++++++ game/src/SampleGame.tscn | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 game/src/SampleGame.gd create mode 100644 game/src/SampleGame.tscn 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"] -- cgit v1.2.3-56-ga3b1