少年修仙传客户端代码仓库
client_Hale
2018-10-09 2e7aa5faabcbe00757c74379f67b3231b1b3370f
System/FindPrecious/ElderGodAreaModel.cs
@@ -13,9 +13,7 @@
        int m_SelectedBoss = 0;
        public int selectedBoss {
            get {
                return this.m_SelectedBoss;
            }
            get { return this.m_SelectedBoss; }
            set {
                if (this.m_SelectedBoss != value)
                {
@@ -39,6 +37,7 @@
        public event Action<int> bossSelectedEvent;
        public event Action<int> surplusTimesChangeEvent;
        List<int> sortedElites = new List<int>();
        List<int> sortedBossIds = new List<int>();
        Dictionary<int, ElderGodBossData> elderGodBosses = new Dictionary<int, ElderGodBossData>();
        Dictionary<int, int> npcAngers = new Dictionary<int, int>();
@@ -82,27 +81,61 @@
        public bool IsBossUnLocked(int _bossId)
        {
            var config = Config.Instance.Get<ElderGodAreaConfig>(_bossId);
            if (config == null)
            {
                return false;
            }
            if (config.MonsterType == 1)
            {
                return true;
            }
            else
            {
            var playerLevel = PlayerDatas.Instance.baseData.LV;
            return elderGodBosses.ContainsKey(_bossId) && playerLevel >= elderGodBosses[_bossId].unLockLevel;
            }
        }
        public List<int> GetElderGodBosses()
        {
            return new List<int>(sortedBossIds);
            var bosses = new List<int>();
            bosses.Add(sortedElites[0]);
            bosses.AddRange(sortedBossIds);
            return bosses;
        }
        public int GetLatestUnLockBoss()
        public int GetRecommendNpc()
        {
            for (int i = 0; i < sortedBossIds.Count; i++)
            foreach (var item in sortedBossIds)
            {
                var bossId = sortedBossIds[i];
                if (findPreciousModel.IsBossAlive(bossId))
                if (findPreciousModel.IsBossAlive(item))
                {
                    return bossId;
                    return item;
                }
            }
            return sortedBossIds[0];
            return sortedElites[0];
        }
        public int GetRecommendEliteNpc()
        {
            var npc = 0;
            var levelDelta = int.MaxValue;
            var myLevel = PlayerDatas.Instance.baseData.LV;
            foreach (var item in sortedElites)
            {
                var config = Config.Instance.Get<NPCConfig>(item);
                var delta = Mathf.Abs(myLevel - config.NPCLV);
                if (delta < levelDelta)
                {
                    npc = item;
                    levelDelta = delta;
                }
            }
            return npc;
        }
        private void ParseConfig()
@@ -115,12 +148,25 @@
                {
                    elderGodBosses[config.NPCID] = new ElderGodBossData(config.NPCID);
                }
                else
                {
                    sortedElites.Add(config.NPCID);
                }
                npcAngers[config.NPCID] = config.MonsterAnger;
            }
            sortedElites.Sort(EliteMonsterCompare);
            sortedBossIds.AddRange(elderGodBosses.Keys);
            sortedBossIds.Sort(ElderGodBossData.LevelCompare);
        }
        private int EliteMonsterCompare(int lhs, int rhs)
        {
            var config1 = Config.Instance.Get<NPCConfig>(lhs);
            var config2 = Config.Instance.Get<NPCConfig>(rhs);
            return config1.NPCLV < config2.NPCLV ? -1 : 1;
        }
        public void OnMapInitOk()
@@ -128,7 +174,17 @@
            var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
            if (dataMapId == ELDERGODAREA_MAPID)
            {
                MapTransferUtility.Instance.MoveToNPC(selectedBoss);
                var target = 0;
                if (sortedElites.Contains(selectedBoss))
                {
                    target = GetRecommendEliteNpc();
                }
                else
                {
                    target = selectedBoss;
                }
                MapTransferUtility.Instance.MoveToNPC(target);
            }
        }
    }