Răsfoiți Sursa

webgl 加入配置表的异步 加载

hexiaojie 8 luni în urmă
părinte
comite
a3ca546629

+ 84 - 0
GameClient/Assets/Editor/HotUpdateTypeGenerator/LubanConfigFileGenerator.cs

@@ -0,0 +1,84 @@
+#if UNITY_EDITOR
+using UnityEditor;
+using System.IO;
+using System.Collections.Generic;
+using System.Text;
+using UnityEngine;
+
+public static class LubanConfigFileGenerator
+{
+    private const string LubanConfigPath = "Assets/Game/CSShare/GFG/HotUpdate/LuBanConfig/LubanData";
+    private const string OutputScriptPath = "Assets/Game/CSShare/GFG/HotUpdate/LuBanConfig/LubanConfigFiles.cs";
+
+    [MenuItem("GFGGame/Generate Luban Config Files List")]
+    public static void GenerateLubanConfigFilesList()
+    {
+        // 1. 获取所有JSON文件
+        string fullPath = Path.Combine(Application.dataPath, "../", LubanConfigPath);
+        if (!Directory.Exists(fullPath))
+        {
+            Debug.LogError($"Luban config directory not found: {fullPath}");
+            return;
+        }
+
+        var jsonFiles = Directory.GetFiles(fullPath, "*.json");
+        if (jsonFiles.Length == 0)
+        {
+            Debug.LogError($"No JSON files found in: {fullPath}");
+            return;
+        }
+
+        // 2. 生成文件名列表(不带扩展名)
+        var fileNames = new List<string>();
+        foreach (var file in jsonFiles)
+        {
+            string fileName = Path.GetFileNameWithoutExtension(file);
+            if (!string.IsNullOrEmpty(fileName))
+            {
+                fileNames.Add(fileName);
+            }
+        }
+
+        // 3. 生成C#脚本
+        string scriptContent = GenerateScriptContent(fileNames);
+
+        // 4. 保存脚本文件
+        File.WriteAllText(OutputScriptPath, scriptContent);
+        AssetDatabase.Refresh();
+
+        Debug.Log($"Generated Luban config files list at: {OutputScriptPath}");
+        Debug.Log($"Found {fileNames.Count} JSON files in {LubanConfigPath}");
+    }
+
+    private static string GenerateScriptContent(List<string> fileNames)
+    {
+        StringBuilder sb = new StringBuilder();
+        sb.AppendLine("// Auto-generated by LubanConfigFileGenerator");
+        sb.AppendLine("// Last generated: " + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+        
+        sb.AppendLine("using System.Collections.Generic;");
+        sb.AppendLine("namespace GFG.HotUpdate.LubanConfig");
+        sb.AppendLine("{");
+        sb.AppendLine("    public static class LubanConfigFiles");
+        sb.AppendLine("    {");
+        sb.AppendLine("        public static readonly string[] AllFiles = new string[]");
+        sb.AppendLine("        {");
+
+        foreach (var fileName in fileNames)
+        {
+            sb.AppendLine($"            \"{fileName}\",");
+        }
+
+        sb.AppendLine("        };");
+        sb.AppendLine();
+        sb.AppendLine("        public static List<string> GetFilesToLoad()");
+        sb.AppendLine("        {");
+        sb.AppendLine("            return new List<string>(AllFiles);");
+        sb.AppendLine("        }");
+        sb.AppendLine("    }");
+        sb.AppendLine("}");
+
+        return sb.ToString();
+    }
+}
+#endif

+ 3 - 0
GameClient/Assets/Editor/HotUpdateTypeGenerator/LubanConfigFileGenerator.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b45e74ef1c3a44e1ab856910a5899dd3
+timeCreated: 1747758394

+ 33 - 8
GameClient/Assets/Game/HotUpdate/Data/BattlePassTaskDataManager.cs

@@ -107,10 +107,11 @@ namespace GFGGame
         public BattlePassCfg GetSpecialCfg(int level)
         {
             //在需要时再初始化数据
-            if(selectionCache == null)
+            if (selectionCache == null)
             {
                 SetSpecialCfgCache();
             }
+
             var targetLevel = selectionCache.GetValueNoCache(level);
             return CommonDataManager.Tables.TblBattlePassCfg.GetGroup1ByIdAndLevel(SeasonId, targetLevel)[0];
         }
@@ -126,6 +127,7 @@ namespace GFGGame
                     Selection<int, int>.SelectionModel.AllInclude));
                 minIndex = battlePassCfg.Level + 1;
             }
+
             selectionCache = new SelectionCache<int, int>(battlePassCfgs[0].Level);
             selectionCache.AddSelection(selections);
         }
@@ -138,6 +140,7 @@ namespace GFGGame
             {
                 InitItemTemp();
             }
