using vnxbqy.UI;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
//挑战妖王(个人BOSS)
|
public class ChallengeDemonKingWin : Window
|
{
|
[SerializeField] ButtonEx btnChallenge;
|
[SerializeField] ButtonEx btnSweep;
|
[SerializeField] ButtonEx btnInfo;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ImageEx imgShow;
|
[SerializeField] TextEx txtFightPower;
|
[SerializeField] TextEx txtSweep;
|
[SerializeField] TextEx txtSweepCount;
|
[SerializeField] TextEx txtSweepButton;
|
[SerializeField] TextEx txtMoney;
|
[SerializeField] ImageEx ImgMoney;
|
[SerializeField] RawImage rawBoss;
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] List<ItemCell> itemCellList;
|
ChallengeDemonKingModel challengeDemonKingModel { get { return ModelCenter.Instance.GetModel<ChallengeDemonKingModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
|
AttributeDetailModel attributeDetailModel { get { return ModelCenter.Instance.GetModel<AttributeDetailModel>(); } }
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
btnClose.SetListener(() =>
|
{
|
WindowCenter.Instance.Close<ChallengeDemonKingWin>();
|
});
|
|
btnInfo.SetListener(() =>
|
{
|
attributeDetailModel.SetAttributeInfo(AttributeDetailType.Npc, challengeDemonKingModel.showNpcID);
|
WindowCenter.Instance.Open<AttributeDetailWin>();
|
//WindowCenter.Instance.Open<ChallengeDemonKingInfoWin>();
|
});
|
|
btnSweep.SetListener(() =>
|
{
|
if (challengeDemonKingModel.IsFreeTime(challengeDemonKingModel.showNpcID))
|
{
|
var config = PersonalBossConfig.Get(challengeDemonKingModel.showNpcID);
|
dungeonModel.RequestSweep(new Dungeon(ChallengeDemonKingModel.PERSONALBOSS_MAPID, config.lineId));
|
}
|
else
|
{
|
if (dungeonModel.GetTotalTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID) - dungeonModel.GetEnterTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID) < 1)
|
{
|
SysNotifyMgr.Instance.ShowTip("ChallengeDemonKing01");
|
return;
|
}
|
BuyTimes();
|
}
|
|
|
});
|
|
btnChallenge.SetListener(() =>
|
{
|
TurnFightModel.Instance.StartTurnFight(31240, PersonalBossConfig.Get(challengeDemonKingModel.showNpcID).lineId, 0, challengeDemonKingModel.showNpcID);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += OnRefreshCell;
|
challengeDemonKingModel.UpdateShow += OnUpdateShow;
|
DTC0320_tagFBEnd.UpdateFBEndEvent += UpdateFBEnd;
|
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
|
vipModel.OnVipTimeEvent += OnVipTimeEvent;
|
dungeonModel.updateDungeonBuyCnt += UpdateDungeonBuyCnt;
|
dungeonModel.dungeonRecordChangeEvent += OndungeonRecordChangeEvent;
|
Display();
|
}
|
|
void UpdateDungeonBuyCnt()
|
{
|
Display();
|
}
|
|
void OnVipTimeEvent()
|
{
|
Display();
|
}
|
|
void PlayerDataRefreshInfoEvent(PlayerDataType type)
|
{
|
if (type == PlayerDataType.VIPLv)
|
{
|
Display();
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
scroller.Refresh();
|
Dictionary<int, int> realmNpcIDDict = challengeDemonKingModel.realmNpcIDDict;
|
List<int> keyList = realmNpcIDDict.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
int realm = keyList[i];
|
scroller.AddCell(ScrollerDataType.Header, realm);
|
}
|
scroller.Restart();
|
scroller.JumpIndex(Mathf.Max(challengeDemonKingModel.JumpIndex() - 2, 0));
|
challengeDemonKingModel.showNpcID = int.Parse(challengeDemonKingModel.npcIDList[challengeDemonKingModel.JumpIndex()]);
|
}
|
|
void OnUpdateShow()
|
{
|
Display();
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void UpdateFBEnd()
|
{
|
Display();
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void Display()
|
{
|
int npcID = challengeDemonKingModel.showNpcID;
|
//0 已通关-不可扫荡 1 已通关-可扫荡-免费 2 未通关-可挑战(待首通) 3 未通关-不可挑战(境界够前一关没打) 4 未通关-不可解锁(境界不够) 5 已通关-可扫荡-可付费 6 已通关-不可扫荡(置灰)
|
int state = challengeDemonKingModel.GetCellState(npcID);
|
var npcConfig = NPCConfig.Get(npcID);
|
int[][] firstAwardArr = PersonalBossConfig.Get(npcID).FirstAwardItemList;
|
int[][] sweepAwardArr = PersonalBossConfig.Get(npcID).SweepAwardItemList;
|
imgShow.SetActive(false); //和精怪相关 现在还没有
|
btnChallenge.SetActive(state == 2);
|
btnSweep.SetActive(state == 1 || state == 5 || state == 6);
|
txtSweepCount.SetActive(state == 1 || state == 5 || state == 6);
|
txtSweep.SetActive(state == 1 || state == 5 || state == 6);
|
txtSweepButton.SetActive(state == 1 || state == 6);
|
txtMoney.SetActive(state == 5);
|
ImgMoney.SetActive(state == 5);
|
btnSweep.SetColorful(null, state != 6);
|
if (state == 5)
|
{
|
DungeonRecord dungeonRecord;
|
string costFormula = string.Empty;
|
dungeonModel.TryGetRecord(ChallengeDemonKingModel.PERSONALBOSS_MAPID, out dungeonRecord);
|
if (dungeonModel.TryGetBuyCountCost(ChallengeDemonKingModel.PERSONALBOSS_MAPID, out costFormula))
|
{
|
Equation.Instance.Clear();
|
Equation.Instance.AddKeyValue("hasBuyCnt", dungeonRecord.buyTimes);
|
int _cost = Equation.Instance.Eval<int>(costFormula);
|
txtMoney.text = _cost.ToString();
|
}
|
}
|
ImgMoney.SetSprite(StringUtility.Contact("Money_Type_", 1));
|
|
UI3DModelExhibition.Instance.ShowNPC(npcID, npcConfig.UIModeLOffset, npcConfig.UIModelRotation + new Vector3(0, -45, 0), rawBoss);
|
txtFightPower.text = NPCExConfig.Get(npcID).SuppressFightPower.ToString();
|
txtSweepCount.text = StringUtility.Contact(dungeonModel.GetTotalTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID) - dungeonModel.GetEnterTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID), "/", dungeonModel.GetTotalTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID));
|
txtSweepCount.color = dungeonModel.GetTotalTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID) <= dungeonModel.GetEnterTimes(ChallengeDemonKingModel.PERSONALBOSS_MAPID) ? UIHelper.GetUIColor(TextColType.Red) : UIHelper.GetUIColor(TextColType.DarkGreen);
|
for (int i = 0; i < itemCellList.Count; i++)
|
{
|
ItemCell itemCell = itemCellList[i];
|
//通关了就展示扫荡奖励
|
if (state == 0 || state == 1)
|
{
|
if (i <= sweepAwardArr.Length - 1)
|
{
|
itemCell.SetActive(true);
|
int itemID = sweepAwardArr[i][0];
|
int count = sweepAwardArr[i][1];
|
itemCell.Init(new ItemCellModel(itemID, false, (ulong)count));
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(itemID);
|
});
|
}
|
else
|
{
|
itemCell.SetActive(false);
|
}
|
}
|
//未通关就展示首通奖励
|
else
|
{
|
if (i <= firstAwardArr.Length - 1)
|
{
|
itemCell.SetActive(true);
|
int itemID = firstAwardArr[i][0];
|
int count = firstAwardArr[i][1];
|
itemCell.Init(new ItemCellModel(itemID, false, (ulong)count));
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(itemID);
|
});
|
}
|
else
|
{
|
itemCell.SetActive(false);
|
}
|
|
}
|
}
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
challengeDemonKingModel.UpdateShow -= OnUpdateShow;
|
DTC0320_tagFBEnd.UpdateFBEndEvent -= UpdateFBEnd;
|
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent;
|
vipModel.OnVipTimeEvent -= OnVipTimeEvent;
|
dungeonModel.updateDungeonBuyCnt -= UpdateDungeonBuyCnt;
|
dungeonModel.dungeonRecordChangeEvent -= OndungeonRecordChangeEvent;
|
}
|
private void OndungeonRecordChangeEvent(int dungeonId)
|
{
|
if (dungeonId != ChallengeDemonKingModel.PERSONALBOSS_MAPID)
|
return;
|
Display();
|
}
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as ChallengeDemonKingCell;
|
_cell.Display(_cell.index);
|
}
|
private void BuyTimes()
|
{
|
DungeonRecord dungeonRecord;
|
string costFormula = string.Empty;
|
dungeonModel.TryGetRecord(ChallengeDemonKingModel.PERSONALBOSS_MAPID, out dungeonRecord);
|
Equation.Instance.Clear();
|
Equation.Instance.AddKeyValue("hasBuyCnt", dungeonRecord.buyTimes);
|
dungeonModel.TryGetBuyCountCost(ChallengeDemonKingModel.PERSONALBOSS_MAPID, out costFormula);
|
int _cost = Equation.Instance.Eval<int>(costFormula);
|
if (PlayerDatas.Instance.baseData.diamond >= _cost)
|
{
|
dungeonModel.RequestBuyEnterCount(ChallengeDemonKingModel.PERSONALBOSS_MAPID);
|
var config = PersonalBossConfig.Get(challengeDemonKingModel.showNpcID);
|
dungeonModel.RequestSweep(new Dungeon(ChallengeDemonKingModel.PERSONALBOSS_MAPID, config.lineId));
|
}
|
else
|
{
|
if (VersionConfig.Get().isBanShu)
|
{
|
SysNotifyMgr.Instance.ShowTip("GoldErr");
|
return;
|
}
|
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
}
|
}
|