示例#1
0
        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);
        }
示例#2
0
 private static void RewardLevelupRewards(string playerId, int level)
 {
     RewardUtils.RedeemRewards(playerId, ProfileResponse.levels[level.ToString()].rewards);
 }