private void UpdateUI()
    {
        int  heartsToRender = hp.MaxHP;
        int  currentHp      = hp.CurrentHP;
        bool isRegen        = !hp.IsInCombatMode();

        for (int i = 0; i < hearts.Count; i++)
        {
            HeartUI heartUI = hearts[i];
            if (i < heartsToRender)
            {
                heartUI.Show();
                if (i < currentHp)
                {
                    heartUI.PlayFull();
                }

                else if (isRegen)
                {
                    heartUI.PlayRegen();
                }

                else
                {
                    heartUI.PlayEmpty();
                }
            }
            else
            {
                heartUI.Hide();
            }
        }
        renderedCurrentHP = currentHp;
        renderedMaxHP     = heartsToRender;
    }
    private void UpdateUIAfterDamage()
    {
        int currentHp = hp.CurrentHP;
        int maxHp     = hp.MaxHP;
        int hpLost    = renderedCurrentHP - currentHp;

        for (int i = 0; i < hpLost; i++)
        {
            int     heartIndex = renderedCurrentHP - i - 1;
            HeartUI heartUI    = hearts[heartIndex];
            heartUI.PlayLost();
        }
        int emptyHearts = renderedMaxHP - renderedCurrentHP;

        for (int i = 0; i < emptyHearts; i++)
        {
            int     heartIndex = renderedMaxHP - i - 1;
            HeartUI heartUI    = hearts[heartIndex];
            heartUI.PlayEmpty();
        }
        renderedCurrentHP = currentHp;
        renderedMaxHP     = maxHp;
    }