Example #1
0
        // helpers

        public static EXTBarrierStatsPlayerDetailsDto BuildPlayerBarrierData(ParsedEvtcLog log, AbstractSingleActor actor, Dictionary <long, SkillItem> usedSkills, Dictionary <long, Buff> usedBuffs)
        {
            var dto = new EXTBarrierStatsPlayerDetailsDto
            {
                BarrierDistributions         = new List <EXTBarrierStatsBarrierDistributionDto>(),
                BarrierDistributionsTargets  = new List <List <EXTBarrierStatsBarrierDistributionDto> >(),
                IncomingBarrierDistributions = new List <EXTBarrierStatsBarrierDistributionDto>(),
                Minions = new List <EXTBarrierStatsPlayerDetailsDto>(),
            };

            foreach (PhaseData phase in log.FightData.GetPhases(log))
            {
                dto.BarrierDistributions.Add(EXTBarrierStatsBarrierDistributionDto.BuildFriendlyBarrierDistData(log, actor, null, phase, usedSkills, usedBuffs));
                var dmgTargetsDto = new List <EXTBarrierStatsBarrierDistributionDto>();
                foreach (AbstractSingleActor target in log.Friendlies)
                {
                    dmgTargetsDto.Add(EXTBarrierStatsBarrierDistributionDto.BuildFriendlyBarrierDistData(log, actor, target, phase, usedSkills, usedBuffs));
                }
                dto.BarrierDistributionsTargets.Add(dmgTargetsDto);
                dto.IncomingBarrierDistributions.Add(EXTBarrierStatsBarrierDistributionDto.BuildIncomingBarrierDistData(log, actor, phase, usedSkills, usedBuffs));
            }
            foreach (KeyValuePair <long, Minions> pair in actor.GetMinions(log))
            {
                dto.Minions.Add(BuildFriendlyMinionsHealingData(log, actor, pair.Value, usedSkills, usedBuffs));
            }

            return(dto);
        }
        private static EXTBarrierStatsBarrierDistributionDto BuildBarrierDistDataMinionsInternal(ParsedEvtcLog log, EXTFinalOutgoingBarrierStat outgoingBarrierStats, Minions minions, AbstractSingleActor target, PhaseData phase, Dictionary <long, SkillItem> usedSkills, Dictionary <long, Buff> usedBuffs)
        {
            var dto = new EXTBarrierStatsBarrierDistributionDto();
            IReadOnlyList <AbstractCastEvent>       casting     = minions.GetIntersectingCastEvents(log, phase.Start, phase.End);
            IReadOnlyList <EXTAbstractBarrierEvent> barrierLogs = minions.EXTBarrier.GetOutgoingBarrierEvents(target, log, phase.Start, phase.End);

            dto.ContributedBarrier = barrierLogs.Sum(x => x.BarrierGiven);
            dto.TotalBarrier       = outgoingBarrierStats.Barrier;
            dto.TotalCasting       = casting.Sum(cl => Math.Min(cl.EndTime, phase.End) - Math.Max(cl.Time, phase.Start));
            dto.Distribution       = BuildBarrierDistBodyData(log, casting, barrierLogs, usedSkills, usedBuffs, phase);
            return(dto);
        }
        public static EXTBarrierStatsBarrierDistributionDto BuildIncomingBarrierDistData(ParsedEvtcLog log, AbstractSingleActor p, PhaseData phase, Dictionary <long, SkillItem> usedSkills, Dictionary <long, Buff> usedBuffs)
        {
            var dto = new EXTBarrierStatsBarrierDistributionDto
            {
                Distribution = new List <object[]>()
            };
            EXTFinalIncomingBarrierStat             incomingBarrierStats = p.EXTBarrier.GetIncomingBarrierStats(null, log, phase.Start, phase.End);
            IReadOnlyList <EXTAbstractBarrierEvent> barrierLogs          = p.EXTBarrier.GetIncomingBarrierEvents(null, log, phase.Start, phase.End);
            var barrierLogsBySkill = barrierLogs.GroupBy(x => x.Skill).ToDictionary(x => x.Key, x => x.ToList());

            dto.ContributedBarrier = incomingBarrierStats.BarrierReceived;
            var conditionsById = log.StatisticsHelper.PresentConditions.ToDictionary(x => x.ID);

            foreach (KeyValuePair <SkillItem, List <EXTAbstractBarrierEvent> > pair in barrierLogsBySkill)
            {
                dto.Distribution.Add(GetBarrierToItem(pair.Key, pair.Value, null, usedSkills, usedBuffs, log.Buffs, phase));
            }
            return(dto);
        }
Example #4
0
        private static EXTBarrierStatsPlayerDetailsDto BuildFriendlyMinionsHealingData(ParsedEvtcLog log, AbstractSingleActor actor, Minions minion, Dictionary <long, SkillItem> usedSkills, Dictionary <long, Buff> usedBuffs)
        {
            var dto = new EXTBarrierStatsPlayerDetailsDto
            {
                BarrierDistributions        = new List <EXTBarrierStatsBarrierDistributionDto>(),
                BarrierDistributionsTargets = new List <List <EXTBarrierStatsBarrierDistributionDto> >()
            };

            foreach (PhaseData phase in log.FightData.GetPhases(log))
            {
                var dmgTargetsDto = new List <EXTBarrierStatsBarrierDistributionDto>();
                foreach (AbstractSingleActor target in log.Friendlies)
                {
                    dmgTargetsDto.Add(EXTBarrierStatsBarrierDistributionDto.BuildFriendlyMinionBarrierDistData(log, actor, minion, target, phase, usedSkills, usedBuffs));
                }
                dto.BarrierDistributionsTargets.Add(dmgTargetsDto);
                dto.BarrierDistributions.Add(EXTBarrierStatsBarrierDistributionDto.BuildFriendlyMinionBarrierDistData(log, actor, minion, null, phase, usedSkills, usedBuffs));
            }
            return(dto);
        }