47 lines
1021 B
C#
47 lines
1021 B
C#
using Godot;
|
|
using System;
|
|
|
|
public partial class Health : Node
|
|
{
|
|
[Export] private Node2D _parent;
|
|
[Export] private float _baseMaxHp;
|
|
public float MaxHP { get; private set; }
|
|
public float CurHP { get; private set; }
|
|
|
|
[Signal]
|
|
public delegate void DeathEventHandler(Node2D node);
|
|
|
|
[Signal]
|
|
public delegate void DamagedEventHandler();
|
|
|
|
public override void _EnterTree()
|
|
{
|
|
// CurHP = MaxHP = _baseMaxHp * Mathf.Pow(GameController.Instance.Wave, 1.067f);
|
|
Reset();
|
|
}
|
|
|
|
public void Substract(float v)
|
|
{
|
|
v = Mathf.Abs(v);
|
|
CurHP -= v;
|
|
EmitSignalDamaged();
|
|
if (CurHP <= 0)
|
|
{
|
|
EmitSignalDeath(_parent);
|
|
}
|
|
}
|
|
|
|
public void Add(float v)
|
|
{
|
|
v = Mathf.Abs(v);
|
|
CurHP = Math.Clamp(CurHP + v, 0f, MaxHP);
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
CurHP = MaxHP = _baseMaxHp * Mathf.Pow(1.075f, GameController.Instance.Wave);
|
|
GD.Print("Curhp");
|
|
GD.Print(CurHP);
|
|
}
|
|
}
|