少年修仙传客户端代码仓库
client_linchunjie
2019-04-22 b34f9f5dafb7f7ce95a7251c997557b6a820e0f1
3335 缥缈仙域接入玩家数量
3个文件已修改
92 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyDemonKingModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/HazyRegion/HazyRegionIncidentBehaviour.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA0_Sys/DTCA007_tagGCFBLinePlayerCnt.cs
@@ -19,6 +19,7 @@
        ModelCenter.Instance.GetModel<JadeDynastyBossModel>().OnReceivePackage(package);
        ModelCenter.Instance.GetModel<RidingPetBossModel>().ReceivePackage(package);
        ModelCenter.Instance.GetModel<AllianceBossModel>().ReceivePackage(package);
        ModelCenter.Instance.GetModel<HazyDemonKingModel>().ReceivePackage(package);
    }
}
System/HazyRegion/HazyDemonKingModel.cs
@@ -7,6 +7,7 @@
    public class HazyDemonKingModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        Dictionary<uint, HazyDemonKingPlayerInfo> m_PlayerInfos = new Dictionary<uint, HazyDemonKingPlayerInfo>();
        Dictionary<int, Dictionary<int, int>> m_MapPlayerCounts = new Dictionary<int, Dictionary<int, int>>();
        List<uint> m_AttackHeroPlayers = new List<uint>();
        public bool IsInDungeon { get; private set; }
@@ -19,6 +20,7 @@
        public const int DEMONKINGMAPID2 = 32030;
        public event Action onPlayerInfoRefresh;
        public event Action onPlayerCountRefresh;
        HazyRegionModel hazyRegionModel { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
@@ -37,6 +39,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            m_PlayerInfos.Clear();
            m_MapPlayerCounts.Clear();
        }
        public void OnPlayerLoginOk()
@@ -222,6 +225,15 @@
            return m_PlayerInfos.Keys;
        }
        public int GetDungeonPlayerCount(int mapId, int lineId)
        {
            if (m_MapPlayerCounts.ContainsKey(mapId))
            {
                return m_MapPlayerCounts[mapId].ContainsKey(lineId) ? m_MapPlayerCounts[mapId][lineId] : 0;
            }
            return 0;
        }
        public void SendSelectAtkTarget(uint serverInstId)
        {
            var actor = GAMgr.Instance.GetBySID(serverInstId);
@@ -283,6 +295,30 @@
            }
        }
        public void ReceivePackage(HA007_tagGCFBLinePlayerCnt package)
        {
            var mapId = (int)package.MapID;
            if (IsInDemonKingDungeon(mapId))
            {
                Dictionary<int, int> dict = null;
                if (!m_MapPlayerCounts.TryGetValue(mapId, out dict))
                {
                    dict = new Dictionary<int, int>();
                    m_MapPlayerCounts.Add(mapId, dict);
                }
                for (int i = 0; i < package.Count; i++)
                {
                    var data = package.FBLineInfoList[i];
                    dict[data.FBLineID] = data.PlayerCnt;
                }
                if (onPlayerCountRefresh != null)
                {
                    onPlayerCountRefresh();
                }
            }
        }
        public void RequestEnterClientDungeon()
        {
            var config = HazyRegionConfig.Get(hazyRegionModel.processingIncidentId);
System/HazyRegion/HazyRegionIncidentBehaviour.cs
@@ -38,6 +38,7 @@
        HazyRegionModel model { get { return ModelCenter.Instance.GetModel<HazyRegionModel>(); } }
        FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
        HazyDemonKingModel hazyDemonKingModel { get { return ModelCenter.Instance.GetModel<HazyDemonKingModel>(); } }
        int incidentId = 0;
@@ -57,6 +58,8 @@
        float timer = 0f;
        DateTime requestPlayerCountTime = DateTime.Now;
        HazyRegionIncidentType incidentType = HazyRegionIncidentType.Adventure;
        private void Awake()
@@ -72,6 +75,7 @@
            var config = HazyRegionConfig.Get(incidentId);
            incidentType = (HazyRegionIncidentType)config.incidentType;
            m_BossAlive = false;
            if (incidentType == HazyRegionIncidentType.DemonKing)
            {
                m_BossAlive = findPreciousModel.IsBossAlive(config.npcId);
@@ -89,6 +93,8 @@
            model.onHazyRegionIncidentRefresh += OnHazyRegionIncidentRefresh;
            findPreciousModel.bossInfoUpdateEvent -= BossInfoUpdateEvent;
            findPreciousModel.bossInfoUpdateEvent += BossInfoUpdateEvent;
            hazyDemonKingModel.onPlayerCountRefresh -= OnPlayerCountRefresh;
            hazyDemonKingModel.onPlayerCountRefresh += OnPlayerCountRefresh;
        }
        void DisplayBase()
@@ -143,7 +149,8 @@
            {
                if (model.InFakeHazyRegion)
                {
                    var fighting = ClientDungeonStageUtility.isClientDungeon;
                    var fighting = ClientDungeonStageUtility.isClientDungeon &&
                        ClientDungeonStageUtility.clientMapId == HazyDemonKingModel.Client_MapID;
                    m_PlayerCount.gameObject.SetActive(true);
                    m_RebornTime.gameObject.SetActive(false);
                    m_PlayerCount.text = Language.Get("HazyDemonKingPlayerCount", fighting ? 1 : 0);
@@ -160,7 +167,8 @@
                    }
                    else
                    {
                        m_PlayerCount.text = Language.Get("HazyDemonKingPlayerCount", 0);
                        SendRequestPlayerCount();
                        DisplayPlayerCount();
                    }
                }
            }
