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); }
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; }