From 8d326e47a706c32d8d830ad85580400603046649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=91=D0=B4=D0=BE=D1=80=20=D0=92=D0=B5=D1=81=D0=B5?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2?= Date: Sun, 29 Sep 2024 20:20:33 +0500 Subject: [PATCH] Local timescale for zombies --- scripts/components/ILocalTimescale.cs | 6 ++++++ scripts/components/zombies/RuntimeZombieData.cs | 17 ++++++++++++++++- scripts/components/zombies/ZombieMover.cs | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 scripts/components/ILocalTimescale.cs 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)