3
3
using Common . Enums ;
4
4
using Common . Enums . Versions ;
5
5
using Common . Interfaces ;
6
+ using CommunityToolkit . Diagnostics ;
6
7
7
8
namespace Addons . Providers ;
8
9
@@ -11,15 +12,22 @@ public static class GrpInfoProvider
11
12
/// <summary>
12
13
/// Get list of addons from grpinfo file
13
14
/// </summary>
14
- /// <param name="foldersGrpInfos">Folders to search for grpinfo and grps</param>
15
- public static List < IAddon > GetAddonsFromGrpInfo ( List < string > foldersGrpInfos )
15
+ public static List < IAddon > ? GetAddonsFromGrpInfo ( string campaignsFolder )
16
16
{
17
17
List < IAddon > newAddons = [ ] ;
18
18
19
- foreach ( var folder in foldersGrpInfos )
19
+ var grpInfos = Directory . GetFiles ( campaignsFolder , "*.grpinfo" , SearchOption . AllDirectories ) ;
20
+
21
+ if ( grpInfos . Length == 0 )
20
22
{
21
- var grpInfo = Path . Combine ( folder , "addons.grpinfo" ) ;
22
- var grps = Directory . GetFiles ( folder , "*.grp" ) ;
23
+ return null ;
24
+ }
25
+
26
+ foreach ( var grpInfo in grpInfos )
27
+ {
28
+ var grpInfoFolder = Path . GetDirectoryName ( grpInfo ) ?? ThrowHelper . ThrowInvalidOperationException < string > ( ) ;
29
+
30
+ var grps = Directory . GetFiles ( grpInfoFolder , "*.grp" , SearchOption . TopDirectoryOnly ) ;
23
31
24
32
if ( grps . Length == 0 )
25
33
{
@@ -33,9 +41,9 @@ public static List<IAddon> GetAddonsFromGrpInfo(List<string> foldersGrpInfos)
33
41
{
34
42
var fileSize = new FileInfo ( grp ) . Length ;
35
43
36
- var addon = addons . Find ( x => x . Size == fileSize ) ;
44
+ var addon = addons . FirstOrDefault ( x => x . Size == fileSize ) ;
37
45
38
- if ( addon . Name is null )
46
+ if ( addon . Equals ( default ( GrpInfo ) ) || addon . Name is null )
39
47
{
40
48
continue ;
41
49
}
0 commit comments