public static Updates RedeemChallengeForPlayer(string playerId, Guid challengeId) { var challenge = ChallengeList.challenges.First(pred => pred.Key == challengeId).Value; var playerChallenges = ReadChallenges(playerId); playerChallenges.result.challenges[challengeId].isComplete = true; playerChallenges.result.challenges[challengeId].state = ChallengeState.Completed; playerChallenges.result.challenges[challengeId].percentComplete = 100; WriteChallenges(playerId, playerChallenges); var completionToken = new Token { clientProperties = new Dictionary <string, string>(), clientType = "challenge.completed", lifetime = "Persistent", rewards = challenge.rewards }; completionToken.clientProperties.Add("challengeid", challengeId.ToString()); completionToken.clientProperties.Add("category", challenge.category.GetDisplayName()); completionToken.clientProperties.Add("expirationtimeutc", playerChallenges.result.challenges[challengeId].endTimeUtc.Value.ToString(CultureInfo.InvariantCulture)); var returnUpdates = RewardUtils.RedeemRewards(playerId, challenge.rewards); if (TokenUtils.AddToken(playerId, completionToken)) { returnUpdates.tokens = 1; // Not the actual stream id ofc, but we just need to tell the game to reload the tokens } return(returnUpdates); }
private static void RewardLevelupRewards(string playerId, int level) { RewardUtils.RedeemRewards(playerId, ProfileResponse.levels[level.ToString()].rewards); }