Beispiel #1
0
        private void Display(uint?mcl)        // update display. mcl can be null
        {
            last_mcl = mcl;

            DataGridViewColumn sortcolprev   = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortedColumn : dataGridViewMC.Columns[0];
            SortOrder          sortorderprev = dataGridViewMC.SortedColumn != null ? dataGridViewMC.SortOrder : SortOrder.Ascending;
            int firstline = dataGridViewMC.SafeFirstDisplayedScrollingRowIndex();

            dataGridViewMC.Rows.Clear();

            textBoxItems1.Text = textBoxItems2.Text = "";

            if (mcl == null)
            {
                return;
            }

            //System.Diagnostics.Debug.WriteLine("Display mcl " + mcl.GetHashCode());

            string filters = GetSetting(dbFilter, "All");

            //System.Diagnostics.Debug.WriteLine("Filter is " + filters);
            string[] filter    = filters.SplitNoEmptyStartFinish(';');
            bool     all       = filter.Length > 0 && filter[0] == "All";
            bool     showzeros = checkBoxShowZeros.Checked;

            dataViewScrollerPanel.SuspendLayout();

            MaterialCommodityMicroResourceType[] allitems = PanelMode == PanelType.Materials ? MaterialCommodityMicroResourceType.GetMaterials(true) : PanelMode == PanelType.MicroResources ? MaterialCommodityMicroResourceType.GetMicroResources(true) : MaterialCommodityMicroResourceType.GetCommodities(true);

            foreach (MaterialCommodityMicroResourceType mcd in allitems) // we go thru all items..
            {
                if (all || filter.Contains(mcd.FDName))                  // and see if they are in the filter
                {
                    object[] rowobj;

                    MaterialCommodityMicroResource m = discoveryform.history.MaterialCommoditiesMicroResources.Get(mcl.Value, mcd.FDName); // at generation mcl, find fdname.

                    if (showzeros || (m != null && m.NonZero))                                                                             // if display zero, or we have some..
                    {
                        string s = "";

                        if (PanelMode == PanelType.Materials)
                        {
                            s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine);

                            int limit = mcd.MaterialLimit() ?? 0;

                            rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory,
                                             mcd.TranslatedType + (limit > 0 ? " (" + limit.ToString() + ")" : ""),
                                             m != null?m.Count.ToString() : "0", s };
                        }
                        else if (PanelMode == PanelType.MicroResources)
                        {
                            rowobj = new[] { mcd.Name, mcd.Shortname, mcd.TranslatedCategory,
                                             m != null ? m.Counts[0].ToString() : "0", m != null ? m.Counts[1].ToString() : "0" };
                        }
                        else
                        {
                            s = Recipes.UsedInRecipesByFDName(mcd.FDName, Environment.NewLine);

                            rowobj = new[] { mcd.Name, mcd.TranslatedType,
                                             m != null?m.Count.ToString() : "0",
                                                 m != null?m.Price.ToString("0.#") : "-", s };
                        }

                        dataGridViewMC.Rows.Add(rowobj);
                        dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Cells[dataGridViewMC.ColumnCount - 1].ToolTipText = s;
                        dataGridViewMC.Rows[dataGridViewMC.RowCount - 1].Tag = s;
                    }
                }
            }

            dataViewScrollerPanel.ResumeLayout();

            dataGridViewMC.Sort(sortcolprev, (sortorderprev == SortOrder.Descending) ? ListSortDirection.Descending : ListSortDirection.Ascending);
            dataGridViewMC.Columns[sortcolprev.Index].HeaderCell.SortGlyphDirection = sortorderprev;
            if (firstline >= 0 && firstline < dataGridViewMC.RowCount)
            {
                dataGridViewMC.SafeFirstDisplayedScrollingRowIndex(firstline);
            }

            var mcllist = discoveryform.history.MaterialCommoditiesMicroResources.Get(mcl.Value);
            var counts  = MaterialCommoditiesMicroResourceList.Count(mcllist);

            if (PanelMode == PanelType.Materials)
            {
                textBoxItems1.Text = counts[(int)MaterialCommodityMicroResourceType.CatType.Encoded].ToString();
                textBoxItems2.Text = (counts[(int)MaterialCommodityMicroResourceType.CatType.Raw] + counts[(int)MaterialCommodityMicroResourceType.CatType.Manufactured]).ToString();
            }
            else if (PanelMode == PanelType.MicroResources)
            {
                textBoxItems1.Text = (counts[(int)MaterialCommodityMicroResourceType.CatType.Data] + counts[(int)MaterialCommodityMicroResourceType.CatType.Component] +
                                      counts[(int)MaterialCommodityMicroResourceType.CatType.Item] + counts[(int)MaterialCommodityMicroResourceType.CatType.Consumable]).ToString();
            }
            else
            {
                textBoxItems1.Text = counts[(int)MaterialCommodityMicroResourceType.CatType.Commodity].ToString();
            }
        }
