death and restart menu working

This commit is contained in:
2026-01-27 15:11:43 +01:00
parent 916a6e7153
commit f1f0febf29
9 changed files with 72 additions and 27 deletions

View File

@@ -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()
@@ -77,8 +62,6 @@ func _ready() -> void:
_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()
popup_open = %ConfirmRestart

View File

@@ -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
@@ -21,6 +23,11 @@ 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)

View File

@@ -5,6 +5,7 @@ signal restart_pressed
signal main_menu_pressed
func _handle_cancel_input():
return
if $ConfirmExit.visible:
$ConfirmExit.hide()
elif $ConfirmMainMenu.visible:

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -39,6 +39,9 @@ public partial class PlayerController : CharacterBody3D,
// Signals and events //
///////////////////////////
[Signal]
public delegate void PlayerDiedEventHandler();
public event Action<IDamageable, DamageRecord> DamageTaken;
public event Action<IHealthable, HealthChangedRecord> HealthChanged;
public event Action<IHealthable> HealthDepleted;
@@ -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()

View File

@@ -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"]

View File

@@ -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()

View File

@@ -0,0 +1 @@
uid://cupqhe3qv7ero