@@ -184,6 +192,16 @@
            }
        }
        void DisplayPlayerCount()
        {
            var config = HazyRegionConfig.Get(incidentId);
            if (config != null)
            {
                m_PlayerCount.text = Language.Get("HazyDemonKingPlayerCount",
                    hazyDemonKingModel.GetDungeonPlayerCount(config.dungeonId, config.lineId));
            }
        }
        private void LateUpdate()
        {
            timer += Time.deltaTime;
@@ -199,6 +217,14 @@
                    var config = HazyRegionConfig.Get(incidentId);
                    bossAlive = findPreciousModel.IsBossAlive(config.npcId);
                    if (bossAlive)
                    {
                        if ((DateTime.Now - requestPlayerCountTime).TotalSeconds > 5)
                        {
                            SendRequestPlayerCount();
                        }
                    }
                }
            }
        }
@@ -210,6 +236,21 @@
            {
                m_ContainerCompleted.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Complete);
                m_ContainerProcessing.gameObject.SetActive(incident.state == HazyRegionModel.IncidentState.Processing);
            }
        }
        void SendRequestPlayerCount()
        {
            var config = HazyRegionConfig.Get(incidentId);
            if (config != null && config.incidentType == (int)HazyRegionIncidentType.DemonKing
                && !model.InFakeHazyRegion)
            {
                var pak = new CA004_tagCGGetFBLinePlayerCnt();
                pak.MapID = (uint)config.dungeonId;
                pak.FBLineID = (byte)config.lineId;
                GameNetSystem.Instance.SendInfo(pak);
                requestPlayerCountTime = DateTime.Now;
            }
        }
@@ -245,9 +286,19 @@
            }
        }
        private void OnPlayerCountRefresh()
        {
            if (incidentType == HazyRegionIncidentType.DemonKing
                && !model.InFakeHazyRegion && bossAlive)
            {
                DisplayPlayerCount();
            }
        }
        public override void Dispose()
        {
            base.Dispose();
            hazyDemonKingModel.onPlayerCountRefresh -= OnPlayerCountRefresh;
            findPreciousModel.bossInfoUpdateEvent -= BossInfoUpdateEvent;
            model.selectIncidentRefresh -= SelectIncidentRefresh;
            model.onHazyRegionIncidentRefresh -= OnHazyRegionIncidentRefresh;