//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, October 31, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class PersonalBossWin : Window
|
{
|
[SerializeField] CyclicScroll m_Bosses;
|
[SerializeField] BossIntroduceBehaviour m_BossIntroduce;
|
[SerializeField] Text m_Times;
|
[SerializeField] Button m_Goto;
|
[SerializeField] RectTransform m_NoDamageTip;
|
[SerializeField] Text m_ButtonName;
|
[SerializeField] Button m_BuyTimes;
|
[SerializeField] Text m_WipeText;
|
|
PersonalBossModel model { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } }
|
FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
|
int enterTimes = 0;
|
int totalTimes = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Goto.AddListener(GotoKillBoss);
|
m_BuyTimes.AddListener(BuyTimes);
|
}
|
private void BuyTimes()
|
{
|
if ((totalTimes - enterTimes) >= model.maxBossTimes)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("DemonJar18"));
|
}
|
else
|
{
|
dungeonModel.currentDungeon = new Dungeon(PersonalBossModel.PERSONALBOSS_MAPID, 0);
|
WindowCenter.Instance.Open<DungeonBuyTimesWin>();
|
}
|
|
}
|
protected override void OnPreOpen()
|
{
|
dungeonModel.updateDungeonBuyCnt += OnTimesOk;
|
DTC0320_tagFBEnd.UpdateFBEndEvent += UpdateFBEnd;
|
|
OnTimesOk();
|
}
|
|
private void OnTimesOk()
|
{
|
totalTimes = dungeonModel.GetTotalTimes(PersonalBossModel.PERSONALBOSS_MAPID);
|
enterTimes = dungeonModel.GetEnterTimes(PersonalBossModel.PERSONALBOSS_MAPID);
|
m_Times.text = StringUtility.Contact(totalTimes - enterTimes, "/", model.maxBossTimes);
|
m_Times.color = totalTimes - enterTimes <= 0 ? UIHelper.GetUIColor(TextColType.Red) : UIHelper.GetUIColor(TextColType.DarkGreen);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
model.bossSelectedEvent += OnBossSelected;
|
if (model.CanFBWipeOut(model.selectedBoss))
|
{
|
m_ButtonName.text = Language.Get("RuneTower22");
|
}
|
else
|
{
|
m_ButtonName.text = Language.Get("RealmPractice108");
|
}
|
m_WipeText.text = Language.Get("PersonalBossWipeOut", model.WipeOutLV);
|
}
|
|
protected override void OnPreClose()
|
{
|
model.bossSelectedEvent -= OnBossSelected;
|
dungeonModel.updateDungeonBuyCnt -= OnTimesOk;
|
DTC0320_tagFBEnd.UpdateFBEndEvent -= UpdateFBEnd;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
ShowBosses();
|
}
|
#endregion
|
|
private void UpdateFBEnd()
|
{
|
OnTimesOk();
|
model.UpdateRedpoint();
|
}
|
|
|
private void ShowBosses()
|
{
|
var bosses = new List<int>();
|
bosses.AddRange(model.GetPersonalBosses());
|
|
model.selectedBoss = model.GetRecommendBoss();
|
|
m_BossIntroduce.Display(model.selectedBoss, true);
|
m_Bosses.Init(bosses);
|
m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
|
|
DisplayGotoKillButton(model.selectedBoss);
|
DisplayTip(model.selectedBoss);
|
}
|
|
private void GotoKillBoss()
|
{
|
var error = 0;
|
if (TestEnterDungeon(out error))
|
{
|
if (model.CanFBWipeOut(model.selectedBoss))
|
{
|
var config = PersonalBossConfig.Get(model.selectedBoss);
|
dungeonModel.RequestSweep(new Dungeon(PersonalBossModel.PERSONALBOSS_MAPID, config.lineId));
|
}
|
else
|
{
|
model.RequestGotoDungeon(model.selectedBoss);
|
}
|
}
|
else
|
{
|
switch (error)
|
{
|
case 1:
|
dungeonModel.currentDungeon = new Dungeon(PersonalBossModel.PERSONALBOSS_MAPID, 0);
|
WindowCenter.Instance.Open<DungeonBuyTimesWin>();
|
//WindowCenter.Instance.Open<PersonalBossVipLackWin>();
|
break;
|
case 2:
|
dungeonModel.currentDungeon = new Dungeon(PersonalBossModel.PERSONALBOSS_MAPID, 0);
|
WindowCenter.Instance.Open<DungeonBuyTimesWin>();
|
//WindowCenter.Instance.Open<PersonalBossVipLackWin>();
|
break;
|
case 3:
|
SysNotifyMgr.Instance.ShowTip("BossRealmHint2", RealmConfig.Get(NPCConfig.Get(model.selectedBoss).Realm).LvLarge);
|
break;
|
case 4:
|
SysNotifyMgr.Instance.ShowTip("DungeonNoGO");
|
break;
|
case 5:
|
SysNotifyMgr.Instance.ShowTip("DemonJar_Text2");
|
break;
|
}
|
}
|
|
}
|
|
private bool TestEnterDungeon(out int _error)
|
{
|
if (model.IsFreeTime(model.selectedBoss))
|
{
|
_error = 0;
|
return true;
|
}
|
if (totalTimes <= 0)
|
{
|
_error = 1;
|
return false;
|
}
|
|
if (enterTimes >= totalTimes)
|
{
|
_error = 2;
|
return false;
|
}
|
|
if (!findPreciousModel.IsBossUnlock(model.selectedBoss))
|
{
|
_error = 3;
|
return false;
|
}
|
if (!model.IsPlayerLevelEnough(model.selectedBoss))
|
{
|
_error = 5;
|
return false;
|
}
|
|
var mapConfig = MapConfig.Get(PlayerDatas.Instance.baseData.MapID);
|
if (mapConfig.MapFBType != (int)MapType.OpenCountry && PlayerDatas.Instance.baseData.MapID != 31020)
|
{
|
_error = 4;
|
return false;
|
}
|
|
_error = 0;
|
return true;
|
}
|
|
private void OnBossSelected(int bossId)
|
{
|
m_BossIntroduce.Display(bossId, false);
|
DisplayGotoKillButton(model.selectedBoss);
|
DisplayTip(bossId);
|
|
if (model.CanFBWipeOut(model.selectedBoss))
|
{
|
m_ButtonName.text = Language.Get("RuneTower22");
|
}
|
else
|
{
|
m_ButtonName.text = Language.Get("RealmPractice108");
|
}
|
model.UpdateRedpoint();
|
}
|
|
private void DisplayTip(int bossId)
|
{
|
if (!findPreciousModel.IsBossUnlock(bossId))
|
{
|
m_NoDamageTip.SetActive(true);
|
}
|
else
|
{
|
m_NoDamageTip.SetActive(false);
|
}
|
}
|
|
private void DisplayGotoKillButton(int bossId)
|
{
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|