Signal context
This commit is contained in:
parent
8a7295be82
commit
b4bf3ab8bc
13 changed files with 112 additions and 72 deletions
|
|
@ -7,7 +7,7 @@ public partial class RuntimeZombieData : Entity
|
|||
[Export]
|
||||
private Armor _armor;
|
||||
[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 override void _Ready()
|
||||
|
|
@ -20,6 +20,14 @@ public partial class RuntimeZombieData : Entity
|
|||
|
||||
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)
|
||||
{
|
||||
HP += _armor.Heal(amount);
|
||||
|
|
@ -42,33 +50,54 @@ public partial class RuntimeZombieData : Entity
|
|||
}
|
||||
|
||||
EmitSignal(SignalName.OnDamaged);
|
||||
var context = new EntitySignalContext()
|
||||
{
|
||||
source = origin,
|
||||
target = this,
|
||||
actionAmount = amount
|
||||
};
|
||||
if (HP - damage <= 0)
|
||||
{
|
||||
var delta = -HP;
|
||||
HP = 0;
|
||||
EmitSignal(SignalName.OnHPChanged, delta, origin);
|
||||
EmitSignal(SignalName.OnHPChanged, context);
|
||||
context.deltaHP = delta;
|
||||
KillByDamage();
|
||||
}
|
||||
else
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
return MaxHP + _armor.MaxHP;
|
||||
return MaxHP;
|
||||
}
|
||||
public float GetHPMixed()
|
||||
{
|
||||
if (_armor != null)
|
||||
return HP + _armor._hp;
|
||||
return HP;
|
||||
}
|
||||
#region Death sequence
|
||||
private bool _killed = false;
|
||||
public override void KillByDamage()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue