49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
using Godot;
|
|
|
|
public class Particle : Node2D
|
|
{
|
|
private Sprite _spriteNode;
|
|
private Label _labelNode;
|
|
|
|
private ParticleType _type;
|
|
private float _health = 0f;
|
|
private float _averageSpeed = 1f;
|
|
public Vector2 Velocity { get; set; }
|
|
public float AverageSpeed { get => _averageSpeed; }
|
|
|
|
public float Health
|
|
{
|
|
get => _health;
|
|
set
|
|
{
|
|
_health = Mathf.Clamp(value, 0f, 1f);
|
|
_spriteNode.Modulate = Color.FromHsv(_type.Hue, Health, 1);
|
|
}
|
|
}
|
|
|
|
public ParticleType Type
|
|
{
|
|
get => _type;
|
|
set
|
|
{
|
|
_type = value;
|
|
_spriteNode.Modulate = Color.FromHsv(_type.Hue, Health, 1);
|
|
}
|
|
}
|
|
|
|
public override void _Ready()
|
|
{
|
|
_spriteNode = GetNode<Sprite>("Sprite");
|
|
_labelNode = GetNode<Label>("Label");
|
|
}
|
|
|
|
public void AddAverageSpeedValue(float speed)
|
|
{
|
|
_averageSpeed = (0.99f * _averageSpeed) + (0.01f * speed);
|
|
}
|
|
|
|
public void SetLabelText(string text)
|
|
{
|
|
_labelNode.Text = text;
|
|
}
|
|
} |