diff --git a/game/game.gd b/game/game.gd index 1ffd6ce..3255825 100644 --- a/game/game.gd +++ b/game/game.gd @@ -1,41 +1,23 @@ extends Node -const Passage = preload("res://game/passage.tscn") -const PauseMenu = preload("res://menu/pause_menu.tscn") - - -var _pause_menu: Node -var _current_passage: Node +@onready var pause_screen : Control = $PauseScreen func _ready() -> void: - _current_passage = Passage.instantiate() - add_child(_current_passage) + pause_screen.hide() func _input(event: InputEvent) -> void: if event.is_action_pressed("pause"): - _pause_game() + pause_screen.show() + get_tree().paused = true -func _create_pause_menu() -> void: - _pause_menu = PauseMenu.instantiate() - add_child(_pause_menu) - _pause_menu.continue_game.connect(_unpause_game) - _pause_menu.show_main_menu.connect(_show_title_screen) +func _on_pause_screen_continue_game() -> void: + pause_screen.hide() -func _pause_game() -> void: - get_tree().paused = true - _create_pause_menu.call_deferred() - - -func _unpause_game() -> void: - get_tree().paused = false - _pause_menu.queue_free() - - -func _show_title_screen() -> void: +func _on_pause_screen_show_main_menu() -> void: get_tree().paused = false get_tree().change_scene_to_file("res://menu/title_screen.tscn") diff --git a/game/game.tscn b/game/game.tscn index 2644977..b15ad51 100644 --- a/game/game.tscn +++ b/game/game.tscn @@ -1,6 +1,16 @@ -[gd_scene load_steps=2 format=3 uid="uid://dl7m4rqyj8mck"] +[gd_scene load_steps=4 format=3 uid="uid://dl7m4rqyj8mck"] [ext_resource type="Script" uid="uid://1wfu4iuddo25" path="res://game/game.gd" id="1_l1rk1"] +[ext_resource type="PackedScene" uid="uid://d34nh3lc1gpb" path="res://menu/pause_screen.tscn" id="2_h7iqs"] +[ext_resource type="PackedScene" uid="uid://dgc0087kvarx6" path="res://game/passage.tscn" id="3_4fuuu"] -[node name="Game" type="Node"] +[node name="Game" type="Node2D"] script = ExtResource("1_l1rk1") + +[node name="PauseScreen" parent="." instance=ExtResource("2_h7iqs")] +process_mode = 2 + +[node name="Passage" parent="." instance=ExtResource("3_4fuuu")] + +[connection signal="continue_game" from="PauseScreen" to="." method="_on_pause_screen_continue_game"] +[connection signal="show_main_menu" from="PauseScreen" to="." method="_on_pause_screen_show_main_menu"] diff --git a/game/passage.gd b/game/passage.gd index 81d1fff..b4b3ace 100644 --- a/game/passage.gd +++ b/game/passage.gd @@ -1,4 +1,4 @@ -extends Node +extends Node2D const SMALL_ENEMY = preload("res://game/entities/ships/enemies/small/small_enemy_ship.tscn") diff --git a/game/passage.tscn b/game/passage.tscn index 65523a4..16c6268 100644 --- a/game/passage.tscn +++ b/game/passage.tscn @@ -4,7 +4,7 @@ [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_ltkyg"] -[node name="Passage" type="Node"] +[node name="Passage" type="Node2D"] script = ExtResource("1_ltkyg") [node name="World" type="StaticBody2D" parent="."] diff --git a/menu/pause_menu.gd b/menu/pause_menu.gd index 2566de3..904d725 100644 --- a/menu/pause_menu.gd +++ b/menu/pause_menu.gd @@ -7,6 +7,7 @@ extends Control signal continue_game signal show_main_menu +signal show_options func _ready() -> void: @@ -35,5 +36,9 @@ func _on_continue_button_pressed() -> void: continue_game.emit() +func _on_options_button_pressed() -> void: + show_options.emit() + + func _on_main_menu_button_pressed() -> void: show_main_menu.emit() diff --git a/menu/pause_menu.tscn b/menu/pause_menu.tscn index 0b1c7d9..25aacdb 100644 --- a/menu/pause_menu.tscn +++ b/menu/pause_menu.tscn @@ -1,16 +1,9 @@ -[gd_scene load_steps=6 format=3 uid="uid://bclo2wl8ibrcg"] +[gd_scene load_steps=4 format=3 uid="uid://bclo2wl8ibrcg"] [ext_resource type="Script" uid="uid://npqs2m5g5bd6" path="res://menu/pause_menu.gd" id="1_inj1j"] [ext_resource type="Theme" uid="uid://dtnd3tqllufey" path="res://images/menu_button.tres" id="2_vy7sn"] -[sub_resource type="InputEventAction" id="InputEventAction_inj1j"] -action = &"ui_cancel" - -[sub_resource type="InputEventAction" id="InputEventAction_vy7sn"] -action = &"pause" - [sub_resource type="Shortcut" id="Shortcut_lgp46"] -events = [SubResource("InputEventAction_inj1j"), SubResource("InputEventAction_vy7sn")] [node name="PauseMenu" type="Control"] process_mode = 2 @@ -34,6 +27,11 @@ theme = ExtResource("2_vy7sn") shortcut = SubResource("Shortcut_lgp46") text = "CONTINUE" +[node name="OptionsButton" type="Button" parent="VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_vy7sn") +text = "OPTIONS" + [node name="MainMenuButton" type="Button" parent="VBoxContainer"] unique_name_in_owner = true layout_mode = 2 @@ -43,4 +41,5 @@ text = "MAIN MENU" [connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"] [connection signal="pressed" from="VBoxContainer/ContinueButton" to="." method="_on_continue_button_pressed"] +[connection signal="pressed" from="VBoxContainer/OptionsButton" to="." method="_on_options_button_pressed"] [connection signal="pressed" from="VBoxContainer/MainMenuButton" to="." method="_on_main_menu_button_pressed"] diff --git a/menu/pause_screen.gd b/menu/pause_screen.gd new file mode 100644 index 0000000..541b561 --- /dev/null +++ b/menu/pause_screen.gd @@ -0,0 +1,56 @@ +extends Control + + +signal continue_game +signal show_main_menu + + +@onready var pause_menu : Control = $PauseMenu +@onready var options : Control = $Options +@onready var credits : Control = $Credits + + +func _ready() -> void: + _show_menu(pause_menu) + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("pause") or event.is_action_pressed("ui_cancel"): + _on_pause_menu_continue_game.call_deferred() + + +func _show_menu(menu: Control) -> void: + var menus : Array[Control] = [ pause_menu, options, credits ] + + for m in menus: + m.hide() + + menu.show() + + +func _on_pause_menu_continue_game() -> void: + continue_game.emit() + + +func _on_pause_menu_show_main_menu() -> void: + show_main_menu.emit() + + +func _on_pause_menu_show_options() -> void: + _show_menu(options) + + +func _on_options_back() -> void: + _show_menu(pause_menu) + + +func _on_options_show_credits() -> void: + _show_menu(credits) + + +func _on_credits_back() -> void: + _show_menu(options) + + +func _on_visibility_changed() -> void: + get_tree().paused = visible diff --git a/menu/pause_screen.gd.uid b/menu/pause_screen.gd.uid new file mode 100644 index 0000000..7984747 --- /dev/null +++ b/menu/pause_screen.gd.uid @@ -0,0 +1 @@ +uid://c5d2t2o53wkmt diff --git a/menu/pause_screen.tscn b/menu/pause_screen.tscn new file mode 100644 index 0000000..b07a464 --- /dev/null +++ b/menu/pause_screen.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=5 format=3 uid="uid://d34nh3lc1gpb"] + +[ext_resource type="Script" uid="uid://c5d2t2o53wkmt" path="res://menu/pause_screen.gd" id="1_fe1q8"] +[ext_resource type="PackedScene" uid="uid://bclo2wl8ibrcg" path="res://menu/pause_menu.tscn" id="2_4r6ly"] +[ext_resource type="PackedScene" uid="uid://btr60idiit4y7" path="res://menu/options.tscn" id="3_3gwb3"] +[ext_resource type="PackedScene" uid="uid://c3q3g2647qc27" path="res://menu/credits.tscn" id="4_jph5s"] + +[node name="PauseScreen" type="Control"] +layout_mode = 3 +anchors_preset = 0 +script = ExtResource("1_fe1q8") + +[node name="PauseMenu" parent="." instance=ExtResource("2_4r6ly")] +layout_mode = 0 + +[node name="Options" parent="." instance=ExtResource("3_3gwb3")] +layout_mode = 0 + +[node name="Credits" parent="." instance=ExtResource("4_jph5s")] +layout_mode = 0 + +[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"] +[connection signal="continue_game" from="PauseMenu" to="." method="_on_pause_menu_continue_game"] +[connection signal="show_main_menu" from="PauseMenu" to="." method="_on_pause_menu_show_main_menu"] +[connection signal="show_options" from="PauseMenu" to="." method="_on_pause_menu_show_options"] +[connection signal="back" from="Options" to="." method="_on_options_back"] +[connection signal="show_credits" from="Options" to="." method="_on_options_show_credits"] +[connection signal="back" from="Credits" to="." method="_on_credits_back"]