少年修仙传客户端代码仓库
client_linchunjie
2018-08-28 d967a51a34fe3ac68267b29b6f2ea4cb509d4977
System/FairyAu/FairyGrabBossModel.cs
@@ -92,6 +92,8 @@
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            GA_Hero.OnEnterOrExitArea += OnEnterOrExitArea;
            PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
            GAMgr.Instance.OnFightNpcRequest += OnFightNpcUpdate;
            GAMgr.Instance.OnFightNpcRelease += OnFightNpcUpdate;
        }
        public void OnBeforePlayerDataInitialize()
@@ -109,6 +111,8 @@
            StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
            DailyQuestActionTimer.Instance.RefreshDailyQuestState -= RefreshDailyQuestState;
            GA_Hero.OnEnterOrExitArea -= OnEnterOrExitArea;
            GAMgr.Instance.OnFightNpcRequest -= OnFightNpcUpdate;
            GAMgr.Instance.OnFightNpcRelease -= OnFightNpcUpdate;
        }
        private void OnRefreshFairyInfo()
@@ -116,9 +120,12 @@
            RecheckGrabBoss();
        }
        private void OnEnterOrExitArea(MapArea.E_Type arg0, bool arg1)
        private void OnEnterOrExitArea(MapArea.E_Type type, bool arg1)
        {
            RecheckGrabBoss();
            if (type == MapArea.E_Type.Boss)
            {
                RecheckGrabBoss();
            }
        }
        private void OnStageLoadFinish()
@@ -126,6 +133,14 @@
            if (!(StageManager.Instance.CurrentStage is DungeonStage))
            {
                fairyGrabBossDict.Clear();
            }
        }
        private void OnFightNpcUpdate(uint npcId)
        {
            if (bosses.Contains((int)npcId))
            {
                RecheckGrabBoss();
            }
        }
@@ -142,9 +157,9 @@
                return;
            }
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var lineId = PlayerDatas.Instance.baseData.FBID;
            if (!GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId)
                || lineId != GeneralConfig.Instance.fairyGrabBossMapLines[mapId])
            var grabBossLine = GeneralConfig.Instance.fairyGrabBossMapLines.ContainsKey(mapId) ?
                GeneralConfig.Instance.fairyGrabBossMapLines[mapId] : 1;
            if (PlayerDatas.Instance.baseData.FBID != grabBossLine - 1)
            {
                CloseGrabBossHint();
                return;
@@ -326,6 +341,24 @@
            return false;
        }
        /// <summary>
        /// 只给地图界面用,谨慎使用
        /// </summary>
        /// <param name="lineId"></param>
        /// <returns></returns>
        public bool TryGetFairyGrabBossLine(out int lineId)
        {
            lineId = 0;
            var mapId = PlayerDatas.Instance.baseData.MapID;
            var mapLinesDict = GeneralConfig.Instance.fairyGrabBossMapLines;
            if (mapLinesDict != null && mapLinesDict.ContainsKey(mapId))
            {
                lineId = mapLinesDict[mapId];
                return true;
            }
            return false;
        }
        public class FairyGrabBossInfo
        {
            public int npcId { get; private set; }