备份CatanBuilding瘦身独立工程
This commit is contained in:
119
Assets/Scripts/UI/Home/HomeBtnAdvert.cs
Normal file
119
Assets/Scripts/UI/Home/HomeBtnAdvert.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using GameCore;
|
||||
using System;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
public class HomeBtnAdvert : MonoBehaviour, IUIRedPoint
|
||||
{
|
||||
public const string redKey = "Home.Advert";
|
||||
PlayerShopData shopData;
|
||||
Button btn_advert;
|
||||
TMP_Text text_time;
|
||||
GameObject redpoint;
|
||||
GameObject text_task;
|
||||
Timer timer;
|
||||
private void Awake()
|
||||
{
|
||||
shopData = GContext.container.Resolve<PlayerShopData>();
|
||||
btn_advert = GetComponent<Button>();
|
||||
redpoint = transform.Find("redpoint").gameObject;
|
||||
text_time = transform.Find("text_time").GetComponent<TMP_Text>();
|
||||
text_task = transform.Find("text_task").gameObject;
|
||||
gameObject.SetActive(shopData.IsOpenAdPack());
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
btn_advert.onClick.AddListener(OnClickAdvert);
|
||||
}
|
||||
void OnEnable()
|
||||
{
|
||||
RedPointManager.Instance.AddRedPoint(redKey, this);
|
||||
SetRedPointState(RedPointManager.Instance.GetRedPointState(redKey));
|
||||
}
|
||||
private async void OnClickAdvert()
|
||||
{
|
||||
GameObject go = await UIManager.Instance.ShowUILoad(UITypes.AdvertPanel);
|
||||
if (go != null)
|
||||
{
|
||||
GContext.Publish(new HideHomePanelEvent());
|
||||
}
|
||||
}
|
||||
public void SetRedPointState(bool state)
|
||||
{
|
||||
redpoint.SetActive(state);
|
||||
if (!state && shopData.IsOpenAdPack() && shopData.IsShowVIPAdTimer())
|
||||
{
|
||||
StartTimer();
|
||||
return;
|
||||
}
|
||||
if (timer != null)
|
||||
{
|
||||
timer.Cancel();
|
||||
timer = null;
|
||||
}
|
||||
SetState(true);
|
||||
}
|
||||
void StartTimer()
|
||||
{
|
||||
DateTime now = ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
var id = GContext.container.Resolve<PlayerData>().priceLevel.DailyGiftPackList[0];
|
||||
var packM = shopData.TbPackManagerGetOrDefault(id);
|
||||
var pack = GContext.container.Resolve<Tables>().TbPack.GetOrDefault(packM.PackID[0]);
|
||||
var daily = packM.TimeDefinition as Daily;
|
||||
var DailyGiftPackList = GContext.container.Resolve<PlayerData>().priceLevel.DailyGiftPackList;
|
||||
for (int i = 0; i < DailyGiftPackList.Count; i++)
|
||||
{
|
||||
id = DailyGiftPackList[i];
|
||||
ShopPackManager localPackM = shopData.TbPackManagerGetOrDefault(id);
|
||||
if (localPackM == null) break;
|
||||
daily = localPackM.TimeDefinition as Daily;
|
||||
if (TimeSpan.FromSeconds(daily.StartTime) <= now.TimeOfDay && TimeSpan.FromSeconds(daily.EndTime) > now.TimeOfDay)
|
||||
{
|
||||
packM = localPackM;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
if (shopData.GetShopPackBuyCount(packM.ID) < 2)
|
||||
{
|
||||
SetState(true);
|
||||
return;
|
||||
}
|
||||
SetState(false);
|
||||
TimeSpan ts = TimeSpan.FromSeconds(daily.EndTime) - now.TimeOfDay;
|
||||
text_time.text = ConvertTools.ConvertTime2(0, ts.Hours, ts.Minutes, ts.Seconds);
|
||||
if (timer == null)
|
||||
{
|
||||
timer = this.AttachTimer((float)ts.TotalSeconds, EndTimer,
|
||||
(elapsed) =>
|
||||
{
|
||||
now = ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
ts = TimeSpan.FromSeconds(daily.EndTime) - now.TimeOfDay;
|
||||
text_time.text = ConvertTools.ConvertTime2(0, ts.Hours, ts.Minutes, ts.Seconds);
|
||||
}, useRealTime: true);
|
||||
}
|
||||
}
|
||||
void EndTimer()
|
||||
{
|
||||
SetRedPointState(RedPointManager.Instance.GetRedPointState(redKey));
|
||||
}
|
||||
void SetState(bool value)
|
||||
{
|
||||
text_time.gameObject.SetActive(!value);
|
||||
text_task.SetActive(value);
|
||||
}
|
||||
private void OnDisable()
|
||||
{
|
||||
RedPointManager.Instance.RemoveRedPoint(redKey);
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (timer != null)
|
||||
{
|
||||
timer.Cancel();
|
||||
timer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user