1717namespace GameFinder . Launcher . Heroic ;
1818
1919[ PublicAPI ]
20- public class HeroicGOGHandler : AHandler < GOGGame , GOGGameId >
20+ public class HeroicGOGHandler : AHandler < HeroicGOGGame , GOGGameId >
2121{
2222 private readonly IFileSystem _fileSystem ;
2323 private readonly ILogger _logger ;
@@ -39,13 +39,13 @@ public HeroicGOGHandler(IFileSystem fileSystem, ILogger logger)
3939 }
4040
4141 /// <inheritdoc/>
42- public override Func < GOGGame , GOGGameId > IdSelector { get ; } = static game => game . Id ;
42+ public override Func < HeroicGOGGame , GOGGameId > IdSelector { get ; } = static game => game . Id ;
4343
4444 /// <inheritdoc/>
4545 public override IEqualityComparer < GOGGameId > ? IdEqualityComparer => null ;
4646
4747 /// <inheritdoc/>
48- public override IEnumerable < OneOf < GOGGame , ErrorMessage > > FindAllGames ( )
48+ public override IEnumerable < OneOf < HeroicGOGGame , ErrorMessage > > FindAllGames ( )
4949 {
5050 var configDirectory = FindConfigDirectory ( _fileSystem )
5151 . FirstOrDefault ( path => path . DirectoryExists ( ) ) ;
@@ -72,7 +72,7 @@ public override IEnumerable<OneOf<GOGGame, ErrorMessage>> FindAllGames()
7272 }
7373
7474 [ RequiresUnreferencedCode ( "Calls System.Text.Json.JsonSerializer.Deserialize<TValue>(Stream, JsonSerializerOptions)" ) ]
75- internal IEnumerable < OneOf < GOGGame , ErrorMessage > > ParseInstalledJsonFile ( AbsolutePath path , AbsolutePath configPath )
75+ internal IEnumerable < OneOf < HeroicGOGGame , ErrorMessage > > ParseInstalledJsonFile ( AbsolutePath path , AbsolutePath configPath )
7676 {
7777 using var stream = path . Open ( FileMode . Open , FileAccess . Read , FileShare . Read ) ;
7878 var root = JsonSerializer . Deserialize < DTOs . Root > ( stream , JsonSerializerOptions ) ;
@@ -84,7 +84,7 @@ internal IEnumerable<OneOf<GOGGame, ErrorMessage>> ParseInstalledJsonFile(Absolu
8484
8585 foreach ( var installed in root . Installed )
8686 {
87- OneOf < GOGGame , ErrorMessage > res ;
87+ OneOf < HeroicGOGGame , ErrorMessage > res ;
8888 try
8989 {
9090 res = Parse ( installed , configPath , path . FileSystem ) ;
@@ -99,7 +99,7 @@ internal IEnumerable<OneOf<GOGGame, ErrorMessage>> ParseInstalledJsonFile(Absolu
9999 }
100100
101101 [ RequiresUnreferencedCode ( "Calls GameFinder.Launcher.Heroic.HeroicGOGHandler.GetWineData(Installed, AbsolutePath, Int64)" ) ]
102- internal OneOf < GOGGame , ErrorMessage > Parse (
102+ internal OneOf < HeroicGOGGame , ErrorMessage > Parse (
103103 DTOs . Installed installed ,
104104 AbsolutePath configPath ,
105105 IFileSystem fileSystem )
@@ -136,8 +136,17 @@ internal OneOf<GOGGame, ErrorMessage> Parse(
136136 }
137137 }
138138
139+ var installedDLCs = new List < GOGGameId > ( ) ;
140+ foreach ( var sRawId in installed . InstalledDLCs )
141+ {
142+ if ( long . TryParse ( sRawId , NumberStyles . Integer , CultureInfo . InvariantCulture , out var rawId ) )
143+ {
144+ installedDLCs . Add ( GOGGameId . From ( rawId ) ) ;
145+ }
146+ }
147+
139148 var path = fileSystem . FromUnsanitizedFullPath ( installed . InstallPath ) ;
140- return new HeroicGOGGame ( GOGGameId . From ( id ) , installed . AppName , path , buildId , wineData , installedPlatform ) ;
149+ return new HeroicGOGGame ( GOGGameId . From ( id ) , installed . AppName , path , buildId , wineData , installedPlatform , installedDLCs ) ;
141150 }
142151
143152 [ RequiresUnreferencedCode ( "Calls System.Text.Json.JsonSerializer.Deserialize<TValue>(JsonSerializerOptions)" ) ]
0 commit comments