using JoshH.UI;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class BattlerPanel : MonoBehaviour
{
    [SerializeField] Image _headshot;
    [SerializeField] UIGradient[] _gradients;
    [SerializeField] TMP_Text _name;
    [SerializeField] Slider _healthBar;
    [SerializeField] TMP_Text _healthText;

    Battler _battler, _enemy;
    BattleArena _battleArena;

    void Update() => UpdateHealthBars();

    void UpdateHealthBars()
    {
        if (_battler.IsReady == false)
            return;
        
        foreach (var gradient in _gradients)
        {
            gradient.LinearColor1 = _battler.ClassColor;
            gradient.LinearColor2 = _battler.SpeciesColor;
        }

        _headshot.sprite = _battler.HeadshotSprite;

        _name.enableVertexGradient = true;
        _name.colorGradient = new VertexGradient(_battler.ClassColor, _battler.ClassColor, _battler.SpeciesColor, _battler.SpeciesColor);

        if (_battleArena.Winner == _enemy)
            _name.SetText($"<s>{_battler.PlayerName}</s>");
        else if (_battleArena.Winner == _battler)
            _name.SetText($"<b>{_battler.PlayerName.ToUpperInvariant()}</b>");
        else
            _name.SetText(_battler.PlayerName);

        _healthBar.value = _battler.Health;

        _healthText.SetText($"{_battler.Health} / 100");
    }

    public void Bind(Battler battler, Battler enemy, BattleArena battleArena)
    {
        _battler = battler;
        _enemy = enemy;
        _battleArena = battleArena;
    }
}