+
             return tempItems;
         }
 
@@ -151,6 +154,7 @@ namespace GFGGame
                 items.TryGetValue(itemsInfo.ItemId, out var num);
                 items[itemsInfo.ItemId] = num + itemsInfo.Count;
             }
+
             foreach (var item in items)
             {
                 tempItems.Add(item);
@@ -168,18 +172,21 @@ namespace GFGGame
                 var passLevel = battlePassLevel + i;
                 var cfg = CommonDataManager.Tables.TblBattlePassCfg.GetGroup1ByIdAndLevel(seasonId, passLevel)[0];
                 if (cfg == null) continue;
-                var mergeBonus = ItemUtil.MergeBonus(cfg.BonusNormal.ToGfgGameItemParam(), cfg.BonusSpecial.ToGfgGameItemParam());
+                var mergeBonus = ItemUtil.MergeBonus(cfg.BonusNormal.ToGfgGameItemParam(),
+                    cfg.BonusSpecial.ToGfgGameItemParam());
                 rs = ItemUtil.MergeBonus(rs, mergeBonus);
             }
+
             return rs;
         }
 
         public bool GetHadCanGetReward()
         {
-            if(!initedFromServer)
+            if (!initedFromServer)
             {
                 return false;
             }
+
             var battlePassLevel = GetBattlePassLevel();
             var isBuy = GetIsBuy();
             for (var i = 1; i <= battlePassLevel; i++)
@@ -188,6 +195,7 @@ namespace GFGGame
                 if (!isBuy) continue;
                 if (!SuperRewards.Contains(i)) return true;
             }
+
             return false;
         }
 
