using vnxbqy.UI;
|
using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
class CrossServerMHBossWin : ILWindow
|
{
|
CyclicScroll m_Bosses;
|
BossIntroduceBehaviour m_BossIntroduce;
|
|
Button m_Goto;
|
Button m_KillRecord;
|
Transform m_SurpassLevel;
|
RectTransform m_NoDamageTip;
|
ToggleButton m_Subscribe;
|
TextEx m_BossKillWearyValue;
|
Button m_AddTimes;
|
Text FightPower;
|
|
CrossServerMHBossModel model = CrossServerMHBossModel.Instance;
|
FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
|
CrossServerBossModel crossBossModel { get { return ModelCenter.Instance.GetModelEx<CrossServerBossModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
m_Bosses = proxy.GetWidgtEx<CyclicScroll>("Container_Boss");
|
m_BossIntroduce = proxy.GetWidgtEx<BossIntroduceBehaviour>("Container_BossIntroduce");
|
m_Goto = proxy.GetWidgtEx<Button>("Btn_Goto");
|
m_KillRecord = proxy.GetWidgtEx<Button>("Btn_Record");
|
m_SurpassLevel = proxy.GetWidgtEx<Transform>("Txt_LevelLimit");
|
m_NoDamageTip = proxy.GetWidgtEx<RectTransform>("Txt_NoDamage");
|
m_Subscribe = proxy.GetWidgtEx<ToggleButton>("Tog_Attention");
|
m_BossKillWearyValue = proxy.GetWidgtEx<TextEx>("Txt_Count");
|
m_AddTimes = proxy.GetWidgtEx<Button>("Btn_BuyTimes");
|
FightPower = proxy.GetWidgtEx<Text>("fightpower");
|
}
|
|
protected override void AddListeners()
|
{
|
m_Goto.AddListener(GotoKillBoss);
|
m_KillRecord.AddListener(ShowKillRecords);
|
m_Subscribe.AddListener(SwitchSubscribeBoss);
|
m_AddTimes.AddListener(AddTimes);
|
}
|
|
private void AddTimes()
|
{
|
var wearyValueLimit = GeneralDefine.bossWearyValues[3];
|
|
if (wearyValueLimit + model.buyCnt - model.wearyValue >= wearyValueLimit)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("DemonJar18"));
|
return;
|
}
|
if (model.buyCnt >= model.AddBossTimesCosts.Count)
|
{
|
|
ServerTipDetails.DisplayNormalTip(Language.Get("FairyLand_Func15"));
|
return;
|
}
|
|
WindowCenter.Instance.OpenIL<CrossMHBuyTimesWin>();
|
}
|
|
|
void ShowBossTimes()
|
{
|
DisplayTimes(model.selectedBoss);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.bossWearyValueChangeEvent += ShowBossTimes;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
model.bossSelectedEvent += OnBossSelected;
|
findPreciousModel.bossSubscribeChangeEvent += OnSubscribeBoss;
|
}
|
|
protected override void OnPreClose()
|
{
|
model.bossSelectedEvent -= OnBossSelected;
|
findPreciousModel.bossSubscribeChangeEvent -= OnSubscribeBoss;
|
model.bossWearyValueChangeEvent -= ShowBossTimes;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
ShowBosses();
|
}
|
#endregion
|
|
private void ShowBosses()
|
{
|
var bosses = model.GetNpcIds();
|
crossBossModel.selectedBoss = model.GetRecommendNpc();
|
m_Bosses.Init(bosses);
|
m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
|
|
DisplayItemDropTip(model.selectedBoss);
|
DisplayBossBaseInfo(model.selectedBoss);
|
DisplayTimes(model.selectedBoss);
|
}
|
|
private void ShowKillRecords()
|
{
|
findPreciousModel.ViewKillRecordsBoss = model.selectedBoss;
|
WindowCenter.Instance.Open<KillRecordsWin>();
|
}
|
|
private void SwitchSubscribeBoss()
|
{
|
if (findPreciousModel.IsBossSubscribed(model.selectedBoss))
|
{
|
findPreciousModel.RequestDeSubscribeBoss(model.selectedBoss);
|
}
|
else
|
{
|
findPreciousModel.RequestSubscribeBoss(model.selectedBoss, false);
|
}
|
}
|
|
private void GotoKillBoss()
|
{
|
var error = 0;
|
if (model.CanEnter(out error))
|
{
|
if (PlayerDatas.Instance.baseData.MapID == CrossServerMHBossModel.DATA_MAPID)
|
{
|
WindowJumpMgr.Instance.ClearJumpData();
|
WindowCenter.Instance.CloseEx<CrossServerWin>();
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
|
MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
|
}
|
else
|
{
|
model.RequestEnter();
|
}
|
}
|
else
|
{
|
model.ProcessEnterError(error);
|
}
|
}
|
|
private void OnSubscribeBoss(int _bossId)
|
{
|
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
|
}
|
|
private void OnBossSelected(int _bossId)
|
{
|
DisplayItemDropTip(_bossId);
|
DisplayBossBaseInfo(_bossId);
|
DisplayTimes(_bossId);
|
}
|
|
private void DisplayBossBaseInfo(int _bossId)
|
{
|
m_BossIntroduce.Display(_bossId, true);
|
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
|
|
DisplayGotoKillButton(model.selectedBoss);
|
DisplaySubscribe(model.selectedBoss);
|
}
|
|
private void DisplayItemDropTip(int bossId)
|
{
|
|
if (!findPreciousModel.IsBossUnlock(bossId))
|
{
|
m_NoDamageTip.SetActiveIL(true);
|
m_SurpassLevel.SetActiveIL(false);
|
}
|
else
|
{
|
m_NoDamageTip.SetActiveIL(false);
|
var dropConfig = NPCDropItemConfig.Get(bossId);
|
var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
|
m_SurpassLevel.SetActiveIL(noDrop);
|
}
|
FightPower.SetActiveIL(!model.IsBossUnLocked(bossId));
|
FightPower.text = UIHelper.ReplaceLargeNum(model.GetBossFightPower(bossId));
|
}
|
|
private void DisplayTimes(int bossId)
|
{
|
|
var wearyValueLimit = GeneralDefine.bossWearyValues[3];
|
m_BossKillWearyValue.text = StringUtility.Contact(wearyValueLimit + model.buyCnt - model.wearyValue, "/", wearyValueLimit);
|
m_BossKillWearyValue.colorType = model.wearyValue >= wearyValueLimit + model.buyCnt ? TextColType.Red : TextColType.DarkGreen;
|
|
}
|
|
private void DisplayGotoKillButton(int bossId)
|
{
|
}
|
|
private void DisplaySubscribe(int bossId)
|
{
|
var isUnLocked = findPreciousModel.IsBossUnlock(bossId);
|
m_Subscribe.SetActiveIL(isUnLocked);
|
if (isUnLocked)
|
{
|
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
|
}
|
}
|
}
|