Files

45 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using TMPro;
// Красный кружок с числом на кнопке HUD: "есть что забрать".
// Вешается билдером на кнопки (Задания, Почта, Награды...). panelId = id панели.
public class HUDBadge : MonoBehaviour
{
public string panelId;
GameObject badge;
TextMeshProUGUI label;
float next;
void Start()
{
// Если на кнопке уже есть старый значок-заглушка из скелета -- прячем его
var old = transform.Find("CountBadge");
if (old != null) old.gameObject.SetActive(false);
var rt = UIKit.Make("HUDBadge", transform);
rt.anchorMin = rt.anchorMax = new Vector2(1, 1);
rt.pivot = new Vector2(1, 1);
rt.sizeDelta = new Vector2(44, 44);
rt.anchoredPosition = new Vector2(4, 4);
var img = rt.gameObject.AddComponent<Image>();
img.color = new Color(0.9f, 0.15f, 0.15f);
img.raycastTarget = false;
label = UIKit.Text(rt, "", 26, Color.white, TextAlignmentOptions.Center);
UIKit.Stretch(label.rectTransform);
label.fontStyle = FontStyles.Bold;
badge = rt.gameObject;
badge.SetActive(false);
}
void Update()
{
if (badge == null || Time.unscaledTime < next) return;
next = Time.unscaledTime + 0.5f;
int n = GameProgress.Instance.BadgeCount(panelId);
badge.SetActive(n > 0);
label.text = n > 9 ? "9+" : n.ToString();
}
}