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(); } } }