using PrizeSystem; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine; public class SpecialPrizeView : MonoBehaviour { [SerializeField] CanvasGroup canvasGroup; [SerializeField] private TextMeshProUGUI PrizeText; public void Init() { Refresh(PrizeSystemManager.cachedPrizes); PrizeSystemManager.PrizesChanged += Refresh; } private void OnDestroy() => PrizeSystemManager.PrizesChanged -= Refresh; private void Refresh(List prizes) { var qrPrizes = prizes.OfType().ToList(); bool prizing = SettingsManager.GetBool(SettingKeys.PRIZING, false); bool hasQrPrizes = qrPrizes.Count > 0; bool needToDisplay = prizing && hasQrPrizes; if (needToDisplay) PrizeText.text = GetMostRankedPrize(qrPrizes).PrizeText; canvasGroup.alpha = needToDisplay ? 1 : 0; } private QrPrize GetMostRankedPrize(List qrPrizes) //это можно в призовую систему перегнать или в утильку { if (qrPrizes == null || qrPrizes.Count == 0) return null; return qrPrizes.OrderByDescending(p => p.Rank).FirstOrDefault(); } }