using UnityEngine; using UnityEngine.UI; using asap.core; using UniRx; using OfferTreasureAscent; using System.Linq; using GameCore; public class OfferTreasureAscentEntranceButton : EventButtonResource { [SerializeField] private BingoTimer timer; [SerializeField] private Image icon; [SerializeField] private Button button; private void Awake() { GContext.OnEvent() .Subscribe(_ => gameObject.SetActive(false)) .AddTo(this); var manager = GContext.container.Resolve(); if (manager == null || manager.IsFinalRewardClaimed) { gameObject.SetActive(false); return; } //Bad, do not refer to it. var data = manager.GetEntranceData(); var isWithinTime = ZZTimeHelper.UtcNow() >= data.TimerData.StartTime && ZZTimeHelper.UtcNow() < data.TimerData.ExpiryTime; if (!isWithinTime) { gameObject.SetActive(false); return; } CheckResource(manager.GetUiData().ToList()); button.onClick.AddListener(OnClickOpen); RedPointManager.Instance.SetRedPointState(manager.RedPointKey, manager.DoNeedRedPoint()); } protected override void OnLoadEventResource() { gameObject.SetActive(true); var manager = GContext.container.Resolve(); var entranceData = manager.GetEntranceData(); GContext.container.Resolve().SetImageSprite(icon, entranceData.IconUrl); timer.Init(entranceData.TimerData); timer.OnExpire += () => gameObject.SetActive(false); var faceUiService = GContext.container.Resolve(); faceUiService?.AddGiftFaceUI(manager.EventId, UITypes.OfferTreasureAscentMainPanel); Debug.Log("[OfferTreasureAscent] Face!", this); } private async void OnClickOpen() { try { var arc = GContext.container.Resolve(); await UIManager.Instance.ShowUINotLoading(UITypes.OfferTreasureAscentMainPanel); } catch (System.Exception ex) { Debug.LogError(ex); } } } public class EventOfferTreasureAscentHide { }