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;
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;

View file

@ -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<RuntimeZombieData>().LocalTimescale;
}
public void SetSpeed(float speed)