Add death effect and sound to PlayerDeathComponent; reset player state on death
This commit is contained in:
@@ -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="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"]
|
[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://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://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="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://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://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"]
|
[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")
|
hurt_fx = NodePath("../sfx_hurt")
|
||||||
heal_fx = NodePath("../sfx_heal")
|
heal_fx = NodePath("../sfx_heal")
|
||||||
|
|
||||||
[node name="PlayerDeathComponent" type="Node" parent="."]
|
[node name="PlayerDeathComponent" type="Node2D" parent="."]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
script = ExtResource("8_1v23d")
|
script = ExtResource("8_1v23d")
|
||||||
|
death_effect = ExtResource("9_hwg11")
|
||||||
|
|
||||||
[node name="KnockbackComponent" type="Node" parent="." node_paths=PackedStringArray("character_body")]
|
[node name="KnockbackComponent" type="Node" parent="." node_paths=PackedStringArray("character_body")]
|
||||||
script = ExtResource("9_rjyu4")
|
script = ExtResource("9_rjyu4")
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
class_name PlayerDeathComponent
|
class_name PlayerDeathComponent
|
||||||
extends Node
|
extends Node2D
|
||||||
|
|
||||||
|
@export var death_sfx: AudioStreamPlayer2D
|
||||||
|
@export var death_effect: PackedScene
|
||||||
|
|
||||||
@onready var gm: GM = $"/root/GameManager"
|
@onready var gm: GM = $"/root/GameManager"
|
||||||
|
|
||||||
@@ -9,6 +12,17 @@ func reset_scene() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _on_health_component_on_death() -> void:
|
func _on_health_component_on_death() -> void:
|
||||||
# todo: play audio on death
|
if death_sfx:
|
||||||
gm.remove_lives(1)
|
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")
|
call_deferred("reset_scene")
|
||||||
|
@@ -51,4 +51,12 @@ func unlock_skill(skill_name: String) -> void:
|
|||||||
|
|
||||||
func unlock_skills(skill_names: Array[String]) -> void:
|
func unlock_skills(skill_names: Array[String]) -> void:
|
||||||
for skill_name in skill_names:
|
for skill_name in skill_names:
|
||||||
unlock_skill(skill_name)
|
unlock_skill(skill_name)
|
||||||
|
|
||||||
|
|
||||||
|
func reset_player_state() -> void:
|
||||||
|
player_state = {
|
||||||
|
"coins": 0,
|
||||||
|
"lives": 3,
|
||||||
|
"unlocked_skills": [],
|
||||||
|
}
|
Reference in New Issue
Block a user