private RA_Games GetGameList(int consoleID, string PluginUserDataPath) { string Target = "API_GetGameList.php"; string url = string.Format(BaseUrl + Target + @"?z={0}&y={1}&i={2}", User, Key, consoleID); RA_Games resultObj = new RA_Games(); string fileConsoles = PluginUserDataPath + "\\RA_Games_" + consoleID + ".json"; if (File.Exists(fileConsoles)) { resultObj = JsonConvert.DeserializeObject <RA_Games>(File.ReadAllText(fileConsoles)); return(resultObj); } string ResultWeb = string.Empty; try { ResultWeb = Web.DownloadStringData(url).GetAwaiter().GetResult(); } catch (WebException ex) { Common.LogError(ex, "SuccessStory", $"Failed to load from {url}"); } try { resultObj.ListGames = JsonConvert.DeserializeObject <List <RA_Game> >(ResultWeb); File.WriteAllText(fileConsoles, JsonConvert.SerializeObject(resultObj)); } catch (Exception ex) { Common.LogError(ex, "SuccessStory", $"Failed to parse {ResultWeb}"); } return(resultObj); }
private int GetGameIdByName(Game game, RA_Consoles ra_Consoles) { string GameName = game.Name; // Search id console for the game string PlatformName = game.Platform.Name; int consoleID = 0; var FindConsole = ra_Consoles.ListConsoles.Find(x => PlatformName.ToLower().Contains(x.Name.ToLower())); if (FindConsole != null) { consoleID = FindConsole.ID; } if (consoleID != 0) { foreach (RA_Console ra_Console in ra_Consoles.ListConsoles) { string NameConsole = ra_Console.Name.ToLower(); if (NameConsole == "snes") { NameConsole = "super nintendo"; } if (NameConsole == "nes") { NameConsole = "nintendo"; } if (NameConsole == "mega drive") { NameConsole = "sega genesis"; } if (PlatformName.ToLower().IndexOf(NameConsole) > -1) { consoleID = ra_Console.ID; break; } } } // Search game id int gameID = 0; if (consoleID != 0) { RA_Games ra_Games = GetGameList(consoleID, _PluginUserDataPath); ra_Games.ListGames.Sort((x, y) => (y.Title).CompareTo(x.Title)); foreach (RA_Game ra_Game in ra_Games.ListGames) { string Title = ra_Game.Title.Trim().ToLower(); if (GameName.Trim().ToLower() == Title && gameID == 0) { logger.Info($"SuccessStory - Find for {GameName.Trim().ToLower()} / {Title} with {PlatformName} in {consoleID}"); gameID = ra_Game.ID; break; } string[] TitleSplits = Title.Split('|'); if (TitleSplits.Length > 1) { foreach (string TitleSplit in TitleSplits) { if (GameName.Trim().ToLower() == TitleSplit.Trim() && gameID == 0) { logger.Info($"SuccessStory - Find for {GameName.Trim().ToLower()} / {TitleSplit.Trim()} with {PlatformName} in {consoleID}"); gameID = ra_Game.ID; break; } } } TitleSplits = Title.Split('-'); if (TitleSplits.Length > 1) { foreach (string TitleSplit in TitleSplits) { if (GameName.Trim().ToLower() == TitleSplit.Trim() && gameID == 0) { logger.Info($"SuccessStory - Find for {GameName.Trim().ToLower()} / {TitleSplit.Trim()} with {PlatformName} in {consoleID}"); gameID = ra_Game.ID; break; } } } } } else { logger.Warn($"SuccessStory - No console find for {GameName} with {PlatformName}"); } if (gameID == 0) { logger.Warn($"SuccessStory - No game find for {GameName} with {PlatformName} in {consoleID}"); } return(gameID); }
public GameAchievements GetAchievements(IPlayniteAPI PlayniteApi, Guid Id, string PluginUserDataPath) { List <Achievements> Achievements = new List <Achievements>(); Game game = PlayniteApi.Database.Games.Get(Id); string GameName = game.Name; string ClientId = game.PlayAction.EmulatorId.ToString(); bool HaveAchivements = false; int Total = 0; int Unlocked = 0; int Locked = 0; GameAchievements Result = new GameAchievements { Name = GameName, HaveAchivements = HaveAchivements, IsEmulators = true, Total = Total, Unlocked = Unlocked, Locked = Locked, Progression = 0, Achievements = Achievements }; if (User == "" || Key == "") { logger.Error($"SuccessStory - No RetroAchievement configuration."); AchievementsDatabase.ListErrors.Add($"Error on RetroAchievement: no RetroAchievement configuration in settings menu of plugin."); return(null); } // Load list console RA_Consoles ra_Consoles = GetConsoleIDs(PluginUserDataPath); ra_Consoles.ListConsoles.Sort((x, y) => (y.Name).CompareTo(x.Name)); // Search id console for the game string PlatformName = game.Platform.Name; int consoleID = 0; foreach (RA_Console ra_Console in ra_Consoles.ListConsoles) { string NameConsole = ra_Console.Name.ToLower(); if (NameConsole == "snes") { NameConsole = "super nintendo"; } if (NameConsole == "nes") { NameConsole = "nintendo"; } if (NameConsole == "mega drive") { NameConsole = "sega genesis"; } if (PlatformName.ToLower().IndexOf(NameConsole) > -1) { consoleID = ra_Console.ID; break; } } // Search game id int gameID = 0; if (consoleID != 0) { RA_Games ra_Games = GetGameList(consoleID, PluginUserDataPath); ra_Games.ListGames.Sort((x, y) => (y.Title).CompareTo(x.Title)); foreach (RA_Game ra_Game in ra_Games.ListGames) { string Title = ra_Game.Title.Trim().ToLower(); //logger.Debug($"SuccessStory - {GameName.Trim().ToLower()} / {Title} / {gameID}"); if (GameName.Trim().ToLower() == Title && gameID == 0) { logger.Info($"SuccessStory - Find for {GameName.Trim().ToLower()} / {Title} with {PlatformName} in {consoleID}"); gameID = ra_Game.ID; break; } string[] TitleSplits = Title.Split('|'); if (TitleSplits.Length > 1) { foreach (string TitleSplit in TitleSplits) { //logger.Debug($"SuccessStory - {GameName.Trim().ToLower()} / {TitleSplit.Trim()} / {gameID}"); if (GameName.Trim().ToLower() == TitleSplit.Trim() && gameID == 0) { logger.Info($"SuccessStory - Find for {GameName.Trim().ToLower()} / {TitleSplit.Trim()} with {PlatformName} in {consoleID}"); gameID = ra_Game.ID; break; } } } TitleSplits = Title.Split('-'); if (TitleSplits.Length > 1) { foreach (string TitleSplit in TitleSplits) { //logger.Debug($"SuccessStory - {GameName.Trim().ToLower()} / {TitleSplit.Trim()} / {gameID}"); if (GameName.Trim().ToLower() == TitleSplit.Trim() && gameID == 0) { logger.Info($"SuccessStory - Find for {GameName.Trim().ToLower()} / {TitleSplit.Trim()} with {PlatformName} in {consoleID}"); gameID = ra_Game.ID; break; } } } } } else { logger.Info($"SuccessStory - No console find for {GameName} with {PlatformName}"); return(Result); } // Get achievements if (gameID != 0) { Achievements = GetGameInfoAndUserProgress(gameID); } else { logger.Info($"SuccessStory - No game find for {GameName} with {PlatformName} in {consoleID}"); return(Result); } Result.HaveAchivements = (Achievements.Count > 0); Result.Achievements = Achievements; Result.Total = Achievements.Count; Result.Unlocked = Achievements.FindAll(x => x.DateUnlocked != default(DateTime)).Count; Result.Locked = Result.Total - Result.Unlocked; Result.Progression = (Result.Total != 0) ? (int)Math.Ceiling((double)(Result.Unlocked * 100 / Result.Total)) : 0; return(Result); }