136 lines
3.9 KiB
C#
136 lines
3.9 KiB
C#
using asap.core;
|
|
using DataCenter;
|
|
using GameCore;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UniRx;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
public class HomeBtnChains : EventButtonResource
|
|
{
|
|
// Start is called before the first frame update
|
|
// TODO: 未实现释放,上一个管理器也是如此,记得注意
|
|
private OfferChainsChestManager _offerChainsChestManager;
|
|
|
|
// UI
|
|
private Image _iconImage;
|
|
private GameObject _redpoint;
|
|
private Button _btnEnter;
|
|
private TMP_Text _textTime;
|
|
|
|
private Timer _timer;
|
|
private CompositeDisposable _disposables = new();
|
|
private void Awake()
|
|
{
|
|
_offerChainsChestManager = GContext.container.Resolve<OfferChainsChestManager>();
|
|
_iconImage = transform.Find("icon_task").GetComponent<Image>();
|
|
_redpoint = transform.Find("redpoint").gameObject;
|
|
_btnEnter = transform.GetComponent<Button>();
|
|
_textTime = transform.Find("text_time").GetComponent<TMP_Text>();
|
|
|
|
|
|
GContext.OnEvent<OfferChainsRefreshEvent>().Subscribe(OnRefreshByEvent).AddTo(_disposables);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
_offerChainsChestManager.CheckInit();
|
|
//
|
|
if (!_offerChainsChestManager.CheckOpen())
|
|
{
|
|
gameObject.SetActive(false);
|
|
return;
|
|
}
|
|
|
|
_redpoint.SetActive(_offerChainsChestManager.IsFirstOpen);
|
|
List<string> resList = new List<string>
|
|
{
|
|
_offerChainsChestManager.OfferChainsChestMain.Icon,
|
|
_offerChainsChestManager.OfferChainsChestMain.UIPanel
|
|
};
|
|
CheckResource(resList);
|
|
}
|
|
|
|
private void StopCountDown()
|
|
{
|
|
_timer?.Cancel();
|
|
_timer = null;
|
|
}
|
|
|
|
private void StartCountDown()
|
|
{
|
|
StopCountDown();
|
|
var timeSpan = _offerChainsChestManager.GetTimeRemain();
|
|
_textTime.text = ConvertTools.ConvertTime2(timeSpan.Days, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
|
|
var seconds = timeSpan.TotalSeconds;
|
|
_timer = this.AttachTimer((float)seconds, null,
|
|
elapsed =>
|
|
{
|
|
var now = _offerChainsChestManager.GetTimeRemain();
|
|
_textTime.text = ConvertTools.ConvertTime2(now.Days, now.Hours, now.Minutes, now.Seconds);
|
|
if (now.TotalMilliseconds < 0)
|
|
{
|
|
OnCountDownFinished();
|
|
_textTime.text = LocalizationMgr.GetText("UI_EventRankPopupPanel_13");
|
|
}
|
|
}, useRealTime: true);
|
|
}
|
|
|
|
private void OnCountDownFinished()
|
|
{
|
|
gameObject.SetActive(false);
|
|
StopCountDown();
|
|
_offerChainsChestManager.Settle();
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
_btnEnter.onClick.AddListener(OnBtnEnter);
|
|
StartCountDown();
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
_btnEnter.onClick.RemoveAllListeners();
|
|
StopCountDown();
|
|
_disposables?.Dispose();
|
|
_disposables = null;
|
|
}
|
|
//OnBtnEvent
|
|
private void OnBtnEnter()
|
|
{
|
|
Log("OnBtnEnter");
|
|
// 进入游戏场景
|
|
StartEnter();
|
|
}
|
|
//
|
|
private void StartEnter()
|
|
{
|
|
_timer?.Cancel();
|
|
_timer = null;
|
|
_offerChainsChestManager.OnEnterGameAct();
|
|
_redpoint.SetActive(_offerChainsChestManager.IsFirstOpen);
|
|
}
|
|
private void OnRefreshByEvent(OfferChainsRefreshEvent evt)
|
|
{
|
|
if (_offerChainsChestManager.IsFinished())
|
|
{
|
|
gameObject.SetActive(false);
|
|
}
|
|
}
|
|
private static void Log(object message)
|
|
{
|
|
Debug.Log($"<color=orange>HomeBtnChains => {message} </color>");
|
|
}
|
|
|
|
protected override void OnLoadEventResource()
|
|
{
|
|
if (_offerChainsChestManager.CheckOpen())
|
|
{
|
|
gameObject.SetActive(true);
|
|
var iconName = _offerChainsChestManager.OfferChainsChestMain.Icon;
|
|
GContext.container.Resolve<IUIService>().SetImageSprite(_iconImage, iconName);
|
|
}
|
|
}
|
|
}
|