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(); } }
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); }