备份CatanBuilding瘦身独立工程
This commit is contained in:
76
Assets/Scripts/UI/Turntable/TurntableAdButton.cs
Normal file
76
Assets/Scripts/UI/Turntable/TurntableAdButton.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using GameCore;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UniRx;
|
||||
using asap.core;
|
||||
public class TurntableAdButton : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Button _btnAd;
|
||||
[SerializeField] private TMP_Text _textTime, _textFree;
|
||||
private TurntableAdPopupPanel _adPanel;
|
||||
private IDisposable _timer;
|
||||
private PlayerShopData _playerShopData;
|
||||
private void Awake()
|
||||
{
|
||||
_playerShopData = GContext.container.Resolve<PlayerShopData>();
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
_btnAd.onClick.AddListener(async () => await OpenAddPanel());
|
||||
InitializeButton();
|
||||
}
|
||||
private void InitializeButton()
|
||||
{
|
||||
DateTime nextAdTime = _playerShopData.GetTurnTableNextAdTime();
|
||||
TimeSpan time = nextAdTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
if (_playerShopData.IsTurntableAdMaxOut())
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
if (time.TotalSeconds > 1)
|
||||
{
|
||||
SetTimer();
|
||||
_textTime.gameObject.SetActive(true);
|
||||
_textFree.gameObject.SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
_textTime.gameObject.SetActive(false);
|
||||
_textFree.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
}
|
||||
private async System.Threading.Tasks.Task OpenAddPanel()
|
||||
{
|
||||
_adPanel = (await UIManager.Instance.ShowUI(UITypes.TurntableAdPopupPanel))
|
||||
.GetComponent<TurntableAdPopupPanel>();
|
||||
_adPanel.OnClosePanel += OnAdPanelClose;
|
||||
}
|
||||
private void SetTimer()
|
||||
{
|
||||
_timer?.Dispose();
|
||||
DateTime nextAdTime = DateTime.Parse(_playerShopData.TurntableAdData.time);
|
||||
TimeSpan remainingTime = nextAdTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
_textTime.text = ConvertTools.ConvertTime2(remainingTime);
|
||||
_timer = Observable.Interval(TimeSpan.FromSeconds(1.0f))
|
||||
.Subscribe( _ =>{
|
||||
TimeSpan remainingTime = nextAdTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
_textTime.text = ConvertTools.ConvertTime2(remainingTime);
|
||||
if (remainingTime.TotalSeconds <= 1f)
|
||||
{
|
||||
_textTime.gameObject.SetActive(false);
|
||||
_textFree.gameObject.SetActive(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
private void OnAdPanelClose()
|
||||
{
|
||||
InitializeButton();
|
||||
if (_playerShopData.IsTurntableAdMaxOut())
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user