Merge pull request #1537 from erri120/finding-games-no-path

Fixes for finding Games
This commit is contained in:
Timothy Baldridge
2021-07-17 07:19:17 -07:00
committed by GitHub
3 changed files with 30 additions and 17 deletions

View File

@ -14,16 +14,15 @@ namespace Wabbajack.Common.StoreHandlers
{ {
public class StoreHandler public class StoreHandler
{ {
private static readonly StoreHandlerLogger Logger = new();
private static readonly Lazy<StoreHandler> _instance = new(() => new StoreHandler(), isThreadSafe: true); private static readonly Lazy<StoreHandler> _instance = new(() => new StoreHandler(), isThreadSafe: true);
public static StoreHandler Instance => _instance.Value; public static StoreHandler Instance => _instance.Value;
private static readonly Lazy<SteamHandler> SteamHandler = new(() => new SteamHandler(Logger)); private static readonly Lazy<SteamHandler> SteamHandler = new(() => new SteamHandler(new StoreHandlerLogger("Steam")));
private static readonly Lazy<GOGHandler> GogHandler = new(() => new GOGHandler(Logger)); private static readonly Lazy<GOGHandler> GogHandler = new(() => new GOGHandler(new StoreHandlerLogger("GOG")));
private static readonly Lazy<BethNetHandler> BethNetHandler = new(() => new BethNetHandler(Logger)); private static readonly Lazy<BethNetHandler> BethNetHandler = new(() => new BethNetHandler(new StoreHandlerLogger("BethNet")));
private static readonly Lazy<EGSHandler> EpicGameStoreHandler = new(() => new EGSHandler(Logger)); private static readonly Lazy<EGSHandler> EpicGameStoreHandler = new(() => new EGSHandler(new StoreHandlerLogger("EGS")));
private static readonly Lazy<OriginHandler> OriginHandler = new(() => new OriginHandler(true, true, Logger)); private static readonly Lazy<OriginHandler> OriginHandler = new(() => new OriginHandler(true, true, new StoreHandlerLogger("Origin")));
private readonly List<AStoreGame> _storeGames; private readonly List<AStoreGame> _storeGames;
public Dictionary<Game, AStoreGame> Games = new(); public Dictionary<Game, AStoreGame> Games = new();
@ -40,7 +39,7 @@ namespace Wabbajack.Common.StoreHandlers
foreach (var game in handler.Games) foreach (var game in handler.Games)
{ {
Utils.Log($"{handler.StoreType}: Found game {game}"); Utils.Log($"{handler.StoreType}: Found game {game} at \"{game.Path}\"");
_storeGames.Add(game); _storeGames.Add(game);
} }
} }
@ -86,9 +85,10 @@ namespace Wabbajack.Common.StoreHandlers
public AbsolutePath? TryGetGamePath(Game game) public AbsolutePath? TryGetGamePath(Game game)
{ {
if (Games.TryGetValue(game, out var storeGame)) if (!Games.TryGetValue(game, out var storeGame))
return (AbsolutePath) storeGame.Path; return null;
return null;
return (AbsolutePath)storeGame.Path;
} }
public static void Warmup() public static void Warmup()
@ -99,9 +99,16 @@ namespace Wabbajack.Common.StoreHandlers
internal class StoreHandlerLogger : ILogger internal class StoreHandlerLogger : ILogger
{ {
private readonly string _name;
public StoreHandlerLogger(string name)
{
_name = name;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{ {
Utils.Log(formatter(state, exception)); Utils.Log($"{_name}: {formatter(state, exception)}");
} }
public bool IsEnabled(LogLevel logLevel) => true; public bool IsEnabled(LogLevel logLevel) => true;

View File

@ -48,11 +48,11 @@
<Folder Include="Properties\" /> <Folder Include="Properties\" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="GameFinder.StoreHandlers.BethNet" Version="1.6.1" /> <PackageReference Include="GameFinder.StoreHandlers.BethNet" Version="1.6.2" />
<PackageReference Include="GameFinder.StoreHandlers.EGS" Version="1.6.1" /> <PackageReference Include="GameFinder.StoreHandlers.EGS" Version="1.6.2" />
<PackageReference Include="GameFinder.StoreHandlers.GOG" Version="1.6.1" /> <PackageReference Include="GameFinder.StoreHandlers.GOG" Version="1.6.2" />
<PackageReference Include="GameFinder.StoreHandlers.Steam" Version="1.6.1" /> <PackageReference Include="GameFinder.StoreHandlers.Steam" Version="1.6.2" />
<PackageReference Include="GameFinder.StoreHandlers.Origin" Version="1.6.1" /> <PackageReference Include="GameFinder.StoreHandlers.Origin" Version="1.6.2" />
<PackageReference Include="Genbox.AlphaFS" Version="2.2.2.1" /> <PackageReference Include="Genbox.AlphaFS" Version="2.2.2.1" />
<PackageReference Include="HtmlAgilityPack" Version="1.11.34" /> <PackageReference Include="HtmlAgilityPack" Version="1.11.34" />
<PackageReference Include="ini-parser-netstandard" Version="2.5.2" /> <PackageReference Include="ini-parser-netstandard" Version="2.5.2" />

View File

@ -65,6 +65,12 @@ namespace Wabbajack.Lib
if (GameFolder == null) if (GameFolder == null)
GameFolder = Game.TryGetGameLocation(); GameFolder = Game.TryGetGameLocation();
if (GameFolder is { Exists: false })
{
Utils.Error($"Located game {Game.HumanFriendlyGameName} at \"{GameFolder.Value}\" but the folder does not exist!");
return false;
}
if (GameFolder == null) if (GameFolder == null)
{ {
var otherGame = Game.CommonlyConfusedWith.Where(g => g.MetaData().IsInstalled).Select(g => g.MetaData()).FirstOrDefault(); var otherGame = Game.CommonlyConfusedWith.Where(g => g.MetaData().IsInstalled).Select(g => g.MetaData()).FirstOrDefault();