From f1f0febf29c7fd96280f2766f71c2ec36def3982 Mon Sep 17 00:00:00 2001 From: Minimata Date: Tue, 27 Jan 2026 15:11:43 +0100 Subject: [PATCH] death and restart menu working --- .../scenes/overlaid_menu/menus/pause_menu.gd | 17 ---------- .../scenes/overlaid_menu/overlaid_menu.gd | 18 +++++++++-- .../scenes/overlaid_menus/level_lost_menu.gd | 1 + maps/main_scene_template.tscn | 10 +++++- menus/scenes/overlaid_menus/pause_menu.tscn | 6 +--- player_controller/Scripts/PlayerController.cs | 8 ++++- systems/inputs/menu_mode/menu_mode.tres | 7 ++++- systems/ui/general_manager.gd | 31 +++++++++++++++++++ systems/ui/general_manager.gd.uid | 1 + 9 files changed, 72 insertions(+), 27 deletions(-) create mode 100644 systems/ui/general_manager.gd create mode 100644 systems/ui/general_manager.gd.uid diff --git a/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd b/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd index 114b6ac7..c6418b4f 100644 --- a/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd +++ b/addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.gd @@ -4,25 +4,10 @@ extends OverlaidMenu @export var options_packed_scene : PackedScene @export_file("*.tscn") var main_menu_scene : String -@export var menu_context : GUIDEMappingContext - var popup_open : Node -var previous_mapping_contexts : Array var is_listening_to_inputs = true -func _enter_tree() -> void: - super._enter_tree() - previous_mapping_contexts = GUIDE.get_enabled_mapping_contexts() - for previous_context in previous_mapping_contexts: - GUIDE.disable_mapping_context(previous_context) - GUIDE.enable_mapping_context(menu_context) - -func _exit_tree() -> void: - GUIDE.disable_mapping_context(menu_context) - for previous_context in previous_mapping_contexts: - GUIDE.enable_mapping_context(previous_context) - func close_popup() -> void: if popup_open != null: popup_open.hide() @@ -76,8 +61,6 @@ func _ready() -> void: _hide_exit_for_web() _hide_options_if_unset() _hide_main_menu_if_unset() - - back_action.triggered.connect(_handle_cancel_input) func _on_restart_button_pressed() -> void: %ConfirmRestart.popup_centered() diff --git a/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd b/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd index b506c943..4326ac2e 100644 --- a/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd +++ b/addons/maaacks_game_template/base/scenes/overlaid_menu/overlaid_menu.gd @@ -11,7 +11,9 @@ extends Control process_mode = PROCESS_MODE_INHERIT @export var makes_mouse_visible : bool = true -@export var back_action : GUIDEAction +@export var menu_context : GUIDEMappingContext = preload("uid://c2hpxkcujyc13") +@export var back_action : GUIDEAction = preload("uid://ck43v3q5ype3f") +var previous_mapping_contexts : Array signal menu_closing @@ -20,7 +22,12 @@ var _initial_focus_mode : FocusMode = FOCUS_ALL var _initial_mouse_mode : Input.MouseMode var _initial_focus_control var _scene_tree : SceneTree - + +func _exit_tree() -> void: + GUIDE.disable_mapping_context(menu_context) + for previous_context in previous_mapping_contexts: + GUIDE.enable_mapping_context(previous_context) + func close() -> void: menu_closing.emit() _scene_tree.paused = _initial_pause_state @@ -53,3 +60,10 @@ func _enter_tree() -> void: _scene_tree.paused = pauses_game or _initial_pause_state if makes_mouse_visible: Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + + previous_mapping_contexts = GUIDE.get_enabled_mapping_contexts() + for previous_context in previous_mapping_contexts: + GUIDE.disable_mapping_context(previous_context) + GUIDE.enable_mapping_context(menu_context) + back_action.triggered.connect(_handle_cancel_input) + diff --git a/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd b/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd index 976357ae..67a14d01 100644 --- a/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd +++ b/addons/maaacks_game_template/extras/scenes/overlaid_menus/level_lost_menu.gd @@ -5,6 +5,7 @@ signal restart_pressed signal main_menu_pressed func _handle_cancel_input(): + return if $ConfirmExit.visible: $ConfirmExit.hide() elif $ConfirmMainMenu.visible: diff --git a/maps/main_scene_template.tscn b/maps/main_scene_template.tscn index 2037cd79..9fb5caac 100644 --- a/maps/main_scene_template.tscn +++ b/maps/main_scene_template.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=11 format=3 uid="uid://55wehh6xombr"] +[gd_scene load_steps=12 format=3 uid="uid://55wehh6xombr"] [ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_game_template/base/scenes/music_players/background_music_player.tscn" id="2_roiv2"] [ext_resource type="AudioStream" uid="uid://f8cvr5s041ej" path="res://assets/audio/ambiance/637083__nox_sound__ambiance_nature_night_cricket_calm_loop_stereo.wav" id="3_boadi"] +[ext_resource type="Script" uid="uid://cupqhe3qv7ero" path="res://systems/ui/general_manager.gd" id="3_k6got"] [ext_resource type="Script" uid="uid://cyh0d64pfygbl" path="res://addons/maaacks_game_template/base/scripts/pause_menu_controller.gd" id="4_wlbyq"] [ext_resource type="PackedScene" uid="uid://ccqajqchiw4xu" path="res://menus/scenes/overlaid_menus/pause_menu.tscn" id="5_wwrc3"] [ext_resource type="Resource" uid="uid://dgluj0ql5vth7" path="res://systems/inputs/base_mode/pause.tres" id="6_vy804"] @@ -40,6 +41,9 @@ adjustment_enabled = true [node name="BackgroundMusicPlayer" parent="." instance=ExtResource("2_roiv2")] stream = ExtResource("3_boadi") +[node name="GeneralManager" type="Node" parent="."] +script = ExtResource("3_k6got") + [node name="PauseMenuController" type="Node" parent="." node_paths=PackedStringArray("player")] script = ExtResource("4_wlbyq") pause_menu_packed = ExtResource("5_wwrc3") @@ -63,3 +67,7 @@ transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 0, 0, 0) collision_layer = 17 TutorialDone = true AccelerationAir = 1.5 + +[node name="DebugLayer" type="CanvasLayer" parent="."] + +[connection signal="PlayerDied" from="Player" to="GeneralManager" method="on_player_died"] diff --git a/menus/scenes/overlaid_menus/pause_menu.tscn b/menus/scenes/overlaid_menus/pause_menu.tscn index df4a66b8..bf560352 100644 --- a/menus/scenes/overlaid_menus/pause_menu.tscn +++ b/menus/scenes/overlaid_menus/pause_menu.tscn @@ -1,18 +1,14 @@ -[gd_scene load_steps=6 format=3 uid="uid://ccqajqchiw4xu"] +[gd_scene load_steps=4 format=3 uid="uid://ccqajqchiw4xu"] [ext_resource type="PackedScene" uid="uid://b5cd6sa8qq4vc" path="res://addons/maaacks_game_template/base/scenes/overlaid_menu/menus/pause_menu.tscn" id="1_0paax"] [ext_resource type="Script" uid="uid://bwvomv4eww4fg" path="res://menus/scenes/overlaid_menus/pause_menu.gd" id="2_ek1hy"] [ext_resource type="PackedScene" uid="uid://dim045la3mijk" path="res://menus/scenes/overlaid_menus/mini_options_overlaid_menu.tscn" id="3_e0t2r"] -[ext_resource type="Resource" uid="uid://c2hpxkcujyc13" path="res://systems/inputs/menu_mode/menu_mode.tres" id="4_nfx08"] -[ext_resource type="Resource" uid="uid://ck43v3q5ype3f" path="res://systems/inputs/menu_mode/back.tres" id="5_su1bt"] [node name="PauseMenu" instance=ExtResource("1_0paax")] top_level = true script = ExtResource("2_ek1hy") options_packed_scene = ExtResource("3_e0t2r") main_menu_scene = "res://menus/scenes/menus/main_menu/main_menu_with_animations.tscn" -menu_context = ExtResource("4_nfx08") -back_action = ExtResource("5_su1bt") [connection signal="tree_entered" from="." to="." method="on_enter_tree"] [connection signal="tree_exited" from="." to="." method="on_exit_tree"] diff --git a/player_controller/Scripts/PlayerController.cs b/player_controller/Scripts/PlayerController.cs index 181cbd00..8564edc4 100644 --- a/player_controller/Scripts/PlayerController.cs +++ b/player_controller/Scripts/PlayerController.cs @@ -38,6 +38,9 @@ public partial class PlayerController : CharacterBody3D, /////////////////////////// // Signals and events // /////////////////////////// + + [Signal] + public delegate void PlayerDiedEventHandler(); public event Action DamageTaken; public event Action HealthChanged; @@ -593,6 +596,9 @@ public partial class PlayerController : CharacterBody3D, // Attack states _attackStandard.StateEntered += OnStandardAttackStarted; _attackDash.StateEntered += OnDashAttackStarted; + + // Testing out kill + // GetTree().CreateTimer(2).Timeout += () => Kill(this); } /////////////////////////// @@ -2168,7 +2174,7 @@ public partial class PlayerController : CharacterBody3D, public void Kill(IHealthable source) { - GD.Print("Player died!"); + EmitSignalPlayerDied(); } public void ResetInvincibility() diff --git a/systems/inputs/menu_mode/menu_mode.tres b/systems/inputs/menu_mode/menu_mode.tres index 5942a422..ef5dbe17 100644 --- a/systems/inputs/menu_mode/menu_mode.tres +++ b/systems/inputs/menu_mode/menu_mode.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=66 format=3 uid="uid://c2hpxkcujyc13"] +[gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=67 format=3 uid="uid://c2hpxkcujyc13"] [ext_resource type="Script" uid="uid://cpplm41b5bt6m" path="res://addons/guide/guide_action_mapping.gd" id="1_xno0b"] [ext_resource type="Resource" uid="uid://ck43v3q5ype3f" path="res://systems/inputs/menu_mode/back.tres" id="2_6sfub"] @@ -29,11 +29,16 @@ script = ExtResource("3_scydb") input = SubResource("Resource_tp5dr") triggers = Array[ExtResource("6_c647i")]([SubResource("Resource_lvbl0")]) +[sub_resource type="Resource" id="Resource_6sfub"] +script = ExtResource("8_yfqfy") +key = 4194305 + [sub_resource type="Resource" id="Resource_17mt7"] script = ExtResource("7_m88dc") [sub_resource type="Resource" id="Resource_23hmj"] script = ExtResource("3_scydb") +input = SubResource("Resource_6sfub") triggers = Array[ExtResource("6_c647i")]([SubResource("Resource_17mt7")]) [sub_resource type="Resource" id="Resource_len71"] diff --git a/systems/ui/general_manager.gd b/systems/ui/general_manager.gd new file mode 100644 index 00000000..2fb183cf --- /dev/null +++ b/systems/ui/general_manager.gd @@ -0,0 +1,31 @@ +extends Node + +@export_category("Scenes") +@export_group("General") +@export var main_menu_path : String = "res://menus/scenes/menus/main_menu/main_menu_with_animations.tscn" + +@export_group("Levels") + +@export_category("Menus") +@export_group("Overlaid") +@export var lost_menu : PackedScene = preload("uid://ciyq8eiv1mtie") + +@export_category("Others") +@export var focused_viewport : Viewport + + +func on_player_died() -> void: + if not focused_viewport: + focused_viewport = get_viewport() + var _initial_focus_control = focused_viewport.gui_get_focus_owner() + var current_menu: LevelLostMenu = lost_menu.instantiate() + + get_tree().current_scene.call_deferred("add_child", current_menu) + current_menu.restart_pressed.connect(restart_current_level) + current_menu.main_menu_pressed.connect(back_to_main_menu) + +func back_to_main_menu(): + SceneLoader.load_scene(main_menu_path) + +func restart_current_level(): + SceneLoader.reload_current_scene() diff --git a/systems/ui/general_manager.gd.uid b/systems/ui/general_manager.gd.uid new file mode 100644 index 00000000..8d00b285 --- /dev/null +++ b/systems/ui/general_manager.gd.uid @@ -0,0 +1 @@ +uid://cupqhe3qv7ero