Example #1
0
        public List<EDStar> GetAll(string scope)
        {
            List<EDStar> listObjects = new List<EDStar>();
            string query = ApiNamespace + "/stars";

            if (!String.IsNullOrEmpty(scope))
                query = query + "?" + scope;

            var response = RequestGet(query);
            var json = response.Body;

            JArray jArray = null;
            JObject jObject = null;
            if (json != null && json.Length > 5)
                jObject = (JObject)JObject.Parse(json);

            if (jObject == null)
                return listObjects;

            jArray = (JArray)jObject["data"];

            foreach (JObject jo in jArray)
            {
                EDStar obj = new EDStar();

                if (obj.ParseJson((JObject)jo))
                    listObjects.Add(obj);
            }

            return listObjects;
        }
Example #2
0
        public override bool ToCSV(string filename)
        {
            try
            {
                using (StreamWriter writer = new StreamWriter(filename))
                {
                    if (IncludeHeader)
                    {
                        writer.Write("Time" + delimiter);
                        writer.Write("System" + delimiter);
                        writer.Write("Star type" + delimiter);
                        writer.Write("Planet type" + delimiter);
                        writer.WriteLine();
                    }

                    foreach (HistoryEntry he in data)
                    {
                        JournalSellExplorationData jsed = he.journalEntry as JournalSellExplorationData;
                        if (jsed == null || jsed.Discovered == null)
                        {
                            continue;
                        }
                        foreach (String system in jsed.Discovered)
                        {
                            writer.Write(MakeValueCsvFriendly(jsed.EventTimeLocal));
                            writer.Write(MakeValueCsvFriendly(system));

                            EDStar   star   = EDStar.Unknown;
                            EDPlanet planet = EDPlanet.Unknown;

                            foreach (HistoryEntry scanhe in scans)
                            {
                                JournalScan scan = scanhe.journalEntry as JournalScan;
                                if (scan.BodyName.Equals(system, StringComparison.OrdinalIgnoreCase))
                                {
                                    star   = scan.StarTypeID;
                                    planet = scan.PlanetTypeID;
                                    break;
                                }
                            }
                            writer.Write(MakeValueCsvFriendly((star != EDStar.Unknown) ? Enum.GetName(typeof(EDStar), star) : ""));
                            writer.Write(MakeValueCsvFriendly((planet != EDPlanet.Unknown) ? Enum.GetName(typeof(EDPlanet), planet) : "", false));
                            writer.WriteLine();
                        }
                    }
                }
                return(true);
            }
            catch (IOException)
            {
                ExtendedControls.MessageBoxTheme.Show(String.Format("Is file {0} open?", filename), TITLE,
                                                      MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
        }
Example #3
0
 public static string StarTypeNameShorter(EDStar type)
 {
     if (StarEnumToNameLookup.TryGetValue(type, out var name))
     {
         return(name);
     }
     else
     {
         return(type.ToString().Replace("_", " "));
     }
 }
Example #4
0
        public List <EDStar> GetAll(string scope)
        {
            List <EDStar> listObjects = new List <EDStar>();
            string        query       = ApiNamespace + "/stars";

            if (!String.IsNullOrEmpty(scope))
            {
                query = query + "?" + scope;
            }

            var response = RequestGet(query);
            var json     = response.Body;

            JArray  jArray  = null;
            JObject jObject = null;

            if (json != null && json.Length > 5)
            {
                jObject = (JObject)JObject.Parse(json);
            }

            if (jObject == null)
            {
                return(listObjects);
            }

            jArray = (JArray)jObject["data"];

            foreach (JObject jo in jArray)
            {
                EDStar obj = new EDStar();

                if (obj.ParseJson((JObject)jo))
                {
                    listObjects.Add(obj);
                }
            }

            return(listObjects);
        }
Example #5
0
        private void buttonExtExcel_Click(object sender, EventArgs e)
        {
            Forms.ExportForm frm = new Forms.ExportForm();
            frm.Init(new string[] { "All", "Stars only",
                                    "Planets only",             //2
                                    "Exploration List Stars",   //3
                                    "Exploration List Planets", //4
                                    "Sold Exploration Data",    // 5
                     });

            if (frm.ShowDialog(FindForm()) == DialogResult.OK)
            {
                BaseUtils.CSVWrite csv = new BaseUtils.CSVWrite();
                csv.SetCSVDelimiter(frm.Comma);

                try
                {
                    using (System.IO.StreamWriter writer = new System.IO.StreamWriter(frm.Path))
                    {
                        if (frm.SelectedIndex == 5)
                        {
                            int count;
                            List <HistoryEntry> data = HistoryList.FilterByJournalEvent(discoveryform.history.ToList(), "Sell Exploration Data", out count);
                            data = (from he in data where he.EventTimeLocal >= frm.StartTime && he.EventTimeLocal <= frm.EndTime orderby he.EventTimeUTC descending select he).ToList();

                            List <HistoryEntry> scans = HistoryList.FilterByJournalEvent(discoveryform.history.ToList(), "Scan", out count);

                            if (frm.IncludeHeader)
                            {
                                writer.Write(csv.Format("Time"));
                                writer.Write(csv.Format("System"));
                                writer.Write(csv.Format("Star type"));
                                writer.Write(csv.Format("Planet type", false));
                                writer.WriteLine();
                            }

                            foreach (HistoryEntry he in data)
                            {
                                JournalSellExplorationData jsed = he.journalEntry as JournalSellExplorationData;
                                if (jsed == null || jsed.Discovered == null)
                                {
                                    continue;
                                }
                                foreach (String system in jsed.Discovered)
                                {
                                    writer.Write(csv.Format(jsed.EventTimeLocal));
                                    writer.Write(csv.Format(system));

                                    EDStar   star   = EDStar.Unknown;
                                    EDPlanet planet = EDPlanet.Unknown_Body_Type;

                                    foreach (HistoryEntry scanhe in scans)
                                    {
                                        JournalScan scan = scanhe.journalEntry as JournalScan;
                                        if (scan.BodyName.Equals(system, StringComparison.OrdinalIgnoreCase))
                                        {
                                            star   = scan.StarTypeID;
                                            planet = scan.PlanetTypeID;
                                            break;
                                        }
                                    }
                                    writer.Write(csv.Format((star != EDStar.Unknown) ? Enum.GetName(typeof(EDStar), star) : ""));
                                    writer.Write(csv.Format((planet != EDPlanet.Unknown_Body_Type) ? Enum.GetName(typeof(EDPlanet), planet) : "", false));
                                    writer.WriteLine();
                                }
                            }
                        }
                        else
                        {
                            List <JournalScan> scans = null;

                            if (frm.SelectedIndex < 3)
                            {
                                var entries = JournalEntry.GetByEventType(JournalTypeEnum.Scan, EDCommander.CurrentCmdrID, frm.StartTime, frm.EndTime);
                                scans = entries.ConvertAll(x => (JournalScan)x);
                            }
                            else
                            {
                                ExplorationSetClass currentExplorationSet = new ExplorationSetClass();

                                string file = currentExplorationSet.DialogLoad(FindForm());

                                if (file != null)
                                {
                                    scans = new List <JournalScan>();

                                    foreach (string system in currentExplorationSet.Systems)
                                    {
                                        ISystem sys = SystemCache.FindSystem(system);
                                        if (sys != null)
                                        {
                                            List <JournalScan> sysscans = EDSMClass.GetBodiesList(sys.EDSMID);
                                            if (sysscans != null)
                                            {
                                                scans.AddRange(sysscans);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    return;
                                }
                            }

                            bool ShowStars   = frm.SelectedIndex < 2 || frm.SelectedIndex == 3;
                            bool ShowPlanets = frm.SelectedIndex == 0 || frm.SelectedIndex == 2 || frm.SelectedIndex == 4;

                            List <JournalSAAScanComplete> mappings = ShowPlanets ?
                                                                     JournalEntry.GetByEventType(JournalTypeEnum.SAAScanComplete, EDCommander.CurrentCmdrID, frm.StartTime, frm.EndTime)
                                                                     .ConvertAll(x => (JournalSAAScanComplete)x)
                                : null;

                            if (frm.IncludeHeader)
                            {
                                // Write header

                                writer.Write(csv.Format("Time"));
                                writer.Write(csv.Format("BodyName"));
                                writer.Write(csv.Format("Estimated Value"));
                                writer.Write(csv.Format("DistanceFromArrivalLS"));
                                writer.Write(csv.Format("WasMapped"));
                                writer.Write(csv.Format("WasDiscovered"));
                                if (ShowStars)
                                {
                                    writer.Write(csv.Format("StarType"));
                                    writer.Write(csv.Format("StellarMass"));
                                    writer.Write(csv.Format("AbsoluteMagnitude"));
                                    writer.Write(csv.Format("Age MY"));
                                    writer.Write(csv.Format("Luminosity"));
                                }
                                writer.Write(csv.Format("Radius"));
                                writer.Write(csv.Format("RotationPeriod"));
                                writer.Write(csv.Format("SurfaceTemperature"));

                                if (ShowPlanets)
                                {
                                    writer.Write(csv.Format("TidalLock"));
                                    writer.Write(csv.Format("TerraformState"));
                                    writer.Write(csv.Format("PlanetClass"));
                                    writer.Write(csv.Format("Atmosphere"));
                                    writer.Write(csv.Format("Iron"));
                                    writer.Write(csv.Format("Silicates"));
                                    writer.Write(csv.Format("SulphurDioxide"));
                                    writer.Write(csv.Format("CarbonDioxide"));
                                    writer.Write(csv.Format("Nitrogen"));
                                    writer.Write(csv.Format("Oxygen"));
                                    writer.Write(csv.Format("Water"));
                                    writer.Write(csv.Format("Argon"));
                                    writer.Write(csv.Format("Ammonia"));
                                    writer.Write(csv.Format("Methane"));
                                    writer.Write(csv.Format("Hydrogen"));
                                    writer.Write(csv.Format("Helium"));
                                    writer.Write(csv.Format("Volcanism"));
                                    writer.Write(csv.Format("SurfaceGravity"));
                                    writer.Write(csv.Format("SurfacePressure"));
                                    writer.Write(csv.Format("Landable"));
                                    writer.Write(csv.Format("EarthMasses"));
                                    writer.Write(csv.Format("IcePercent"));
                                    writer.Write(csv.Format("RockPercent"));
                                    writer.Write(csv.Format("MetalPercent"));
                                }
                                // Common orbital param
                                writer.Write(csv.Format("SemiMajorAxis"));
                                writer.Write(csv.Format("Eccentricity"));
                                writer.Write(csv.Format("OrbitalInclination"));
                                writer.Write(csv.Format("Periapsis"));
                                writer.Write(csv.Format("OrbitalPeriod"));
                                writer.Write(csv.Format("AxialTilt"));


                                if (ShowPlanets)
                                {
                                    writer.Write(csv.Format("Carbon"));
                                    writer.Write(csv.Format("Iron"));
                                    writer.Write(csv.Format("Nickel"));
                                    writer.Write(csv.Format("Phosphorus"));
                                    writer.Write(csv.Format("Sulphur"));
                                    writer.Write(csv.Format("Arsenic"));
                                    writer.Write(csv.Format("Chromium"));
                                    writer.Write(csv.Format("Germanium"));
                                    writer.Write(csv.Format("Manganese"));
                                    writer.Write(csv.Format("Selenium"));
                                    writer.Write(csv.Format("Vanadium"));
                                    writer.Write(csv.Format("Zinc"));
                                    writer.Write(csv.Format("Zirconium"));
                                    writer.Write(csv.Format("Cadmium"));
                                    writer.Write(csv.Format("Mercury"));
                                    writer.Write(csv.Format("Molybdenum"));
                                    writer.Write(csv.Format("Niobium"));
                                    writer.Write(csv.Format("Tin"));
                                    writer.Write(csv.Format("Tungsten"));
                                    writer.Write(csv.Format("Antimony"));
                                    writer.Write(csv.Format("Polonium"));
                                    writer.Write(csv.Format("Ruthenium"));
                                    writer.Write(csv.Format("Technetium"));
                                    writer.Write(csv.Format("Tellurium"));
                                    writer.Write(csv.Format("Yttrium"));
                                }

                                writer.WriteLine();
                            }

                            foreach (JournalScan je in scans)
                            {
                                JournalScan scan = je as JournalScan;

                                if (ShowPlanets == true && !string.IsNullOrEmpty(scan.PlanetClass))
                                {
                                    var mapping = mappings?.FirstOrDefault(m => m.BodyID == scan.BodyID);

                                    if (mapping != null)
                                    {
                                        scan.SetMapped(true, mapping.ProbesUsed <= mapping.EfficiencyTarget);
                                    }
                                }

                                if (ShowPlanets == false)  // Then only show stars.
                                {
                                    if (String.IsNullOrEmpty(scan.StarType))
                                    {
                                        continue;
                                    }
                                }

                                if (ShowStars == false)   // Then only show planets
                                {
                                    if (String.IsNullOrEmpty(scan.PlanetClass))
                                    {
                                        continue;
                                    }
                                }

                                writer.Write(csv.Format(scan.EventTimeUTC));
                                writer.Write(csv.Format(scan.BodyName));
                                writer.Write(csv.Format(scan.EstimatedValue));
                                writer.Write(csv.Format(scan.DistanceFromArrivalLS));
                                writer.Write(csv.Format(scan.WasMapped));
                                writer.Write(csv.Format(scan.WasDiscovered));

                                if (ShowStars)
                                {
                                    writer.Write(csv.Format(scan.StarType));
                                    writer.Write(csv.Format((scan.nStellarMass.HasValue) ? scan.nStellarMass.Value : 0));
                                    writer.Write(csv.Format((scan.nAbsoluteMagnitude.HasValue) ? scan.nAbsoluteMagnitude.Value : 0));
                                    writer.Write(csv.Format((scan.nAge.HasValue) ? scan.nAge.Value : 0));
                                    writer.Write(csv.Format(scan.Luminosity));
                                }


                                writer.Write(csv.Format(scan.nRadius.HasValue ? scan.nRadius.Value : 0));
                                writer.Write(csv.Format(scan.nRotationPeriod.HasValue ? scan.nRotationPeriod.Value : 0));
                                writer.Write(csv.Format(scan.nSurfaceTemperature.HasValue ? scan.nSurfaceTemperature.Value : 0));

                                if (ShowPlanets)
                                {
                                    writer.Write(csv.Format(scan.nTidalLock.HasValue ? scan.nTidalLock.Value : false));
                                    writer.Write(csv.Format((scan.TerraformState != null) ? scan.TerraformState : ""));
                                    writer.Write(csv.Format((scan.PlanetClass != null) ? scan.PlanetClass : ""));
                                    writer.Write(csv.Format((scan.Atmosphere != null) ? scan.Atmosphere : ""));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Iron")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Silicates")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("SulphurDioxide")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("CarbonDioxide")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Nitrogen")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Oxygen")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Water")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Argon")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Ammonia")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Methane")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Hydrogen")));
                                    writer.Write(csv.Format(scan.GetAtmosphereComponent("Helium")));
                                    writer.Write(csv.Format((scan.Volcanism != null) ? scan.Volcanism : ""));
                                    writer.Write(csv.Format(scan.nSurfaceGravity.HasValue ? scan.nSurfaceGravity.Value : 0));
                                    writer.Write(csv.Format(scan.nSurfacePressure.HasValue ? scan.nSurfacePressure.Value : 0));
                                    writer.Write(csv.Format(scan.nLandable.HasValue ? scan.nLandable.Value : false));
                                    writer.Write(csv.Format((scan.nMassEM.HasValue) ? scan.nMassEM.Value : 0));
                                    writer.Write(csv.Format(scan.GetCompositionPercent("Ice")));
                                    writer.Write(csv.Format(scan.GetCompositionPercent("Rock")));
                                    writer.Write(csv.Format(scan.GetCompositionPercent("Metal")));
                                }
                                // Common orbital param
                                writer.Write(csv.Format(scan.nSemiMajorAxis.HasValue ? scan.nSemiMajorAxis.Value : 0));
                                writer.Write(csv.Format(scan.nEccentricity.HasValue ? scan.nEccentricity.Value : 0));
                                writer.Write(csv.Format(scan.nOrbitalInclination.HasValue ? scan.nOrbitalInclination.Value : 0));
                                writer.Write(csv.Format(scan.nPeriapsis.HasValue ? scan.nPeriapsis.Value : 0));
                                writer.Write(csv.Format(scan.nOrbitalPeriod.HasValue ? scan.nOrbitalPeriod.Value : 0));
                                writer.Write(csv.Format(scan.nAxialTilt.HasValue ? scan.nAxialTilt : null));

                                if (ShowPlanets)
                                {
                                    writer.Write(csv.Format(scan.GetMaterial("Carbon")));
                                    writer.Write(csv.Format(scan.GetMaterial("Iron")));
                                    writer.Write(csv.Format(scan.GetMaterial("Nickel")));
                                    writer.Write(csv.Format(scan.GetMaterial("Phosphorus")));
                                    writer.Write(csv.Format(scan.GetMaterial("Sulphur")));
                                    writer.Write(csv.Format(scan.GetMaterial("Arsenic")));
                                    writer.Write(csv.Format(scan.GetMaterial("Chromium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Germanium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Manganese")));
                                    writer.Write(csv.Format(scan.GetMaterial("Selenium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Vanadium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Zinc")));
                                    writer.Write(csv.Format(scan.GetMaterial("Zirconium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Cadmium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Mercury")));
                                    writer.Write(csv.Format(scan.GetMaterial("Molybdenum")));
                                    writer.Write(csv.Format(scan.GetMaterial("Niobium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Tin")));
                                    writer.Write(csv.Format(scan.GetMaterial("Tungsten")));
                                    writer.Write(csv.Format(scan.GetMaterial("Antimony")));
                                    writer.Write(csv.Format(scan.GetMaterial("Polonium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Ruthenium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Technetium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Tellurium")));
                                    writer.Write(csv.Format(scan.GetMaterial("Yttrium")));
                                }
                                writer.WriteLine();
                            }
                        }

                        writer.Close();

                        if (frm.AutoOpen)
                        {
                            System.Diagnostics.Process.Start(frm.Path);
                        }
                    }
                }
                catch
                {
                    ExtendedControls.MessageBoxTheme.Show(FindForm(), "Failed to write to " + frm.Path, "Export Failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
        }
        private int EstimatedValueED22(bool isstar, EDStar st, bool isplanet, EDPlanet pl, bool terraformable, double?massstar, double?massem)
        {
            if (isstar)
            {
                switch (st)      // http://elite-dangerous.wikia.com/wiki/Explorer
                {
                case EDStar.O:
                    //low = 3677;
                    //high = 4465;
                    return(4170);

                case EDStar.B:
                    //low = 2992;
                    //high = 3456;
                    return(3098);

                case EDStar.A:
                    //low = 2938;
                    //high = 2986;
                    return(2950);

                case EDStar.F:
                    //low = 2915;
                    //high = 2957;
                    return(2932);

                case EDStar.G:
                    //low = 2912;
                    //high = 2935;
                    // also have a G8V
                    return(2923);

                case EDStar.K:
                    //low = 2898;
                    //high = 2923;
                    return(2911);

                case EDStar.M:
                    //low = 2887;
                    //high = 2905;
                    return(2911);

                // dwarfs
                case EDStar.L:
                    //low = 2884;
                    //high = 2890;
                    return(2887);

                case EDStar.T:
                    //low = 2881;
                    //high = 2885;
                    return(2883);

                case EDStar.Y:
                    //low = 2880;
                    //high = 2882;
                    return(2881);

                // proto stars
                case EDStar.AeBe:        // Herbig
                                         //                ??
                                         //low = //high = 0;
                    return(2500);

                case EDStar.TTS:
                    //low = 2881;
                    //high = 2922;
                    return(2900);

                // wolf rayet
                case EDStar.W:
                case EDStar.WN:
                case EDStar.WNC:
                case EDStar.WC:
                case EDStar.WO:
                    //low = //high = 7794;
                    return(7794);

                // Carbon
                case EDStar.CS:
                case EDStar.C:
                case EDStar.CN:
                case EDStar.CJ:
                case EDStar.CHd:
                    //low = //high = 2920;
                    return(2920);

                case EDStar.MS:     //seen in log
                case EDStar.S:      // seen in log
                                    //                ??
                                    //low = //high = 0;
                    return(2000);


                // white dwarf
                case EDStar.D:
                case EDStar.DA:
                case EDStar.DAB:
                case EDStar.DAO:
                case EDStar.DAZ:
                case EDStar.DAV:
                case EDStar.DB:
                case EDStar.DBZ:
                case EDStar.DBV:
                case EDStar.DO:
                case EDStar.DOV:
                case EDStar.DQ:
                case EDStar.DC:
                case EDStar.DCV:
                case EDStar.DX:
                    //low = 25000;
                    //high = 27000;

                    return(26000);

                case EDStar.N:
                    //low = 43276;
                    //high = 44619;
                    return(43441);

                case EDStar.H:
                    //low = 44749;
                    //high = 80305;
                    return(61439);

                case EDStar.X:
                case EDStar.A_BlueWhiteSuperGiant:
                case EDStar.F_WhiteSuperGiant:
                case EDStar.M_RedSuperGiant:
                case EDStar.M_RedGiant:
                case EDStar.K_OrangeGiant:
                case EDStar.RoguePlanet:

                default:
                    //low = 0;
                    //high = 0;
                    return(2000);
                }
            }
            else            // Planet
            {
                switch (pl) // http://elite-dangerous.wikia.com/wiki/Explorer
                {
                case EDPlanet.Icy_body:
                    //low = 792; // (0.0001 EM)
                    //high = 1720; // 89.17
                    return(933);    // 0.04

                case EDPlanet.Rocky_ice_body:
                    //low = 792; // (0.0001 EM)
                    //high = 1720; // 89.17
                    return(933);    // 0.04

                case EDPlanet.Rocky_body:
                    if (terraformable)
                    {
                        //low = 36000;
                        //high = 36500;
                        return(37000);
                    }
                    else
                    {
                        //low = 792; // (0.0001 EM)
                        //high = 1720; // 89.17
                        return(933);    // 0.04
                    }

                case EDPlanet.Metal_rich_body:
                    //low = 9145; // (0.0002 EM)
                    //high = 14562; // (4.03 EM)
                    return(12449);    // 0.51 EM

                case EDPlanet.High_metal_content_body:
                    if (terraformable)
                    {
                        //low = 36000;
                        //high = 54000;
                        return(42000);
                    }
                    else
                    {
                        //low = 4966; // (0.0015 EM)
                        //high = 9632;  // 31.52 EM
                        return(6670);    // 0.41
                    }

                case EDPlanet.Earthlike_body:
                    //low = 65000; // 0.24 EM
                    //high = 71885; // 196.60 EM
                    return(67798);    // 0.47 EM

                case EDPlanet.Water_world:
                    //low = 26589; // (0.09 EM)
                    //high = 43437; // (42.77 EM)
                    return(30492);    // (0.82 EM)

                case EDPlanet.Ammonia_world:
                    //low = 37019; // 0.09 EM
                    //high = 71885; //(196.60 EM)
                    return(40322);    // (0.41 EM)

                case EDPlanet.Sudarsky_class_I_gas_giant:
                    //low = 2472; // (2.30 EM)
                    //high = 4514; // (620.81 EM
                    return(3400);     // 62.93 EM

                case EDPlanet.Sudarsky_class_II_gas_giant:
                    //low = 8110; // (5.37 EM)
                    //high = 14618; // (949.98 EM)
                    return(12319);     // 260.84 EM

                case EDPlanet.Sudarsky_class_III_gas_giant:
                    //low = 1368; // (10.16 EM)
                    //high = 2731; // (2926 EM)
                    return(2339);    // 990.92 EM

                case EDPlanet.Sudarsky_class_IV_gas_giant:
                    //low = 2739; //(2984 EM)
                    //high = 2827; // (3697 EM)
                    return(2782);    // 3319 em

                case EDPlanet.Sudarsky_class_V_gas_giant:
                    //low = 2225; // 688.2 EM
                    //high = 2225;
                    return(2225);

                case EDPlanet.Water_giant:
                case EDPlanet.Water_giant_with_life:
                case EDPlanet.Gas_giant_with_water_based_life:
                case EDPlanet.Gas_giant_with_ammonia_based_life:
                case EDPlanet.Helium_rich_gas_giant:
                case EDPlanet.Helium_gas_giant:
                    //low = 0;
                    //high = 0;
                    return(2000);

                default:
                    //low = 0;
                    //high = 2000;
                    return(0);
                }
            }
        }
        public ScanEstimatedValues(DateTime utc, bool isstar, EDStar st, bool isplanet, EDPlanet pl, bool terraformable, double?massstar, double?massem)
        {
            // see https://forums.frontier.co.uk/showthread.php/232000-Exploration-value-formulae/ for detail

            if (utc < new DateTime(2017, 4, 11, 12, 0, 0, 0, DateTimeKind.Utc))
            {
                EstimatedValueBase = EstimatedValueED22(isstar, st, isplanet, pl, terraformable, massstar, massem);
                return;
            }

            if (utc < new DateTime(2018, 12, 11, 9, 0, 0, DateTimeKind.Utc))
            {
                EstimatedValueBase = EstimatedValue32(isstar, st, isplanet, pl, terraformable, massstar, massem);
                return;
            }

            // 3.3 onwards

            //System.Diagnostics.Debug.WriteLine("Scan calc " + mapped + " ef " + efficient + " Current " + EstimatedValue);

            double kValue;

            if (isstar)
            {
                switch (st)
                {
                // white dwarf
                case EDStar.D:
                case EDStar.DA:
                case EDStar.DAB:
                case EDStar.DAO:
                case EDStar.DAZ:
                case EDStar.DAV:
                case EDStar.DB:
                case EDStar.DBZ:
                case EDStar.DBV:
                case EDStar.DO:
                case EDStar.DOV:
                case EDStar.DQ:
                case EDStar.DC:
                case EDStar.DCV:
                case EDStar.DX:
                    kValue = 14057;
                    break;

                case EDStar.N:
                case EDStar.H:
                    kValue = 22628;
                    break;

                case EDStar.SuperMassiveBlackHole:
                    // this is applying the same scaling to the 3.2 value as a normal black hole, not confirmed in game
                    kValue = 33.5678;
                    break;

                default:
                    kValue = 1200;
                    break;
                }

                EstimatedValueBase = (int)StarValue32And33(kValue, massstar.HasValue ? massstar.Value : 1.0);
            }
            else
            {
                EstimatedValueBase = 0;

                if (isplanet)  //Asteroid belt is null
                {
                    switch (pl)
                    {
                    case EDPlanet.Metal_rich_body:
                        // CFT value is scaled same as WW/ELW from 3.2, not confirmed in game
                        // They're like hen's teeth anyway....
                        kValue = 21790;
                        if (terraformable)
                        {
                            kValue += 65631;
                        }
                        break;

                    case EDPlanet.Ammonia_world:
                        kValue = 96932;
                        break;

                    case EDPlanet.Sudarsky_class_I_gas_giant:
                        kValue = 1656;
                        break;

                    case EDPlanet.Sudarsky_class_II_gas_giant:
                    case EDPlanet.High_metal_content_body:
                        kValue = 9654;
                        if (terraformable)
                        {
                            kValue += 100677;
                        }
                        break;

                    case EDPlanet.Water_world:
                        kValue = 64831;
                        if (terraformable)
                        {
                            kValue += 116295;
                        }
                        break;

                    case EDPlanet.Earthlike_body:
                        // Always terraformable so WW + bonus
                        kValue = 64831 + 116295;
                        break;

                    default:
                        kValue = 300;
                        if (terraformable)
                        {
                            kValue += 93328;
                        }
                        break;
                    }

                    double mass           = massem.HasValue ? massem.Value : 1.0;
                    double effmapped      = 1.25;
                    double firstdiscovery = 2.6;

                    double basevalue = PlanetValue33(kValue, mass);

                    EstimatedValueBase = (int)basevalue;

                    EstimatedValueFirstDiscovered = (int)(basevalue * firstdiscovery);

                    EstimatedValueFirstDiscoveredFirstMapped            = (int)(basevalue * firstdiscovery * 3.699622554);
                    EstimatedValueFirstDiscoveredFirstMappedEfficiently = (int)(basevalue * firstdiscovery * 3.699622554 * effmapped);

                    EstimatedValueFirstMapped            = (int)(basevalue * 8.0956);
                    EstimatedValueFirstMappedEfficiently = (int)(basevalue * 8.0956 * effmapped);

                    EstimatedValueMapped            = (int)(basevalue * 3.3333333333);
                    EstimatedValueMappedEfficiently = (int)(basevalue * 3.3333333333 * effmapped);
                }
            }
        }
        private int EstimatedValue32(bool isstar, EDStar st, bool isplanet, EDPlanet pl, bool terraformable, double?massstar, double?massem)
        {
            double kValue;
            double kBonus = 0;

            if (isstar)
            {
                switch (st)      // http://elite-dangerous.wikia.com/wiki/Explorer
                {
                // white dwarf
                case EDStar.D:
                case EDStar.DA:
                case EDStar.DAB:
                case EDStar.DAO:
                case EDStar.DAZ:
                case EDStar.DAV:
                case EDStar.DB:
                case EDStar.DBZ:
                case EDStar.DBV:
                case EDStar.DO:
                case EDStar.DOV:
                case EDStar.DQ:
                case EDStar.DC:
                case EDStar.DCV:
                case EDStar.DX:
                    kValue = 33737;
                    break;

                case EDStar.N:
                case EDStar.H:
                    kValue = 54309;
                    break;

                case EDStar.SuperMassiveBlackHole:
                    kValue = 80.5654;
                    break;

                default:
                    kValue = 2880;
                    break;
                }

                return((int)StarValue32And33(kValue, massstar.HasValue ? massstar.Value : 1.0));
            }
            else if (!isplanet)  //Asteroid belt
            {
                return(0);
            }
            else            // Planet
            {
                switch (pl) // http://elite-dangerous.wikia.com/wiki/Explorer
                {
                case EDPlanet.Metal_rich_body:
                    kValue = 52292;
                    if (terraformable)
                    {
                        kBonus = 245306;
                    }
                    break;

                case EDPlanet.High_metal_content_body:
                case EDPlanet.Sudarsky_class_II_gas_giant:
                    kValue = 23168;
                    if (terraformable)
                    {
                        kBonus = 241607;
                    }
                    break;

                case EDPlanet.Earthlike_body:
                    kValue = 155581;
                    kBonus = 279088;
                    break;

                case EDPlanet.Water_world:
                    kValue = 155581;
                    if (terraformable)
                    {
                        kBonus = 279088;
                    }
                    break;

                case EDPlanet.Ammonia_world:
                    kValue = 232619;
                    break;

                case EDPlanet.Sudarsky_class_I_gas_giant:
                    kValue = 3974;
                    break;

                default:
                    kValue = 720;
                    if (terraformable)
                    {
                        kBonus = 223971;
                    }
                    break;
                }

                double mass = massem.HasValue ? massem.Value : 1.0;       // some old entries don't have mass, so just presume 1

                int val = (int)PlanetValueED32(kValue, mass);
                if (terraformable || pl == EDPlanet.Earthlike_body)
                {
                    val += (int)PlanetValueED32(kBonus, mass);
                }

                return(val);
            }
        }
Example #9
0
        public static string StarName(EDStar id)
        {
            switch (id)       // see journal, section 11.2
            {
            case EDStar.O:
                return(string.Format("Luminous Hot Main Sequence {0} star".T(EDTx.Bodies_HMS), id.ToString()));

            case EDStar.B:
                // also have an B1V
                return(string.Format("Luminous Blue Main Sequence {0} star".T(EDTx.Bodies_BMS), id.ToString()));

            case EDStar.A:
                // also have an A3V..
                return(string.Format("Bluish-White Main Sequence {0} star".T(EDTx.Bodies_BWMS), id.ToString()));

            case EDStar.F:
                return(string.Format("White Main Sequence {0} star".T(EDTx.Bodies_WMS), id.ToString()));

            case EDStar.G:
                // also have a G8V
                return(string.Format("Yellow Main Sequence {0} star".T(EDTx.Bodies_YMS), id.ToString()));

            case EDStar.K:
                // also have a K0V
                return(string.Format("Orange Main Sequence {0} star".T(EDTx.Bodies_OMS), id.ToString()));

            case EDStar.M:
                // also have a M1VA
                return(string.Format("Red Main Sequence {0} star".T(EDTx.Bodies_RMS), id.ToString()));

            // dwarfs
            case EDStar.L:
                return(string.Format("Dark Red Non Main Sequence {0} star".T(EDTx.Bodies_DRNS), id.ToString()));

            case EDStar.T:
                return(string.Format("Methane Dwarf star".T(EDTx.Bodies_MD)));

            case EDStar.Y:
                return(string.Format("Brown Dwarf star".T(EDTx.Bodies_BD)));

            // proto stars
            case EDStar.AeBe:        // Herbig
                return("Herbig Ae/Be");

            case EDStar.TTS:         // seen in logs
                return("T Tauri");

            // wolf rayet
            case EDStar.W:
            case EDStar.WN:
            case EDStar.WNC:
            case EDStar.WC:
            case EDStar.WO:
                return(string.Format("Wolf-Rayet {0} star".T(EDTx.Bodies_WR), id.ToString()));

            // Carbon
            case EDStar.CS:
            case EDStar.C:
            case EDStar.CN:
            case EDStar.CJ:
            case EDStar.CHd:
                return(string.Format("Carbon {0} star".T(EDTx.Bodies_C), id.ToString()));

            case EDStar.MS:     //seen in log https://en.wikipedia.org/wiki/S-type_star
                return(string.Format("Intermediate low Zirconium Monoxide Type star".T(EDTx.Bodies_IZ)));

            case EDStar.S:       // seen in log, data from http://elite-dangerous.wikia.com/wiki/Stars
                return(string.Format("Cool Giant Zirconium Monoxide rich Type star".T(EDTx.Bodies_CGZ)));

            // white dwarf
            case EDStar.D:
            case EDStar.DA:
            case EDStar.DAB:
            case EDStar.DAO:
            case EDStar.DAZ:
            case EDStar.DAV:
            case EDStar.DB:
            case EDStar.DBZ:
            case EDStar.DBV:
            case EDStar.DO:
            case EDStar.DOV:
            case EDStar.DQ:
            case EDStar.DC:
            case EDStar.DCV:
            case EDStar.DX:
                return(string.Format("White Dwarf {0} star".T(EDTx.Bodies_WD), id.ToString()));

            case EDStar.N:
                return("Neutron Star".T(EDTx.Bodies_NS));

            case EDStar.H:

                return("Black Hole".T(EDTx.Bodies_BH));

            case EDStar.X:
                // currently speculative, not confirmed with actual data... in journal
                return("Exotic".T(EDTx.Bodies_EX));

            // Journal.. really?  need evidence these actually are formatted like this.

            case EDStar.SuperMassiveBlackHole:
                return("Super Massive Black Hole".T(EDTx.Bodies_SMBH));

            case EDStar.A_BlueWhiteSuperGiant:
                return("Blue White Super Giant".T(EDTx.Bodies_BSG));

            case EDStar.F_WhiteSuperGiant:
                return("F White Super Giant".T(EDTx.Bodies_WSG));

            case EDStar.M_RedSuperGiant:
                return("M Red Super Giant".T(EDTx.Bodies_MSR));

            case EDStar.M_RedGiant:
                return("M Red Giant".T(EDTx.Bodies_MOG));

            case EDStar.K_OrangeGiant:
                return("K Orange Giant".T(EDTx.Bodies_KOG));

            case EDStar.RoguePlanet:
                return("Rogue Planet".T(EDTx.Bodies_RP));

            default:
                return(string.Format("Class {0} star\n", id.ToString()));
            }
        }
Example #10
0
 public static System.Drawing.Image GetStarTypeImage(EDStar type)
 {
     return(StarTypeIcons[type]);
 }
Example #11
0
        public ResponseData Store(EDStar edobj)
        {
            dynamic jo = new JObject();

            var joPost = new JObject {
                { "data", new JObject {
                      { "type", "stars" },
                      { "attributes", new JObject {
                            { "system-name", edobj.system },
                            { "updater", EDDiscoveryForm.EDDConfig.CurrentCommander.Name },
                            { "star", edobj.objectName },
                            { "spectral-class", edobj.Description },
                            { "spectral-subclass", edobj.subclass },
                            { "solar-mass", edobj.mass },
                            { "solar-radius", edobj.radius },
                            { "surface-temp", edobj.surfaceTemp },
                            { "star-age", edobj.star_age },
                            { "orbit-period", edobj.orbitPeriod },
                            { "arrival-point", edobj.arrivalPoint },
                            { "luminosity", edobj.luminosity },
                            { "notes", edobj.notes },
                            { "image-url", edobj.imageUrl }
                        } }
                  } }
            };

            ResponseData response;

            if (edobj.id == 0)
            {
                response = RequestSecurePost(joPost.ToString(), $"{ApiNamespace}/stars");
                if (response.StatusCode == HttpStatusCode.Created)
                {
                    JObject jo2 = (JObject)JObject.Parse(response.Body);
                    JObject obj = (JObject)jo2["data"];
                    edobj.id = obj["id"].Value <int>();
                }
                else if ((int)response.StatusCode == 422)
                {
                    var queryParams = $"system={jo.system}&star={jo.star}";
                    var response2   = RequestGet($"{ApiNamespace}/stars/?{queryParams}");
                    if (response2.StatusCode == HttpStatusCode.OK)
                    {
                        JObject jo2   = (JObject)JObject.Parse(response2.Body);
                        JArray  items = (JArray)jo2["data"];
                        if (items.Count > 0)
                        {
                            edobj.id = items[0]["id"].Value <int>();
                            JObject jData = (JObject)joPost["data"];
                            jData["id"] = edobj.id;
                            response2   = RequestSecurePatch(joPost.ToString(), $"{ApiNamespace}/stars/" + edobj.id.ToString());
                            response    = response2;
                        }
                    }
                }
            }
            else
            {
                response = RequestSecurePatch(joPost.ToString(), $"{ApiNamespace}/stars/" + edobj.id.ToString());
            }
            return(response);
        }
Example #12
0
        public ResponseData Store(EDStar edobj)
        {
            dynamic jo = new JObject();

            var joPost = new JObject {
                { "data", new JObject {
                    { "type", "stars" },
                    { "attributes", new JObject {
                        { "system-name", edobj.system },
                        { "updater", EDDiscoveryForm.EDDConfig.CurrentCommander.Name },
                        { "star", edobj.objectName },
                        { "spectral-class", edobj.Description },
                        { "spectral-subclass", edobj.subclass },
                        { "solar-mass", edobj.mass },
                        { "solar-radius", edobj.radius },
                        { "surface-temp", edobj.surfaceTemp },
                        { "star-age", edobj.star_age },
                        { "orbit-period", edobj.orbitPeriod },
                        { "arrival-point", edobj.arrivalPoint },
                        { "luminosity", edobj.luminosity },
                        { "notes", edobj.notes },
                        { "image-url", edobj.imageUrl }
                    } }
                } }
            };

            ResponseData response;
            if (edobj.id == 0)
            {
                response = RequestSecurePost(joPost.ToString(), $"{ApiNamespace}/stars");
                if (response.StatusCode == HttpStatusCode.Created)
                {
                    JObject jo2 = (JObject)JObject.Parse(response.Body);
                    JObject obj = (JObject)jo2["data"];
                    edobj.id = obj["id"].Value<int>();
                }
                else if ((int)response.StatusCode == 422)
                {
                    var queryParams = $"system={jo.system}&star={jo.star}";
                    var response2 = RequestGet($"{ApiNamespace}/stars/?{queryParams}");
                    if (response2.StatusCode == HttpStatusCode.OK)
                    {
                        JObject jo2 = (JObject)JObject.Parse(response2.Body);
                        JArray items = (JArray)jo2["data"];
                        if (items.Count > 0)
                        {
                            edobj.id = items[0]["id"].Value<int>();
                            JObject jData = (JObject)joPost["data"];
                            jData["id"] = edobj.id;
                            response2 = RequestSecurePatch(joPost.ToString(), $"{ApiNamespace}/stars/" + edobj.id.ToString());
                            response = response2;
                        }
                    }
                }
            }
            else
            {
                response = RequestSecurePatch(joPost.ToString(), $"{ApiNamespace}/stars/" + edobj.id.ToString());
            }
            return response;
        }