diff --git a/scripts/components/ILocalTimescale.cs b/scripts/components/ILocalTimescale.cs new file mode 100644 index 0000000..e60865a --- /dev/null +++ b/scripts/components/ILocalTimescale.cs @@ -0,0 +1,6 @@ +namespace Newlon.Components; + +public interface ILocalTimescale +{ + public float LocalTimescale { get; set; } +} \ No newline at end of file diff --git a/scripts/components/zombies/RuntimeZombieData.cs b/scripts/components/zombies/RuntimeZombieData.cs index ceaa425..2035797 100644 --- a/scripts/components/zombies/RuntimeZombieData.cs +++ b/scripts/components/zombies/RuntimeZombieData.cs @@ -2,22 +2,37 @@ using Godot; namespace Newlon.Components.Zombies; -public partial class RuntimeZombieData : Node2D, IEntity +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; diff --git a/scripts/components/zombies/ZombieMover.cs b/scripts/components/zombies/ZombieMover.cs index 73b0f55..afa26fe 100644 --- a/scripts/components/zombies/ZombieMover.cs +++ b/scripts/components/zombies/ZombieMover.cs @@ -15,7 +15,7 @@ public partial class ZombieMover : Node public override void _PhysicsProcess(double delta) { - _zombie.Position -= _zombie.Transform.X * _speed * (float)delta * Utility.TileWidth / 4.0f; + _zombie.Position -= _zombie.Transform.X * _speed * (float)delta * Utility.TileWidth * GetParent().LocalTimescale; } public void SetSpeed(float speed)