using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
public class BoneFieldWin : UIBase
|
{
|
[SerializeField] TextEx txtDifficulty;
|
[SerializeField] TextEx txtBossName;
|
[SerializeField] TextEx txtTodaySweepCount;
|
[SerializeField] TextEx txtTodayAdsCount;
|
[SerializeField] TextEx txtFirstFree;
|
[SerializeField] TextEx txtFightPower;
|
[SerializeField] ImageEx imgMaxLineID;
|
[SerializeField] Transform transChallengeItemCells;
|
[SerializeField] List<ItemCell> challengeItemCells1;
|
[SerializeField] List<ItemCell> challengeItemCells2;
|
[SerializeField] List<ItemCell> sweepItemCells;
|
[SerializeField] List<SkillWordCell> skillWords;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] Transform transNoChallenge;
|
[SerializeField] Transform transHasChallenge;
|
[SerializeField] BoneFieldChallengeButton btnChallenge1;
|
[SerializeField] BoneFieldChallengeButton btnChallenge2;
|
[SerializeField] ButtonEx btnSweep;
|
[SerializeField] ImageEx imgSweepNo;
|
[SerializeField] ButtonEx btnAds;
|
[SerializeField] ImageEx imgSweepRed;
|
bool isHasNextLineID;
|
int adID;
|
|
int showSweepMaxCount;
|
int showrealRemainSweepCount;
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
btnClose.SetListener(OnClickClose);
|
btnSweep.SetListener(OnClickSweep);
|
btnAds.SetListener(OnClickAds);
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
DungeonManager.Instance.UpdateFBInfoChangeEvent += OnUpdateFBInfoChangeEvent;
|
AdsManager.Instance.OnAdsInfoListUpdateEvent += OnAdsInfoListUpdateEvent;
|
TimeMgr.Instance.OnDayEvent += OnDayEvent;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
DungeonManager.Instance.UpdateFBInfoChangeEvent -= OnUpdateFBInfoChangeEvent;
|
AdsManager.Instance.OnAdsInfoListUpdateEvent -= OnAdsInfoListUpdateEvent;
|
TimeMgr.Instance.OnDayEvent -= OnDayEvent;
|
}
|
|
private void OnUpdateFBInfoChangeEvent(int mapID, bool isADAddCntChange, bool isBuyAddCntChange, bool isItemAddCntChange)
|
{
|
int dataMapID = BoneFieldManager.Instance.DataMapID;
|
if (mapID != dataMapID)
|
return;
|
if (!ADAwardConfig.TryGetADIDByADMapID(BoneFieldManager.Instance.DataMapID, out adID) || !ADAwardConfig.HasKey(adID))
|
return;
|
ADAwardConfig aDAwardConfig = ADAwardConfig.Get(adID);
|
if (isADAddCntChange)
|
{
|
DisplayAdsButton(aDAwardConfig);
|
}
|
else
|
{
|
Display();
|
}
|
}
|
|
private void OnAdsInfoListUpdateEvent(int id, int mapId)
|
{
|
if (mapId != BoneFieldManager.Instance.DataMapID)
|
return;
|
if (!ADAwardConfig.TryGetADIDByADMapID(BoneFieldManager.Instance.DataMapID, out adID) || !ADAwardConfig.HasKey(adID))
|
return;
|
ADAwardConfig aDAwardConfig = ADAwardConfig.Get(adID);
|
DisplayAdsButton(aDAwardConfig);
|
}
|
|
|
private void OnDayEvent()
|
{
|
Display();
|
}
|
|
private void OnClickClose()
|
{
|
UIManager.Instance.CloseWindow<BoneFieldWin>();
|
}
|
|
private void OnClickSweep()
|
{
|
int dataMapID = BoneFieldManager.Instance.DataMapID;
|
if (!DungeonManager.Instance.TryGetFBInfoByMapID(dataMapID, out var fbInfo))
|
return;
|
if (!DungeonOpenTimeConfig.HasKey(dataMapID))
|
return;
|
DungeonOpenTimeConfig config = DungeonOpenTimeConfig.Get(dataMapID);
|
|
if (showrealRemainSweepCount == showSweepMaxCount)
|
{
|
BoneFieldManager.Instance.SendBBeginFBWipeOut(dataMapID, (int)fbInfo.PassLineID);
|
return;
|
}
|
|
int index = Mathf.Min(Mathf.Max(0, showSweepMaxCount - showrealRemainSweepCount - 1), config.PayMoneyValues.Length - 1);
|
int payMoneyValue = config.PayMoneyValues[index];
|
int payMoneyType = config.PayMoneyType;
|
ConfirmCancel.MoneyIconToggleConfirmByType(ToggleCheckType.BoneField, payMoneyValue, payMoneyType,
|
Language.Get("BoneField11", UIHelper.GetIconNameWithMoneyType(payMoneyType), payMoneyValue), () =>
|
{
|
if (!UIHelper.CheckMoneyCount(payMoneyType, payMoneyValue, 2))
|
return;
|
BoneFieldManager.Instance.SendBuyEnterCount(dataMapID);
|
BoneFieldManager.Instance.SendBBeginFBWipeOut(dataMapID, (int)fbInfo.PassLineID);
|
});
|
|
|
}
|
|
private void OnClickAds()
|
{
|
AdsManager.Instance.PlayAds(adID);
|
}
|
public void Display()
|
{
|
int dataMapID = BoneFieldManager.Instance.DataMapID;
|
if (!DungeonManager.Instance.TryGetFBInfoByMapID(dataMapID, out var fbInfo))
|
return;
|
|
int nowPassLineID = BoneFieldManager.Instance.GetNowPassLineID(fbInfo);
|
isHasNextLineID = BoneFieldManager.Instance.IsHasNextLineID(fbInfo);
|
DungeonConfig.TryGetDungeonID(dataMapID, nowPassLineID, out int dungeonID);
|
if (!DungeonConfig.HasKey(dungeonID))
|
return;
|
DungeonConfig dungeonConfig = DungeonConfig.Get(dungeonID);
|
int[] lineupIDList = dungeonConfig.LineupIDList;
|
if (lineupIDList.IsNullOrEmpty())
|
return;
|
int LineupID = lineupIDList[0];
|
if (!NPCLineupConfig.HasKey(LineupID))
|
return;
|
NPCLineupConfig lineupConfig = NPCLineupConfig.Get(LineupID);
|
int bossId = lineupConfig.BossID;
|
if (bossId == 0 || !NPCConfig.HasKey(bossId))
|
return;
|
NPCConfig nPCConfig = NPCConfig.Get(bossId);
|
if (!ADAwardConfig.TryGetADIDByADMapID(dataMapID, out adID) || !ADAwardConfig.HasKey(adID))
|
return;
|
ADAwardConfig aDAwardConfig = ADAwardConfig.Get(adID);
|
|
|
DisplayFBInfo(nPCConfig, dungeonConfig, nowPassLineID);
|
DisplayChallengeButton(dungeonConfig, fbInfo);
|
DisplaySweepButton(dungeonConfig);
|
DisplayAdsButton(aDAwardConfig);
|
DisplaySkillWordsList(lineupConfig);
|
DisplayItemCellList(challengeItemCells1, dungeonConfig.PassAwardList);
|
DisplayItemCellList(challengeItemCells2, dungeonConfig.PassAwardList);
|
|
if (fbInfo.PassLineID > 0)
|
{
|
DungeonConfig.TryGetDungeonID(dataMapID, (int)fbInfo.PassLineID, out int sweepDungeonID);
|
if (!DungeonConfig.HasKey(dungeonID))
|
return;
|
DungeonConfig sweepDungeonConfig = DungeonConfig.Get(sweepDungeonID);
|
DisplayItemCellList(sweepItemCells, sweepDungeonConfig.SweepAwardList);
|
}
|
|
}
|
|
public void DisplayFBInfo(NPCConfig nPCConfig, DungeonConfig dungeonConfig, int nowPassLineID)
|
{
|
imgMaxLineID.SetActive(!isHasNextLineID);
|
transChallengeItemCells.SetActive(isHasNextLineID);
|
txtBossName.text = nPCConfig.NPCName;
|
txtDifficulty.text = nowPassLineID.ToString();
|
txtFightPower.text = UIHelper.ReplaceLargeArtNum(dungeonConfig.FightPower);
|
}
|
|
public void DisplayChallengeButton(DungeonConfig dungeonConfig, FBInfo fBInfo)
|
{
|
transNoChallenge.SetActive(fBInfo.PassLineID <= 0);
|
transHasChallenge.SetActive(fBInfo.PassLineID > 0);
|
btnChallenge1.Display(dungeonConfig.LVLimitMin, isHasNextLineID, dungeonConfig.FightPower);
|
btnChallenge2.Display(dungeonConfig.LVLimitMin, isHasNextLineID, dungeonConfig.FightPower);
|
}
|
|
|
|
public void DisplaySweepButton(DungeonConfig dungeonConfig)
|
{
|
if (!BoneFieldManager.Instance.TryGetShowSweepCount(out showSweepMaxCount, out showrealRemainSweepCount))
|
return;
|
bool isSweepCountOk = showrealRemainSweepCount > 0;
|
imgSweepNo.SetActive(!isSweepCountOk);
|
btnSweep.interactable = isSweepCountOk;
|
long myFightPower = PlayerDatas.Instance.baseData.FightPower;
|
imgSweepRed.SetActive(isSweepCountOk && myFightPower < dungeonConfig.FightPower);
|
txtFirstFree.SetActive(showSweepMaxCount == showrealRemainSweepCount);
|
txtTodaySweepCount.SetActive(showSweepMaxCount > showrealRemainSweepCount);
|
txtTodaySweepCount.text = UIHelper.AppendColor(isSweepCountOk ? TextColType.Green : TextColType.Red, Language.Get("BoneField08", showrealRemainSweepCount, showSweepMaxCount));
|
}
|
|
public void DisplayAdsButton(ADAwardConfig aDAwardConfig)
|
{
|
int adsCnt = AdsManager.Instance.GetADCntByADID(adID);
|
bool isShowAds = adsCnt < aDAwardConfig.ADCntMax;
|
int remainAdsCount = aDAwardConfig.ADCntMax - adsCnt;
|
btnAds.SetActive(isShowAds);
|
txtTodayAdsCount.text = UIHelper.AppendColor(isShowAds ? TextColType.Green : TextColType.Red, Language.Get("BoneField09", remainAdsCount, aDAwardConfig.ADCntMax)); ;
|
}
|
|
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 lineUPConfig)
|
{
|
if (skillWords.IsNullOrEmpty())
|
return;
|
for (int i = 0; i < skillWords.Count; i++)
|
{
|
if (i < lineUPConfig.SkillIDExList.Length)
|
{
|
skillWords[i].SetActive(true);
|
int skillID = lineUPConfig.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);
|
}
|
}
|
}
|
|
|
}
|