Пример #1
0
        public ConcurrentDictionary <short, ContributionStage> GetContributionStageDictionary(uint targetCharacterId)
        {
            List <PlayerContribution> contributionList;

            ContributionDictionary.TryGetValue(targetCharacterId, out contributionList);

            return(GetContributionStageDictionary(contributionList, ContributionFactors));
        }
Пример #2
0
        /// <summary>
        /// Get the list of playercontributions
        /// </summary>
        /// <param name="targetCharacterId"></param>
        /// <returns></returns>
        public List <PlayerContribution> GetContribution(uint targetCharacterId)
        {
            List <PlayerContribution> contributionList;

            ContributionDictionary.TryGetValue(targetCharacterId, out contributionList);

            return(contributionList);
        }
Пример #3
0
        /// <summary>
        /// Get the total contribution value for the character.
        /// </summary>
        /// <param name="targetCharacterId"></param>
        /// <returns></returns>
        public short GetContributionValue(uint targetCharacterId)
        {
            List <PlayerContribution> contributionList;

            ContributionDictionary.TryGetValue(targetCharacterId, out contributionList);

            short contributionValue = 0;

            if (contributionList == null)
            {
                return(contributionValue);
            }

            if (ContributionFactors == null)
            {
                return(contributionValue);
            }

            var stagedContribution = GetContributionStageDictionary(contributionList, ContributionFactors);

            foreach (var contributionStage in stagedContribution)
            {
                contributionValue += contributionStage.Value.ContributionStageSum;
            }

            // double check something is not right.
            if (contributionValue > short.MaxValue)
            {
                RewardLogger.Error(
                    $"ContributionManagerInstance exceeds max (over short.maxvalue) for Character {targetCharacterId}. {contributionList.Count} contribution records.");
                contributionValue = short.MaxValue;
            }

            if (contributionValue > MAXIMUM_CONTRIBUTION)
            {
                RewardLogger.Error(
                    $"ContributionManagerInstance exceeds max ({MAXIMUM_CONTRIBUTION}) for Character {targetCharacterId}. {contributionList.Count} contribution records.");
                contributionValue = MAXIMUM_CONTRIBUTION;
            }

            RewardLogger.Trace($"Returning contributionValue of {contributionValue} for {targetCharacterId} ");

            return(contributionValue);
        }