From 4e5427e7310ccf9a16812997dcb0b4311cdefc05 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Sat, 3 May 2025 05:53:30 +0200 Subject: [PATCH] Add death effect and sound to PlayerDeathComponent; reset player state on death --- objects/brick_player.tscn | 6 ++++-- scripts/components/player_death.gd | 20 +++++++++++++++++--- scripts/game_manager.gd | 10 +++++++++- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/objects/brick_player.tscn b/objects/brick_player.tscn index 13080ae..6e48c7a 100644 --- a/objects/brick_player.tscn +++ b/objects/brick_player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=29 format=3 uid="uid://bqi5s710xb1ju"] +[gd_scene load_steps=30 format=3 uid="uid://bqi5s710xb1ju"] [ext_resource type="Script" uid="uid://ccuddyoakg04u" path="res://scripts/player.gd" id="1_8j4h4"] [ext_resource type="Texture2D" uid="uid://b7gp0gqvkv8j4" path="res://sprites/MrBrick_base.png" id="2_bc55y"] @@ -8,6 +8,7 @@ [ext_resource type="Script" uid="uid://qeu80jy4vmuf" path="res://scripts/components/score.gd" id="6_fowa2"] [ext_resource type="Script" uid="uid://btfsq0bvtrx3t" path="res://scripts/components/health.gd" id="7_tqjk8"] [ext_resource type="Script" uid="uid://dkpu3121y88oo" path="res://scripts/components/player_death.gd" id="8_1v23d"] +[ext_resource type="PackedScene" uid="uid://dyp4i4ru2j2jh" path="res://objects/explosion_fx.tscn" id="9_hwg11"] [ext_resource type="Script" uid="uid://nogmyshjrv57" path="res://scripts/components/knockback.gd" id="9_rjyu4"] [ext_resource type="Script" uid="uid://ulhswh4jjlc6" path="res://scripts/components/stomp_damage_component.gd" id="12_payr4"] [ext_resource type="Script" uid="uid://dqmbvuutd5c3c" path="res://scripts/components/flashing_component.gd" id="13_hrtyn"] @@ -86,9 +87,10 @@ script = ExtResource("7_tqjk8") hurt_fx = NodePath("../sfx_hurt") heal_fx = NodePath("../sfx_heal") -[node name="PlayerDeathComponent" type="Node" parent="."] +[node name="PlayerDeathComponent" type="Node2D" parent="."] process_mode = 3 script = ExtResource("8_1v23d") +death_effect = ExtResource("9_hwg11") [node name="KnockbackComponent" type="Node" parent="." node_paths=PackedStringArray("character_body")] script = ExtResource("9_rjyu4") diff --git a/scripts/components/player_death.gd b/scripts/components/player_death.gd index 1177a4f..4d4f6bb 100644 --- a/scripts/components/player_death.gd +++ b/scripts/components/player_death.gd @@ -1,5 +1,8 @@ class_name PlayerDeathComponent -extends Node +extends Node2D + +@export var death_sfx: AudioStreamPlayer2D +@export var death_effect: PackedScene @onready var gm: GM = $"/root/GameManager" @@ -9,6 +12,17 @@ func reset_scene() -> void: func _on_health_component_on_death() -> void: - # todo: play audio on death - gm.remove_lives(1) + if death_sfx: + death_sfx.play() + if death_effect: + var effect: Node2D = death_effect.instantiate() + get_parent().add_child(effect) + effect.global_position = global_position + effect.scale = Vector2(1.5, 1.5) + + if gm.get_lives() == 1: + gm.reset_player_state() + else: + gm.remove_lives(1) + call_deferred("reset_scene") diff --git a/scripts/game_manager.gd b/scripts/game_manager.gd index 89b978d..04e0026 100644 --- a/scripts/game_manager.gd +++ b/scripts/game_manager.gd @@ -51,4 +51,12 @@ func unlock_skill(skill_name: String) -> void: func unlock_skills(skill_names: Array[String]) -> void: for skill_name in skill_names: - unlock_skill(skill_name) \ No newline at end of file + unlock_skill(skill_name) + + +func reset_player_state() -> void: + player_state = { + "coins": 0, + "lives": 3, + "unlocked_skills": [], + } \ No newline at end of file