少年修仙传客户端代码仓库
hch
2024-12-01 88a44493bb68d23d26ab514669624e5142bb49b6
0312 聊天浮窗真机会报错问题;查询玩家缓存防范空数据报错
3个文件已修改
93 ■■■■■ 已修改文件
System/Chat/ChatCenter.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Chat/ChatFloatWin.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/RoleParticularModel.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Chat/ChatCenter.cs
@@ -663,7 +663,7 @@
            {
                AutoPlayVoice();
            }
            CheckChatFloatOpen();
            //CheckChatFloatOpen();
        }
        IEnumerator Co_AutoPlay(VoiceInfo _info)
@@ -789,23 +789,30 @@
            }
        }
        private void CheckChatFloatOpen()
        public bool IsShowChatFloat()
        {
            if (WindowCenter.Instance.ExistAnyFullScreenOrMaskWin() && !WindowCenter.Instance.IsOpen<LoadingWin>()
                && StageLoad.Instance.currentStage is DungeonStage && !WindowCenter.Instance.IsOpen<TreasureBaseWin>())
                return true;
            return false;
        }
        private void CheckChatFloatOpen()
        {
            if (IsShowChatFloat())
            {
                if (!WindowCenter.Instance.IsOpen<ChatFloatWin>())
                {
                    WindowCenter.Instance.Open<ChatFloatWin>();
                }
            }
            else
            {
                if (WindowCenter.Instance.IsOpen<ChatFloatWin>())
                {
                    WindowCenter.Instance.Close<ChatFloatWin>();
                }
            }
            //else
            //{
            //    if (WindowCenter.Instance.IsOpen<ChatFloatWin>())
            //    {
            //        WindowCenter.Instance.Close<ChatFloatWin>();
            //    }
            //}
        }
        #endregion
System/Chat/ChatFloatWin.cs
@@ -20,6 +20,15 @@
        DateTime overdueTime = DateTime.Now;
        Coroutine cacheCoroutine;
        ChatCenter chatCenter
        {
            get
            {
                return ModelCenter.Instance.GetModel<ChatCenter>();
            }
        }
        #region Built-in
        protected override void BindController()
        {
@@ -66,6 +75,11 @@
        private void ChatFloatUpdate(ChatData data)
        {
            if (!chatCenter.IsShowChatFloat())
            {
                return;
            }
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
System/RoleParticulars/RoleParticularModel.cs
@@ -159,10 +159,13 @@
        public void OnRevRoleEquip(HA705_tagSCQueryPlayerCacheResult package)
        {
            if (viewPlayer != package.PlayerID || viewPlayerType == -1)
            //需要对空数据进行防范
            if (viewPlayer != package.PlayerID || viewPlayerType == -1 ||
                (package.PropDataSize == 0 && package.ItemDataSize == 0 && package.PlusDataSize == 0))
            {
                return;
            }
            ViewPlayerData viewPlayerData = null;
            if (!viewPlayerDataDic.TryGetValue((int)package.PlayerID, out viewPlayerData))
            {
@@ -172,29 +175,36 @@
            }
            viewPlayerData.getTime = DateTime.Now;
            viewPlayerData.rolePropData = JsonMapper.ToObject<RolePropData>(package.PropData);
            if (package.PropDataSize != 0)
                viewPlayerData.rolePropData = JsonMapper.ToObject<RolePropData>(package.PropData);
            viewPlayerData.rolePlusData = new RolePlusData();
            viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData);
            JsonData data = JsonMapper.ToObject(package.PropData);
            Dictionary<string, long> properties = new Dictionary<string, long>();
            var keyList = data.Keys.ToList();
            for (int i = 0; i < keyList.Count; i++)
            {
                string key = keyList[i];
                JsonData valueData = data[key];
                long value = 0;
                if (long.TryParse(valueData.ToString(), out value))
                {
                    properties[key] = value;
                }
                else
                {
                    properties[key] = 0;
                }
            if (package.PlusDataSize != 0)
            {
                viewPlayerData.rolePlusData = new RolePlusData();
                viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData);
            }
            viewPlayerData.propertiesDict = properties;
            if (package.PropDataSize != 0)
            {
                JsonData data = JsonMapper.ToObject(package.PropData);
                Dictionary<string, long> properties = new Dictionary<string, long>();
                var keyList = data.Keys.ToList();
                for (int i = 0; i < keyList.Count; i++)
                {
                    string key = keyList[i];
                    JsonData valueData = data[key];
                    long value = 0;
                    if (long.TryParse(valueData.ToString(), out value))
                    {
                        properties[key] = value;
                    }
                    else
                    {
                        properties[key] = 0;
                    }
                }
                viewPlayerData.propertiesDict = properties;
            }
            ShowRoleParticulars(viewPlayerData);
        }