//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, May 03, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System.Collections.Generic;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class DungeonBossBriefInfoContainer : MonoBehaviour
|
{
|
[SerializeField] Button m_Switch;
|
[SerializeField] RectTransform m_BossesContainer;
|
[SerializeField] ScrollRect m_ScrollRect;
|
|
List<DungeonBossBriefInfoBehaviour> behaviours = new List<DungeonBossBriefInfoBehaviour>();
|
|
BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
|
ElderGodAreaModel elderGodAreadModel { get { return ModelCenter.Instance.GetModel<ElderGodAreaModel>(); } }
|
CrossServerBossModel crossServerBossModel { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } }
|
|
int dataMapId = 0;
|
bool bossesInited = false;
|
List<int> bosses = new List<int>();
|
|
public void Display(int _dataMapId)
|
{
|
dataMapId = _dataMapId;
|
bosses.Clear();
|
bossesInited = false;
|
|
m_BossesContainer.SetActive(false);
|
m_Switch.RemoveAllListeners();
|
m_Switch.AddListener(OpenFindPreciousFrameWin);
|
}
|
|
|
private void OpenFindPreciousFrameWin()
|
{
|
switch (dataMapId)
|
{
|
case 32080:
|
WindowCenter.Instance.Open<CrossServerWin>(false, 2);
|
break;
|
case CrossServerBossModel.DATA_MAPID:
|
WindowCenter.Instance.Open<CrossServerWin>(false, 1);
|
break;
|
case BossHomeModel.BOSSHOME_MAPID:
|
WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 2);
|
break;
|
default:
|
WindowCenter.Instance.Open<FindPreciousFrameWin>(false, 1);
|
break;
|
}
|
}
|
|
|
public void Display(List<int> _bosses)
|
{
|
//dataMapId = 0;
|
//bosses.Clear();
|
//bosses.AddRange(_bosses);
|
//bossesInited = false;
|
|
//m_BossesContainer.SetActive(false);
|
//m_Switch.RemoveAllListeners();
|
//m_Switch.AddListener(SwitchDungeonBossInfoContainer);
|
}
|
|
public void Dispose()
|
{
|
m_BossesContainer.SetActive(false);
|
m_Switch.RemoveAllListeners();
|
}
|
|
private void ShowBosses()
|
{
|
if (dataMapId > 0)
|
{
|
bosses.Clear();
|
switch (dataMapId)
|
{
|
case ElderGodAreaModel.ELDERGODAREA_MAPID:
|
bosses.AddRange(elderGodAreadModel.GetElderGodBosses());
|
break;
|
case BossHomeModel.BOSSHOME_MAPID:
|
var floor = PlayerDatas.Instance.baseData.dungeonLineId + 1;
|
BossHomeData bossHomeData;
|
if (bossHomeModel.TryGetBossHomeData(floor, out bossHomeData))
|
{
|
for (int i = 0; i < bossHomeData.bossIds.Count; i++)
|
{
|
var bossId = bossHomeData.bossIds[i];
|
var config = BossHomeConfig.Get(bossId);
|
|
if (config.MonsterType == 2)
|
{
|
bosses.Add(bossId);
|
}
|
}
|
}
|
break;
|
}
|
}
|
|
GenerateBehaviour(m_ScrollRect.content.transform as RectTransform, bosses.Count);
|
|
for (int i = 0; i < behaviours.Count; i++)
|
{
|
var behaviour = behaviours[i];
|
if (i < bosses.Count)
|
{
|
behaviour.Dispose();
|
behaviour.Display(bosses[i], OnMoveToBoss);
|
behaviour.SetActive(true);
|
}
|
else
|
{
|
behaviour.SetActive(false);
|
}
|
}
|
|
m_ScrollRect.verticalNormalizedPosition = 1f;
|
}
|
|
private void GenerateBehaviour(RectTransform _parent, int _need)
|
{
|
var own = behaviours.Count;
|
if (_need > own)
|
{
|
var gap = _need - own;
|
var prefab = UILoader.LoadPrefab("DungeonBossBriefInfoBehaviour");
|
for (int i = 0; i < gap; i++)
|
{
|
var instance = Instantiate<GameObject>(prefab);
|
instance.name = "DungeonBossBriefInfoBehaviour";
|
instance.transform.SetParentEx(_parent, Vector3.zero, Vector3.zero, Vector3.one);
|
behaviours.Add(instance.AddMissingComponent<DungeonBossBriefInfoBehaviour>());
|
}
|
}
|
}
|
|
public void Unfold(bool _unfold)
|
{
|
if (_unfold)
|
{
|
m_BossesContainer.SetActive(!m_BossesContainer.gameObject.activeInHierarchy);
|
if (m_BossesContainer.gameObject.activeInHierarchy && !bossesInited)
|
{
|
ShowBosses();
|
bossesInited = true;
|
}
|
}
|
else
|
{
|
m_BossesContainer.SetActive(false);
|
}
|
}
|
|
private void OnMoveToBoss()
|
{
|
Unfold(false);
|
}
|
|
private void SwitchDungeonBossInfoContainer()
|
{
|
Unfold(true);
|
}
|
|
}
|
|
}
|
|
|
|