using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using TableConfig;
|
using System;
|
|
namespace Snxxz.UI
|
{
|
public class DogzDungeonModel : Model
|
{
|
|
public const int DOGZDUNGEON_REDPOINT = 76009;
|
public const int DATA_MAPID = 1010010;
|
|
|
int m_SelectedBoss = 0;
|
public int selectedBoss {
|
get {
|
return this.m_SelectedBoss;
|
}
|
set {
|
if (this.m_SelectedBoss != value)
|
{
|
this.m_SelectedBoss = value;
|
if (bossSelectedEvent != null)
|
{
|
bossSelectedEvent(value);
|
}
|
}
|
}
|
}
|
|
public event Action<int> bossSelectedEvent;
|
|
List<int> sortedBossIds = new List<int>();
|
Dictionary<int, DogzDungeonBossData> bosses = new Dictionary<int, DogzDungeonBossData>();
|
|
FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
|
|
public override void Init()
|
{
|
}
|
|
public override void UnInit()
|
{
|
}
|
|
public bool TryGetBossData(int _bossId, out DogzDungeonBossData _data)
|
{
|
return bosses.TryGetValue(_bossId, out _data);
|
}
|
|
public List<int> GetBosses()
|
{
|
return new List<int>(bosses.Keys);
|
}
|
|
public int GetLatestUnLockBoss()
|
{
|
var playerLevel = PlayerDatas.Instance.baseData.LV;
|
for (int i = sortedBossIds.Count - 1; i >= 0; i--)
|
{
|
var bossId = sortedBossIds[i];
|
var npcConfig = ConfigManager.Instance.GetTemplate<NPCConfig>(bossId);
|
if (IsBossUnLocked(bossId) && findPreciousModel.IsBossAlive(bossId) && playerLevel >= npcConfig.NPCLV)
|
{
|
return bossId;
|
}
|
}
|
|
return sortedBossIds[0];
|
}
|
|
public bool IsBossUnLocked(int _bossId)
|
{
|
return bosses.ContainsKey(_bossId) && bosses[_bossId].isUnLocked;
|
}
|
|
private void ParseConfig()
|
{
|
var configs = ConfigManager.Instance.GetAllValues<DogzDungeonConfig>();
|
foreach (var config in configs)
|
{
|
bosses[config.NPCID] = new DogzDungeonBossData(config.NPCID);
|
sortedBossIds.Add(config.NPCID);
|
}
|
|
sortedBossIds.Sort(DogzDungeonBossData.LevelCompare);
|
}
|
|
}
|
|
|
public class DogzDungeonBossData
|
{
|
public int id { get; private set; }
|
public bool isUnLocked {
|
get {
|
var config = ConfigManager.Instance.GetTemplate<NPCConfig>(id);
|
return PlayerDatas.Instance.baseData.LV >= config.NPCLV;
|
}
|
}
|
|
public DogzDungeonBossData(int _id)
|
{
|
this.id = _id;
|
}
|
|
public static int LevelCompare(int a, int b)
|
{
|
var configA = ConfigManager.Instance.GetTemplate<NPCConfig>(a);
|
var configB = ConfigManager.Instance.GetTemplate<NPCConfig>(b);
|
|
return configA.NPCLV < configB.NPCLV ? -1 : 1;
|
}
|
}
|
|
}
|