Local timescale for zombies

This commit is contained in:
Фёдор Веселов 2024-09-29 20:20:33 +05:00
commit 8d326e47a7
3 changed files with 23 additions and 2 deletions

View file

@ -0,0 +1,6 @@
namespace Newlon.Components;
public interface ILocalTimescale
{
public float LocalTimescale { get; set; }
}

View file

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

View file

@ -15,7 +15,7 @@ public partial class ZombieMover : Node
public override void _PhysicsProcess(double delta) 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<RuntimeZombieData>().LocalTimescale;
} }
public void SetSpeed(float speed) public void SetSpeed(float speed)