Example #1
0
        public int Calculate(FighterContribution contribution)
        {
            double points = 0;

            if (contribution.HasWon)
            {
                points += PointsFirstPlace;
            }

            if (contribution.IsSecond)
            {
                points += PointsSecondPlace;
            }

            if (contribution.IsThird)
            {
                points += PointsThirdPlace;
            }

            points += contribution.Kills.Count() * KillPoints;
            points += contribution.Assists.Count() * AssistPoints;
            points += PercentageOfRoundsAlivePoints * contribution.PercentageOfRoundsAlive;
            points += MatchParticipationPoints * contribution.MatchParticipation;

            return((int)points);
        }
Example #2
0
        public async Task AddExperienceAsync(FighterExperience fighterExperience, FighterContribution contribution, double mutliplicator)
        {
            var ids = new Guid[] { fighterExperience.FighterId }.Union(contribution.Kills).Union(contribution.Assists).ToList();
            var fighters = await context.Fighters.Where(o => ids.Contains(o.Id)).ToListAsync();

            var fighter    = fighters.First(o => o.Id == fighterExperience.FighterId);
            var experience = 100;

            foreach (var killFighterId in contribution.Kills)
            {
                experience += GetExperience(fighters, fighter, killFighterId, KillExperience);
            }

            foreach (var assistFighterId in contribution.Assists)
            {
                experience += GetExperience(fighters, fighter, assistFighterId, AssistExperience);
            }

            fighterExperience.Points    += experience + (int)(experience * mutliplicator);
            fighterExperience.LastUpdate = dateTimeProvider.Now;
        }