public JournalLoadout(JObject evt) : base(evt, JournalTypeEnum.Loadout) { ShipFD = JournalFieldNaming.NormaliseFDShipName(evt["Ship"].Str()); Ship = JournalFieldNaming.GetBetterShipName(ShipFD); ShipId = evt["ShipID"].Int(); ShipName = evt["ShipName"].Str(); ShipIdent = evt["ShipIdent"].Str(); HullValue = evt["HullValue"].LongNull(); HullHealth = evt["HullHealth"].DoubleNull(); if (HullHealth != null) { HullHealth *= 100.0; // convert to 0-100 } ModulesValue = evt["ModulesValue"].LongNull(); Rebuy = evt["Rebuy"].LongNull(); Hot = evt["Hot"].BoolNull(); // 3.3 ShipModules = new List <ShipModule>(); JArray jmodules = (JArray)evt["Modules"]; if (jmodules != null) // paranoia { foreach (JObject jo in jmodules) { ShipModule.EngineeringData engineering = null; JObject jeng = (JObject)jo["Engineering"]; if (jeng != null) { engineering = new ShipModule.EngineeringData(jeng); } string slotfdname = JournalFieldNaming.NormaliseFDSlotName(jo["Slot"].Str()); string itemfdname = JournalFieldNaming.NormaliseFDItemName(jo["Item"].Str()); ShipModule module = new ShipModule(JournalFieldNaming.GetBetterSlotName(slotfdname), slotfdname, JournalFieldNaming.GetBetterItemName(itemfdname), itemfdname, jo["On"].BoolNull(), jo["Priority"].IntNull(), jo["AmmoInClip"].IntNull(), jo["AmmoInHopper"].IntNull(), jo["Health"].DoubleNull(), jo["Value"].IntNull(), null, //power not received here engineering); ShipModules.Add(module); } ShipModules = ShipModules.OrderBy(x => x.Slot).ToList(); // sort for presentation.. } }
public JournalEngineerCraftBase(JObject evt, JournalTypeEnum en) : base(evt, en) { SlotFD = JournalFieldNaming.NormaliseFDSlotName(evt["Slot"].Str()); Slot = JournalFieldNaming.GetBetterSlotName(SlotFD); ModuleFD = JournalFieldNaming.NormaliseFDItemName(evt["Module"].Str()); Module = JournalFieldNaming.GetBetterItemName(ModuleFD); Engineering = new ShipModule.EngineeringData(evt); IsPreview = evt["IsPreview"].BoolNull(); JToken mats = (JToken)evt["Ingredients"]; if (mats != null) { Ingredients = new Dictionary <string, int>(); if (mats.Type == JTokenType.Object) { Dictionary <string, int> temp = mats?.ToObjectProtected <Dictionary <string, int> >(); if (temp != null) { foreach (string key in temp.Keys) { Ingredients[JournalFieldNaming.FDNameTranslation(key)] = temp[key]; } } } else { foreach (JObject jo in (JArray)mats) { Ingredients[JournalFieldNaming.FDNameTranslation((string)jo["Name"])] = jo["Count"].Int(); } } } }