r2mods/ilspy_dump/ror2_csproj/RoR2.UI/BuffIcon.cs

92 lines
1.6 KiB
C#

using System.Text;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace RoR2.UI;
[RequireComponent(typeof(RectTransform))]
public class BuffIcon : MonoBehaviour
{
public BuffDef buffDef;
private BuffDef lastBuffDef;
public int buffCount;
private int lastBuffCount;
public Image iconImage;
public TextMeshProUGUI stackCount;
private float stopwatch;
private const float flashDuration = 0.25f;
private static readonly StringBuilder sharedStringBuilder = new StringBuilder();
public RectTransform rectTransform { get; private set; }
private void Awake()
{
rectTransform = GetComponent<RectTransform>();
}
private void OnEnable()
{
UpdateIcon();
}
private void OnDisable()
{
ResetBuffIcon();
}
public void ResetBuffIcon()
{
buffDef = null;
lastBuffCount = -1;
}
public void Flash()
{
iconImage.color = Color.white;
iconImage.CrossFadeColor(buffDef.buffColor, 0.25f, ignoreTimeScale: true, useAlpha: false);
}
public void UpdateIcon()
{
if (buffDef == lastBuffDef && buffCount == lastBuffCount)
{
return;
}
lastBuffDef = buffDef;
lastBuffCount = buffCount;
if ((bool)buffDef)
{
iconImage.enabled = true;
iconImage.sprite = buffDef.iconSprite;
iconImage.color = buffDef.buffColor;
if (buffDef.canStack)
{
sharedStringBuilder.Clear();
sharedStringBuilder.Append("x");
sharedStringBuilder.AppendInt(buffCount);
stackCount.enabled = true;
stackCount.SetText(sharedStringBuilder);
}
else
{
stackCount.enabled = false;
}
}
else
{
iconImage.sprite = null;
iconImage.enabled = false;
stackCount.enabled = false;
}
}
}