// aDPSPortions
        string ADPSPortionsDataCallback(CombatantData data)
        {
            if (data.Parent.GetBoss() == null &&
                !PluginMain.Shared.EnabledCalculateRDPSADPSForALlZones)
            {
                return("");
            }

            var takenDPSGroup = data.GetATakenDPSGroup();

            string value = "";

            if (takenDPSGroup != null && takenDPSGroup != null)
            {
                foreach (KeyValuePair <string, double> kv in takenDPSGroup.OrderByDescending(x => Math.Abs(x.Value)))
                {
                    if (value.Length > 0)
                    {
                        value += " | ";
                    }
                    value += kv.Key + " : " + "-" + (kv.Value).ToString("#,0.00");
                }
            }

            return(value);
        }
        public static double GetADPS(this CombatantData data)
        {
            var damage   = data.GetDamage();
            var duration = data.Parent.GetBossDuration().TotalSeconds;

            if (damage == null || duration < 0)
            {
                return(-1);
            }

            var takenDPS = data.GetATakenDPSGroup().Values.Sum();

            return((damage.Value / duration) - takenDPS);
        }