From 187457a80a0e686224bb6dd6f3db3c13eb4f56b8 Mon Sep 17 00:00:00 2001 From: Falco Date: Thu, 14 Sep 2023 23:33:51 +0200 Subject: [PATCH] Adds Bearing and Range from reference points separately to unit importer table --- .../CoordinateConverter.csproj | 1 + CoordinateConverter/DCS/Aircraft/AH64.cs | 2 +- .../DCS/Tools/FormUnitImporter.Designer.cs | 152 ++++++++++-------- .../DCS/Tools/FormUnitImporter.cs | 29 +++- .../DCS/Tools/FormUnitImporter.resx | 6 + 5 files changed, 115 insertions(+), 75 deletions(-) diff --git a/CoordinateConverter/CoordinateConverter.csproj b/CoordinateConverter/CoordinateConverter.csproj index acc3c7c..e6b2d70 100644 --- a/CoordinateConverter/CoordinateConverter.csproj +++ b/CoordinateConverter/CoordinateConverter.csproj @@ -132,6 +132,7 @@ FormUnitImporter.cs + Designer MainForm.cs diff --git a/CoordinateConverter/DCS/Aircraft/AH64.cs b/CoordinateConverter/DCS/Aircraft/AH64.cs index ff54253..e2e1324 100644 --- a/CoordinateConverter/DCS/Aircraft/AH64.cs +++ b/CoordinateConverter/DCS/Aircraft/AH64.cs @@ -303,7 +303,7 @@ public int ClearPoints(EPointType pointType, int startIdx, int endIdx) for (int pointIdx = startIdx - ((pointType == EPointType.ControlMeasure) ? 50 : 0); pointIdx <= endIdx - ((pointType == EPointType.ControlMeasure) ? 50 : 0); pointIdx++) { - commands.Add(new DCSCommand(deviceId, (int)EKeyCode.RMFD_TSD)); // Reset to TSD after every point, to a void weirdness. + commands.Add(new DCSCommand(deviceId, (int)EKeyCode.RMFD_TSD)); // Reset to TSD after every point, to avoid weirdness. commands.Add(new DCSCommand(deviceId, (int)EKeyCode.RMFD_B6)); // Point commands.Add(new DCSCommand(deviceId, (int)EKeyCode.RMFD_L1)); // Point > commands.AddRange(GetCommandsForKUText(pointType.ToString().First() + pointIdx.ToString() + "\n", true)); // Enter point identifier diff --git a/CoordinateConverter/DCS/Tools/FormUnitImporter.Designer.cs b/CoordinateConverter/DCS/Tools/FormUnitImporter.Designer.cs index e411449..d688f01 100644 --- a/CoordinateConverter/DCS/Tools/FormUnitImporter.Designer.cs +++ b/CoordinateConverter/DCS/Tools/FormUnitImporter.Designer.cs @@ -38,19 +38,21 @@ private void InitializeComponent() this.label6 = new System.Windows.Forms.Label(); this.cb_WithRadiusFilter = new System.Windows.Forms.CheckBox(); this.dgv_Units = new System.Windows.Forms.DataGridView(); + this.btn_Refresh = new System.Windows.Forms.Button(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.btn_Import = new System.Windows.Forms.Button(); + this.nud_RadiusValue = new System.Windows.Forms.NumericUpDown(); + this.btn_ApplyFilter = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); this.dgvColId = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvColCoalition = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvColTypeName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvColClass = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvColUnitName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvColPosition = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dgvColBearing = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dgvColRange = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dgvColImport = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.btn_Refresh = new System.Windows.Forms.Button(); - this.btn_Cancel = new System.Windows.Forms.Button(); - this.btn_Import = new System.Windows.Forms.Button(); - this.nud_RadiusValue = new System.Windows.Forms.NumericUpDown(); - this.btn_ApplyFilter = new System.Windows.Forms.Button(); - this.label2 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.dgv_Units)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nud_RadiusValue)).BeginInit(); this.SuspendLayout(); @@ -144,6 +146,8 @@ private void InitializeComponent() this.dgvColClass, this.dgvColUnitName, this.dgvColPosition, + this.dgvColBearing, + this.dgvColRange, this.dgvColImport}); this.dgv_Units.Location = new System.Drawing.Point(12, 66); this.dgv_Units.Name = "dgv_Units"; @@ -153,66 +157,6 @@ private void InitializeComponent() this.dgv_Units.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.Dgv_Units_CellContentClick); this.dgv_Units.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Dgv_Units_KeyPress); // - // dgvColId - // - this.dgvColId.Frozen = true; - this.dgvColId.HeaderText = "ID"; - this.dgvColId.MinimumWidth = 60; - this.dgvColId.Name = "dgvColId"; - this.dgvColId.ReadOnly = true; - this.dgvColId.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.dgvColId.Width = 60; - // - // dgvColCoalition - // - this.dgvColCoalition.HeaderText = "Coalition"; - this.dgvColCoalition.MinimumWidth = 55; - this.dgvColCoalition.Name = "dgvColCoalition"; - this.dgvColCoalition.ReadOnly = true; - this.dgvColCoalition.Width = 55; - // - // dgvColTypeName - // - this.dgvColTypeName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.dgvColTypeName.FillWeight = 10F; - this.dgvColTypeName.HeaderText = "Type"; - this.dgvColTypeName.MinimumWidth = 100; - this.dgvColTypeName.Name = "dgvColTypeName"; - this.dgvColTypeName.ReadOnly = true; - // - // dgvColClass - // - this.dgvColClass.FillWeight = 30F; - this.dgvColClass.HeaderText = "Class"; - this.dgvColClass.Name = "dgvColClass"; - this.dgvColClass.ReadOnly = true; - // - // dgvColUnitName - // - this.dgvColUnitName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.dgvColUnitName.FillWeight = 15F; - this.dgvColUnitName.HeaderText = "Unit/Group Name"; - this.dgvColUnitName.MinimumWidth = 50; - this.dgvColUnitName.Name = "dgvColUnitName"; - this.dgvColUnitName.ReadOnly = true; - // - // dgvColPosition - // - this.dgvColPosition.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.dgvColPosition.FillWeight = 25F; - this.dgvColPosition.HeaderText = "Position"; - this.dgvColPosition.MinimumWidth = 170; - this.dgvColPosition.Name = "dgvColPosition"; - this.dgvColPosition.ReadOnly = true; - // - // dgvColImport - // - this.dgvColImport.HeaderText = "Import"; - this.dgvColImport.MinimumWidth = 40; - this.dgvColImport.Name = "dgvColImport"; - this.dgvColImport.ReadOnly = true; - this.dgvColImport.Width = 40; - // // btn_Refresh // this.btn_Refresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -290,6 +234,78 @@ private void InitializeComponent() this.label2.TabIndex = 18; this.label2.Text = "Refresh asks DCS for a new unit list. Use apply above to apply a filter change.\r\n" + "CTRL/Shift+Click to highlight multiple and use space to select/deselect."; + // + // dgvColId + // + this.dgvColId.Frozen = true; + this.dgvColId.HeaderText = "ID"; + this.dgvColId.MinimumWidth = 60; + this.dgvColId.Name = "dgvColId"; + this.dgvColId.ReadOnly = true; + this.dgvColId.Resizable = System.Windows.Forms.DataGridViewTriState.False; + this.dgvColId.Width = 60; + // + // dgvColCoalition + // + this.dgvColCoalition.HeaderText = "Coalition"; + this.dgvColCoalition.MinimumWidth = 55; + this.dgvColCoalition.Name = "dgvColCoalition"; + this.dgvColCoalition.ReadOnly = true; + this.dgvColCoalition.Width = 55; + // + // dgvColTypeName + // + this.dgvColTypeName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dgvColTypeName.FillWeight = 10F; + this.dgvColTypeName.HeaderText = "Type"; + this.dgvColTypeName.MinimumWidth = 100; + this.dgvColTypeName.Name = "dgvColTypeName"; + this.dgvColTypeName.ReadOnly = true; + // + // dgvColClass + // + this.dgvColClass.FillWeight = 30F; + this.dgvColClass.HeaderText = "Class"; + this.dgvColClass.Name = "dgvColClass"; + this.dgvColClass.ReadOnly = true; + // + // dgvColUnitName + // + this.dgvColUnitName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dgvColUnitName.FillWeight = 15F; + this.dgvColUnitName.HeaderText = "Unit/Group Name"; + this.dgvColUnitName.MinimumWidth = 50; + this.dgvColUnitName.Name = "dgvColUnitName"; + this.dgvColUnitName.ReadOnly = true; + // + // dgvColPosition + // + this.dgvColPosition.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dgvColPosition.FillWeight = 25F; + this.dgvColPosition.HeaderText = "Position"; + this.dgvColPosition.MinimumWidth = 170; + this.dgvColPosition.Name = "dgvColPosition"; + this.dgvColPosition.ReadOnly = true; + // + // dgvColBearing + // + this.dgvColBearing.HeaderText = "REF BRG"; + this.dgvColBearing.Name = "dgvColBearing"; + this.dgvColBearing.ReadOnly = true; + // + // dgvColRange + // + this.dgvColRange.HeaderText = "REF RNG"; + this.dgvColRange.Name = "dgvColRange"; + this.dgvColRange.ReadOnly = true; + // + // dgvColImport + // + this.dgvColImport.HeaderText = "Import"; + this.dgvColImport.MinimumWidth = 40; + this.dgvColImport.Name = "dgvColImport"; + this.dgvColImport.ReadOnly = true; + this.dgvColImport.Width = 40; // // FormUnitImporter // @@ -340,13 +356,15 @@ private void InitializeComponent() private System.Windows.Forms.Button btn_Import; private System.Windows.Forms.NumericUpDown nud_RadiusValue; private System.Windows.Forms.Button btn_ApplyFilter; + private System.Windows.Forms.Label label2; private System.Windows.Forms.DataGridViewTextBoxColumn dgvColId; private System.Windows.Forms.DataGridViewTextBoxColumn dgvColCoalition; private System.Windows.Forms.DataGridViewTextBoxColumn dgvColTypeName; private System.Windows.Forms.DataGridViewTextBoxColumn dgvColClass; private System.Windows.Forms.DataGridViewTextBoxColumn dgvColUnitName; private System.Windows.Forms.DataGridViewTextBoxColumn dgvColPosition; + private System.Windows.Forms.DataGridViewTextBoxColumn dgvColBearing; + private System.Windows.Forms.DataGridViewTextBoxColumn dgvColRange; private System.Windows.Forms.DataGridViewCheckBoxColumn dgvColImport; - private System.Windows.Forms.Label label2; } } \ No newline at end of file diff --git a/CoordinateConverter/DCS/Tools/FormUnitImporter.cs b/CoordinateConverter/DCS/Tools/FormUnitImporter.cs index cd5ee68..9839c09 100644 --- a/CoordinateConverter/DCS/Tools/FormUnitImporter.cs +++ b/CoordinateConverter/DCS/Tools/FormUnitImporter.cs @@ -25,7 +25,7 @@ public partial class FormUnitImporter : Form /// public List Coordinates { get; private set; } = null; private readonly Dictionary referencePoints = null; - private const int IMPORT_CHECKBOX_COLUMN_ID = 6; + private const int IMPORT_CHECKBOX_COLUMN_ID = 8; private void UpdateAllUnitsFromDCS() { @@ -102,9 +102,9 @@ private void Filter() } Bullseye be = new Bullseye(refPoint.Coordinate); + ERangeUnit rangeUnit = ComboItem.GetSelectedValue(cb_RadiusUnit); if (cb_WithRadiusFilter.Checked) { - ERangeUnit rangeUnit = ComboItem.GetSelectedValue(cb_RadiusUnit); double rawRangeValue = (double)nud_RadiusValue.Value; double rangeInM = 0; switch (rangeUnit) @@ -178,11 +178,25 @@ private void Filter() Format = CoordinateSharp.CoordinateFormatType.Degree_Minutes_Seconds }; - string positionStr = coordinate.ToString(options); + string rangeStr = string.Empty; if (cb_WithRadiusFilter.Checked) { - - positionStr += " | From Ref: [" + be.GetBRA(coordinate).ToString() + "]"; + double rangeInNmi = be.GetBRA(coordinate).Range; + switch (rangeUnit) + { + case ERangeUnit.Feet: + rangeStr = Math.Round(rangeInNmi * 6076.12, 1).ToString() + " ft"; + break; + case ERangeUnit.NauticalMile: + rangeStr = Math.Round(rangeInNmi * 1, 1).ToString() + " nmi"; + break; + case ERangeUnit.Meter: + rangeStr = Math.Round(rangeInNmi * 1852, 1).ToString() + " m"; + break; + case ERangeUnit.KiloMeter: + rangeStr = Math.Round(rangeInNmi * 1.852, 1).ToString() + " km"; + break; + } } int rowIdx = dgv_Units.Rows.Add( @@ -191,7 +205,9 @@ private void Filter() unit.TypeName, unit.Type.Level2.ToString() + " / " + unit.Type.Level3.ToString(), (unit.UnitName ?? string.Empty) + " / " + (unit.GroupName ?? string.Empty), - positionStr, + coordinate.ToString(), + be != null ? Math.Round(be.GetBRA(coordinate).Bearing, 1).ToString() : String.Empty, + rangeStr, true ); @@ -290,7 +306,6 @@ private void Cb_WithRadiusFilter_CheckedChanged(object sender, EventArgs e) { nud_RadiusValue.Enabled = cb_WithRadiusFilter.Checked; cb_RadiusUnit.Enabled = cb_WithRadiusFilter.Checked; - cb_RadiusCenter.Enabled = cb_WithRadiusFilter.Checked; } private void Btn_ApplyFilter_Click(object sender, EventArgs e) diff --git a/CoordinateConverter/DCS/Tools/FormUnitImporter.resx b/CoordinateConverter/DCS/Tools/FormUnitImporter.resx index bf1f8c8..1dd965a 100644 --- a/CoordinateConverter/DCS/Tools/FormUnitImporter.resx +++ b/CoordinateConverter/DCS/Tools/FormUnitImporter.resx @@ -135,6 +135,12 @@ True + + True + + + True + True