newlon/scripts/components/zombies/RuntimeZombieData.cs

62 lines
1.2 KiB
C#

using Godot;
namespace Newlon.Components.Zombies;
public partial class RuntimeZombieData : Node2D, IEntity, ILocalTimescale
{
[Signal]
public delegate void OnHPChangedEventHandler(int deltaHP);
[Signal]
public delegate void OnLocalTimescaleChangedEventHandler(int currentTimescale);
private int _hp;
[Export]
private int _maxHP;
[Export]
private int _line;
private float _localTimescale;
public int Hp => _hp;
public int MaxHp => _maxHP;
public int Line => _line;
public float LocalTimescale
{
get => _localTimescale;
set
{
_localTimescale = value;
EmitSignal(SignalName.OnLocalTimescaleChanged,_localTimescale);
}
}
public override void _Ready()
{
_hp = _maxHP;
}
public void Heal(int amount)
{
_hp += amount;
EmitSignal(SignalName.OnHPChanged,amount);
if (MaxHp > 0)
{
_hp = MaxHp;
}
}
public void TakeDamage(int amount)
{
_hp -= amount;
EmitSignal(SignalName.OnHPChanged,-amount);
if (_hp <= 0)
{
QueueFree();
}
}
}