public ContestLearner Update( Contest contest, ContestLearner contestLearner, MicrosoftProfile microsoftProfile) { switch (contest.Type) { case ContestType.AccumulatedLevels: contestLearner.CurrentValue = microsoftProfile.GameStatus.Level.LevelNumber - contestLearner.StartValue; break; case ContestType.AccumulatedPoints: case ContestType.Leaderboard: contestLearner.CurrentValue = _experiencePointsCalculator.Calculate( microsoftProfile.GameStatus.Level.LevelNumber, microsoftProfile.GameStatus.CurrentLevelPointsEarned) - contestLearner.StartValue; break; case ContestType.Levels: contestLearner.CurrentValue = microsoftProfile.GameStatus.Level.LevelNumber; break; case ContestType.Points: contestLearner.CurrentValue = _experiencePointsCalculator.Calculate( microsoftProfile.GameStatus.Level.LevelNumber, microsoftProfile.GameStatus.CurrentLevelPointsEarned); break; } return(contestLearner); }
public ContestLearner Update( Contest contest, ContestLearner contestLearner, MicrosoftProfile microsoftProfile, bool forceUpdate = false) { switch (contest.Type) { case ContestType.Levels: case ContestType.AccumulatedLevels: if (contestLearner.StartValue == null || forceUpdate) { contestLearner.StartValue = microsoftProfile.GameStatus.Level.LevelNumber; } break; case ContestType.Points: case ContestType.AccumulatedPoints: case ContestType.Leaderboard: if (contestLearner.StartValue == null || forceUpdate) { contestLearner.StartValue = _experiencePointsCalculator.Calculate( microsoftProfile.GameStatus.Level.LevelNumber, microsoftProfile.GameStatus.CurrentLevelPointsEarned); } break; default: contestLearner.StartValue = 0; break; } return(contestLearner); }