@@ -129,6 +129,36 @@ public async Task LoadMods()
129
129
130
130
ModsListView . ItemsSource = ModList ;
131
131
132
+ try
133
+ {
134
+ var manualCategories = new string [ ] { "Core" } ;
135
+
136
+ ModList . Sort ( ( a , b ) =>
137
+ {
138
+ foreach ( var category in manualCategories )
139
+ {
140
+ if ( a . Category == category && b . Category == category ) return 0 ;
141
+ if ( a . Category == category ) return - 1 ;
142
+ if ( b . Category == category ) return 1 ;
143
+ }
144
+
145
+ var categoryCompare = a . Category . CompareTo ( b . Category ) ;
146
+ if ( categoryCompare != 0 ) return categoryCompare ;
147
+
148
+ var aRequired = ! a . IsEnabled ;
149
+ var bRequired = ! b . IsEnabled ;
150
+
151
+ if ( a . ModRequired && ! b . ModRequired ) return - 1 ;
152
+ if ( b . ModRequired && ! a . ModRequired ) return 1 ;
153
+
154
+ return a . ModName . CompareTo ( b . ModName ) ;
155
+ } ) ;
156
+ }
157
+ catch ( Exception ex )
158
+ {
159
+ Console . WriteLine ( ex . ToString ( ) ) ;
160
+ }
161
+
132
162
view = ( CollectionView ) CollectionViewSource . GetDefaultView ( ModsListView . ItemsSource ) ;
133
163
PropertyGroupDescription groupDescription = new PropertyGroupDescription ( "Category" ) ;
134
164
view . GroupDescriptions . Add ( groupDescription ) ;
@@ -306,6 +336,7 @@ public async Task PopulateModsList()
306
336
ModName = mod . name ,
307
337
ModVersion = mod . version ,
308
338
ModDescription = mod . description . Replace ( "\r \n " , " " ) . Replace ( "\n " , " " ) ,
339
+ ModRequired = mod . required ,
309
340
ModInfo = mod ,
310
341
Category = mod . category
311
342
} ;
@@ -603,6 +634,7 @@ public class ModListItem
603
634
public string ModName { get ; set ; }
604
635
public string ModVersion { get ; set ; }
605
636
public string ModDescription { get ; set ; }
637
+ public bool ModRequired { get ; set ; }
606
638
public bool PreviousState { get ; set ; }
607
639
608
640
public bool IsEnabled { get ; set ; }
0 commit comments