コード例 #1
0
        internal static (FinalBuffsDictionary, FinalBuffsDictionary) GetFinalBuffsDictionary(ParsedEvtcLog log, Buff buff, BuffDistribution buffDistribution, long phaseDuration, long activePhaseDuration)
        {
            var buffs       = new FinalBuffsDictionary();
            var buffsActive = new FinalBuffsDictionary();

            foreach (AbstractSingleActor actor in buffDistribution.GetSrcs(buff.ID, log))
            {
                long   gen              = buffDistribution.GetGeneration(buff.ID, actor.AgentItem);
                double generated        = gen;
                double overstacked      = (buffDistribution.GetOverstack(buff.ID, actor.AgentItem) + gen);
                double wasted           = buffDistribution.GetWaste(buff.ID, actor.AgentItem);
                double unknownExtension = buffDistribution.GetUnknownExtension(buff.ID, actor.AgentItem);
                double extension        = buffDistribution.GetExtension(buff.ID, actor.AgentItem);
                double extended         = buffDistribution.GetExtended(buff.ID, actor.AgentItem);


                if (buff.Type == BuffType.Duration)
                {
                    generated        *= 100.0;
                    overstacked      *= 100.0;
                    wasted           *= 100.0;
                    unknownExtension *= 100.0;
                    extension        *= 100.0;
                    extended         *= 100.0;
                }
                buffs.Generated[actor]        = Math.Round(generated / phaseDuration, ParserHelper.BuffDigit);
                buffs.Overstacked[actor]      = Math.Round(overstacked / phaseDuration, ParserHelper.BuffDigit);
                buffs.Wasted[actor]           = Math.Round(wasted / phaseDuration, ParserHelper.BuffDigit);
                buffs.UnknownExtension[actor] = Math.Round(unknownExtension / phaseDuration, ParserHelper.BuffDigit);
                buffs.Extension[actor]        = Math.Round(extension / phaseDuration, ParserHelper.BuffDigit);
                buffs.Extended[actor]         = Math.Round(extended / phaseDuration, ParserHelper.BuffDigit);
                if (activePhaseDuration > 0)
                {
                    buffsActive.Generated[actor]        = Math.Round(generated / activePhaseDuration, ParserHelper.BuffDigit);
                    buffsActive.Overstacked[actor]      = Math.Round(overstacked / activePhaseDuration, ParserHelper.BuffDigit);
                    buffsActive.Wasted[actor]           = Math.Round(wasted / activePhaseDuration, ParserHelper.BuffDigit);
                    buffsActive.UnknownExtension[actor] = Math.Round(unknownExtension / activePhaseDuration, ParserHelper.BuffDigit);
                    buffsActive.Extension[actor]        = Math.Round(extension / activePhaseDuration, ParserHelper.BuffDigit);
                    buffsActive.Extended[actor]         = Math.Round(extended / activePhaseDuration, ParserHelper.BuffDigit);
                }
                else
                {
                    buffsActive.Generated[actor]        = 0.0;
                    buffsActive.Overstacked[actor]      = 0.0;
                    buffsActive.Wasted[actor]           = 0.0;
                    buffsActive.UnknownExtension[actor] = 0.0;
                    buffsActive.Extension[actor]        = 0.0;
                    buffsActive.Extended[actor]         = 0.0;
                }
            }
            return(buffs, buffsActive);
        }