using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
namespace vnxbqy.UI
|
{
|
public class FairyEmblemWin : Window
|
{
|
[SerializeField] ImageEx imgEmblemNow;
|
[SerializeField] RichText txtDescriptive;
|
[SerializeField] TextEx txtTime;
|
[SerializeField] TextEx txtName;
|
[SerializeField] UIEffect uiEffect;
|
[SerializeField] ScrollerController scroller;
|
FairyEmblemModel model { get { return ModelCenter.Instance.GetModel<FairyEmblemModel>(); } }
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += OnRefreshCell;
|
model.ChooseEmblemIdChangeEvent += OnChooseEmblemIdChangeEvent;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
|
model.UpdateFamilyActionEvent += OnUpdateFamilyActionEvent;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
List<int> showList = model.GetShowList();
|
if (showList.Count > 0)
|
{
|
model.nowChooseEmblemId = showList[0];
|
Display();
|
}
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
model.ChooseEmblemIdChangeEvent -= OnChooseEmblemIdChangeEvent;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
|
model.UpdateFamilyActionEvent -= OnUpdateFamilyActionEvent;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
}
|
|
private void OnSecondEvent()
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
Display();
|
}
|
|
private void OnUpdateFamilyActionEvent(int arg1, int arg2)
|
{
|
if (arg2 == model.FamilyActionsType)
|
{
|
Refresh();
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
CreateScroller();
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as FairyEmblemCell;
|
_cell.Display(_cell.index);
|
}
|
|
private void OnChooseEmblemIdChangeEvent()
|
{
|
Refresh();
|
}
|
|
private void OnRefreshFairyInfo()
|
{
|
Refresh();
|
}
|
|
private void Refresh()
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
Display();
|
}
|
|
private void CreateScroller()
|
{
|
scroller.Refresh();
|
List<int> showList = model.GetShowList();
|
int rowCount = (int)Math.Ceiling((double)showList.Count / model.MaxItemRowCount);
|
for (int i = 0; i < rowCount; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
scroller.Restart();
|
}
|
|
private void Display()
|
{
|
int emblemId = model.nowChooseEmblemId;
|
if (!FamilyEmblemConfig.Has(emblemId))
|
return;
|
FamilyEmblemConfig config = FamilyEmblemConfig.Get(emblemId);
|
|
txtName.text = config.Name;
|
txtDescriptive.text = config.Descriptive;
|
|
txtTime.text = GetEndTimeString(emblemId);
|
|
model.ShowEmblem(model.nowChooseEmblemId, imgEmblemNow);
|
|
uiEffect.Stop();
|
if (model.TryGetEffectID(model.nowChooseEmblemId, out int effectID))
|
{
|
uiEffect.effect = effectID;
|
uiEffect.Play();
|
}
|
}
|
|
private string GetEndTimeString(int emblemId)
|
{
|
bool isUnLock = model.IsUnLock(emblemId);
|
if (isUnLock)
|
{
|
FairyEmblemUnlockMethodType type = model.GetFairyEmblemUnlockType(emblemId);
|
switch (type)
|
{
|
case FairyEmblemUnlockMethodType.LV:
|
return Language.Get("FairyEmblem03", Language.Get("PhantasmPavilion03"));
|
|
case FairyEmblemUnlockMethodType.Custom:
|
case FairyEmblemUnlockMethodType.Active:
|
bool isLimitTime = model.IsLimitTime(emblemId, out var familyAction);
|
if (!isLimitTime)
|
{
|
return Language.Get("FairyEmblem03", Language.Get("PhantasmPavilion03"));
|
}
|
else
|
{
|
uint endTimeS = familyAction.Value2;
|
int subTime = (int)(familyAction.Value2 - TimeUtility.AllSeconds);
|
return Language.Get("FairyEmblem03", TimeUtility.SecondsToDHMSCHS(subTime));
|
}
|
default:
|
return string.Empty;
|
}
|
}
|
else
|
{
|
if (!FamilyEmblemConfig.Has(emblemId))
|
return string.Empty;
|
int expireMinutes = FamilyEmblemConfig.Get(emblemId).ExpireMinutes;
|
if (expireMinutes <= 0)
|
{
|
return Language.Get("FairyEmblem03", Language.Get("PhantasmPavilion03"));
|
}
|
else
|
{
|
return Language.Get("FairyEmblem03", TimeUtility.SecondsToDHMSCHS(expireMinutes * 60));
|
}
|
}
|
}
|
}
|
}
|