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

70 lines
2.5 KiB
C#

using asap.core;
using GameCore;
using System;
using System.Collections.Generic;
using TMPro;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scripts.UI.OfferSweep
{
public class OfferSweepPackEntranceButton : EventButtonResource
{
[SerializeField] private TMP_Text textTimer;
[SerializeField] private Button btn;
[SerializeField] private Image icon;
private OfferSweepManager _offerSweepManager;
private OfferSweepManager OfferSweepManager => _offerSweepManager ??= GContext.container.Resolve<OfferSweepManager>();
private IDisposable _disposable;
private void Awake()
{
gameObject.SetActive(false);
btn = this.GetComponent<Button>();
btn.onClick.AddListener(OnEnterPackPanel);
var packManager = OfferSweepManager.GetOfferSweepEventPackManager();
if (packManager == null) return;
UITypes.OfferSweepPanel.SetType(packManager.Panel);
CheckResource(new List<string>() { packManager.Panel, packManager.Icon });
}
protected override void OnDestroy()
{
base.OnDestroy();
_disposable?.Dispose();
}
private void UpdateTimer(long _ = 0L)
{
gameObject.SetActive(IsShowBtn());
var offerSweepPackData = OfferSweepManager?.SweepPackData;
if (offerSweepPackData == null) return;
textTimer.text = ConvertTools.ConvertTime2(offerSweepPackData.RemainingTime);
}
private void OnEnterPackPanel()
{
_ = UIManager.Instance.ShowUILoad(UITypes.OfferSweepPanel);
}
private bool IsShowBtn()
{
var offerSweepPackData = OfferSweepManager?.SweepPackData;
if (offerSweepPackData == null) return false;
if(offerSweepPackData.IsActive)
RedPointManager.Instance.SetRedPointState(RedPointName.Home_OfferSweep, offerSweepPackData.IsShowPoint);
return offerSweepPackData.IsActive;
}
protected override void OnLoadEventResource()
{
UpdateTimer();
_disposable = Observable.Interval(TimeSpan.FromSeconds(1f)).Subscribe(UpdateTimer).AddTo(this);
gameObject.SetActive(IsShowBtn());
var packManager = OfferSweepManager.GetOfferSweepEventPackManager();
if (packManager == null) return;
_ = GContext.container.Resolve<IUIService>().SetImageSprite(icon, packManager.Icon);
}
}
}