public MissionState(MissionState other, StateTypes type) { Mission = other.Mission; sys = other.sys; body = other.body; State = type; }
public MissionState(JournalMissionAccepted m, EDDiscovery.DB.ISystem s, string b) { Mission = m; sys = s; body = b; State = StateTypes.InProgress; }
public SystemNode FindSystem(EDDiscovery.DB.ISystem sys, bool useedsm) // see if EDSM has a valid system, if so, add, return update SN { SystemNode sn = FindSystem(sys); if (useedsm) { if ((sn == null || (sn != null && sn.EDSMAdded == false)) && sys.id_edsm > 0) // null, or not scanned, and with EDSM ID { List <JournalScan> jl = EDDiscovery.EDSM.EDSMClass.GetBodiesList(sys.id_edsm); if (jl != null) { foreach (JournalScan js in jl) { js.BodyDesignation = GetBodyDesignation(js, sys.name); Process(js, sys); } } if (sn == null) { sn = FindSystem(sys); } if (sn != null) { sn.EDSMAdded = true; } } } return(sn); }
public MissionState(MissionState other, JournalMissionCompleted m) { Mission = other.Mission; sys = other.sys; body = other.body; Completed = m; State = StateTypes.Completed; }
public MissionList Process(JournalEntry je, EDDiscovery.DB.ISystem sys, string body, DB.SQLiteConnectionUser conn) { if (je is IMissions) { IMissions e = je as IMissions; e.UpdateMissions(this, sys, body, conn); // not cloned.. up to callers to see if they need to } return(current); }
public void Accepted(JournalMissionAccepted m, EDDiscovery.DB.ISystem sys, string body) { if (!current.Missions.ContainsKey(MissionList.Key(m))) // make sure not repeating, ignore if so { current = new MissionList(current); // shallow copy current.Add(m, sys, body); } else { System.Diagnostics.Debug.WriteLine("Missions: Duplicate " + MissionList.Key(m)); } }
public SystemNode FindSystem(EDDiscovery.DB.ISystem sys) { Tuple <string, long> withedsm = new Tuple <string, long>(sys.name, sys.id_edsm); if (scandata.ContainsKey(withedsm)) // if with edsm (if id_edsm=0, then thats okay) { return(scandata[withedsm]); } if (scandataByName.ContainsKey(sys.name)) { foreach (SystemNode sn in scandataByName[sys.name]) { if (sn.system.Equals(sys)) { return(sn); } } } return(null); }
static public void SystemVars(ConditionVariables vars, EDDiscovery.DB.ISystem s, string prefix) { if (s != null) { System.Globalization.CultureInfo ct = System.Globalization.CultureInfo.InvariantCulture; vars[prefix + "StarSystem"] = s.name; vars[prefix + "StarSystemEDSMID"] = s.id_edsm.ToString(ct); vars[prefix + "xpos"] = s.x.ToNANSafeString("0.###"); vars[prefix + "ypos"] = s.y.ToNANSafeString("0.###"); vars[prefix + "zpos"] = s.z.ToNANSafeString("0.###"); vars[prefix + "EDDBID"] = s.id_eddb.ToString(ct); vars[prefix + "EDDBGovernment"] = s.government.ToNullUnknownString(); vars[prefix + "EDDBAllegiance"] = s.allegiance.ToNullUnknownString(); vars[prefix + "EDDBState"] = s.state.ToNullUnknownString(); vars[prefix + "EDDBSecurity"] = s.security.ToNullUnknownString(); vars[prefix + "EDDBPrimaryEconomy"] = s.primary_economy.ToNullUnknownString(); vars[prefix + "EDDBFaction"] = s.faction.ToNullUnknownString(); vars[prefix + "EDDBPopulation"] = s.population.ToString(ct); vars[prefix + "EDDBNeedsPermit"] = (s.needs_permit != 0) ? "1" : "0"; } }
public void Add(JournalMissionAccepted m, EDDiscovery.DB.ISystem sys, string body) { Missions[Key(m)] = new MissionState(m, sys, body); // add a new one.. }
public void UpdateMissions(MissionListAccumulator mlist, EDDiscovery.DB.ISystem sys, string body, DB.SQLiteConnectionUser conn) { mlist.Abandoned(this); }
public bool Process(JournalScan sc, EDDiscovery.DB.ISystem sys) // FALSE if you can't process it { Tuple <string, long> withedsm = new Tuple <string, long>(sys.name, sys.id_edsm); SystemNode sn = null; if (scandata.ContainsKey(withedsm)) // if with edsm (if id_edsm=0, then thats okay) { sn = scandata[withedsm]; } else if (scandataByName.ContainsKey(sys.name)) // if we now have an edsm id, see if we have one without it { foreach (SystemNode _sn in scandataByName[sys.name]) { if (_sn.system.Equals(sys)) { if (sys.id_edsm != 0) // yep, replace { scandata.Add(new Tuple <string, long>(sys.name, sys.id_edsm), _sn); } sn = _sn; break; } } } if (sn == null) { sn = new SystemNode() { system = sys, starnodes = new SortedList <string, ScanNode>(new DuplicateKeyComparer <string>()) }; if (!scandataByName.ContainsKey(sys.name)) { scandataByName[sys.name] = new List <SystemNode>(); } scandataByName[sys.name].Add(sn); if (sys.id_edsm != 0) { scandata.Add(new Tuple <string, long>(sys.name, sys.id_edsm), sn); } } // handle Earth, starname = Sol // handle Eol Prou LW-L c8-306 A 4 a and Eol Prou LW-L c8-306 // handle Colonia 4 , starname = Colonia, planet 4 // handle Aurioum B A BELT // Kyloasly OY-Q d5-906 13 1 List <string> elements; ScanNodeType starscannodetype = ScanNodeType.star; // presuming.. string rest = sc.IsStarNameRelatedReturnRest(sys.name); if (rest != null) // if we have a relationship.. { if (rest.Length > 0) { elements = rest.Split(' ').ToList(); if (char.IsDigit(elements[0][0])) // if digits, planet number, no star designator { elements.Insert(0, "Main Star"); // no star designator, main star, add MAIN } else if (elements[0].Length > 1) // designator, is it multiple chars.. { starscannodetype = ScanNodeType.barycentre; } } else { elements = new List <string>(); // only 1 item, the star, which is the same as the system name.. elements.Add("Main Star"); // Sol / SN:Sol should come thru here } } else { // so not part of starname elements = sc.BodyName.Split(' ').ToList(); // not related in any way (earth) so assume all bodyparts, and elements.Insert(0, "Main Star"); // insert the MAIN designator as the star designator } string customname = null; if (sc.BodyName.StartsWith(sys.name, StringComparison.InvariantCultureIgnoreCase)) { customname = sc.BodyName.Substring(sys.name.Length).TrimStart(' ', '-'); if (customname == "" && !sc.IsStar) { customname = sc.BodyName; } else if (customname == "" || customname == rest) { customname = null; } } else if (rest == null || !sc.BodyName.EndsWith(rest)) { customname = sc.BodyName; } if (elements.Count >= 1) // okay, we have an element.. first is the star.. { ScanNode sublv0; if (!sn.starnodes.TryGetValue(elements[0], out sublv0)) // not found this node, add.. { sublv0 = new ScanNode() { ownname = elements[0], fullname = sys.name + (elements[0].Contains("Main") ? "" : (" " + elements[0])), ScanData = null, children = null, type = starscannodetype }; sn.starnodes.Add(elements[0], sublv0); //System.Diagnostics.Debug.WriteLine("Added star " + star.fullname + " '" + star.ownname + "'" + " under '" + designator + "' type " + ty); } if (elements.Count >= 2) // we have a sub designator.. { ScanNode sublv1; if (sublv0.children == null || !sublv0.children.TryGetValue(elements[1], out sublv1)) { if (sublv0.children == null) { sublv0.children = new SortedList <string, ScanNode>(new DuplicateKeyComparer <string>()); } sublv1 = new ScanNode() { ownname = elements[1], fullname = sublv0.fullname + " " + elements[1], ScanData = null, children = null, type = ScanNodeType.body }; sublv0.children.Add(elements[1], sublv1); } if (elements.Count >= 3) { ScanNode sublv2; if (sublv1.children == null || !sublv1.children.TryGetValue(elements[2], out sublv2)) { if (sublv1.children == null) { sublv1.children = new SortedList <string, ScanNode>(new DuplicateKeyComparer <string>()); } sublv2 = new ScanNode() { ownname = elements[2], fullname = sublv0.fullname + " " + elements[1] + " " + elements[2], ScanData = null, children = null, type = ScanNodeType.body }; sublv1.children.Add(elements[2], sublv2); } if (elements.Count >= 4) { ScanNode sublv3; if (sublv2.children == null || !sublv2.children.TryGetValue(elements[3], out sublv3)) { if (sublv2.children == null) { sublv2.children = new SortedList <string, ScanNode>(new DuplicateKeyComparer <string>()); } sublv3 = new ScanNode() { ownname = elements[3], fullname = sublv0.fullname + " " + elements[1] + " " + elements[2] + " " + elements[3], ScanData = null, children = null, type = ScanNodeType.body }; sublv2.children.Add(elements[3], sublv3); } if (elements.Count == 4) // okay, need only 4 elements now.. if not, we have not coped.. { sublv3.customname = customname; sublv3.ScanData = sc; } else { System.Diagnostics.Debug.WriteLine("Failed to add system " + sc.BodyName + " too long"); return(false); } } else { sublv2.customname = customname; sublv2.ScanData = sc; } } else { sublv1.customname = customname; sublv1.ScanData = sc; } } else { sublv0.customname = customname; sublv0.ScanData = sc; } return(true); } else { System.Diagnostics.Debug.WriteLine("Failed to add system " + sc.BodyName + " not enough elements"); return(false); } }
static public void SystemVarsFurtherInfo(ActionProgramRun vars, HistoryList hl, EDDiscovery.DB.ISystem s, string prefix) { System.Globalization.CultureInfo ct = System.Globalization.CultureInfo.InvariantCulture; vars[prefix + "VisitCount"] = hl.GetVisitsCount(s.name).ToString(ct); vars[prefix + "ScanCount"] = hl.GetScans(s.name).Count.ToString(ct); vars[prefix + "FSDJumpsTotal"] = hl.GetFSDJumps(new TimeSpan(100000, 0, 0, 0)).ToString(ct); }