@@ -208,10 +216,12 @@ namespace GFGGame
         {
             var battlePassCfgs = CommonDataManager.Tables.TblBattlePassCfg.GetGroup2ByIsGood(1);
             List<BattlePassCfg> battlePassTypeCfg = new List<BattlePassCfg>();
-            foreach (var info in battlePassCfgs) {
-                if(info.Id == SeasonId)
+            foreach (var info in battlePassCfgs)
+            {
+                if (info.Id == SeasonId)
                     battlePassTypeCfg.Add(info);
             }
+
             battlePassTypeCfg.Sort((BattlePassCfg a, BattlePassCfg b) =>
             {
                 if (a.Level < b.Level) return -1;
@@ -224,10 +234,24 @@ namespace GFGGame
         //一键获取是否领取状态
         public bool CheckStoreBrocadeWeavRed()
         {
-            var battlePassCfgs = GetIsGoodToId(GetSeasonId());
-            var _rewardCfgs =new List<BattlePassCfg>( CommonDataManager.Tables.TblBattlePassCfg.GetGroup1ById(GetSeasonId()));
+            var seid = GetSeasonId();
+            if (seid == 0)
+            {
+                return false;
+            }
+
+            //var battlePassCfgs = GetIsGoodToId(GetSeasonId());
+            var list = CommonDataManager.Tables.TblBattlePassCfg.GetGroup1ById(seid);
+            if (list == null)
+            {
+                return false;
+            }
+
+            var _rewardCfgs =
+                new List<BattlePassCfg>(list);
             var isBuy = BattlePassTaskDataManager.Instance.GetIsBuy();
-            for (int level = 1; level < _rewardCfgs.Count; level++) {
+            for (int level = 1; level < _rewardCfgs.Count; level++)
+            {
                 var state = GetRewardState(level);
                 bool normalRewardGet = (state == 1);
                 if (normalRewardGet)
@@ -237,6 +261,7 @@ namespace GFGGame
                 if (superLevelRewardGet)
                     return true;
             }
+
             return false;
         }
     }

+ 25 - 6
GameClient/Assets/Game/HotUpdate/Data/SkillDataManager.cs

@@ -7,9 +7,12 @@ namespace GFGGame
     public class SkillDataManager : SingletonBase<SkillDataManager>
     {
         public Dictionary<int, Dictionary<int, int>> CardSkillData = new Dictionary<int, Dictionary<int, int>>();
-        public Dictionary<int, List<int>> LeagueSkillDatas = new Dictionary<int, List<int>>();//雅集技能
-        public Dictionary<int, Dictionary<int, int>> LeagueSkillScoreDatas = new Dictionary<int, Dictionary<int, int>>();//雅集技能增加属性
-        public Dictionary<int, int> LeagueSkillLvDatas = new Dictionary<int, int>();//雅集技能等级存储
+        public Dictionary<int, List<int>> LeagueSkillDatas = new Dictionary<int, List<int>>(); //雅集技能
+
+        public Dictionary<int, Dictionary<int, int>>
+            LeagueSkillScoreDatas = new Dictionary<int, Dictionary<int, int>>(); //雅集技能增加属性
+
+        public Dictionary<int, int> LeagueSkillLvDatas = new Dictionary<int, int>(); //雅集技能等级存储
 
         public void Clear()
         {
@@ -17,19 +20,21 @@ namespace GFGGame
             LeagueSkillDatas.Clear();
             LeagueSkillScoreDatas.Clear();
         }
+
         /*********************************************************词牌技能****************************************************/
         public void InitCardData(int cardId, List<int> skillIds, List<int> skillLvs)
         {
-
             if (!this.CardSkillData.ContainsKey(cardId))
             {
                 this.CardSkillData[cardId] = new Dictionary<int, int>();
             }
+
             for (int i = 0; i < skillIds.Count; i++)
             {
                 UpdateCardSkill(cardId, skillIds[i], skillLvs[i]);
             }
         }
+
         public void UpdateCardSkill(int cardId, int skillId, int skillLv)
         {
             this.CardSkillData[cardId][skillId] = skillLv;
@@ -48,17 +53,25 @@ namespace GFGGame
             {
                 lv = this.CardSkillData[cardId][skillId];
             }
+
             return lv;
         }
+
         public List<int> GetCardSkillLvs(int cardId)
         {
             List<int> skillLvs = new List<int>();
             List<PassivitySkillCfg> skillCfgs = CommonDataManager.Tables.TblPassivitySkillCfg.GetGroup1ByCardId(cardId);
 
+            if (skillCfgs == null)
+            {
+                return skillLvs;
+            }
+
             for (int i = 0; i < skillCfgs.Count; i++)
             {
                 skillLvs.Add(GetCardSkillLv(cardId, skillCfgs[i].SkillId));
             }
+
             return skillLvs;
         }
         /*************************************************************************************************************/
@@ -75,6 +88,7 @@ namespace GFGGame
                         {
                             LogUtil.LogEditor("");
                         }
+
                         if (!LeagueSkillDatas.ContainsKey(skillCfg.Type))
                         {
                             LeagueSkillDatas.Add(skillCfg.Type, new List<int>());
@@ -84,17 +98,22 @@ namespace GFGGame
                             LeagueSkillScoreDatas[skillCfg.Type][ConstDressUpScoreType.SCORE_XUE] = 0;
                             LeagueSkillScoreDatas[skillCfg.Type][ConstDressUpScoreType.SCORE_YUE] = 0;
                         }
+
                         if (LeagueSkillDatas[skillCfg.Type].IndexOf(skillIds[i]) < 0)
                         {
                             LeagueSkillDatas[skillCfg.Type].Add(skillIds[i]);
-                            LeagueSkillScoreDatas[skillCfg.Type][skillCfg.Score] = LeagueSkillScoreDatas[skillCfg.Type][skillCfg.Score] + skillCfg.Value;
+                            LeagueSkillScoreDatas[skillCfg.Type][skillCfg.Score] =
+                                LeagueSkillScoreDatas[skillCfg.Type][skillCfg.Score] + skillCfg.Value;
                         }
                     }
+
                     List<FightData> fightDatas = ArenaDataManager.Instance.DressupList;
                     for (int i = 0; i < fightDatas.Count; i++)
                     {
-                        fightDatas[i].leagueSkillScore = LeagueDataManager.Instance.GetAllSkillScore(fightDatas[i].scoreType);
+                        fightDatas[i].leagueSkillScore =
+                            LeagueDataManager.Instance.GetAllSkillScore(fightDatas[i].scoreType);
                     }
+
                     break;
             }
         }

+ 3 - 2
GameClient/Assets/Game/HotUpdate/ServerProxy/ActivitySProxy.cs

@@ -351,8 +351,9 @@ namespace GFGGame
         public static async ETTask<bool> ReqGetActivitySignInfos()
         {
             int activityId = ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityType.ShenDuChenYou);
-            if (activityId < 0 || CommonDataManager.Tables.TblActivitySignCfg.GetGroup1ByActivityId(activityId).Count <=
-                0)
+            var dd = CommonDataManager.Tables.TblActivitySignCfg.GetGroup1ByActivityId(activityId);
+            int ddCount = dd?.Count ?? 0;
+            if (activityId < 0 || ddCount <= 0)
                 return false;
 
             S2C_GetActivitySignInfos response = null;

+ 18 - 11
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -368,17 +368,20 @@ namespace GFGGame
                         List<PassivitySkillCfg> skillCfgs =
                             CommonDataManager.Tables.TblPassivitySkillCfg.GetGroup1ByCardId(attrProto.CardId);
 
-                        for (int j = 0; j < skillCfgs.Count; j++)
+                        if (skillCfgs != null)
                         {
-                            int skillId = skillCfgs[j].SkillId;
-                            int index = attrProto.SkillId.IndexOf(skillId);
-                            if (index < 0)
+                            for (int j = 0; j < skillCfgs.Count; j++)
                             {
-                                list[i].skillLvs.Add(1);
-                            }
-                            else
-                            {
-                                list[i].skillLvs.Add(attrProto.SkillLevel[index]);
+                                int skillId = skillCfgs[j].SkillId;
+                                int index = attrProto.SkillId.IndexOf(skillId);
+                                if (index < 0)
+                                {
+                                    list[i].skillLvs.Add(1);
+                                }
+                                else
+                                {
+                                    list[i].skillLvs.Add(attrProto.SkillLevel[index]);
+                                }
                             }
                         }
 
@@ -512,11 +515,15 @@ namespace GFGGame
                 CommonDataManager.Tables.TblPassivitySkillCfg.GetGroup1ByCardId(fightData.cardId);
 
             fightData.skillLvs.Clear();
-            for (int i = 0; i < skillCfgs.Count; i++)
+            if (skillCfgs != null)
             {
-                fightData.skillLvs.Add(robotCfg.SkillLvs);
+                for (int i = 0; i < skillCfgs.Count; i++)
+                {
+                    fightData.skillLvs.Add(robotCfg.SkillLvs);
+                }
             }
 
+
             fightData.showSuitId = robotProto.SuitList.Count <= index ? 0 : robotProto.SuitList[index]; //上赛季没有穿戴数据
 
             return fightData;

+ 55 - 7
GameClient/Assets/Game/HotUpdate/UGUI/UGUIManager.cs

@@ -23,14 +23,62 @@ namespace GFGGame
             {
                 await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Common"));
                 await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("CommonGame"));
-                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Main"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityAfternoonTea"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityAFuGift"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityDay7"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityGetYuanXiao"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityHuaRongDao"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityMain"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityThemeLuckyBox"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ActivityWanShiLi"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Arena"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Bag"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("BlindBox"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("BornLimit"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Card"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("CardSynthetic"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ClothingDecompose"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ClothingFoster"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ClothingShop"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ClothingSynthetic"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("ClothingUpgrade"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("CreateRole"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("DailyWelfare"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("DeleteAccount"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("DressUp"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("EnduringGiftBox"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Field"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("FieldGuide"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("FieldWork"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Friend"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Guide"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("InstanceZones"));
+                // await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Launcher"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("League"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Loading"));
                 await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Login"));
-                
-                // await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Login"));
-                // await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Login"));
-                // await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Login"));
-                // await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Login"));
-                
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("LuckyBox"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Mail"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Main"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("MatchingCompetition"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("MiniGame"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("NewYearLogin"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("NewYearRedEnvelope"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Notice"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("OpenServerActivity"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Poem"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("PopWindow"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("RoleInfo"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("RoleLvUp"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Share"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Store"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Studio"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Task"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("TimeTracing"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("Travel"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("TurnTable"));
+                await GFGUIPackage.AddPackageAsync(ResPathUtil.GetUIPackagePath("XiuFang"));
+
 
                 // 3. 初始化其他逻辑(确保资源已加载)
                 ViewManager.Init();

+ 2 - 0
GameClient/GameClient.sln.DotSettings.user

@@ -1,6 +1,7 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AActivator_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F3789ee403a53437cbb6b5d9ab6311f51573620_003F56_003F27c54aae_003FActivator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AActivator_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F695d1cc93cca45069c528c15c9fdd7493e2800_003F20_003F3a0a5fc0_003FActivator_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAssetDatabase_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8d4895b259be41298a685a0c9b42357576b400_003F9d_003Fa1138e9c_003FAssetDatabase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABuildResult_002Ecs_002Fl_003AC_0021_003FUsers_003Fadmin_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8d4895b259be41298a685a0c9b42357576b400_003Fa9_003Fbef924de_003FBuildResult_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEditorUtility_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8d4895b259be41298a685a0c9b42357576b400_003F3f_003Fa805acc1_003FEditorUtility_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFile_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F695d1cc93cca45069c528c15c9fdd7493e2800_003Fc3_003F83d8926e_003FFile_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@@ -20,4 +21,5 @@
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATask_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F3789ee403a53437cbb6b5d9ab6311f51573620_003Fa4_003F44ebb4e8_003FTask_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATask_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F695d1cc93cca45069c528c15c9fdd7493e2800_003Fba_003Fd47fe324_003FTask_00601_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVector3_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F683a2b31bf9142429c44f02c75dbc6c913ce00_003F1a_003F53ed0524_003FVector3_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWebSocket_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5a2009c85b134970925993880e2ecb2e29fa00_003Fc4_003F1c942964_003FWebSocket_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	</wpf:ResourceDictionary>