diff --git a/menus/main_menu.gd b/menus/main_menu.gd deleted file mode 100644 index 3c1c964..0000000 --- a/menus/main_menu.gd +++ /dev/null @@ -1,5 +0,0 @@ -extends Control - - -func _on_play_button_pressed() -> void: - get_tree().change_scene_to_file("res://scenes/game/game.tscn") diff --git a/menus/main_menu.tscn b/menus/main_menu.tscn deleted file mode 100644 index 1f7b01e..0000000 --- a/menus/main_menu.tscn +++ /dev/null @@ -1,32 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://g3e0eodhl7xl"] - -[ext_resource type="Script" path="res://menus/main_menu.gd" id="1_tdhva"] - -[node name="MainMenu" 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_tdhva") - -[node name="CenterContainer" type="CenterContainer" parent="."] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -20.5 -offset_top = -20.0 -offset_right = 20.5 -offset_bottom = 20.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="PlayButton" type="Button" parent="CenterContainer"] -layout_mode = 2 -text = "Play" - -[connection signal="pressed" from="CenterContainer/PlayButton" to="." method="_on_play_button_pressed"] diff --git a/menus/menu.gd b/menus/menu.gd new file mode 100644 index 0000000..783c1aa --- /dev/null +++ b/menus/menu.gd @@ -0,0 +1,47 @@ +extends CanvasLayer + +var isInGame: bool = false + +func setIsInGame(value: bool = false) -> void: + isInGame = value + + # Visible on Main Menu + $ButtonsContainer/PlayButton.visible = !isInGame + $ButtonsContainer/QuitButton.visible = !isInGame + + # Visible on game scene + $ButtonsContainer/ResumeButton.visible = isInGame + $ButtonsContainer/BackButton.visible = isInGame + $PausedLabel.visible = isInGame + +func _ready() -> void: + setIsInGame() + +func _input(event): + if event.is_action_released("ui_cancel") and isInGame: + if get_tree().paused: _resume() + else: _pause() + +func _pause() -> void: + get_tree().paused = true + visible = true + +func _resume() -> void: + get_tree().paused = false + visible = false + +func _on_play_button_pressed() -> void: + get_tree().change_scene_to_file("res://scenes/game/game.tscn") + +func _on_resume_button_pressed() -> void: + _resume() + +func _on_settings_button_pressed() -> void: + print("Settings") + +func _on_back_button_pressed() -> void: + get_tree().paused = false + get_tree().change_scene_to_file("res://scenes/start_menu/start_menu.tscn") + +func _on_quit_button_pressed() -> void: + get_tree().quit() diff --git a/menus/menu.tscn b/menus/menu.tscn new file mode 100644 index 0000000..9adb236 --- /dev/null +++ b/menus/menu.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=4 format=3 uid="uid://g3e0eodhl7xl"] + +[ext_resource type="Script" path="res://menus/menu.gd" id="1_uyh0y"] + +[sub_resource type="LabelSettings" id="LabelSettings_mv1id"] +font_size = 64 +font_color = Color(0.615686, 1, 0.717647, 1) +outline_size = 4 +outline_color = Color(0, 0, 0, 1) +shadow_color = Color(0, 0.956863, 0, 0.431373) + +[sub_resource type="LabelSettings" id="LabelSettings_s5kro"] +font_size = 32 +outline_size = 2 +outline_color = Color(0, 1, 0, 1) +shadow_color = Color(0, 1, 0, 1) +shadow_offset = Vector2(-1, -1) + +[node name="Menu" type="CanvasLayer"] +process_mode = 3 +editor_description = "Menu scene for \"Game\" and \"StartMenu\" scenes" +script = ExtResource("1_uyh0y") + +[node name="Background" type="ColorRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.364706) + +[node name="Title" type="Label" parent="."] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 118.0 +grow_horizontal = 2 +text = "Tree Simulator" +label_settings = SubResource("LabelSettings_mv1id") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="PausedLabel" type="Label" parent="."] +visible = false +anchors_preset = 10 +anchor_right = 1.0 +offset_top = 112.0 +offset_bottom = 230.0 +grow_horizontal = 2 +text = "Paused" +label_settings = SubResource("LabelSettings_s5kro") +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ButtonsContainer" type="VBoxContainer" parent="."] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -189.0 +offset_top = -68.0 +offset_right = 189.0 +offset_bottom = 68.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PlayButton" type="Button" parent="ButtonsContainer"] +layout_mode = 2 +text = "Play" + +[node name="ResumeButton" type="Button" parent="ButtonsContainer"] +layout_mode = 2 +text = "Resume" + +[node name="SettingsButton" type="Button" parent="ButtonsContainer"] +layout_mode = 2 +text = "Settings" + +[node name="BackButton" type="Button" parent="ButtonsContainer"] +layout_mode = 2 +text = "Back" + +[node name="QuitButton" type="Button" parent="ButtonsContainer"] +layout_mode = 2 +text = "Quit" + +[connection signal="pressed" from="ButtonsContainer/PlayButton" to="." method="_on_play_button_pressed"] +[connection signal="pressed" from="ButtonsContainer/ResumeButton" to="." method="_on_resume_button_pressed"] +[connection signal="pressed" from="ButtonsContainer/SettingsButton" to="." method="_on_settings_button_pressed"] +[connection signal="pressed" from="ButtonsContainer/BackButton" to="." method="_on_back_button_pressed"] +[connection signal="pressed" from="ButtonsContainer/QuitButton" to="." method="_on_quit_button_pressed"] diff --git a/project.godot b/project.godot index 42a25ed..3699614 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Tree Simulator" -run/main_scene="res://menus/main_menu.tscn" +run/main_scene="res://scenes/start_menu/start_menu.tscn" config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://icon.svg" diff --git a/scenes/game/game.gd b/scenes/game/game.gd index 444d03a..405435e 100644 --- a/scenes/game/game.gd +++ b/scenes/game/game.gd @@ -1,5 +1,6 @@ extends Node3D +@onready var menu: CanvasLayer = $Menu @onready var player_level_status: VBoxContainer = $UI/PlayerLevelUI/PlayerLevelStatus @onready var tree_level_status: VBoxContainer = $UI/TreeLevelUI/LevelStatus @onready var tree_name: Label = $UI/TreeLevelUI/TreeName @@ -8,6 +9,9 @@ extends Node3D func _ready() -> void: _update_ui() _populate_option_button() + + menu.visible = false + menu.setIsInGame(true) func _on_xp_timer_timeout() -> void: PlayerLS.add_xp() diff --git a/scenes/game/game.tscn b/scenes/game/game.tscn index abf911b..efaf757 100644 --- a/scenes/game/game.tscn +++ b/scenes/game/game.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=3 uid="uid://dkufj4sv64avp"] +[gd_scene load_steps=4 format=3 uid="uid://dkufj4sv64avp"] [ext_resource type="Script" path="res://scenes/game/game.gd" id="1_b8j6q"] [ext_resource type="PackedScene" uid="uid://2fuwpxsgv6ok" path="res://scenes/level_ui/level_ui.tscn" id="2_xnews"] +[ext_resource type="PackedScene" uid="uid://g3e0eodhl7xl" path="res://menus/menu.tscn" id="3_gr4f4"] [node name="Game" type="Node3D"] script = ExtResource("1_b8j6q") @@ -40,10 +41,12 @@ layout_mode = 2 [node name="TreeSelector" type="OptionButton" parent="UI/TreeLevelUI"] layout_mode = 2 -selected = 0 [node name="XP_Timer" type="Timer" parent="."] autostart = true +[node name="Menu" parent="." instance=ExtResource("3_gr4f4")] +visible = false + [connection signal="item_selected" from="UI/TreeLevelUI/TreeSelector" to="." method="_on_option_button_item_selected"] [connection signal="timeout" from="XP_Timer" to="." method="_on_xp_timer_timeout"] diff --git a/scenes/start_menu/start_menu.tscn b/scenes/start_menu/start_menu.tscn new file mode 100644 index 0000000..849e931 --- /dev/null +++ b/scenes/start_menu/start_menu.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://crg31x8k6vhsi"] + +[ext_resource type="PackedScene" uid="uid://g3e0eodhl7xl" path="res://menus/menu.tscn" id="1_duan6"] + +[node name="StartMenu" type="Node2D"] + +[node name="Menu" parent="." instance=ExtResource("1_duan6")]