/// <summary> /// Tries adding a game to the collection with the provided executable path /// </summary> /// <param name="exePath"></param> /// <returns></returns> public UserGameInfo TryAddGame(string exePath) { string lower = exePath.ToLower(); string dir = Path.GetDirectoryName(exePath); var possibilities = GetAllHandlers(exePath); foreach (GameHandlerMetadata metadata in possibilities) { // check if the Context matches string[] context = metadata.ExeContext; bool notAdd = false; if (context != null) { for (int j = 0; j < context.Length; j++) { string con = Path.Combine(dir, context[j]); if (!File.Exists(con) && !Directory.Exists(con)) { notAdd = true; break; } } } if (notAdd || User.Games.Any(c => c.ExePath.ToLower() == lower)) { continue; } Log.WriteLine($"Found game: {metadata.Title}, on path: {exePath}"); UserGameInfo uinfo = new UserGameInfo(); uinfo.InitializeDefault(metadata, exePath); User.Games.Add(uinfo); User.Save(); return(uinfo); } return(null); }
/// <summary> /// Tries adding a game to the collection with the provided IGameInfo /// </summary> /// <param name="exePath"></param> /// <returns></returns> public UserGameInfo TryAddGame(string exePath, GameHandlerMetadata metadata) { string lower = exePath.ToLower(); string dir = Path.GetDirectoryName(exePath); if (User.Games.Any(c => c.ExePath.ToLower() == lower)) { return(null); } Log.WriteLine($"Added game: {metadata.Title}, on path: {exePath}"); UserGameInfo uinfo = new UserGameInfo(); uinfo.InitializeDefault(metadata, exePath); User.Games.Add(uinfo); User.Save(); return(uinfo); }