using Godot;
using Newlon.Components.Level;

namespace Newlon.Components.Plants.Behaviours;			

public partial class AloeBehaviour : BaseBehaviour
{
	[Export] private float _hpTreshold = 0.25f;
	private Timer _timer;
	private bool _charge = true;

    public override void _Ready()
    {
		base._Ready();
        _timer = GetNode<Timer>("Timer");
    }

	public override void _Process(double delta)
	{
		_tree.Set("parameters/Tree/conditions/charged",_charge);

		var checkPos = GetParent<Node2D>().GlobalPosition + Vector2.Right * Utility.TileWidth;
		if(_charge && PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData))
		{
			if((float)plantData.HP / (float)plantData.MaxHP < _hpTreshold)
			{
				_charge = false;
				_tree.Set("parameters/Tree/conditions/heal",true);
				_timer.Start();
			}
		}
	}

	public void Heal()
	{
		var checkPos = GetParent<Node2D>().GlobalPosition + Vector2.Right * Utility.TileWidth;
        if (PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData))
        {
            plantData.Heal(1200 + 0.5f * plantData.MaxHP, GetParent());
        }
    }

	public void OnTimeout()
	{
		_charge = true;
	}
}
