コード例 #1
0
        internal FinalDPS(ParsedEvtcLog log, PhaseData phase, AbstractSingleActor actor, AbstractSingleActor target)
        {
            double phaseDuration = (phase.DurationInMS) / 1000.0;
            int    damage;
            double dps = 0.0;
            List <AbstractDamageEvent> damageLogs = actor.GetDamageLogs(target, log, phase.Start, phase.End);

            //DPS
            damage = damageLogs.Sum(x => x.Damage);

            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            Dps    = (int)Math.Round(dps);
            Damage = damage;
            //Condi DPS
            damage = damageLogs.Sum(x => x.IsCondi(log) ? x.Damage : 0);

            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            CondiDps    = (int)Math.Round(dps);
            CondiDamage = damage;
            //Power DPS
            damage = Damage - CondiDamage;
            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            PowerDps    = (int)Math.Round(dps);
            PowerDamage = damage;
            List <AbstractDamageEvent> actorDamageLogs = actor.GetJustActorDamageLogs(target, log, phase.Start, phase.End);

            // Actor DPS
            damage = actorDamageLogs.Sum(x => x.Damage);

            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            ActorDps    = (int)Math.Round(dps);
            ActorDamage = damage;
            //Actor Condi DPS
            damage = actorDamageLogs.Sum(x => x.IsCondi(log) ? x.Damage : 0);

            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            ActorCondiDps    = (int)Math.Round(dps);
            ActorCondiDamage = damage;
            //Actor Power DPS
            damage = ActorDamage - ActorCondiDamage;
            if (phaseDuration > 0)
            {
                dps = damage / phaseDuration;
            }
            ActorPowerDps    = (int)Math.Round(dps);
            ActorPowerDamage = damage;
        }