using System.Collections.Generic;
|
using Cysharp.Threading.Tasks;
|
using UnityEngine;
|
|
public class TimeRushWin : UIBase
|
{
|
[SerializeField] ScrollerController tabScroller;
|
[SerializeField] ScrollerController taskScroller;
|
[SerializeField] ScrollerController giftScroller;
|
[SerializeField] ImageEx bgImage;
|
[SerializeField] ImageEx infoBgImage;
|
[SerializeField] ImageEx infoImage;
|
[SerializeField] ImageEx titleBgImage;
|
[SerializeField] GradientText titleText;
|
[SerializeField] ImageEx giftBgImage;
|
[SerializeField] ImageEx giftIconImage;
|
[SerializeField] TextEx timeText;
|
[SerializeField] TextEx roundText;
|
[SerializeField] ButtonEx goButton;
|
[SerializeField] TextEx goText;
|
[SerializeField] OwnMoneyCell ownMoneyCell;
|
[SerializeField] ButtonEx closeButton;
|
TimeRushManager manager { get { return TimeRushManager.Instance; } }
|
StoreModel storeModel { get { return StoreModel.Instance; } }
|
int tabId;
|
protected override void InitComponent()
|
{
|
closeButton.SetListener(CloseWindow);
|
}
|
|
protected override void OnPreOpen()
|
{
|
tabId = functionOrder;
|
manager.OnNowTabIdChangeEvent += OnNowTabIdChangeEvent;
|
tabScroller.OnRefreshCell += OnRefreshTabCell;
|
taskScroller.OnRefreshCell += OnRefreshTaskCell;
|
giftScroller.OnRefreshCell += OnRefreshGiftCell;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
|
storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
|
manager.OnUpdatePlayerInfoEvent += OnUpdatePlayerInfoEvent;
|
|
var list = manager.GetTabIDList();
|
if (list.IsNullOrEmpty())
|
{
|
DelayCloseWindow().Forget();
|
return;
|
}
|
manager.nowTabId = list.Contains(tabId) ? tabId : list[0];
|
|
}
|
|
protected override void OnPreClose()
|
{
|
manager.OnNowTabIdChangeEvent -= OnNowTabIdChangeEvent;
|
tabScroller.OnRefreshCell -= OnRefreshTabCell;
|
taskScroller.OnRefreshCell -= OnRefreshTaskCell;
|
giftScroller.OnRefreshCell -= OnRefreshGiftCell;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent;
|
OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent;
|
storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
|
manager.OnUpdatePlayerInfoEvent -= OnUpdatePlayerInfoEvent;
|
}
|
|
private void OnUpdatePlayerInfoEvent()
|
{
|
RefreshAll();
|
}
|
|
private void RefreshBuyShopLimitEvent()
|
{
|
RefreshAll();
|
}
|
|
private void OperationTimeUpdateEvent(OperationType operation)
|
{
|
if (operation == OperationType.default47)
|
{
|
var list = manager.GetTabIDList();
|
if (list.IsNullOrEmpty())
|
{
|
DelayCloseWindow().Forget();
|
return;
|
}
|
manager.nowTabId = list[0];
|
CreateAll();
|
}
|
}
|
|
private void OnRechargeCountEvent(int obj)
|
{
|
RefreshAll();
|
}
|
|
private void OnSecondEvent()
|
{
|
GetActTime();
|
}
|
|
private void OnRefreshTabCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<TimeRushTabCell>();
|
_cell?.Display(cell.index);
|
}
|
|
private void OnRefreshTaskCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<TimeRushTaskCell>();
|
_cell?.Display(cell.index, cell, taskList);
|
}
|
|
private void OnRefreshGiftCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<TimeRushGiftCell>();
|
_cell?.Display(cell.index, giftItems);
|
manager.PlayAnimationSync?.Invoke();
|
}
|
|
private void OnNowTabIdChangeEvent()
|
{
|
CreateAll();
|
}
|
void RefreshAll()
|
{
|
int id = manager.nowTabId;
|
if (!ActLunhuidianTypeConfig.TryGetConfig(id, out var config))
|
return;
|
int roundType = config.RoundType;
|
int tabType = config.TabType;
|
Display(id);
|
tabScroller.m_Scorller.RefreshActiveCellViews();
|
|
taskScroller.SetActive(tabType == 1);
|
giftScroller.SetActive(tabType == 2);
|
|
if (tabType == 1)
|
{
|
CreateTaskScroller(roundType, tabType);
|
return;
|
}
|
|
if (tabType == 2)
|
{
|
giftScroller.m_Scorller.RefreshActiveCellViews();
|
return;
|
}
|
|
}
|
|
void CreateAll()
|
{
|
int id = manager.nowTabId;
|
if (!ActLunhuidianTypeConfig.TryGetConfig(id, out var config))
|
return;
|
if (!manager.TryGetOperationInfo(out var act))
|
return;
|
int roundType = config.RoundType;
|
int tabType = config.TabType;
|
if (!act.TryGetRound(roundType, out var round))
|
return;
|
|
|
Display(id);
|
CreateTabScroller();
|
taskScroller.SetActive(tabType == 1);
|
giftScroller.SetActive(tabType == 2);
|
|
if (tabType == 1)
|
{
|
CreateTaskScroller(roundType, tabType);
|
return;
|
}
|
|
if (tabType == 2)
|
{
|
CreateGiftScroller(roundType);
|
return;
|
}
|
|
}
|
|
private void Display(int id)
|
{
|
if (!ActLunhuidianTypeConfig.TryGetConfig(id, out var config))
|
return;
|
if (!manager.TryGetOperationInfo(out var act))
|
return;
|
int roundType = config.RoundType;
|
int tabType = config.TabType;
|
if (!act.TryGetRound(roundType, out var round))
|
return;
|
if (!manager.TryGetPlayerInfo(roundType, out var playerInfo))
|
return;
|
|
GetActTime();
|
bgImage.SetSprite(config.bgImage);
|
|
infoBgImage.SetSprite(config.InfoBgImage);
|
|
infoImage.SetSprite(config.InfoImage);
|
infoImage.SetNativeSize();
|
|
titleBgImage.SetSprite(config.TitleBgImage);
|
titleBgImage.SetNativeSize();
|
|
titleText.text = Language.Get($"TimeRushTitle{roundType}");
|
|
roundText.SetActive(tabType == 1);
|
roundText.text = tabType == 1 ? Language.Get("TimeRush06", playerInfo.CurRound, round.RoundMax) : string.Empty;
|
|
ownMoneyCell.SetActive(tabType == 2);
|
ownMoneyCell.moneyType = manager.TryGetMoneyTypeByRoundType(roundType, out int monetyType) ? monetyType : 99;
|
ownMoneyCell.Display(true);
|
giftBgImage.SetActive(tabType == 2);
|
|
giftIconImage.SetActive(tabType == 2);
|
giftIconImage.SetSprite($"TimeRushGiftIcon{roundType}");
|
|
DisplayGoButton(config);
|
}
|
|
|
void DisplayGoButton(ActLunhuidianTypeConfig config)
|
{
|
int roundType = config.RoundType;
|
int tabType = config.TabType;
|
bool hasWindowID = manager.TryGetWindowIDByRoundType(roundType, out int windowID);
|
goButton.SetActive(tabType == 1 && hasWindowID);
|
if (tabType == 1 && hasWindowID)
|
{
|
goText.text = Language.Get($"TimeRushGoTitle{roundType}");
|
goButton.SetListener(() =>
|
{
|
if (manager.TryGetFuncIdByRoundType(roundType, out int funcId) && !FuncOpen.Instance.IsFuncOpen(funcId, true))
|
return;
|
UIJumpManager.Instance.OpenWindow(windowID);
|
});
|
}
|
}
|
|
private void GetActTime()
|
{
|
if (!manager.TryGetOperationInfo(out var act))
|
{
|
timeText.text = Language.Get("OSActivity6");
|
return;
|
}
|
timeText.text = Language.Get("TimeRush05", TimeUtility.SecondsToShortDHMS(act.GetResetSurplusTime()));
|
}
|
|
private void CreateTabScroller()
|
{
|
tabScroller.Refresh();
|
var list = manager.GetTabIDList();
|
if (!list.IsNullOrEmpty())
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
tabScroller.AddCell(ScrollerDataType.Header, list[i]);
|
}
|
}
|
tabScroller.Restart();
|
}
|
|
|
List<HAA88_tagMCActLunhuidianInfo.tagMCActLunhuidianAward> taskList;
|
private void CreateTaskScroller(int roundType, int tabType)
|
{
|
taskList = manager.GetTaskList(roundType, true);
|
taskScroller.Refresh();
|
if (!taskList.IsNullOrEmpty())
|
{
|
for (int i = 0; i < taskList.Count; i++)
|
{
|
CellInfo cellInfo = new CellInfo();
|
cellInfo.infoInt1 = roundType;
|
cellInfo.infoInt2 = tabType;
|
taskScroller.AddCell(ScrollerDataType.Header, i, cellInfo);
|
}
|
}
|
taskScroller.Restart();
|
}
|
|
List<TimeRushGiftItem> giftItems;
|
private void CreateGiftScroller(int roundType)
|
{
|
giftItems = manager.GetGiftItemList(roundType, true);
|
giftScroller.Refresh();
|
if (!giftItems.IsNullOrEmpty())
|
{
|
for (int i = 0; i < giftItems.Count; i++)
|
{
|
giftScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
giftScroller.Restart();
|
}
|
|
}
|