Exemple #1
0
 public MissionState(MissionState other, StateTypes type)
 {
     Mission = other.Mission;
     sys     = other.sys;
     body    = other.body;
     State   = type;
 }
Exemple #2
0
 public MissionState(JournalMissionAccepted m, EDDiscovery.DB.ISystem s, string b)
 {
     Mission = m;
     sys     = s;
     body    = b;
     State   = StateTypes.InProgress;
 }
Exemple #3
0
        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);
        }
Exemple #4
0
 public MissionState(MissionState other, JournalMissionCompleted m)
 {
     Mission   = other.Mission;
     sys       = other.sys;
     body      = other.body;
     Completed = m;
     State     = StateTypes.Completed;
 }
Exemple #5
0
        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);
        }
Exemple #6
0
 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));
     }
 }
Exemple #7
0
        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);
        }
Exemple #8
0
        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";
            }
        }
Exemple #9
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);
 }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
        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);
        }