Files
ft/Client/Assets/Scripts/UI/PinataPack/PinataPackEntranceButton.cs
2026-06-29 21:18:33 +08:00

66 lines
2.4 KiB
C#

using asap.core;
using cfg;
using GameCore;
using System;
using System.Collections.Generic;
using TMPro;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
public class PinataPackEntranceButton : EventButtonResource
{
[SerializeField] private TMP_Text textTimer;
[SerializeField] private Button btn;
[SerializeField] private Image icon;
private IDisposable _disposable;
private void Awake()
{
gameObject.SetActive(false);
btn = this.GetComponent<Button>();
btn.onClick.AddListener(OnEnterPinataPackPanel);
//RedPointManager.Instance.SetRedPointState(EventAnimalPackData.EntranceRedPointId, _data.DoNeedEntranceRedPoint || _data.DoNeedPackRedPoint);
var packMain = GContext.container.Resolve<EventPinataPackData>()?.EventPinataPackMain;
if (packMain == null) return;
CheckResource(new List<string>() { packMain.UIPanel, packMain.GamePanel,packMain.ActPrefab });
}
protected override void OnDestroy()
{
base.OnDestroy();
_disposable?.Dispose();
}
private void UpdateTimer(long _ = 0L)
{
gameObject.SetActive(IsShowBtn());
var pinataPackData = GContext.container.Resolve<EventPinataPackData>();
if (pinataPackData == null)
return;
textTimer.text = ConvertTools.ConvertTime2(pinataPackData.RemainingTime);
}
private void OnEnterPinataPackPanel()
{
var packMain = GContext.container.Resolve<EventPinataPackData>()?.EventPinataPackMain;
UITypes.PinataPack_PonyPanel.SetType(packMain?.UIPanel?? nameof(PinataPack_PonyPanel));
_ = UIManager.Instance.ShowUILoad(UITypes.PinataPack_PonyPanel);
}
private bool IsShowBtn()
{
var pinataPackData = GContext.container.Resolve<EventPinataPackData>();
return pinataPackData is { IsActive: true };
}
protected override void OnLoadEventResource()
{
UpdateTimer();
_disposable = Observable.Interval(TimeSpan.FromSeconds(1f)).Subscribe(UpdateTimer).AddTo(this);
gameObject.SetActive(IsShowBtn());
var pinataPackData = GContext.container.Resolve<EventPinataPackData>();
if (pinataPackData == null || pinataPackData.RemainingTime.TotalSeconds <= 0)
return;
var main = pinataPackData.EventPinataPackMain;
_ = GContext.container.Resolve<IUIService>().SetImageSprite(icon, main.Icon);
}
}