private void showCommoditymaterialTradesForFactionToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridViewFactions.RightClickRow >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[dataGridViewFactions.RightClickRow].Tag as FactionStatistics; var dgvpanel = new ExtendedControls.ExtPanelDataGridViewScrollWithDGV <BaseUtils.DataGridViewColumnHider>(); dgvpanel.DataGrid.CreateTextColumns("Date".T(EDTx.UserControlOutfitting_Date), 100, 5, "Item".T(EDTx.UserControlFactions_Item), 150, 5, "Bought".T(EDTx.UserControlStats_GoodsBought), 50, 5, "Sold".T(EDTx.UserControlStats_GoodsSold), 50, 5); dgvpanel.DataGrid.SortCompare += (s, ev) => { if (ev.Column.Index >= 2) { ev.SortDataGridViewColumnNumeric(); } }; dgvpanel.DataGrid.RowHeadersVisible = false; dgvpanel.DataGrid.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; dgvpanel.DataGrid.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; string keyname = "UserControlFactionsShowCommdsMats"; dgvpanel.DataGrid.LoadColumnSettings(keyname, (a) => EliteDangerousCore.DB.UserDatabase.Instance.GetSettingInt(a, int.MinValue), (b) => EliteDangerousCore.DB.UserDatabase.Instance.GetSettingDouble(b, double.MinValue)); foreach (var he in FilterHistory((x) => x.journalEntry is IStatsJournalEntryMatCommod && x.StationFaction == fs.Name)) { var items = (he.journalEntry as IStatsJournalEntryMatCommod).ItemsList; foreach (var i in items) { var m = EliteDangerousCore.MaterialCommodityData.GetByFDName(i.Item1); // and we see if we actually have some at this time string name = m?.Name ?? i.Item1; int bought = i.Item2 > 0 ? i.Item2 : 0; int sold = i.Item2 < 0 ? -i.Item2 : 0; object[] rowobj = { EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(he.EventTimeUTC), name, bought.ToString("N0"), sold.ToString("N0") }; var row = dgvpanel.DataGrid.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dgvpanel.DataGrid, rowobj); dgvpanel.DataGrid.Rows.Add(row); } } ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); f.Add(new ExtendedControls.ConfigurableForm.Entry(dgvpanel, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(800, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(800 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Materials/Commodities for ".T(EDTx.UserControlFactions_MaterialCommodsFor) + fs.Name, closeicon: true); dgvpanel.DataGrid.SaveColumnSettings(keyname, (a, b) => EliteDangerousCore.DB.UserDatabase.Instance.PutSettingInt(a, b), (c, d) => EliteDangerousCore.DB.UserDatabase.Instance.PutSettingDouble(c, d)); } }
private void showMissionsForFactionToolStripMenuItem_Click(object sender, EventArgs e) { int row = dataGridViewFactions.RightClickRow; if (row >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[row].Tag as FactionStatistics; ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); MissionListUserControl mluc = new MissionListUserControl(); mluc.Clear(); MissionList ml = last_he?.MissionList; DateTime startdateutc = startDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(startDateTime.Value) : new DateTime(1980, 1, 1); DateTime enddateutc = endDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(endDateTime.Value) : new DateTime(8999, 1, 1); if (ml != null) { foreach (MissionState ms in ml.Missions.Values) { if (ms.State == MissionState.StateTypes.Completed && ms.Completed != null) { if (DateTime.Compare(ms.Completed.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(ms.Completed.EventTimeUTC, enddateutc) <= 0) { var faction = ms.Mission.Faction; if (faction == fs.Name) { mluc.Add(ms, true); } } } } mluc.Finish(); } string keyname = "UserControlFactionsShowMission"; mluc.dataGridView.LoadColumnSettings(keyname, (a) => EliteDangerousCore.DB.UserDatabase.Instance.GetSettingInt(a, int.MinValue), (b) => EliteDangerousCore.DB.UserDatabase.Instance.GetSettingDouble(b, double.MinValue)); f.Add(new ExtendedControls.ConfigurableForm.Entry(mluc, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(800, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(800 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Missions for ".T(EDTx.UserControlFactions_MissionsFor) + fs.Name, closeicon: true); mluc.dataGridView.SaveColumnSettings(keyname, (a, b) => EliteDangerousCore.DB.UserDatabase.Instance.PutSettingInt(a, b), (c, d) => EliteDangerousCore.DB.UserDatabase.Instance.PutSettingDouble(c, d)); } }
private void showMissionsForFactionToolStripMenuItem_Click(object sender, EventArgs e) { int row = dataGridViewFactions.RightClickRow; if (row >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[row].Tag as FactionStatistics; ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); MissionListUserControl mluc = new MissionListUserControl(); mluc.Clear(); List <MissionState> ml = discoveryform.history.MissionListAccumulator.GetMissionList(last_he?.MissionList ?? 0); DateTime startdateutc = startDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(startDateTime.Value) : new DateTime(1980, 1, 1); DateTime enddateutc = endDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(endDateTime.Value) : new DateTime(8999, 1, 1); if (ml != null) { foreach (MissionState ms in ml) { if (ms.State == MissionState.StateTypes.Completed && ms.Completed != null) { if (DateTime.Compare(ms.Completed.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(ms.Completed.EventTimeUTC, enddateutc) <= 0) { var faction = ms.Mission.Faction; if (faction == fs.Name) { mluc.Add(ms, true); } } } } mluc.Finish(); } DGVLoadColumnLayout(mluc.dataGridView, "ShowMission"); f.Add(new ExtendedControls.ConfigurableForm.Entry(mluc, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(800, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(800 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Missions for ".T(EDTx.UserControlFactions_MissionsFor) + fs.Name, closeicon: true); DGVSaveColumnLayout(mluc.dataGridView, "ShowMission"); } }
private void showBountiesAndBondsForFactionToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridViewFactions.RightClickRow >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[dataGridViewFactions.RightClickRow].Tag as FactionStatistics; var dgvpanel = new ExtendedControls.ExtPanelDataGridViewScrollWithDGV <BaseUtils.DataGridViewColumnHider>(); dgvpanel.DataGrid.CreateTextColumns("Date".T(EDTx.UserControlOutfitting_Date), 100, 5, "Bounty/Bond".T(EDTx.UserControlFactions_BountyBond), 80, 5, "Target".T(EDTx.UserControlFactions_Target), 150, 5, "Target Faction".T(EDTx.UserControlFactions_TargetFaction), 150, 5, "Reward".T(EDTx.UserControlFactions_Reward), 60, 5); dgvpanel.DataGrid.SortCompare += (s, ev) => { if (ev.Column.Index >= 4) { ev.SortDataGridViewColumnNumeric(); } }; dgvpanel.DataGrid.RowHeadersVisible = false; dgvpanel.DataGrid.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; string keyname = "UserControlFactionsShowBonds"; dgvpanel.DataGrid.LoadColumnSettings(keyname, (a) => EliteDangerousCore.DB.UserDatabase.Instance.GetSettingInt(a, int.MinValue), (b) => EliteDangerousCore.DB.UserDatabase.Instance.GetSettingDouble(b, double.MinValue)); foreach (var he in FilterHistory((x) => x.journalEntry is IStatsJournalEntryBountyOrBond && (x.journalEntry as IStatsJournalEntryBountyOrBond).HasFaction(fs.Name))) { var bb = he.journalEntry as IStatsJournalEntryBountyOrBond; object[] rowobj = { EDDiscoveryForm.EDDConfig.ConvertTimeToSelectedFromUTC(he.EventTimeUTC), bb.Type, bb.Target,bb.TargetFaction, bb.FactionReward(fs.Name).ToString("N0") }; var row = dgvpanel.DataGrid.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dgvpanel.DataGrid, rowobj); dgvpanel.DataGrid.Rows.Add(row); } ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); f.Add(new ExtendedControls.ConfigurableForm.Entry(dgvpanel, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(800, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(800 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Bounties/Bonds for ".T(EDTx.UserControlFactions_BountiesBondsFor) + fs.Name, closeicon: true); dgvpanel.DataGrid.SaveColumnSettings(keyname, (a, b) => EliteDangerousCore.DB.UserDatabase.Instance.PutSettingInt(a, b), (c, d) => EliteDangerousCore.DB.UserDatabase.Instance.PutSettingDouble(c, d)); } }
void ShowMissions(int row) { if (row >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[row].Tag as FactionStatistics; ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); MissionListUserControl mluc = new MissionListUserControl(); mluc.Clear(); MissionList ml = last_he?.MissionList; if (ml != null) { foreach (MissionState ms in ml.Missions.Values) { if (ms.State == MissionState.StateTypes.Completed && ms.Completed != null) { var faction = ms.Mission.Faction; if (faction == fs.Name) { mluc.Add(ms, true); } } } mluc.Finish(); } f.Add(new ExtendedControls.ConfigurableForm.Entry(mluc, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(800, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(800 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.Trigger += (dialogname, controlname, xtag) => { if (controlname == "OK" || controlname == "Close") { f.ReturnResult(DialogResult.OK); } }; f.AllowResize = true; f.ShowDialogCentred(this.FindForm(), this.FindForm().Icon, "Missions for ".Tx(EDTx.UserControlMissionAccounting_MissionsFor) + fs.Name, closeicon: true); } }
private void showFactionSystemDetailToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridViewFactions.RightClickRow >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[dataGridViewFactions.RightClickRow].Tag as FactionStatistics; var dgvpanel = new ExtendedControls.ExtPanelDataGridViewScrollWithDGV <BaseUtils.DataGridViewColumnHider>(); dgvpanel.DataGrid.CreateTextColumns("System".T(EDTx.UserControlModules_System), 100, 5, "System Address".T(EDTx.UserControlFactions_SystemAddress), 60, 5, "Missions".T(EDTx.UserControlMissions_MPlural), 50, 5, "+Influence".T(EDTx.UserControlFactions_colInfluence), 50, 5, // these align with columns of main view, with same names "Commds +".T(EDTx.UserControlFactions_CBought), 50, 5, "Commds -".T(EDTx.UserControlFactions_CSold), 50, 5, "Mats +".T(EDTx.UserControlFactions_MBought), 50, 5, "Mats -".T(EDTx.UserControlFactions_MSold), 50, 5, "Bounties".T(EDTx.UserControlFactions_BountiesPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5, "Bonds".T(EDTx.UserControlFactions_BondsPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5); dgvpanel.DataGrid.SortCompare += (s, ev) => { if (ev.Column.Index >= 1) { ev.SortDataGridViewColumnNumeric(); } }; dgvpanel.DataGrid.RowHeadersVisible = false; dgvpanel.DataGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; for (int col = 1; col < dgvpanel.DataGrid.ColumnCount - 1; col++) { dgvpanel.DataGrid.Columns[col].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; } DGVLoadColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); var systems = new List <SystemInfo>(); foreach (var si in fs.Systems.Values) { string systemName = null; if (last_he != null) { foreach (var he in HistoryList.FilterBefore(discoveryform.history.EntryOrder(), last_he, (x) => x.System.SystemAddress == si.SystemAddress)) { systemName = he.System.Name; break; } } systems.Add(new SystemInfo { Name = systemName, Address = si.SystemAddress, Missions = si.Missions, Influence = si.Influence }); } var list = FilterHistory((x) => (x.journalEntry is IStatsJournalEntryMatCommod && x.StationFaction == fs.Name) || (x.journalEntry is IStatsJournalEntryBountyOrBond && (x.journalEntry as IStatsJournalEntryBountyOrBond).HasFaction(fs.Name))); foreach (var he in list) { SystemInfo si = systems.Find(x => (he.System.SystemAddress != null && x.Address == he.System.SystemAddress) || (he.System.Name != null && x.Name == he.System.Name)); if (si == null) { si = new SystemInfo { Name = he.System.Name, Address = he.System.SystemAddress }; systems.Add(si); } if (he.journalEntry is IStatsJournalEntryMatCommod) { var items = (he.journalEntry as IStatsJournalEntryMatCommod).ItemsList; foreach (var i in items) { if (he.journalEntry.EventTypeID == JournalTypeEnum.MaterialTrade) { if (i.Count > 0) { si.AddMaterialsBought(i.Count); } else if (i.Count < 0) { si.AddMaterialsSold(i.Count); } } else { if (i.Count > 0) { si.AddCommoditiesBought(i.Count); } else if (i.Count < 0) { si.AddCommoditiesSold(i.Count); } } } } else { if (he.journalEntry.EventTypeID == JournalTypeEnum.Bounty) { si.AddBounties(1); si.AddBountyRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.FactionKillBond) { si.AddKillBonds(1); si.AddBondsRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } } } foreach (var system in systems) { object[] rowobj = { system.Name, system.Address, system.Missions?.ToString("N0"), system.Influence?.ToString("N0"), system.CommoditiesBought?.ToString("N0"), system.CommoditiesSold?.ToString("N0"), system.MaterialsBought?.ToString("N0"), system.MaterialsSold?.ToString("N0"), system.Bounties?.ToString("N0"), system.BountyRewardsValue?.ToString("N0"), system.KillBonds?.ToString("N0"), system.BondsRewardsValue?.ToString("N0") }; var row = dgvpanel.DataGrid.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dgvpanel.DataGrid, rowobj); dgvpanel.DataGrid.Rows.Add(row); } ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); f.Add(new ExtendedControls.ConfigurableForm.Entry(dgvpanel, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(960, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(960 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Systems Detail for ".T(EDTx.UserControlFactions_SystemsDetailFor) + fs.Name, closeicon: true); DGVSaveColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); } }
private void Display() { DataGridViewColumn sortcol = dataGridViewFactions.SortedColumn != null ? dataGridViewFactions.SortedColumn : dataGridViewFactions.Columns[0]; SortOrder sortorder = dataGridViewFactions.SortOrder != SortOrder.None ? dataGridViewFactions.SortOrder : SortOrder.Ascending; string toprowfaction = dataGridViewFactions.SafeFirstDisplayedScrollingRowIndex() >= 0 ? (dataGridViewFactions.Rows[dataGridViewFactions.SafeFirstDisplayedScrollingRowIndex()].Tag as FactionStatistics).Name : ""; dataGridViewFactions.Rows.Clear(); List <MissionState> ml = discoveryform.history.MissionListAccumulator.GetMissionList(last_he?.MissionList ?? 0); DateTime startdateutc = startDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(startDateTime.Value) : new DateTime(1980, 1, 1); DateTime enddateutc = endDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(endDateTime.Value) : new DateTime(8999, 1, 1); var factionslist = new Dictionary <string, FactionStatistics>(); if (ml != null) { foreach (MissionState ms in ml) { bool withinstarttime = DateTime.Compare(ms.Mission.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(ms.Mission.EventTimeUTC, enddateutc) <= 0; bool withinexpirytime = ms.Mission.ExpiryValid && DateTime.Compare(ms.Mission.Expiry, startdateutc) >= 0 && DateTime.Compare(ms.Mission.Expiry, enddateutc) <= 0; bool withincompletetime = ms.Completed != null && DateTime.Compare(ms.Completed.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(ms.Completed.EventTimeUTC, enddateutc) <= 0; if (withinstarttime || withincompletetime) { var faction = ms.Mission.Faction; FactionStatistics factionStats; if (!factionslist.TryGetValue(faction, out factionStats)) { factionStats = new FactionStatistics(faction); factionslist.Add(faction, factionStats); } if (ms.Completed != null) // effects/rewards are dependent on completion { factionStats.AddMissions(1); // 1 more mission, if (ms.Completed.FactionEffects != null) { foreach (var fe in ms.Completed.FactionEffects) { if (fe.Faction == faction) { if (fe.ReputationTrend == "UpGood" && fe.Reputation?.Length > 0) { factionStats.AddReputation(fe.Reputation.Length); } foreach (var si in fe.Influence) { if (si.Trend == "UpGood" && si.Influence?.Length > 0) { factionStats.AddInfluence(si.Influence.Length); factionStats.AddSystemInfluence(si.SystemAddress, si.Influence.Length, ms.Completed.MissionId); } } } } } long credits = ms.Completed.Reward != null ? (long)ms.Completed.Reward : 0; if (credits > 0) { factionStats.AddCredits(credits); } if (ms.Completed.MaterialsReward != null) { foreach (var mr in ms.Completed.MaterialsReward) { factionStats.AddReward(mr.Name_Localised, mr.Count); } } if (ms.Completed.CommodityReward != null) { foreach (var cr in ms.Completed.CommodityReward) { factionStats.AddReward(cr.Name_Localised, cr.Count); } } } else if (withinexpirytime && ms.State == MissionState.StateTypes.InProgress) { factionStats.AddMissionsInProgress(1); } } } } Dictionary <string, Stats.FactionInfo> factioninfo = null; if (startDateTime.Checked || endDateTime.Checked) // if we have a date range, can't rely on stats accumulated automatically { Stats stats = new Stats(); // reprocess this list completely foreach (var he in HistoryList.FilterByDateRange(discoveryform.history.EntryOrder(), startdateutc, enddateutc)) { stats.Process(he.journalEntry, he.StationFaction); } factioninfo = stats.GetLastEntries(); // pick the last generation in there. } else { factioninfo = discoveryform.history.GetStatsAtGeneration(last_he?.Statistics ?? 0); } if (factioninfo != null) { foreach (var fkvp in factioninfo) { if (!factionslist.TryGetValue(fkvp.Value.Faction, out FactionStatistics factionStats)) { factionStats = new FactionStatistics(fkvp.Value.Faction); factionslist.Add(fkvp.Value.Faction, factionStats); } factionslist[fkvp.Value.Faction].AddFactionStats(fkvp.Value); } } if (factionslist.Count > 0) { var rows = new List <DataGridViewRow>(); foreach (FactionStatistics fs in factionslist.Values) { var info = ""; if (fs.MissionsInProgress > 0) { info = info.AppendPrePad("Missions In Progress:".T(EDTx.UserControlFactions_MissionsInProgress) + " " + fs.MissionsInProgress, ", "); } foreach (var reward in fs.Rewards.Values) { info = info.AppendPrePad(reward.Count + " " + reward.Name, ", "); } if (fs.FactionStats.CapShipAwardAsVictimFaction > 0) { info = info.AppendPrePad("Capital ship Victims: ".T(EDTx.UserControlFactions_CapShipVictims) + fs.FactionStats.CapShipAwardAsVictimFaction, ", "); } if (fs.FactionStats.CapShipAwardAsAwaringFaction > 0) { info = info.AppendPrePad("Capital ship Award: ".T(EDTx.UserControlFactions_CapShipAward) + fs.FactionStats.CapShipAwardAsAwaringFaction + ":" + fs.FactionStats.CapShipAwardAsAwaringFactionValue.ToString("N0") + "cr", ", "); } object[] rowobj = { fs.Name, fs.Missions.ToString("N0"), fs.Influence.ToString("N0"), fs.Reputation.ToString("N0"), fs.Credits.ToString("N0"), fs.FactionStats.BoughtCommodity.ToString("N0"), fs.FactionStats.SoldCommodity.ToString("N0"), fs.FactionStats.ProfitCommodity.ToString("N0"), fs.FactionStats.BoughtMaterial.ToString("N0"), fs.FactionStats.SoldMaterial.ToString("N0"), fs.FactionStats.CrimesAgainst.ToString("N0"), fs.FactionStats.BountyKill.ToString("N0"), fs.FactionStats.BountyRewards.ToString("N0"), fs.FactionStats.BountyRewardsValue.ToString("N0"), fs.FactionStats.Interdicted.ToString("N0"), fs.FactionStats.Interdiction.ToString("N0"), fs.FactionStats.KillBondAwardAsVictimFaction.ToString("N0"),fs.FactionStats.KillBondAwardAsAwaringFaction.ToString("N0"), fs.FactionStats.KillBondAwardAsAwaringFactionValue.ToString("N0"), info }; var row = dataGridViewFactions.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dataGridViewFactions, rowobj); row.Tag = fs; rows.Add(row); } dataGridViewFactions.Rows.AddRange(rows.ToArray()); dataGridViewFactions.Sort(sortcol, (sortorder == SortOrder.Descending) ? System.ComponentModel.ListSortDirection.Descending : System.ComponentModel.ListSortDirection.Ascending); dataGridViewFactions.Columns[sortcol.Index].HeaderCell.SortGlyphDirection = sortorder; if (toprowfaction.HasChars()) { for (int i = 0; i < dataGridViewFactions.RowCount; i++) { var fs = dataGridViewFactions.Rows[i].Tag as FactionStatistics; if (fs.Name == toprowfaction) { dataGridViewFactions.SafeFirstDisplayedScrollingRowIndex(i); break; } } } } labelValue.Text = factionslist.Count + " " + "Factions".T(EDTx.UserControlFactions_FactionsPlural); }
private void Display() { this.Factions = new Dictionary <string, FactionStatistics>(); dataGridViewFactions.Rows.Clear(); MissionList ml = last_he?.MissionList; var total = 0; if (ml != null) { foreach (MissionState ms in ml.Missions.Values) { if (ms.State == MissionState.StateTypes.Completed && ms.Completed != null) { DateTime startdateutc = startDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(startDateTime.Value) : new DateTime(1980, 1, 1); DateTime enddateutc = endDateTime.Checked ? EDDConfig.Instance.ConvertTimeToUTCFromSelected(endDateTime.Value) : new DateTime(8999, 1, 1); if (DateTime.Compare(ms.Completed.EventTimeUTC, startdateutc) >= 0 && DateTime.Compare(ms.Completed.EventTimeUTC, enddateutc) <= 0) { // System.Diagnostics.Debug.WriteLine(ms.Mission.Faction + " " + ms.Mission.Name + " " + ms.Completed.EventTimeUTC); total++; var faction = ms.Mission.Faction; int inf = 0; int rep = 0; if (ms.Completed.FactionEffects != null) { foreach (var fe in ms.Completed.FactionEffects) { if (fe.Faction == faction) { if (fe.ReputationTrend == "UpGood" && fe.Reputation?.Length > 0) { rep = fe.Reputation.Length; } foreach (var si in fe.Influence) { if (si.Trend == "UpGood" && si.Influence?.Length > 0) { inf += si.Influence.Length; } } } } } long credits = ms.Completed.Reward != null ? (long)ms.Completed.Reward : 0; FactionStatistics factionStats; if (!this.Factions.TryGetValue(faction, out factionStats)) { factionStats = new FactionStatistics(faction); this.Factions.Add(faction, factionStats); } factionStats.AddMissions(1); if (inf > 0) { factionStats.AddInfluence(inf); } if (rep > 0) { factionStats.AddReputation(rep); } if (credits > 0) { factionStats.AddCredits(credits); } if (ms.Completed.MaterialsReward != null) { foreach (var mr in ms.Completed.MaterialsReward) { factionStats.AddReward(mr.Name_Localised, mr.Count); } } if (ms.Completed.CommodityReward != null) { foreach (var cr in ms.Completed.CommodityReward) { factionStats.AddReward(cr.Name_Localised, cr.Count); } } } } } if (total > 0) { //System.Diagnostics.Debug.WriteLine(total + " missions"); var rows = new List <DataGridViewRow>(total); foreach (FactionStatistics fs in this.Factions.Values) { var rewards = ""; foreach (var reward in fs.Rewards.Values) { if (rewards.Length > 0) { rewards += ", "; } rewards += reward.Count + " " + reward.Name; } object[] rowobj = { fs.Name, fs.Missions, fs.Influence, fs.Reputation, String.Format("{0:n0}", fs.Credits), rewards }; var row = dataGridViewFactions.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dataGridViewFactions, rowobj); row.Tag = fs; rows.Add(row); } dataGridViewFactions.Rows.AddRange(rows.ToArray()); } } labelValue.Text = total + " missions"; }
private void showFactionSystemDetailToolStripMenuItem_Click(object sender, EventArgs e) { if (dataGridViewFactions.RightClickRow >= 0) { FactionStatistics fs = dataGridViewFactions.Rows[dataGridViewFactions.RightClickRow].Tag as FactionStatistics; var dgvpanel = new ExtendedControls.ExtPanelDataGridViewScrollWithDGV <BaseUtils.DataGridViewColumnControl>(); dgvpanel.DataGrid.CreateTextColumns("System".T(EDTx.UserControlModules_System), 100, 5, "System Address".T(EDTx.UserControlFactions_SystemAddress), 60, 5, "Missions".T(EDTx.UserControlMissions_MPlural), 50, 5, "+Influence".T(EDTx.UserControlFactions_colInfluence), 50, 5, // these align with columns of main view, with same names "Commds +".T(EDTx.UserControlFactions_CBought), 50, 5, "Commds -".T(EDTx.UserControlFactions_CSold), 50, 5, "Mats +".T(EDTx.UserControlFactions_MBought), 50, 5, "Mats -".T(EDTx.UserControlFactions_MSold), 50, 5, "Bounties".T(EDTx.UserControlFactions_BountiesPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5, "Bonds".T(EDTx.UserControlFactions_BondsPlural), 50, 5, "Rewards".T(EDTx.UserControlFactions_RewardsPlural), 60, 5, "Cartographic Value".T(EDTx.UserControlFactions_CartoValue), 60, 5); dgvpanel.DataGrid.SortCompare += (s, ev) => { if (ev.Column.Index >= 1) { ev.SortDataGridViewColumnNumeric(); } }; dgvpanel.DataGrid.RowHeadersVisible = false; dgvpanel.DataGrid.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; for (int col = 1; col < dgvpanel.DataGrid.ColumnCount - 1; col++) { dgvpanel.DataGrid.Columns[col].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; } DGVLoadColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); // systems to present var systems = new List <SystemInfo>(); // look thru the influence systems and add it to the list of systems foreach (var si in fs.SystemsWithInfluence.Values) { string systemName = null; if (last_he != null) { foreach (var he in HistoryList.FilterBefore(discoveryform.history.EntryOrder(), last_he, (x) => x.System.SystemAddress == si.SystemAddress)) { systemName = he.System.Name; break; } } systems.Add(new SystemInfo { Name = systemName, Address = si.SystemAddress, Missions = si.Missions, Influence = si.Influence }); } // find all the history entries with faction, taking into account start/end date, and last_he position var list = FilterHistory((x) => (x.journalEntry is IStatsJournalEntryMatCommod && x.StationFaction == fs.Name) || // he's with changes in stats due to MatCommod trading (x.journalEntry is IStatsJournalEntryBountyOrBond && (x.journalEntry as IStatsJournalEntryBountyOrBond).HasFaction(fs.Name)) || // he's with Bountry/bond ((x.journalEntry.EventTypeID == JournalTypeEnum.SellExplorationData || x.journalEntry.EventTypeID == JournalTypeEnum.MultiSellExplorationData) && x.StationFaction == fs.Name) // he's for exploration ); foreach (var he in list) { SystemInfo si = systems.Find(x => // do we have this previous entry? (he.System.SystemAddress != null && x.Address == he.System.SystemAddress) || (he.System.Name != null && x.Name == he.System.Name)); if (si == null) // no, add it to the system list { si = new SystemInfo { Name = he.System.Name, Address = he.System.SystemAddress }; systems.Add(si); } if (he.journalEntry is IStatsJournalEntryMatCommod) // is this a material or commodity trade? { var items = (he.journalEntry as IStatsJournalEntryMatCommod).ItemsList; foreach (var i in items) { if (he.journalEntry.EventTypeID == JournalTypeEnum.MaterialTrade) // material trade is only counter for mats { if (i.Count > 0) { si.AddMaterialsBought(i.Count); } else if (i.Count < 0) { si.AddMaterialsSold(-i.Count); } } else { // all others are commds if (i.Count > 0) { si.AddCommoditiesBought(i.Count); } else { si.AddCommoditiesSold(-i.Count); // value is negative, invert } } } } else { // System.Diagnostics.Debug.WriteLine($"Faction {fs.Name} Journal entry {he.journalEntry.EventTypeStr} {he.System.Name}"); if (he.journalEntry.EventTypeID == JournalTypeEnum.Bounty) { si.AddBounties(1); si.AddBountyRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.FactionKillBond) { si.AddKillBonds(1); si.AddBondsRewardsValue((he.journalEntry as IStatsJournalEntryBountyOrBond).FactionReward(fs.Name)); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.SellExplorationData) { si.AddCartographicValue((he.journalEntry as EliteDangerousCore.JournalEvents.JournalSellExplorationData).TotalEarnings); } else if (he.journalEntry.EventTypeID == JournalTypeEnum.MultiSellExplorationData) { si.AddCartographicValue((he.journalEntry as EliteDangerousCore.JournalEvents.JournalMultiSellExplorationData).TotalEarnings); } } } foreach (var system in systems) { object[] rowobj = { system.Name, system.Address, system.Missions?.ToString("N0"), system.Influence?.ToString("N0"), system.CommoditiesBought?.ToString("N0"), system.CommoditiesSold?.ToString("N0"), system.MaterialsBought?.ToString("N0"), system.MaterialsSold?.ToString("N0"), system.Bounties?.ToString("N0"), system.BountyRewardsValue?.ToString("N0"), system.KillBonds?.ToString("N0"), system.BondsRewardsValue?.ToString("N0"), system.CartographicValue?.ToString("N0"), }; var row = dgvpanel.DataGrid.RowTemplate.Clone() as DataGridViewRow; row.CreateCells(dgvpanel.DataGrid, rowobj); dgvpanel.DataGrid.Rows.Add(row); } ExtendedControls.ConfigurableForm f = new ExtendedControls.ConfigurableForm(); f.Add(new ExtendedControls.ConfigurableForm.Entry(dgvpanel, "Grid", "", new System.Drawing.Point(3, 30), new System.Drawing.Size(960, 400), null) { anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom }); f.AddOK(new Point(960 - 100, 460), "OK", anchor: AnchorStyles.Right | AnchorStyles.Bottom); f.InstallStandardTriggers(); f.AllowResize = true; f.ShowDialogCentred(FindForm(), FindForm().Icon, "Systems Detail for ".T(EDTx.UserControlFactions_SystemsDetailFor) + fs.Name, closeicon: true); DGVSaveColumnLayout(dgvpanel.DataGrid, "ShowSystemDetail"); } }