using TMPro; using UnityEngine; using UnityEngine.UI; using GameCore; using UniRx; using asap.core; using cfg; using System.Threading.Tasks; public class EventLuckMagicRoadSignPanel : MonoBehaviour { [SerializeField] private TMP_Text textTimer; [SerializeField] private Image iconSign; [SerializeField] private Button btnLater, btnClose; [SerializeField] private EventLuckMagicDrawButtonView btnNow; private System.DateTime _expireTime; private System.TimeSpan RemainingTime => _expireTime - ZZTimeHelper.UtcNow(); private TaskCompletionSource _tcs; public void Init(System.DateTime expireTime, int roadSignId, EEventLuckMagicRingType higherRingType, int higherRingCost, TaskCompletionSource taskCompletionSource) { btnClose.onClick.AddListener(OnClickClose); btnLater.onClick.AddListener(OnClickClose); btnNow.ButtonDraw.onClick.AddListener(OnClickNow); _expireTime = expireTime; UpdateTimer(); Observable.Interval(System.TimeSpan.FromSeconds(1)).Subscribe(UpdateTimer).AddTo(this); btnNow.Init(higherRingCost, higherRingType); var roadSignIcon = GContext.container.Resolve().TbItem[roadSignId].Icon; GContext.container.Resolve().SetImageSprite(iconSign, roadSignIcon); _tcs = taskCompletionSource; } private void OnClickClose() { _tcs.SetResult(false); UIManager.Instance.DestroyUI(UITypes.EventLuckMagicRoadSignPanel); } private void UpdateTimer(long _ = 0L) { textTimer.text = LocalizationMgr.GetFormatTextValue("UI_COMMON_end", ConvertTools.ConvertTime2(RemainingTime)); if (RemainingTime.TotalSeconds <= 0) OnClickClose(); } private void OnClickNow() { UIManager.Instance.DestroyUI(UITypes.EventLuckMagicRoadSignPanel); EventLuckMagicAct.EventAggregator.Publish(new EventLuckMagicClickRoadSignNow()); _tcs.SetResult(true); } } public class EventLuckMagicClickRoadSignNow { } /* public enum EEventLuckMagicRoadSignExitType { Now, Later } */