public static OpenTK.Vector3 Convert(this EMK.LightGeometry.Vector3 v) { return(new OpenTK.Vector3(v.X, v.Y, v.Z)); }
protected JournalLocOrJump(JObject evt, JournalTypeEnum jtype) : base(evt, jtype) { StarSystem = evt["StarSystem"].Str(); StarPosFromEDSM = evt["StarPosFromEDSM"].Bool(false); EMK.LightGeometry.Vector3 pos = new EMK.LightGeometry.Vector3(); JArray coords = evt["StarPos"].Array(); if (coords != null) { pos.X = coords[0].Float(); pos.Y = coords[1].Float(); pos.Z = coords[2].Float(); } else { pos.X = pos.Y = pos.Z = float.NaN; } StarPos = pos; SystemAddress = evt["SystemAddress"].LongNull(); JToken jk = evt["SystemFaction"]; if (jk != null && jk.IsObject) // new 3.03 { Faction = jk["Name"].Str(); // system faction pick up FactionState = jk["FactionState"].Str(); } else { // old pre 3.3.3 had this - for system faction Faction = evt.MultiStr(new string[] { "SystemFaction", "Faction" }); FactionState = evt["FactionState"].Str(); // PRE 2.3 .. not present in newer files, fixed up in next bit of code (but see 3.3.2 as its been incorrectly reintroduced) } Factions = evt["Factions"]?.ToObjectProtected <FactionInformation[]>()?.OrderByDescending(x => x.Influence)?.ToArray(); // POST 2.3 if (Factions != null) { int i = Array.FindIndex(Factions, x => x.Name == Faction); if (i != -1) { FactionState = Factions[i].FactionState; // set to State of controlling faction } foreach (var x in Factions) // normalise localised { x.Happiness_Localised = JournalFieldNaming.CheckLocalisation(x.Happiness_Localised, x.Happiness); } } Allegiance = evt.MultiStr(new string[] { "SystemAllegiance", "Allegiance" }); Economy = evt.MultiStr(new string[] { "SystemEconomy", "Economy" }); Economy_Localised = JournalFieldNaming.CheckLocalisation(evt.MultiStr(new string[] { "SystemEconomy_Localised", "Economy_Localised" }), Economy); SecondEconomy = evt["SystemSecondEconomy"].Str(); SecondEconomy_Localised = JournalFieldNaming.CheckLocalisation(evt["SystemSecondEconomy_Localised"].Str(), SecondEconomy); Government = evt.MultiStr(new string[] { "SystemGovernment", "Government" }); Government_Localised = JournalFieldNaming.CheckLocalisation(evt.MultiStr(new string[] { "SystemGovernment_Localised", "Government_Localised" }), Government); Security = evt.MultiStr(new string[] { "SystemSecurity", "Security" }); Security_Localised = JournalFieldNaming.CheckLocalisation(evt.MultiStr(new string[] { "SystemSecurity_Localised", "Security_Localised" }), Security); Wanted = evt["Wanted"].Bool(); // if absence, your not wanted, by definition of frontier in journal (only present if wanted, see docked) PowerplayState = evt["PowerplayState"].Str(); // NO evidence PowerplayPowers = evt["Powers"]?.ToObjectProtected <string[]>(); Conflicts = evt["Conflicts"]?.ToObjectProtected <ConflictInfo[]>(); // 3.4 // Allegiance without Faction only occurs in Training if (!String.IsNullOrEmpty(Allegiance) && Faction == null && EventTimeUTC <= ED_No_Training_Timestamp && (EventTimeUTC <= ED_No_Faction_Timestamp || EventTypeID != JournalTypeEnum.FSDJump || StarSystem == "Eranin")) { IsTrainingEvent = true; } }
protected JournalLocOrJump(JObject evt, JournalTypeEnum jtype) : base(evt, jtype) { StarSystem = evt["StarSystem"].Str(); StarPosFromEDSM = evt["StarPosFromEDSM"].Bool(false); EMK.LightGeometry.Vector3 pos = new EMK.LightGeometry.Vector3(); if (!evt["StarPos"].Empty()) // if its an old VS entry, may not have co-ords { JArray coords = evt["StarPos"] as JArray; pos.X = coords[0].Float(); pos.Y = coords[1].Float(); pos.Z = coords[2].Float(); } else { pos.X = pos.Y = pos.Z = float.NaN; } StarPos = pos; SystemAddress = evt["SystemAddress"].LongNull(); Faction = JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemFaction", "Faction" }); FactionState = evt["FactionState"].Str(); // PRE 2.3 .. not present in newer files, fixed up in next bit of code Factions = evt["Factions"]?.ToObjectProtected <FactionInformation[]>()?.OrderByDescending(x => x.Influence)?.ToArray(); // POST 2.3 if (Factions != null) { int i = Array.FindIndex(Factions, x => x.Name == Faction); if (i != -1) { FactionState = Factions[i].FactionState; // set to State of controlling faction } foreach (var x in Factions) // normalise localised { x.Happiness_Localised = JournalFieldNaming.CheckLocalisation(x.Happiness_Localised, x.Happiness); } } Allegiance = JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemAllegiance", "Allegiance" }); Economy = JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemEconomy", "Economy" }); Economy_Localised = JournalFieldNaming.CheckLocalisation(JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemEconomy_Localised", "Economy_Localised" }), Economy); SecondEconomy = evt["SystemSecondEconomy"].Str(); SecondEconomy_Localised = JournalFieldNaming.CheckLocalisation(evt["SystemSecondEconomy_Localised"].Str(), SecondEconomy); Government = JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemGovernment", "Government" }); Government_Localised = JournalFieldNaming.CheckLocalisation(JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemGovernment_Localised", "Government_Localised" }), Government); Security = JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemSecurity", "Security" }); Security_Localised = JournalFieldNaming.CheckLocalisation(JSONObjectExtensions.GetMultiStringDef(evt, new string[] { "SystemSecurity_Localised", "Security_Localised" }), Security); Wanted = evt["Wanted"].Bool(); // if absence, your not wanted, by definition of frontier in journal (only present if wanted, see docked) PowerplayState = evt["PowerplayState"].Str(); // NO evidence PowerplayPowers = evt["Powers"]?.ToObjectProtected <string[]>(); // Allegiance without Faction only occurs in Training if (!String.IsNullOrEmpty(Allegiance) && Faction == null && EventTimeUTC <= ED_No_Training_Timestamp && (EventTimeUTC <= ED_No_Faction_Timestamp || EventTypeID != JournalTypeEnum.FSDJump || StarSystem == "Eranin")) { IsTrainingEvent = true; } }
protected JournalLocOrJump(DateTime utc, ISystem sys, JournalTypeEnum jtype, bool edsmsynced) : base(utc, jtype, edsmsynced) { StarSystem = sys.Name; StarPos = new EMK.LightGeometry.Vector3((float)sys.X, (float)sys.Y, (float)sys.Z); }
protected JournalLocOrJump(DateTime utc, ISystem sys, int synced, JournalTypeEnum jtype) : base(utc, synced, jtype) { StarSystem = sys.Name; StarPos = new EMK.LightGeometry.Vector3((float)sys.X, (float)sys.Y, (float)sys.Z); EdsmID = sys.EDSMID; }