From bbfaa93332a0e8c4f777aed4203912b957cf5282 Mon Sep 17 00:00:00 2001 From: Eve <85962933+obvEve@users.noreply.github.com> Date: Tue, 28 Apr 2026 21:54:23 +0200 Subject: [PATCH 1/5] Optimize: Avoid GroupBy when unnessary --- .../Features/UserSettings/CustomSetting.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/SecretAPI/Features/UserSettings/CustomSetting.cs b/SecretAPI/Features/UserSettings/CustomSetting.cs index 556e9d7..c06972d 100644 --- a/SecretAPI/Features/UserSettings/CustomSetting.cs +++ b/SecretAPI/Features/UserSettings/CustomSetting.cs @@ -300,20 +300,26 @@ public static void SendSettingsToPlayer(Player player, int? version = null) playerSettings.Add(playerSpecific); } - List ordered = ListPool.Shared.Rent(); - foreach (IGrouping grouping in playerSettings.GroupBy(static setting => setting.Header)) + if (playerSettings.Count != 0) { - ordered.Add(grouping.Key.Base); - ordered.AddRange(grouping.Select(static setting => setting.Base)); - } + List ordered = ListPool.Shared.Rent(); + foreach (IGrouping grouping in playerSettings.GroupBy(static setting => setting.Header)) + { + ordered.Add(grouping.Key.Base); + ordered.AddRange(grouping.Select(static setting => setting.Base)); + } - if (ServerSpecificSettingsSync.DefinedSettings != null) ordered.AddRange(ServerSpecificSettingsSync.DefinedSettings); - ServerSpecificSettingsSync.SendToPlayer(player.ReferenceHub, ordered.ToArray(), version); + ServerSpecificSettingsSync.SendToPlayer(player.ReferenceHub, ordered.ToArray(), version); + ListPool.Shared.Return(ordered); + } + else + { + ServerSpecificSettingsSync.SendToPlayer(player.ReferenceHub, ServerSpecificSettingsSync.DefinedSettings, version); + } ListPool.Shared.Return(playerSettings); - ListPool.Shared.Return(ordered); } /// From 8d986a36391b27ad464c6ee0f715affbad11b2d9 Mon Sep 17 00:00:00 2001 From: Eve <85962933+obvEve@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:26:56 +0200 Subject: [PATCH 2/5] optimize: Remove unncessary harmony patch --- SecretAPI/Features/Effects/CustomPlayerEffect.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/SecretAPI/Features/Effects/CustomPlayerEffect.cs b/SecretAPI/Features/Effects/CustomPlayerEffect.cs index 0e63469..5b77bec 100644 --- a/SecretAPI/Features/Effects/CustomPlayerEffect.cs +++ b/SecretAPI/Features/Effects/CustomPlayerEffect.cs @@ -36,7 +36,6 @@ public abstract class CustomPlayerEffect : StatusEffectBase [CallOnLoad] internal static void Initialize() { - SecretApi.Harmony.PatchCategory(nameof(CustomPlayerEffect), SecretApi.Assembly); EffectsToRegister.Add(typeof(Energized)); EffectsToRegister.Add(typeof(Depleted)); From cceebc3a4b6a7996deb5d9c00054ec97eacd8493 Mon Sep 17 00:00:00 2001 From: Eve <85962933+obvEve@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:29:39 +0200 Subject: [PATCH 3/5] fix: IsCurrentlyAccessible being set before PersonalizeSetting() --- SecretAPI/Features/UserSettings/CustomSetting.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SecretAPI/Features/UserSettings/CustomSetting.cs b/SecretAPI/Features/UserSettings/CustomSetting.cs index 556e9d7..93eaaf7 100644 --- a/SecretAPI/Features/UserSettings/CustomSetting.cs +++ b/SecretAPI/Features/UserSettings/CustomSetting.cs @@ -295,8 +295,8 @@ public static void SendSettingsToPlayer(Player player, int? version = null) } CustomSetting playerSpecific = EnsurePlayerSpecificSetting(player, setting); - setting.IsCurrentlyAccessible = true; playerSpecific.PersonalizeSetting(); + setting.IsCurrentlyAccessible = true; playerSettings.Add(playerSpecific); } From 18abc58d63bc0db110f89bb1258f78c8763658aa Mon Sep 17 00:00:00 2001 From: Evelyn <85962933+obvEve@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:41:49 +0200 Subject: [PATCH 4/5] Bump: Version --- Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 71acc73..077926f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@  enable - 3.1.1 + 3.1.2 @@ -22,4 +22,4 @@ ../stylecop.ruleset True - \ No newline at end of file + From 5fc43e97673ddfad1519ca011a013ae2060817e6 Mon Sep 17 00:00:00 2001 From: Eve <85962933+obvEve@users.noreply.github.com> Date: Wed, 29 Apr 2026 21:49:40 +0200 Subject: [PATCH 5/5] Swap to .slnx --- SecretAPI.sln | 22 ---------------------- SecretAPI.slnx | 4 ++++ 2 files changed, 4 insertions(+), 22 deletions(-) delete mode 100644 SecretAPI.sln create mode 100644 SecretAPI.slnx diff --git a/SecretAPI.sln b/SecretAPI.sln deleted file mode 100644 index 4ed659a..0000000 --- a/SecretAPI.sln +++ /dev/null @@ -1,22 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecretAPI", "SecretAPI\SecretAPI.csproj", "{7B4B7EEF-17DE-40AD-B3F2-53117CAA5B9C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecretAPI.Examples", "SecretAPI.Examples\SecretAPI.Examples.csproj", "{0064C982-5FE1-4B65-82F9-2EEF85651188}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7B4B7EEF-17DE-40AD-B3F2-53117CAA5B9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7B4B7EEF-17DE-40AD-B3F2-53117CAA5B9C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B4B7EEF-17DE-40AD-B3F2-53117CAA5B9C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7B4B7EEF-17DE-40AD-B3F2-53117CAA5B9C}.Release|Any CPU.Build.0 = Release|Any CPU - {0064C982-5FE1-4B65-82F9-2EEF85651188}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0064C982-5FE1-4B65-82F9-2EEF85651188}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0064C982-5FE1-4B65-82F9-2EEF85651188}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0064C982-5FE1-4B65-82F9-2EEF85651188}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/SecretAPI.slnx b/SecretAPI.slnx new file mode 100644 index 0000000..99c20fd --- /dev/null +++ b/SecretAPI.slnx @@ -0,0 +1,4 @@ + + + +