Example #1
0
        public static TimeSpan GetBossDuration(this EncounterData data)
        {
            var startTime     = data.StartTime;
            var endTime       = data.Tags.ContainsKey(EncounterTag.EndTime) ? (DateTime)data.Tags[EncounterTag.EndTime] : data.EndTime;
            var totalDuration = (endTime - startTime).TotalSeconds;
            var duration      = totalDuration;

            var boss = data.GetBoss();

            if (boss != null)
            {
                foreach (var exclusionPeriod in boss.ExclusionPeriods)
                {
                    if (totalDuration > exclusionPeriod.StartTime)
                    {
                        duration -= (Math.Min(totalDuration, exclusionPeriod.EndTime) - exclusionPeriod.StartTime);
                    }
                }
            }

            return(TimeSpan.FromSeconds(duration));
        }