Beispiel #2
0
        public JToken NewSRec(EliteDangerousCore.HistoryList hl, string type, int entry)       // entry = -1 means latest
        {
            HistoryEntry he = hl.EntryOrder()[entry];

            JObject response = new JObject();

            response["responsetype"] = type;
            response["entry"]        = entry;

            JObject systemdata = new JObject();

            systemdata["System"]        = he.System.Name;
            systemdata["SystemAddress"] = he.System.SystemAddress;
            systemdata["PosX"]          = he.System.X.ToStringInvariant("0.00");
            systemdata["PosY"]          = he.System.Y.ToStringInvariant("0.00");
            systemdata["PosZ"]          = he.System.Z.ToStringInvariant("0.00");
            systemdata["EDSMID"]        = he.System.EDSMID.ToStringInvariant();
            systemdata["VisitCount"]    = hl.GetVisitsCount(he.System.Name);
            response["SystemData"]      = systemdata;

            JObject sysstate = new JObject();

            hl.ReturnSystemInfo(he, out string allegiance, out string economy, out string gov, out string faction, out string factionstate, out string security);
            sysstate["State"]      = factionstate;
            sysstate["Allegiance"] = allegiance;
            sysstate["Gov"]        = gov;
            sysstate["Economy"]    = economy;
            sysstate["Faction"]    = faction;
            sysstate["Security"]   = security;
            sysstate["MarketID"]   = he.MarketID;
            response["EDDB"]       = sysstate;

            var mcl = hl.MaterialCommoditiesMicroResources.Get(he.MaterialCommodity);

            var    counts = MaterialCommoditiesMicroResourceList.Count(mcl);
            int    cargocount = counts[(int)MaterialCommodityMicroResourceType.CatType.Commodity];
            string shipname = "N/A", fuel = "N/A", range = "N/A", tanksize = "N/A";
            string cargo = cargocount.ToStringInvariant();

            ShipInformation si = he.ShipInformation;

            if (si != null)
            {
                shipname = si.ShipFullInfo(cargo: false, fuel: false);
                if (si.FuelLevel > 0)
                {
                    fuel = si.FuelLevel.ToStringInvariant("0.#");
                }
                if (si.FuelCapacity > 0)
                {
                    tanksize = si.FuelCapacity.ToStringInvariant("0.#");
                }

                EliteDangerousCalculations.FSDSpec fsd = si.GetFSDSpec();
                if (fsd != null)
                {
                    EliteDangerousCalculations.FSDSpec.JumpInfo ji = fsd.GetJumpInfo(cargocount,
                                                                                     si.ModuleMass() + si.HullMass(), si.FuelLevel, si.FuelCapacity / 2);
                    range = ji.cursinglejump.ToString("N2") + "ly";
                }

                int cargocap = si.CargoCapacity();

                if (cargocap > 0)
                {
                    cargo += "/" + cargocap.ToStringInvariant();
                }
            }

            JObject ship = new JObject();

            ship["Ship"]           = shipname;
            ship["Fuel"]           = fuel;
            ship["Range"]          = range;
            ship["TankSize"]       = tanksize;
            ship["Cargo"]          = cargo;
            ship["Data"]           = counts[(int)MaterialCommodityMicroResourceType.CatType.Encoded].ToStringInvariant();
            ship["Materials"]      = (counts[(int)MaterialCommodityMicroResourceType.CatType.Raw] + counts[(int)MaterialCommodityMicroResourceType.CatType.Manufactured]).ToStringInvariant();
            ship["MicroResources"] = (counts[(int)MaterialCommodityMicroResourceType.CatType.Data] + counts[(int)MaterialCommodityMicroResourceType.CatType.Component] +
                                      counts[(int)MaterialCommodityMicroResourceType.CatType.Item] + counts[(int)MaterialCommodityMicroResourceType.CatType.Consumable]).ToStringInvariant();
            response["Ship"] = ship;

            JObject travel = new JObject();

            if (he.isTravelling)
            {
                travel["Dist"]         = he.TravelledDistance.ToStringInvariant("0.0");
                travel["Jumps"]        = he.Travelledjumps.ToStringInvariant();
                travel["UnknownJumps"] = he.TravelledMissingjump.ToStringInvariant();
                travel["Time"]         = he.TravelledSeconds.ToString();
            }
            else
            {
                travel["Time"] = travel["Jumps"] = travel["Dist"] = "";
            }

            response["Travel"] = travel;

            response["Bodyname"] = he.WhereAmI;

            if (he.System.HasCoordinate)         // cursystem has them?
            {
                response["HomeDist"] = he.System.Distance(EDCommander.Current.HomeSystemIOrSol).ToString("0.##");
                response["SolDist"]  = he.System.Distance(0, 0, 0).ToString("0.##");
            }
            else
            {
                response["SolDist"] = response["HomeDist"] = "-";
            }

            response["GameMode"]  = he.GameModeGroup;
            response["Credits"]   = he.Credits.ToStringInvariant();
            response["Commander"] = EDCommander.Current.Name;
            response["Mode"]      = he.TravelState.ToString();

            return(response);
        }