@@ -63,62 +63,71 @@ public static void SyncEntries(this ExPlayer player)
6363 var list = ListPool < ServerSpecificSettingBase > . Shared . Rent ( ) ;
6464 var headers = ListPool < string > . Shared . Rent ( ) ;
6565
66- foreach ( var menuEntry in player . settingsMenuLookup )
66+ if ( player . settingsMenuLookup ? . Count > 0 )
6767 {
68- if ( menuEntry . Value . IsHidden )
69- continue ;
70-
71- if ( ! string . IsNullOrWhiteSpace ( menuEntry . Value . Header ) && ! headers . Contains ( menuEntry . Value . CustomId ) )
68+ foreach ( var menuEntry in player . settingsMenuLookup )
7269 {
73- headers . Add ( menuEntry . Value . CustomId ) ;
70+ if ( menuEntry . Value . IsHidden )
71+ continue ;
7472
75- list . Add ( new SSGroupHeader ( menuEntry . Value . Header ,
76- menuEntry . Value . HeaderReducedPadding , menuEntry . Value . HeaderHint ) ) ;
77- }
73+ if ( ! string . IsNullOrWhiteSpace ( menuEntry . Value . Header ) && ! headers . Contains ( menuEntry . Value . CustomId ) )
74+ {
75+ headers . Add ( menuEntry . Value . CustomId ) ;
7876
79- foreach ( var menuSetting in menuEntry . Value . Entries )
80- {
81- if ( menuSetting ? . Base == null )
82- continue ;
77+ list . Add ( new SSGroupHeader ( menuEntry . Value . Header ,
78+ menuEntry . Value . HeaderReducedPadding , menuEntry . Value . HeaderHint ) ) ;
79+ }
8380
84- if ( ! menuSetting . Player )
85- continue ;
81+ foreach ( var menuSetting in menuEntry . Value . Entries )
82+ {
83+ if ( menuSetting ? . Base == null )
84+ continue ;
8685
87- if ( menuSetting . IsHidden )
88- continue ;
86+ if ( ! menuSetting . Player )
87+ continue ;
88+
89+ if ( menuSetting . IsHidden )
90+ continue ;
8991
90- list . Add ( menuSetting . Base ) ;
92+ list . Add ( menuSetting . Base ) ;
93+ }
9194 }
9295 }
9396
94- foreach ( var settingsEntry in player . settingsIdLookup )
97+ if ( player . settingsIdLookup ? . Count > 0 )
9598 {
96- if ( settingsEntry . Value ? . Base == null )
97- continue ;
99+ foreach ( var settingsEntry in player . settingsIdLookup )
100+ {
101+ if ( settingsEntry . Value ? . Base == null )
102+ continue ;
98103
99- if ( ! settingsEntry . Value . Player )
100- continue ;
104+ if ( ! settingsEntry . Value . Player )
105+ continue ;
101106
102- if ( settingsEntry . Value . IsHidden )
103- continue ;
107+ if ( settingsEntry . Value . IsHidden )
108+ continue ;
104109
105- if ( settingsEntry . Value . Menu != null )
106- continue ;
110+ if ( settingsEntry . Value . Menu != null )
111+ continue ;
107112
108- list . Add ( settingsEntry . Value . Base ) ;
113+ list . Add ( settingsEntry . Value . Base ) ;
114+ }
109115 }
110116
111117 var playerSettings = DictionaryPool < Assembly , ServerSpecificSettingBase [ ] > . Shared . Rent ( GlobalSettingsByAssembly ) ; // todo Use SendOnJoinFilter
112118
113- if ( player . settingsByAssembly != null )
119+ if ( player . settingsByAssembly ? . Count > 0 )
114120 playerSettings . AddRange ( player . settingsByAssembly ) ;
115121
116122 foreach ( var sssByAssemblyEntry in playerSettings )
117123 {
118124 var pluginAssembly = sssByAssemblyEntry . Key ;
119125 var collection = sssByAssemblyEntry . Value ;
120126
121- if ( collection . First ( ) is not SSGroupHeader )
127+ if ( collection ? . Length < 1 )
128+ continue ;
129+
130+ if ( collection [ 0 ] is not SSGroupHeader )
122131 {
123132 var pluginName = PluginLoader . Plugins . TryGetFirst ( o => o . Value . Equals ( pluginAssembly ) , out var result )
124133 ? result . Key . Name
@@ -137,6 +146,7 @@ public static void SyncEntries(this ExPlayer player)
137146 player . Send ( new SSSEntriesPack ( ListPool < ServerSpecificSettingBase > . Shared . ToArrayReturn ( list ) , Version ) ) ;
138147
139148 ListPool < string > . Shared . Return ( headers ) ;
149+ DictionaryPool < Assembly , ServerSpecificSettingBase [ ] > . Shared . Return ( playerSettings ) ;
140150 }
141151
142152 /// <summary>
@@ -898,7 +908,7 @@ internal static void OnResponseMessage(NetworkConnection connection, SSSClientRe
898908 entry . Menu . OnTextInput ( textArea ) ;
899909 break ;
900910
901- case SettingsKeyBind keyBind :
911+ case SettingsKeyBind keyBind when keyBind . IsPressed :
902912 entry . Menu . OnKeyBindPressed ( keyBind ) ;
903913 break ;
904914
0 commit comments