| | |
| | | using UnityEngine;
|
| | | using System;
|
| | |
|
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | | [XLua.LuaCallCSharp]
|
| | | public class WorldBossModel : Model
|
| | | public class WorldBossModel : Model
|
| | | {
|
| | |
|
| | | public const int WORLDBOSS_REDPOINT = 76001;
|
| | |
|
| | | int m_SelectedBoss = 0;
|
| | |
| | |
|
| | | public Redpoint worldBossRedPoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, WORLDBOSS_REDPOINT);
|
| | | FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
|
| | | RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
|
| | |
|
| | | public override void Init()
|
| | | {
|
| | |
| | | public List<int> GetWorldBosses()
|
| | | {
|
| | | var activedBossIds = new List<int>();
|
| | | var mapModel = ModelCenter.Instance.GetModel<MapModel>();
|
| | | for (int i = 0; i < sortedBossIds.Count; i++)
|
| | | {
|
| | | var bossId = sortedBossIds[i];
|
| | | var config = WorldBossConfig.Get(bossId);
|
| | | var mapId = config.MapID;
|
| | | if (mapModel.IsMapUnlocked(mapId))
|
| | | if (IsBossUnLockedOrUnlockSoon(bossId))
|
| | | {
|
| | | activedBossIds.Add(bossId);
|
| | | }
|
| | |
| | | public List<int> GetWorldBosses(int _mapId)
|
| | | {
|
| | | var bosses = new List<int>();
|
| | | var mapModel = ModelCenter.Instance.GetModel<MapModel>();
|
| | | for (int i = 0; i < sortedBossIds.Count; i++)
|
| | | {
|
| | | var bossId = sortedBossIds[i];
|
| | |
| | | return worldBosses.ContainsKey(_bossId) && worldBosses[_bossId].isUnLocked;
|
| | | }
|
| | |
|
| | | public int GetLatestUnLockBoss()
|
| | | public int GetRecommendBoss()
|
| | | {
|
| | | var playerLevel = PlayerDatas.Instance.baseData.LV;
|
| | | for (int i = sortedBossIds.Count - 1; i >= 0; i--)
|
| | |
| | | return sortedBossIds[0];
|
| | | }
|
| | |
|
| | | public int GetBossUnLockRealm(int bossId)
|
| | | {
|
| | | if (!worldBosses.ContainsKey(bossId))
|
| | | {
|
| | | return 0;
|
| | | }
|
| | |
|
| | | var config = NPCConfig.Get(bossId);
|
| | | var realmStage = realmModel.GetRealmStage(config.Realm);
|
| | | var realms = new List<int>();
|
| | | if (realmModel.TryGetRealmStages(realmStage, out realms))
|
| | | {
|
| | | return realms[0];
|
| | | }
|
| | | else
|
| | | {
|
| | | return 0;
|
| | | }
|
| | | }
|
| | |
|
| | | private bool IsBossUnLockedOrUnlockSoon(int bossId)
|
| | | {
|
| | | var myRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
|
| | | var myRealmStage = realmModel.GetRealmStage(myRealmLevel);
|
| | |
|
| | | var config = NPCConfig.Get(bossId);
|
| | | var bossRealmStage = realmModel.GetRealmStage(config.Realm);
|
| | |
|
| | | if (myRealmStage >= bossRealmStage)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
|
| | | if (myRealmStage + 1 >= bossRealmStage)
|
| | | {
|
| | | return true;
|
| | | }
|
| | |
|
| | | return false;
|
| | | }
|
| | |
|
| | | private void ParseConfig()
|
| | | {
|
| | | var worldBossConfigs = WorldBossConfig.GetValues();
|
| | |
| | | sortedBossIds.AddRange(worldBosses.Keys);
|
| | | sortedBossIds.Sort(WorldBossData.LevelCompare);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public class WorldBossData
|
| | | {
|
| | | MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
|
| | | RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
|
| | |
|
| | | public int id { get; private set; }
|
| | | public bool isUnLocked {
|
| | | get {
|
| | | var config = WorldBossConfig.Get(id);
|
| | | var mapUnLocked = mapModel.IsMapUnlocked(config.MapID);
|
| | | return mapUnLocked;
|
| | | var myRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
|
| | | var myRealmStage = realmModel.GetRealmStage(myRealmLevel);
|
| | |
|
| | | var config = NPCConfig.Get(id);
|
| | | var bossRealmStage = realmModel.GetRealmStage(config.Realm);
|
| | |
|
| | | return myRealmStage >= bossRealmStage;
|
| | | }
|
| | | }
|
| | |
|