using System; using System.IO; using System.Threading.Tasks; using NitroxModel.Discovery.Models; using NitroxModel.Helper; using NitroxModel.Platforms.OS.Shared; using NitroxModel.Platforms.Store.Interfaces; namespace NitroxModel.Platforms.Store; public sealed class EpicGames : IGamePlatform { public string Name => "Epic Games Store"; public Platform Platform => Platform.EPIC; public bool OwnsGame(string gameDirectory) { string path = Path.Combine(gameDirectory, ".egstore"); return Directory.Exists(path) && Directory.GetFiles(path).Length > 1; } public async Task StartPlatformAsync() { await Task.CompletedTask; // Suppresses async-without-await warning - can be removed. throw new NotImplementedException(); // Not necessary to implement unless EGS gets a game SDK and respective game integrates it. } public string GetExeFile() { throw new NotImplementedException(); } public async Task StartGameAsync(string pathToGameExe, string launchArguments) { // Normally should call StartPlatformAsync first. But Subnautica will start without EGS. return await Task.FromResult( ProcessEx.Start( pathToGameExe, [(NitroxUser.LAUNCHER_PATH_ENV_KEY, NitroxUser.LauncherPath)], Path.GetDirectoryName(pathToGameExe), $"-EpicPortal {launchArguments}") ); } }