public JsonLog(ParsedLog log, string[] uploadLinks) { // log.UpdateProgressWithCancellationCheck("Raw Format: Building Meta Data"); TriggerID = log.FightData.TriggerID; FightName = log.FightData.GetFightName(log); FightIcon = log.FightData.Logic.Icon; EliteInsightsVersion = Application.ProductVersion; ArcVersion = log.LogData.BuildVersion; RecordedBy = log.LogData.PoVName; TimeStart = log.LogData.LogStart; TimeEnd = log.LogData.LogEnd; TimeStartStd = log.LogData.LogStartStd; TimeEndStd = log.LogData.LogEndStd; Duration = log.FightData.DurationString; Success = log.FightData.Success; GW2Build = log.LogData.GW2Version; UploadLinks = uploadLinks; Language = log.LogData.Language; LanguageID = (byte)log.LogData.LanguageID; IsCM = log.FightData.IsCM; if (log.Statistics.PresentFractalInstabilities.Any()) { PresentFractalInstabilities = new List <long>(); foreach (Buff fractalInstab in log.Statistics.PresentFractalInstabilities) { PresentFractalInstabilities.Add(fractalInstab.ID); if (!BuffMap.ContainsKey("b" + fractalInstab.ID)) { BuffMap["b" + fractalInstab.ID] = new BuffDesc(fractalInstab, log); } } } // log.UpdateProgressWithCancellationCheck("Raw Format: Building Mechanics"); MechanicData mechanicData = log.MechanicData; var mechanicLogs = new List <MechanicEvent>(); foreach (List <MechanicEvent> mLog in mechanicData.GetAllMechanics(log)) { mechanicLogs.AddRange(mLog); } if (mechanicLogs.Any()) { Mechanics = GetJsonMechanicsList(mechanicLogs); } // log.UpdateProgressWithCancellationCheck("Raw Format: Building Phases"); Phases = log.FightData.GetPhases(log).Select(x => new JsonPhase(x, log)).ToList(); // log.UpdateProgressWithCancellationCheck("Raw Format: Building Targets"); Targets = log.FightData.Logic.Targets.Select(x => new JsonNPC(x, log, SkillMap, BuffMap)).ToList(); // log.UpdateProgressWithCancellationCheck("Raw Format: Building Players"); Players = log.PlayerList.Select(x => new JsonPlayer(x, log, SkillMap, BuffMap, DamageModMap, PersonalBuffs)).ToList(); // if (log.LogData.LogErrors.Count > 0) { LogErrors = new List <string>(log.LogData.LogErrors); } }
internal JsonLog(ParsedEvtcLog log, RawFormatSettings settings, Version parserVersion, string[] uploadLinks) { // log.UpdateProgressWithCancellationCheck("Raw Format: Building Meta Data"); TriggerID = log.FightData.TriggerID; FightName = log.FightData.GetFightName(log); FightIcon = log.FightData.Logic.Icon; EliteInsightsVersion = parserVersion.ToString(); ArcVersion = log.LogData.ArcVersion; RecordedBy = log.LogData.PoVName; TimeStart = log.LogData.LogStart; TimeEnd = log.LogData.LogEnd; TimeStartStd = log.LogData.LogStartStd; TimeEndStd = log.LogData.LogEndStd; Duration = log.FightData.DurationString; Success = log.FightData.Success; GW2Build = log.LogData.GW2Build; UploadLinks = uploadLinks; Language = log.LogData.Language; LanguageID = (byte)log.LogData.LanguageID; IsCM = log.FightData.IsCM; var personalBuffs = new Dictionary <string, HashSet <long> >(); var skillMap = new Dictionary <string, SkillDesc>(); var buffMap = new Dictionary <string, BuffDesc>(); var damageModMap = new Dictionary <string, DamageModDesc>(); if (log.StatisticsHelper.PresentFractalInstabilities.Any()) { var presentFractalInstabilities = new List <long>(); foreach (Buff fractalInstab in log.StatisticsHelper.PresentFractalInstabilities) { presentFractalInstabilities.Add(fractalInstab.ID); if (!BuffMap.ContainsKey("b" + fractalInstab.ID)) { buffMap["b" + fractalInstab.ID] = new BuffDesc(fractalInstab, log); } } PresentFractalInstabilities = presentFractalInstabilities; } // log.UpdateProgressWithCancellationCheck("Raw Format: Building Mechanics"); MechanicData mechanicData = log.MechanicData; var mechanicLogs = new List <MechanicEvent>(); foreach (List <MechanicEvent> mLog in mechanicData.GetAllMechanics(log)) { mechanicLogs.AddRange(mLog); } if (mechanicLogs.Any()) { Mechanics = GetJsonMechanicsList(mechanicLogs); } // log.UpdateProgressWithCancellationCheck("Raw Format: Building Phases"); Phases = log.FightData.GetPhases(log).Select(x => new JsonPhase(x, log)).ToList(); // log.UpdateProgressWithCancellationCheck("Raw Format: Building Targets"); Targets = log.FightData.Logic.Targets.Select(x => new JsonNPC(x, log, settings, skillMap, buffMap)).ToList(); // log.UpdateProgressWithCancellationCheck("Raw Format: Building Players"); Players = log.PlayerList.Select(x => new JsonPlayer(x, log, settings, skillMap, buffMap, damageModMap, personalBuffs)).ToList(); // if (log.LogData.LogErrors.Count > 0) { LogErrors = new List <string>(log.LogData.LogErrors); } // PersonalBuffs = personalBuffs.ToDictionary(x => x.Key, x => (IReadOnlyCollection <long>)x.Value); SkillMap = skillMap; BuffMap = buffMap; DamageModMap = damageModMap; }