@@ -63,6 +63,34 @@ 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 )
67+ {
68+ if ( menuEntry . Value . IsHidden )
69+ continue ;
70+
71+ if ( ! string . IsNullOrWhiteSpace ( menuEntry . Value . Header ) && ! headers . Contains ( menuEntry . Value . CustomId ) )
72+ {
73+ headers . Add ( menuEntry . Value . CustomId ) ;
74+
75+ list . Add ( new SSGroupHeader ( menuEntry . Value . Header ,
76+ menuEntry . Value . HeaderReducedPadding , menuEntry . Value . HeaderHint ) ) ;
77+ }
78+
79+ foreach ( var menuSetting in menuEntry . Value . Entries )
80+ {
81+ if ( menuSetting ? . Base == null )
82+ continue ;
83+
84+ if ( ! menuSetting . Player )
85+ continue ;
86+
87+ if ( menuSetting . IsHidden )
88+ continue ;
89+
90+ list . Add ( menuSetting . Base ) ;
91+ }
92+ }
93+
6694 foreach ( var settingsEntry in player . settingsIdLookup )
6795 {
6896 if ( settingsEntry . Value ? . Base == null )
@@ -75,18 +103,7 @@ public static void SyncEntries(this ExPlayer player)
75103 continue ;
76104
77105 if ( settingsEntry . Value . Menu != null )
78- {
79- if ( settingsEntry . Value . Menu . IsHidden )
80- continue ;
81-
82- if ( ! string . IsNullOrWhiteSpace ( settingsEntry . Value . Menu . Header ) && ! headers . Contains ( settingsEntry . Value . Menu . CustomId ) )
83- {
84- headers . Add ( settingsEntry . Value . Menu . CustomId ) ;
85-
86- list . Add ( new SSGroupHeader ( settingsEntry . Value . Menu . Header ,
87- settingsEntry . Value . Menu . HeaderReducedPadding , settingsEntry . Value . Menu . HeaderHint ) ) ;
88- }
89- }
106+ continue ;
90107
91108 list . Add ( settingsEntry . Value . Base ) ;
92109 }
@@ -494,6 +511,7 @@ public static bool AddMenu(this ExPlayer player, SettingsMenu menu)
494511 menu . Entries = ListPool < SettingsEntry > . Shared . ToArrayReturn ( entries ) ;
495512
496513 player . settingsMenuLookup . Add ( menu . CustomId , menu ) ;
514+ player . settingsMenuLookup . Order ( true , m => m . Value . Priority ) ;
497515
498516 if ( ! string . IsNullOrEmpty ( menu . Header ) )
499517 {
@@ -776,6 +794,9 @@ private static void OnPlayerVerified(ExPlayer player)
776794 }
777795 }
778796
797+ if ( player . settingsMenuLookup . Count > 0 )
798+ player . settingsMenuLookup . Order ( true , m => m . Value . Priority ) ;
799+
779800 if ( player . settingsIdLookup . Count > 0 )
780801 SyncEntries ( player ) ;
781802 }
0 commit comments