public async Task <GameInfo> ConvertGameTimePlayedToGameInfo(GameTimePlayed gameTimePlayed, string steamId) { string gameName = GetGameName(gameTimePlayed.appid); int playtime = (int)Math.Round(gameTimePlayed.playtime_forever / (double)60); UserAchievementStats achievementStats = await CalculateAchievements(gameTimePlayed.appid, steamId); GameInfo gameInfo = new GameInfo { GameName = gameName, AppId = gameTimePlayed.appid, GamePlaytime = playtime, AchievementStats = achievementStats }; return(gameInfo); }
public async Task <UserAchievementStats> CalculateAchievements(int appid, string steamId) { DebugLog($"App id: {appid}"); dynamic achievementsObj = await GetAchievementsForGame(appid, steamId); dynamic gameInfoObj = await GetGameInfo(appid); //DebugLog($"{gameInfoObj.ToString()}"); //DebugLog($"{achievementsObj.ToString()}"); // error checking for no achievement information available (ex. appid = 10, game = Counter-Strike) if (gameInfoObj["game"] == null || achievementsObj == null || achievementsObj["playerstats"]["achievements"] == null) { UserAchievementStats achievementStats = new UserAchievementStats { NumUserAchievements = 0, NumGameAchievements = 0, AchievementPercentage = 0 }; return(achievementStats); } else { int numUserAchievements = (int)achievementsObj["playerstats"]["achievements"].Count; DebugLog($"num user achivements: {numUserAchievements}"); //DebugLog($"type of numUserAchievements: {achievementsObj["playerstats"]["achievements"].GetType()}"); //DebugLog($"user achievements: {achievementsObj["playerstats"]["achievements"].ToString()}"); int numGameAchievements = (int)gameInfoObj["game"]["availableGameStats"]["achievements"].Count; DebugLog($"num game achivements: {numGameAchievements}"); //DebugLog($"type of numGameAchievements: {gameInfoObj["game"]["availableGameStats"]["achievements"].GetType()}"); //DebugLog($"game achievements: {gameInfoObj["game"]["availableGameStats"]["achievements"].ToString()}"); int achievementPercentage = (int)Math.Round((numUserAchievements / (double)numGameAchievements) * 100); UserAchievementStats achievementStats = new UserAchievementStats { NumUserAchievements = numUserAchievements, NumGameAchievements = numGameAchievements, AchievementPercentage = achievementPercentage }; return(achievementStats); } }