using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
public class TianziBillboradWin : UIBase
|
{
|
[SerializeField] float modelSize;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ButtonEx btnRank;
|
[SerializeField] ButtonEx btnAds;
|
[SerializeField] ButtonEx btnChallenge1;
|
[SerializeField] ButtonEx btnChallenge2;
|
[SerializeField] ButtonEx btnSweep;
|
|
[SerializeField] ImageEx imgChallengeRed1;
|
[SerializeField] ImageEx imgChallengeRed2;
|
[SerializeField] ImageEx imgSweepRed;
|
|
[SerializeField] TextEx txtBossName;
|
[SerializeField] UIHeroController bossModel;
|
[SerializeField] UIEffectPlayer uiEffectPlayer;
|
[SerializeField] List<SkillWordCell> skillWords;
|
[SerializeField] List<ItemCell> possibleRewards;
|
[SerializeField] TextEx txtTodayChallengeCount;
|
[SerializeField] TextEx txtTodayAdsCount;
|
[SerializeField] TextEx txtHistoryHurt;
|
[SerializeField] TextEx txtTodayHurt;
|
[SerializeField] List<TianziBillboradBossHead> bossHeads;
|
[SerializeField] RectTransform layoutGroupRect;
|
TianziBillboradManager model { get { return TianziBillboradManager.Instance; } }
|
DungeonManager dungeonModel { get { return DungeonManager.Instance; } }
|
AdsManager adsModel { get { return AdsManager.Instance; } }
|
TimeMgr timeModel { get { return TimeMgr.Instance; } }
|
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
btnClose.SetListener(CloseWindow);
|
btnRank.SetListener(() => { UIManager.Instance.OpenWindow<TianziBillboradRankWin>(); });
|
btnAds.SetListener(() =>
|
{
|
if (!model.TryGetADAwardConfigByMapId(model.DataMapID, out ADAwardConfig adAwardConfig))
|
return;
|
adsModel.PlayAds(adAwardConfig.ADID);
|
});
|
btnChallenge1.SetListener(OnClickChallenge);
|
btnChallenge2.SetListener(OnClickChallenge);
|
btnSweep.SetListener(() =>
|
{
|
if (model.isSkipSweepTip)
|
{
|
int remainChallageCount = model.GetRemainChallageCount();
|
if (remainChallageCount <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("TianziBillborad02");
|
return;
|
}
|
model.SendBBeginFBWipeOut();
|
}
|
else
|
{
|
UIManager.Instance.OpenWindow<TianziBillboradSweepTipWin>();
|
}
|
});
|
}
|
|
void OnClickChallenge()
|
{
|
int remainChallageCount = model.GetRemainChallageCount();
|
if (remainChallageCount <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("TianziBillborad01");
|
return;
|
}
|
BattleManager.Instance.SendTurnFight((uint)model.DataMapID, model.todayLineID);
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
model.UpdateTianziKYInfoExent += OnUpdateTianziKYInfoExent;
|
dungeonModel.UpdateFBInfoListEvent += OnUpdateFBInfoListEvent;
|
adsModel.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
|
timeModel.OnDayEvent += OnDayEvent;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
model.UpdateTianziKYInfoExent -= OnUpdateTianziKYInfoExent;
|
dungeonModel.UpdateFBInfoListEvent -= OnUpdateFBInfoListEvent;
|
adsModel.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
|
timeModel.OnDayEvent -= OnDayEvent;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
}
|
|
private void OnUpdateTianziKYInfoExent()
|
{
|
Display();
|
}
|
|
private void OnSecondEvent()
|
{
|
if (bossHeads == null)
|
return;
|
|
foreach (var head in bossHeads)
|
{
|
if (head != null)
|
{
|
head.UpdateTimer();
|
}
|
}
|
}
|
|
private void OnUpdateFBInfoListEvent(int mapID)
|
{
|
if (mapID != model.DataMapID)
|
return;
|
if (!model.TryGetADAwardConfigByMapId(model.DataMapID, out ADAwardConfig adAwardConfig))
|
return;
|
Display();
|
}
|
|
private void OnAdsInfoListUpdateEvent(int id, int mapId)
|
{
|
if (mapId != model.DataMapID)
|
return;
|
if (!model.TryGetADAwardConfigByMapId(model.DataMapID, out ADAwardConfig adAwardConfig))
|
return;
|
Display();
|
}
|
|
private void OnDayEvent()
|
{
|
Display();
|
}
|
|
public void Display()
|
{
|
if (!model.TryGetBossConfig(model.DataMapID, model.todayLineID, out DungeonConfig dungeonConfig, out NPCLineupConfig npcLineupConfig, out NPCConfig npcConfig))
|
return;
|
if (!DungeonManager.Instance.TryGetFBInfoByMapID(model.DataMapID, out var fbInfo))
|
return;
|
if (!model.TryGetADAwardConfigByMapId(model.DataMapID, out ADAwardConfig adAwardConfig))
|
return;
|
|
DisplayFBInfo(npcConfig);
|
DisplayButton(adAwardConfig, fbInfo);
|
DisplaySkillWordsList(npcLineupConfig);
|
DisplayItemCellList(possibleRewards, model.GetPossibleRewards(npcConfig.NPCID));
|
DisplayBossHeadList(bossHeads, model.GetBossIDList(model.DataMapID));
|
}
|
|
private void DisplayButton(ADAwardConfig adAwardConfig, FBInfo fbInfo)
|
{
|
bool isTodayFirst = fbInfo.EnterCnt <= 0;
|
btnChallenge2.SetActive(isTodayFirst);
|
btnChallenge1.SetActive(!isTodayFirst);
|
btnSweep.SetActive(!isTodayFirst);
|
btnAds.SetActive(!isTodayFirst);
|
|
if (!DungeonOpenTimeConfig.HasKey(model.DataMapID))
|
return;
|
DungeonOpenTimeConfig dungeonOpenTimeConfig = DungeonOpenTimeConfig.Get(model.DataMapID);
|
int remainChallageCount = model.GetRemainChallageCount();
|
int maxCount = dungeonOpenTimeConfig.DayTimes;
|
txtTodayChallengeCount.text = UIHelper.AppendColor(remainChallageCount > 0 ? TextColType.Green : TextColType.Red, Language.Get("TianziBillborad03", remainChallageCount, maxCount));
|
|
imgChallengeRed1.SetActive(remainChallageCount > 0);
|
imgChallengeRed2.SetActive(remainChallageCount > 0);
|
imgSweepRed.SetActive(false);
|
|
int adsCnt = AdsManager.Instance.GetADCntByADID(adAwardConfig.ADID);
|
bool isShowAds = adsCnt < adAwardConfig.ADCntMax;
|
int remainAdsCount = adAwardConfig.ADCntMax - adsCnt;
|
btnAds.SetActive(!isTodayFirst && isShowAds);
|
txtTodayAdsCount.text = UIHelper.AppendColor(isShowAds ? TextColType.Green : TextColType.Red, Language.Get("BoneField09", remainAdsCount, adAwardConfig.ADCntMax)); ;
|
}
|
|
private void DisplayFBInfo(NPCConfig npcConfig)
|
{
|
txtBossName.text = npcConfig.NPCName;
|
uiEffectPlayer.Play();
|
bossModel.Create(npcConfig.SkinID, modelSize);
|
txtHistoryHurt.text = Language.Get("TianziBillborad01", UIHelper.ReplaceLargeNum(model.historyHurt));
|
txtTodayHurt.text = Language.Get("TianziBillborad02", UIHelper.ReplaceLargeNum(model.todayHurt));
|
}
|
|
public void DisplayItemCellList(List<ItemCell> itemCells, int[][] items)
|
{
|
if (itemCells.IsNullOrEmpty() || items.IsNullOrEmpty())
|
return;
|
for (int i = 0; i < itemCells.Count; i++)
|
{
|
if (i < items.Length)
|
{
|
int index = i;
|
itemCells[i].SetActive(true);
|
itemCells[i].Init(new ItemCellModel(items[i][0], true, items[i][1]));
|
itemCells[i].button.SetListener(() =>
|
{
|
ItemTipUtility.Show(items[index][0], true);
|
});
|
}
|
else
|
{
|
itemCells[i].SetActive(false);
|
}
|
}
|
}
|
|
public void DisplaySkillWordsList(NPCLineupConfig npcLineupConfig)
|
{
|
if (skillWords.IsNullOrEmpty())
|
return;
|
for (int i = 0; i < skillWords.Count; i++)
|
{
|
if (i < npcLineupConfig.SkillIDExList.Length)
|
{
|
skillWords[i].SetActive(true);
|
int skillID = npcLineupConfig.SkillIDExList[i];
|
skillWords[i].Init(skillID, () =>
|
{
|
SmallTipWin.showText = Language.Get("SmallTipFomat", SkillConfig.Get(skillID)?.SkillName, SkillConfig.Get(skillID)?.Description);
|
SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition);
|
SmallTipWin.isDownShow = true;
|
UIManager.Instance.OpenWindow<SmallTipWin>();
|
});
|
}
|
else
|
{
|
skillWords[i].SetActive(false);
|
}
|
}
|
}
|
|
public void DisplayBossHeadList(List<TianziBillboradBossHead> heads, List<int> bossIds)
|
{
|
if (heads.IsNullOrEmpty() || bossIds.IsNullOrEmpty())
|
return;
|
for (int i = 0; i < heads.Count; i++)
|
{
|
if (i < bossIds.Count)
|
{
|
heads[i].SetActive(true);
|
heads[i].Display(bossIds[i]);
|
}
|
else
|
{
|
heads[i].SetActive(false);
|
}
|
}
|
ExecuteNextFrame(() =>
|
{
|
if (this != null && gameObject.activeInHierarchy && !isClosing && layoutGroupRect != null)
|
{
|
LayoutRebuilder.ForceRebuildLayoutImmediate(layoutGroupRect);
|
}
|
});
|
|
}
|
|
}
|