Signal context

This commit is contained in:
Rendo 2025-07-22 19:24:34 +05:00
commit b4bf3ab8bc
13 changed files with 112 additions and 72 deletions

View file

@ -36,7 +36,6 @@ PlayerProgress="*res://scripts/PlayerProgress.cs"
window/size/viewport_width=600 window/size/viewport_width=600
window/size/viewport_height=400 window/size/viewport_height=400
window/size/mode=4
window/stretch/mode="canvas_items" window/stretch/mode="canvas_items"
[dotnet] [dotnet]

View file

@ -821,7 +821,7 @@ metadata/_edit_lock_ = true
[node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] [node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
use_parent_material = true use_parent_material = true
position = Vector2(-6, 3) position = Vector2(-6, 3)
scale = Vector2(0.999834, 0.999834) scale = Vector2(0.999832, 0.999832)
rest = Transform2D(1, 0, 0, 1, -6, 3) rest = Transform2D(1, 0, 0, 1, -6, 3)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
@ -833,13 +833,13 @@ metadata/_edit_lock_ = true
[node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
position = Vector2(-2, 12) position = Vector2(-2, 12)
scale = Vector2(0.999832, 0.999832) scale = Vector2(0.999836, 0.999836)
rest = Transform2D(1, 0, 0, 1, -2, 12) rest = Transform2D(1, 0, 0, 1, -2, 12)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
[node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] [node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
position = Vector2(-2, 14) position = Vector2(-2, 14)
scale = Vector2(0.999832, 0.999832) scale = Vector2(0.999833, 0.999833)
rest = Transform2D(1, 0, 0, 1, -2, 14) rest = Transform2D(1, 0, 0, 1, -2, 14)
auto_calculate_length_and_angle = false auto_calculate_length_and_angle = false
length = 12.0 length = 12.0
@ -874,7 +874,7 @@ metadata/_edit_lock_ = true
[node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
position = Vector2(-1, 13) position = Vector2(-1, 13)
scale = Vector2(0.999836, 0.999836) scale = Vector2(0.999828, 0.999828)
rest = Transform2D(1, 0, 0, 1, -1, 13) rest = Transform2D(1, 0, 0, 1, -1, 13)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
@ -886,7 +886,7 @@ metadata/_edit_lock_ = true
[node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
position = Vector2(6, 10) position = Vector2(6, 10)
scale = Vector2(0.999828, 0.999828) scale = Vector2(0.999829, 0.999829)
rest = Transform2D(1, 0, 0, 1, 6, 10) rest = Transform2D(1, 0, 0, 1, 6, 10)
auto_calculate_length_and_angle = false auto_calculate_length_and_angle = false
length = 12.0 length = 12.0
@ -902,7 +902,7 @@ metadata/_edit_lock_ = true
[node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
use_parent_material = true use_parent_material = true
position = Vector2(1, -2) position = Vector2(1, -2)
scale = Vector2(0.999826, 0.999826) scale = Vector2(0.99983, 0.99983)
rest = Transform2D(1, 0, 0, 1, 1, -2) rest = Transform2D(1, 0, 0, 1, 1, -2)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
@ -910,7 +910,7 @@ editor_settings/show_bone_gizmo = false
z_index = -1 z_index = -1
use_parent_material = true use_parent_material = true
position = Vector2(-14, -23) position = Vector2(-14, -23)
scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999829, 0.999829)
rest = Transform2D(1, 0, 0, 1, -14, -23) rest = Transform2D(1, 0, 0, 1, -14, -23)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
@ -922,13 +922,13 @@ metadata/_edit_lock_ = true
[node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] [node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
position = Vector2(-2, 15) position = Vector2(-2, 15)
scale = Vector2(0.999829, 0.999829) scale = Vector2(0.999827, 0.999827)
rest = Transform2D(1, 0, 0, 1, -2, 15) rest = Transform2D(1, 0, 0, 1, -2, 15)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
[node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"] [node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
position = Vector2(-1, 13) position = Vector2(-1, 13)
scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999829, 0.999829)
rest = Transform2D(1, 0, 0, 1, -1, 13) rest = Transform2D(1, 0, 0, 1, -1, 13)
auto_calculate_length_and_angle = false auto_calculate_length_and_angle = false
length = 8.0 length = 8.0
@ -956,8 +956,8 @@ metadata/_edit_lock_ = true
[node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
position = Vector2(-9, -21) position = Vector2(-9, -21)
rotation = 0.0770157 rotation = 0.0155712
skew = -0.000432968 skew = -0.00043869
rest = Transform2D(1, 0, 0, 1, -9, -21) rest = Transform2D(1, 0, 0, 1, -9, -21)
auto_calculate_length_and_angle = false auto_calculate_length_and_angle = false
length = 24.0 length = 24.0
@ -972,7 +972,7 @@ metadata/_edit_lock_ = true
[node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] [node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
position = Vector2(-10, -25) position = Vector2(-10, -25)
scale = Vector2(0.999825, 0.999825) scale = Vector2(0.999822, 0.999822)
rest = Transform2D(1, 0, 0, 1, -10, -25) rest = Transform2D(1, 0, 0, 1, -10, -25)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
@ -1010,9 +1010,9 @@ offset = Vector2(-2, -2)
metadata/_edit_lock_ = true metadata/_edit_lock_ = true
[node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
position = Vector2(-3.00095, 2.9984) position = Vector2(-2.75527, 2.40711)
rotation = 0.00747412 rotation = 0.0250584
scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999813, 0.999813)
texture = SubResource("AtlasTexture_x5uj2") texture = SubResource("AtlasTexture_x5uj2")
centered = false centered = false
offset = Vector2(-12, -2) offset = Vector2(-12, -2)
@ -1029,7 +1029,7 @@ _observedEntity = NodePath("../../../../../../../..")
[node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
position = Vector2(-3, 3) position = Vector2(-3, 3)
scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999813, 0.999813)
rest = Transform2D(1, 0, 0, 1, -3, 3) rest = Transform2D(1, 0, 0, 1, -3, 3)
auto_calculate_length_and_angle = false auto_calculate_length_and_angle = false
length = 11.0 length = 11.0
@ -1085,8 +1085,8 @@ minTorque = -45.0
maxTorque = 45.0 maxTorque = 45.0
[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"] [node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
rotation = 0.0724117 rotation = 0.120426
scale = Vector2(0.999999, 0.999999) scale = Vector2(0.999994, 0.999994)
texture = SubResource("AtlasTexture_auqeq") texture = SubResource("AtlasTexture_auqeq")
centered = false centered = false
offset = Vector2(-5, 0) offset = Vector2(-5, 0)
@ -1095,8 +1095,8 @@ metadata/_edit_lock_ = true
[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"] [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"]
show_behind_parent = true show_behind_parent = true
position = Vector2(-0.99983, 12.9978) position = Vector2(-0.99983, 12.9978)
rotation = -0.0319581 rotation = -0.107145
scale = Vector2(0.999658, 0.999658) scale = Vector2(0.999655, 0.999655)
texture = SubResource("AtlasTexture_vlvtp") texture = SubResource("AtlasTexture_vlvtp")
centered = false centered = false
offset = Vector2(-4, -1) offset = Vector2(-4, -1)
@ -1112,13 +1112,13 @@ _observedEntity = NodePath("../../../../../../../..")
[node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
position = Vector2(-2, 14) position = Vector2(-2, 14)
scale = Vector2(0.999829, 0.999829) scale = Vector2(0.999824, 0.999824)
rest = Transform2D(1, 0, 0, 1, -2, 14) rest = Transform2D(1, 0, 0, 1, -2, 14)
editor_settings/show_bone_gizmo = false editor_settings/show_bone_gizmo = false
[node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"] [node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
position = Vector2(-1, 13) position = Vector2(-1, 13)
scale = Vector2(0.999827, 0.999827) scale = Vector2(0.999825, 0.999825)
rest = Transform2D(1, 0, 0, 1, -1, 13) rest = Transform2D(1, 0, 0, 1, -1, 13)
auto_calculate_length_and_angle = false auto_calculate_length_and_angle = false
length = 6.0 length = 6.0
@ -1168,7 +1168,7 @@ entity = NodePath("..")
[node name="Mover" type="Node" parent="."] [node name="Mover" type="Node" parent="."]
script = ExtResource("4_u5syx") script = ExtResource("4_u5syx")
_speed = SubResource("Resource_ckb7n") _speed = SubResource("Resource_ckb7n")
_speedControlMult = 0.133731 _speedControlMult = 2.5893
[node name="HitPlayer" type="Node" parent="."] [node name="HitPlayer" type="Node" parent="."]
script = ExtResource("12_he8da") script = ExtResource("12_he8da")

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=57 format=3 uid="uid://dd3yegl1xo44m"] [gd_scene load_steps=56 format=3 uid="uid://dd3yegl1xo44m"]
[ext_resource type="AudioStream" uid="uid://b6xb6mjdecg6a" path="res://assets/audio/sfx/level/readysetplant.mp3" id="1_4gg2g"] [ext_resource type="AudioStream" uid="uid://b6xb6mjdecg6a" path="res://assets/audio/sfx/level/readysetplant.mp3" id="1_4gg2g"]
[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_31ltw"] [ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_31ltw"]
@ -583,15 +583,6 @@ Vector2i(1, 0): {
} }
} }
[sub_resource type="GDScript" id="GDScript_4gg2g"]
script/source = "extends Label
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
print(str($\"../LevelRunner\".waveHealth))
"
[node name="StandardLevel" type="Node2D"] [node name="StandardLevel" type="Node2D"]
[node name="MainAnimationPlayer" type="AnimationPlayer" parent="."] [node name="MainAnimationPlayer" type="AnimationPlayer" parent="."]
@ -904,13 +895,6 @@ ignore_time_scale = true
[node name="ReadySetPlantPlayer" type="AudioStreamPlayer" parent="."] [node name="ReadySetPlantPlayer" type="AudioStreamPlayer" parent="."]
[node name="Label" type="Label" parent="."]
offset_left = 308.0
offset_top = 378.0
offset_right = 348.0
offset_bottom = 395.0
script = SubResource("GDScript_4gg2g")
[connection signal="OnLevelStateChanged" from="Data" to="SunSpawner/Timer" method="OnLevelStateChanged"] [connection signal="OnLevelStateChanged" from="Data" to="SunSpawner/Timer" method="OnLevelStateChanged"]
[connection signal="OnLevelStateChanged" from="Data" to="ZombieLevelPrevewer" method="OnLevelStateChanged"] [connection signal="OnLevelStateChanged" from="Data" to="ZombieLevelPrevewer" method="OnLevelStateChanged"]
[connection signal="OnLevelStateChanged" from="Data" to="InitialSpawner" method="OnLevelStateChanged"] [connection signal="OnLevelStateChanged" from="Data" to="InitialSpawner" method="OnLevelStateChanged"]

View file

@ -11,36 +11,52 @@ public partial class Entity : Node2D
#region Health points #region Health points
[Export] public float MaxHP; [Export] public float MaxHP;
public float HP; public float HP;
[Signal] public delegate void OnHPChangedEventHandler(float deltaHP, Node origin); [Signal] public delegate void OnHPChangedEventHandler(EntitySignalContext context);
[Signal] public delegate void OnDamagedEventHandler(); [Signal] public delegate void OnDamagedEventHandler();
public virtual void TakeDamage(float amount, Node origin) public virtual void TakeDamage(float amount, Node origin)
{ {
EmitSignal(SignalName.OnDamaged); EmitSignal(SignalName.OnDamaged);
var context = new EntitySignalContext()
{
target = this,
source = (Entity)origin,
actionAmount = amount
};
if (HP - amount <= 0) if (HP - amount <= 0)
{ {
EmitSignal(SignalName.OnHPChanged, -HP, origin); context.deltaHP = -HP;
EmitSignal(SignalName.OnHPChanged, context);
HP = 0; HP = 0;
KillByDamage(); KillByDamage();
} }
else else
{ {
context.deltaHP = -amount;
HP -= amount; HP -= amount;
EmitSignal(SignalName.OnHPChanged, -amount, origin); EmitSignal(SignalName.OnHPChanged, context);
} }
} }
public virtual void Heal(float amount, Node origin) public virtual void Heal(float amount, Node origin)
{ {
var context = new EntitySignalContext()
{
target = this,
source = (Entity)origin,
actionAmount = amount
};
if (HP + amount > MaxHP) if (HP + amount > MaxHP)
{ {
EmitSignal(SignalName.OnHPChanged, MaxHP - HP, origin); context.deltaHP = MaxHP - HP;
EmitSignal(SignalName.OnHPChanged, context);
HP = MaxHP; HP = MaxHP;
} }
else else
{ {
context.deltaHP = amount;
HP += amount; HP += amount;
EmitSignal(SignalName.OnHPChanged, amount, origin); EmitSignal(SignalName.OnHPChanged, context);
} }
} }

View file

@ -14,7 +14,7 @@ public partial class EntityHPObserver : Node
_observedEntity.OnHPChanged += OnHPChanged; _observedEntity.OnHPChanged += OnHPChanged;
} }
private void OnHPChanged(float delta, Node origin) private void OnHPChanged(EntitySignalContext context)
{ {
if (_setGreater == false && _observedEntity.HP / _observedEntity.MaxHP <= _threshold) if (_setGreater == false && _observedEntity.HP / _observedEntity.MaxHP <= _threshold)
{ {

View file

@ -0,0 +1,11 @@
using Godot;
namespace Newlon.Components;
public partial class EntitySignalContext : RefCounted
{
public Node source;
public Entity target;
public float actionAmount;
public float deltaHP;
}

View file

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

View file

@ -14,7 +14,7 @@ public partial class FlashComponent : CanvasGroup
_shaderMaterial = Material as ShaderMaterial; _shaderMaterial = Material as ShaderMaterial;
} }
public void DamageFlash(int damage,Node origin) public void DamageFlash(EntitySignalContext context)
{ {
Flash(); Flash();
} }

View file

@ -29,10 +29,10 @@ public partial class NerdusReturnAttack : Area2D
entities.Remove(entity); entities.Remove(entity);
} }
} }
private void OnHPChanged(float delta, Node source) private void OnHPChanged(EntitySignalContext context)
{ {
if (delta >= 0) return; if (context.deltaHP >= 0) return;
returnAmount -= delta; returnAmount -= context.deltaHP;
triggered = true; triggered = true;
} }
public void ReturnAllDamage() public void ReturnAllDamage()

View file

@ -9,10 +9,10 @@ public partial class ReturnEffect : Node
[Export] [Export]
private Effect _effectToReturn; private Effect _effectToReturn;
public void OnDamageRecieved(int delta,Node origin) public void OnDamageRecieved(EntitySignalContext context)
{ {
if (delta >= 0) return; if (context.deltaHP >= 0) return;
if (origin is RuntimeZombieData zombie) if (context.source is RuntimeZombieData zombie)
{ {
zombie.GiveEffect(_effectToReturn); zombie.GiveEffect(_effectToReturn);
} }

View file

@ -5,18 +5,11 @@ namespace Newlon.Components.Plants.Behaviours;
public partial class HpBasedBehaviour : BaseBehaviour public partial class HpBasedBehaviour : BaseBehaviour
{ {
private RuntimePlantData _data;
[Export] private Array<string> parameters; [Export] private Array<string> parameters;
public override void _Ready() public void OnHPChanged(EntitySignalContext context)
{ {
base._Ready(); var calc = context.target.HP / context.target.MaxHP;
_data = GetParent<RuntimePlantData>();
}
public void OnHPChanged(float amount, Node origin)
{
var calc = _data.HP / _data.MaxHP;
foreach (var par in parameters) foreach (var par in parameters)
{ {
_tree.Set(par, calc); _tree.Set(par, calc);

View file

@ -7,7 +7,7 @@ public partial class RuntimeZombieData : Entity
[Export] [Export]
private Armor _armor; private Armor _armor;
[Signal] public delegate void HasBeenKilledEventHandler(RuntimeZombieData who); [Signal] public delegate void HasBeenKilledEventHandler(RuntimeZombieData who);
[Signal] public delegate void HPChangedMixedEventHandler(float delta); [Signal] public delegate void HPChangedMixedEventHandler(EntitySignalContext context);
public bool AbleToEat = true; public bool AbleToEat = true;
public override void _Ready() public override void _Ready()
@ -20,6 +20,14 @@ public partial class RuntimeZombieData : Entity
public override void Heal(float amount, Node origin) public override void Heal(float amount, Node origin)
{ {
var context = new EntitySignalContext()
{
source = (Entity)origin,
target = this,
actionAmount = amount,
deltaHP = Mathf.Clamp(HP+amount,0,MaxHP-amount)
};
if (_armor != null) if (_armor != null)
{ {
HP += _armor.Heal(amount); HP += _armor.Heal(amount);
@ -42,33 +50,54 @@ public partial class RuntimeZombieData : Entity
} }
EmitSignal(SignalName.OnDamaged); EmitSignal(SignalName.OnDamaged);
var context = new EntitySignalContext()
{
source = origin,
target = this,
actionAmount = amount
};
if (HP - damage <= 0) if (HP - damage <= 0)
{ {
var delta = -HP; var delta = -HP;
HP = 0; HP = 0;
EmitSignal(SignalName.OnHPChanged, delta, origin); EmitSignal(SignalName.OnHPChanged, context);
context.deltaHP = delta;
KillByDamage(); KillByDamage();
} }
else else
{ {
HP -= damage; HP -= damage;
EmitSignal(SignalName.OnHPChanged, -damage, origin); context.deltaHP = -damage;
EmitSignal(SignalName.OnHPChanged, context);
} }
} }
public void HPChangedMixedInvokerSource(float delta, Node source) public void HPChangedMixedInvokerSource(EntitySignalContext context)
{ {
EmitSignal(SignalName.HPChangedMixed, delta); EmitSignal(SignalName.HPChangedMixed, context);
} }
public void HPChangedMixedInvoker(float delta) public void HPChangedMixedInvoker(float delta)
{ {
EmitSignal(SignalName.HPChangedMixed, -delta);
EmitSignal(SignalName.HPChangedMixed, new EntitySignalContext()
{
deltaHP = -delta,
source = null,
target = this,
actionAmount = delta
});
} }
public float GetMaxHPMixed() public float GetMaxHPMixed()
{ {
if (_armor != null) if (_armor != null)
return MaxHP + _armor.MaxHP; return MaxHP + _armor.MaxHP;
return MaxHP; return MaxHP;
} }
public float GetHPMixed()
{
if (_armor != null)
return HP + _armor._hp;
return HP;
}
#region Death sequence #region Death sequence
private bool _killed = false; private bool _killed = false;
public override void KillByDamage() public override void KillByDamage()

View file

@ -83,9 +83,16 @@ public partial class LevelRunner : Node
waveTimer.WaitTime = resource.waves[waveIndex].customWaveDelay > 0 ? resource.waves[waveIndex].customWaveDelay : resource.standardWaveDelay; waveTimer.WaitTime = resource.waves[waveIndex].customWaveDelay > 0 ? resource.waves[waveIndex].customWaveDelay : resource.standardWaveDelay;
waveTimer.Start(); waveTimer.Start();
} }
private void OnHPChanged(float delta) private void OnHPChanged(EntitySignalContext context)
{ {
waveHealth += delta; waveHealth = 0;
foreach (var zombie in zombies)
{
if (zombie != null)
{
waveHealth += zombie.GetHPMixed();
}
}
if (waveIndex == resource.waves.Count - 1) return; if (waveIndex == resource.waves.Count - 1) return;