//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, October 31, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using TableConfig;
|
|
namespace Snxxz.UI
|
{
|
|
public class ElderGodAreaWin : Window
|
{
|
[SerializeField] CyclicScroll m_Bosses;
|
[SerializeField] BossIntroduceBehaviour m_BossIntroduce;
|
[SerializeField] Text m_Times;
|
[SerializeField] Button m_Goto;
|
[SerializeField] Button m_KillRecord;
|
[SerializeField] ToggleButton m_Subscribe;
|
|
ElderGodAreaModel m_Model;
|
ElderGodAreaModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<ElderGodAreaModel>()); } }
|
|
FindPreciousModel m_FindPreciousModel;
|
FindPreciousModel findPreciousModel { get { return m_FindPreciousModel ?? (m_FindPreciousModel = ModelCenter.Instance.GetModel<FindPreciousModel>()); } }
|
|
DungeonModel m_DungeonModel;
|
DungeonModel dungeonModel {
|
get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); }
|
}
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Goto.AddListener(GotoKillBoss);
|
m_KillRecord.AddListener(ShowKillRecords);
|
m_Subscribe.AddListener(SwitchSubscribeBoss);
|
}
|
|
protected override void OnPreOpen()
|
{
|
var enterTimes = dungeonModel.GetEnterTimes(ElderGodAreaModel.ELDERGODAREA_MAPID);
|
var totalTimes = dungeonModel.GetTotalTimes(ElderGodAreaModel.ELDERGODAREA_MAPID);
|
m_Times.text = Language.Get("Dungeon_LeavingTimes", totalTimes - enterTimes);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
model.bossSelectedEvent += OnBossSelected;
|
findPreciousModel.bossSubscribeChangeEvent += OnSubscribeBoss;
|
}
|
|
protected override void OnPreClose()
|
{
|
model.bossSelectedEvent -= OnBossSelected;
|
findPreciousModel.bossSubscribeChangeEvent -= OnSubscribeBoss;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
ShowBosses();
|
CheckAchievementGuide();
|
}
|
#endregion
|
|
private void ShowBosses()
|
{
|
var bosses = new List<int>();
|
bosses.AddRange(model.GetElderGodBosses());
|
|
model.selectedBoss = model.GetLatestUnLockBoss();
|
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
|
m_BossIntroduce.Display(model.selectedBoss, true);
|
m_Bosses.Init(bosses);
|
m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
|
}
|
|
private void ShowKillRecords()
|
{
|
ModelCenter.Instance.GetModel<FindPreciousModel>().ViewKillRecordsBoss = model.selectedBoss;
|
WindowCenter.Instance.Open<KillRecordsWin>();
|
}
|
|
private void GotoKillBoss()
|
{
|
var error = 0;
|
if (TestEnterDungeon(out error))
|
{
|
DungeonSuppliesLackWin.lackType = DungeonSuppliesLackWin.LackType.ElderGodArea;
|
WindowCenter.Instance.Open<DungeonSuppliesLackWin>();
|
}
|
else
|
{
|
switch (error)
|
{
|
case 1:
|
SysNotifyMgr.Instance.ShowTip("ElderGodNoTimes");
|
break;
|
case 2:
|
WindowCenter.Instance.Close<FindPreciousFrameWin>();
|
MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
|
break;
|
case 3:
|
SysNotifyMgr.Instance.ShowTip("DungeonNoGO");
|
break;
|
}
|
}
|
}
|
|
private bool TestEnterDungeon(out int _error)
|
{
|
var enterTimes = dungeonModel.GetEnterTimes(ElderGodAreaModel.ELDERGODAREA_MAPID);
|
var totalTimes = dungeonModel.GetTotalTimes(ElderGodAreaModel.ELDERGODAREA_MAPID);
|
if (enterTimes >= totalTimes)
|
{
|
_error = 1;
|
return false;
|
}
|
|
var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
if (dataMapId == ElderGodAreaModel.ELDERGODAREA_MAPID)
|
{
|
_error = 2;
|
return false;
|
}
|
|
var mapConfig = Config.Instance.Get<MapConfig>(PlayerDatas.Instance.baseData.MapID);
|
if (mapConfig.MapFBType != (int)MapType.OpenCountry)
|
{
|
_error = 3;
|
return false;
|
}
|
|
_error = 0;
|
return true;
|
}
|
|
private void SwitchSubscribeBoss()
|
{
|
if (findPreciousModel.IsBossSubscribed(model.selectedBoss))
|
{
|
findPreciousModel.RequestDeSubscribeBoss(model.selectedBoss);
|
}
|
else
|
{
|
findPreciousModel.RequestSubscribeBoss(model.selectedBoss, false);
|
}
|
}
|
|
private void OnSubscribeBoss(int _bossId)
|
{
|
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
|
}
|
|
private void OnBossSelected(int _bossId)
|
{
|
m_BossIntroduce.Display(_bossId, false);
|
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
|
}
|
|
private void CheckAchievementGuide()
|
{
|
if (AchievementGoto.guideAchievementId != 0)
|
{
|
var config = Config.Instance.Get<SuccessConfig>(AchievementGoto.guideAchievementId);
|
var condition = config.Type == 37 && config.Condition[0] == ElderGodAreaModel.ELDERGODAREA_MAPID;
|
condition = condition || (config.Type == 4);
|
if (condition)
|
{
|
var guideEffect = AchievementGuideEffectPool.Require(1);
|
guideEffect.transform.SetParentEx(m_Goto.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
}
|
}
|
}
|
|
}
|
|