# HG changeset patch # User IBBoard # Date 1250198181 0 # Node ID 3ceb0efd261f7d38b9d24ec0314df261b63971fb # Parent 67c283ea77a76c8fe58f4f9b6eaeedad4925d9d8 Re #118: Allow equipment amounts of "ratio" equipment to be define as absolute or ratio amounts * Use new commands created in previous revision Re #122: Make usage of percentage or ratio common * Make sure all usage of percentages are correct Re #117: Add percentage and number boxes to equipment item dialogs * Fix some enable/disable inconsistencies for percentage amounts * Fix problems where fixed limits weren't honoured by widgets diff -r 67c283ea77a7 -r 3ceb0efd261f FrmEditUnitEquipment.cs --- a/FrmEditUnitEquipment.cs Sun Aug 09 12:05:24 2009 +0000 +++ b/FrmEditUnitEquipment.cs Thu Aug 13 21:16:21 2009 +0000 @@ -46,9 +46,9 @@ if (equipItem.IsRatioLimit) { - numEquipAmount.Minimum = (decimal)Math.Round(equipItem.MinNumber * 100.0, 2); - numEquipAmount.Maximum = (decimal)Math.Round(equipItem.MaxNumber * 100.0, 2); - numEquipAmount.Value = (decimal)Math.Round(equipAmount * 100, 2); + numEquipAmount.Minimum = (decimal)Math.Round(equipItem.MinPercentage, 2); + numEquipAmount.Maximum = (decimal)Math.Round(equipItem.MaxPercentage, 2); + numEquipAmount.Value = (decimal)Math.Round(equipAmount, 2); cbEquipAll.Enabled = false; lblPercent.Visible = true; numEquipAmount.Width = 120; @@ -210,18 +210,18 @@ { if (equipAmount != WarFoundryCore.INFINITY) { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equipItem, WarFoundryCore.INFINITY)); + commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, WarFoundryCore.INFINITY)); } } else if (numEquipAmount.Value != (decimal)equipAmount) { if (equipItem.IsRatioLimit) { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equipItem, ((double)numEquipAmount.Value / 100.0))); + commandStack.Execute(new SetUnitEquipmentRatioAmountCommand(unit, equipItem, (double)numEquipAmount.Value)); } else - { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equipItem, (double)numEquipAmount.Value)); + { + commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, (int)numEquipAmount.Value)); } } diff -r 67c283ea77a7 -r 3ceb0efd261f FrmNewUnitEquipment.cs --- a/FrmNewUnitEquipment.cs Sun Aug 09 12:05:24 2009 +0000 +++ b/FrmNewUnitEquipment.cs Thu Aug 13 21:16:21 2009 +0000 @@ -1,272 +1,276 @@ -// This file (FrmNewUnitEquipment.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. -// -// The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license. - -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using IBBoard; -using IBBoard.Commands; -using IBBoard.WarFoundry.API; -using IBBoard.WarFoundry.API.Commands; -using IBBoard.WarFoundry.API.Objects; - -namespace IBBoard.WarFoundry -{ - /// - /// Summary description for FrmNewUnitEquipment. - /// - public class FrmNewUnitEquipment : System.Windows.Forms.Form - { - private Unit unit; - private bool required; - private CommandStack commandStack; - - private System.Windows.Forms.NumericUpDown numEquipAmount; - private System.Windows.Forms.Label lblPercent; - private System.Windows.Forms.Label lblAmount; - private System.Windows.Forms.Button bttnCancel; - private System.Windows.Forms.Button bttnOkay; - private System.Windows.Forms.CheckBox cbEquipAll; - private System.Windows.Forms.Label lblItem; - private System.Windows.Forms.ListBox listItems; - /// - /// Required designer variable. - /// - private System.ComponentModel.Container components = null; - - public FrmNewUnitEquipment(Unit unit, CommandStack stack) - { - commandStack = stack; - this.unit = unit; - InitializeComponent(); - this.Text = "New equipment for " + unit.Name; - object[] items = Arrays.Subtract(unit.GetAllowedOptionalEquipment(), unit.GetEquipment()); - listItems.Items.AddRange(items); - } - - /// - /// Clean up any resources being used. - /// - protected override void Dispose( bool disposing ) - { - if( disposing ) - { - if(components != null) - { - components.Dispose(); - } - } - base.Dispose( disposing ); - } - - #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.numEquipAmount = new System.Windows.Forms.NumericUpDown(); - this.lblPercent = new System.Windows.Forms.Label(); - this.lblAmount = new System.Windows.Forms.Label(); - this.bttnCancel = new System.Windows.Forms.Button(); - this.bttnOkay = new System.Windows.Forms.Button(); - this.cbEquipAll = new System.Windows.Forms.CheckBox(); - this.lblItem = new System.Windows.Forms.Label(); - this.listItems = new System.Windows.Forms.ListBox(); - ((System.ComponentModel.ISupportInitialize)(this.numEquipAmount)).BeginInit(); - this.SuspendLayout(); - // - // numEquipAmount - // - this.numEquipAmount.Enabled = false; - this.numEquipAmount.Location = new System.Drawing.Point(88, 80); - this.numEquipAmount.Name = "numEquipAmount"; - this.numEquipAmount.Size = new System.Drawing.Size(144, 20); - this.numEquipAmount.TabIndex = 0; - this.numEquipAmount.ValueChanged += new System.EventHandler(this.numEquipAmount_ValueChanged); - // - // lblPercent - // - this.lblPercent.Location = new System.Drawing.Point(208, 80); - this.lblPercent.Name = "lblPercent"; - this.lblPercent.Size = new System.Drawing.Size(16, 16); - this.lblPercent.TabIndex = 1; - this.lblPercent.Text = "%"; - this.lblPercent.Visible = false; - // - // lblAmount - // - this.lblAmount.Location = new System.Drawing.Point(8, 80); - this.lblAmount.Name = "lblAmount"; - this.lblAmount.Size = new System.Drawing.Size(72, 23); - this.lblAmount.TabIndex = 2; - this.lblAmount.Text = "amount"; - this.lblAmount.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // bttnCancel - // - this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.bttnCancel.Location = new System.Drawing.Point(160, 136); - this.bttnCancel.Name = "bttnCancel"; - this.bttnCancel.TabIndex = 3; - this.bttnCancel.Text = "cancel"; - this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click); - // - // bttnOkay - // - this.bttnOkay.Enabled = false; - this.bttnOkay.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.bttnOkay.Location = new System.Drawing.Point(8, 136); - this.bttnOkay.Name = "bttnOkay"; - this.bttnOkay.TabIndex = 4; - this.bttnOkay.Text = "okay"; - this.bttnOkay.Click += new System.EventHandler(this.bttnOkay_Click); - // - // cbEquipAll - // - this.cbEquipAll.Enabled = false; - this.cbEquipAll.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.cbEquipAll.Location = new System.Drawing.Point(88, 104); - this.cbEquipAll.Name = "cbEquipAll"; - this.cbEquipAll.TabIndex = 5; - this.cbEquipAll.Text = "equip all"; - this.cbEquipAll.CheckedChanged += new System.EventHandler(this.cbEquipAll_CheckedChanged); - // - // lblItem - // - this.lblItem.Location = new System.Drawing.Point(0, 8); - this.lblItem.Name = "lblItem"; - this.lblItem.Size = new System.Drawing.Size(80, 23); - this.lblItem.TabIndex = 6; - this.lblItem.Text = "item"; - this.lblItem.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // listItems - // - this.listItems.Location = new System.Drawing.Point(88, 8); - this.listItems.Name = "listItems"; - this.listItems.Size = new System.Drawing.Size(144, 69); - this.listItems.TabIndex = 7; - this.listItems.SelectedIndexChanged += new System.EventHandler(this.listItems_SelectedIndexChanged); - // - // FrmNewUnitEquipment - // - this.AcceptButton = this.bttnOkay; - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); - this.CancelButton = this.bttnCancel; - this.ClientSize = new System.Drawing.Size(240, 164); - this.ControlBox = false; - this.Controls.Add(this.listItems); - this.Controls.Add(this.lblItem); - this.Controls.Add(this.cbEquipAll); - this.Controls.Add(this.bttnOkay); - this.Controls.Add(this.bttnCancel); - this.Controls.Add(this.lblAmount); - this.Controls.Add(this.numEquipAmount); - this.Controls.Add(this.lblPercent); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Name = "FrmNewUnitEquipment"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "FrmEditUnitEquipment"; - ((System.ComponentModel.ISupportInitialize)(this.numEquipAmount)).EndInit(); - this.ResumeLayout(false); - - } - #endregion - - private void bttnOkay_Click(object sender, System.EventArgs e) - { - setValue(); - this.Close(); - } - - private void setValue() - { - UnitEquipmentItem equipItem = (UnitEquipmentItem)listItems.SelectedItem; - - if (cbEquipAll.Checked) - { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equipItem, WarFoundryCore.INFINITY)); - } - else - { - if (equipItem.IsRatioLimit) - { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equipItem, (double)numEquipAmount.Value / 100.0)); - } - else - { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equipItem, (double)numEquipAmount.Value)); - } - } - } - - private void bttnCancel_Click(object sender, System.EventArgs e) - { - this.Close(); - } - - private void cbEquipAll_CheckedChanged(object sender, System.EventArgs e) - { - numEquipAmount.Enabled = ((UnitEquipmentItem)listItems.SelectedItem).MinNumber != WarFoundryCore.INFINITY && !cbEquipAll.Checked; - setOkayButton(); - } - - private void listItems_SelectedIndexChanged(object sender, System.EventArgs e) - { - refreshNumber(); - setOkayButton(); - } - - private void refreshNumber() - { - if (listItems.SelectedIndex > -1) - { - UnitEquipmentItem equipItem = (UnitEquipmentItem)listItems.SelectedItem; - required = equipItem.IsRequired; - - if (equipItem.IsRatioLimit) - { - numEquipAmount.Minimum = (decimal)Math.Round(equipItem.MinNumber * 100.0, 2); - numEquipAmount.Maximum = (decimal)Math.Round(equipItem.MaxNumber * 100.0, 2); - numEquipAmount.Value = numEquipAmount.Minimum; - cbEquipAll.Enabled = false; - lblPercent.Visible = true; - numEquipAmount.Width = 120; - } - else - { - numEquipAmount.Minimum = (decimal)(equipItem.MinNumber != WarFoundryCore.INFINITY ? equipItem.MinNumber : unit.Size); - numEquipAmount.Maximum = (decimal)(equipItem.MaxNumber != WarFoundryCore.INFINITY ? equipItem.MaxNumber : unit.Size); - numEquipAmount.Value = numEquipAmount.Minimum; - cbEquipAll.Enabled = equipItem.MinNumber != WarFoundryCore.INFINITY; - cbEquipAll.Checked = equipItem.MinNumber == WarFoundryCore.INFINITY; - numEquipAmount.Width = 144; - } - } - else - { - numEquipAmount.Minimum = 0; - numEquipAmount.Value = 0; - numEquipAmount.Enabled = false; - cbEquipAll.Enabled = false; - } - } - - private void setOkayButton() - { - bttnOkay.Enabled = listItems.SelectedIndex > -1 && (cbEquipAll.Checked || (numEquipAmount.Enabled && numEquipAmount.Value > 0)); - } - - private void numEquipAmount_ValueChanged(object sender, System.EventArgs e) - { - setOkayButton(); - } - } -} +// This file (FrmNewUnitEquipment.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. +// +// The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license. + +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; +using IBBoard; +using IBBoard.Commands; +using IBBoard.Lang; +using IBBoard.WarFoundry.API; +using IBBoard.WarFoundry.API.Commands; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry +{ + /// + /// Summary description for FrmNewUnitEquipment. + /// + public class FrmNewUnitEquipment : System.Windows.Forms.Form + { + private Unit unit; + private bool required; + private CommandStack commandStack; + + private System.Windows.Forms.NumericUpDown numEquipAmount; + private System.Windows.Forms.Label lblPercent; + private System.Windows.Forms.Label lblAmount; + private System.Windows.Forms.Button bttnCancel; + private System.Windows.Forms.Button bttnOkay; + private System.Windows.Forms.CheckBox cbEquipAll; + private System.Windows.Forms.Label lblItem; + private System.Windows.Forms.ListBox listItems; + /// + /// Required designer variable. + /// + private System.ComponentModel.Container components = null; + + public FrmNewUnitEquipment(Unit unit, CommandStack stack) + { + commandStack = stack; + this.unit = unit; + InitializeComponent(); + this.Text = "New equipment for " + unit.Name; + object[] items = Arrays.Subtract(unit.GetAllowedOptionalEquipment(), unit.GetEquipment()); + listItems.Items.AddRange(items); + } + + /// + /// Clean up any resources being used. + /// + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if(components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + #region Windows Form Designer generated code + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.numEquipAmount = new System.Windows.Forms.NumericUpDown(); + this.lblPercent = new System.Windows.Forms.Label(); + this.lblAmount = new System.Windows.Forms.Label(); + this.bttnCancel = new System.Windows.Forms.Button(); + this.bttnOkay = new System.Windows.Forms.Button(); + this.cbEquipAll = new System.Windows.Forms.CheckBox(); + this.lblItem = new System.Windows.Forms.Label(); + this.listItems = new System.Windows.Forms.ListBox(); + ((System.ComponentModel.ISupportInitialize)(this.numEquipAmount)).BeginInit(); + this.SuspendLayout(); + // + // numEquipAmount + // + this.numEquipAmount.Enabled = false; + this.numEquipAmount.Location = new System.Drawing.Point(88, 80); + this.numEquipAmount.Name = "numEquipAmount"; + this.numEquipAmount.Size = new System.Drawing.Size(144, 20); + this.numEquipAmount.TabIndex = 0; + this.numEquipAmount.ValueChanged += new System.EventHandler(this.numEquipAmount_ValueChanged); + // + // lblPercent + // + this.lblPercent.Location = new System.Drawing.Point(208, 80); + this.lblPercent.Name = "lblPercent"; + this.lblPercent.Size = new System.Drawing.Size(16, 16); + this.lblPercent.TabIndex = 1; + this.lblPercent.Text = "%"; + this.lblPercent.Visible = false; + // + // lblAmount + // + this.lblAmount.Location = new System.Drawing.Point(8, 80); + this.lblAmount.Name = "lblAmount"; + this.lblAmount.Size = new System.Drawing.Size(72, 23); + this.lblAmount.TabIndex = 2; + this.lblAmount.Text = "amount"; + this.lblAmount.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // bttnCancel + // + this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.bttnCancel.Location = new System.Drawing.Point(160, 136); + this.bttnCancel.Name = "bttnCancel"; + this.bttnCancel.TabIndex = 3; + this.bttnCancel.Text = "cancel"; + this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click); + // + // bttnOkay + // + this.bttnOkay.Enabled = false; + this.bttnOkay.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.bttnOkay.Location = new System.Drawing.Point(8, 136); + this.bttnOkay.Name = "bttnOkay"; + this.bttnOkay.TabIndex = 4; + this.bttnOkay.Text = "okay"; + this.bttnOkay.Click += new System.EventHandler(this.bttnOkay_Click); + // + // cbEquipAll + // + this.cbEquipAll.Enabled = false; + this.cbEquipAll.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.cbEquipAll.Location = new System.Drawing.Point(88, 104); + this.cbEquipAll.Name = "cbEquipAll"; + this.cbEquipAll.TabIndex = 5; + this.cbEquipAll.Text = "equip all"; + this.cbEquipAll.CheckedChanged += new System.EventHandler(this.cbEquipAll_CheckedChanged); + // + // lblItem + // + this.lblItem.Location = new System.Drawing.Point(0, 8); + this.lblItem.Name = "lblItem"; + this.lblItem.Size = new System.Drawing.Size(80, 23); + this.lblItem.TabIndex = 6; + this.lblItem.Text = "item"; + this.lblItem.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // listItems + // + this.listItems.Location = new System.Drawing.Point(88, 8); + this.listItems.Name = "listItems"; + this.listItems.Size = new System.Drawing.Size(144, 69); + this.listItems.TabIndex = 7; + this.listItems.SelectedIndexChanged += new System.EventHandler(this.listItems_SelectedIndexChanged); + // + // FrmNewUnitEquipment + // + this.AcceptButton = this.bttnOkay; + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.CancelButton = this.bttnCancel; + this.ClientSize = new System.Drawing.Size(240, 164); + this.ControlBox = false; + this.Controls.Add(this.listItems); + this.Controls.Add(this.lblItem); + this.Controls.Add(this.cbEquipAll); + this.Controls.Add(this.bttnOkay); + this.Controls.Add(this.bttnCancel); + this.Controls.Add(this.lblAmount); + this.Controls.Add(this.numEquipAmount); + this.Controls.Add(this.lblPercent); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "FrmNewUnitEquipment"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "FrmEditUnitEquipment"; + ((System.ComponentModel.ISupportInitialize)(this.numEquipAmount)).EndInit(); + this.ResumeLayout(false); + + } + #endregion + + private void bttnOkay_Click(object sender, System.EventArgs e) + { + setValue(); + this.Close(); + } + + private void setValue() + { + UnitEquipmentItem equipItem = (UnitEquipmentItem)listItems.SelectedItem; + + if (cbEquipAll.Checked) + { + commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, WarFoundryCore.INFINITY)); + } + else + { + if (equipItem.IsRatioLimit) + { + commandStack.Execute(new SetUnitEquipmentRatioAmountCommand(unit, equipItem, (double)numEquipAmount.Value / 100.0)); + } + else + { + commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, (int)numEquipAmount.Value)); + } + } + } + + private void bttnCancel_Click(object sender, System.EventArgs e) + { + this.Close(); + } + + private void cbEquipAll_CheckedChanged(object sender, System.EventArgs e) + { + numEquipAmount.Enabled = ((UnitEquipmentItem)listItems.SelectedItem).MinNumber != WarFoundryCore.INFINITY && !cbEquipAll.Checked; + setOkayButton(); + } + + private void listItems_SelectedIndexChanged(object sender, System.EventArgs e) + { + refreshNumber(); + setOkayButton(); + } + + private void refreshNumber() + { + if (listItems.SelectedIndex > -1) + { + UnitEquipmentItem equipItem = (UnitEquipmentItem)listItems.SelectedItem; + required = equipItem.IsRequired; + + if (equipItem.IsRatioLimit) + { + numEquipAmount.Minimum = (decimal) equipItem.MinPercentage; + numEquipAmount.Maximum = (decimal) equipItem.MaxPercentage; + numEquipAmount.Enabled = true; + numEquipAmount.Value = numEquipAmount.Minimum; + cbEquipAll.Enabled = false; + lblPercent.Visible = true; + numEquipAmount.Width = 120; + } + else + { + numEquipAmount.Minimum = (decimal)(equipItem.MinNumber != WarFoundryCore.INFINITY ? Math.Min(equipItem.MinNumber, unit.Size) : unit.Size); + numEquipAmount.Maximum = (decimal)(equipItem.MaxNumber != WarFoundryCore.INFINITY ? Math.Min(equipItem.MaxNumber, unit.Size) : unit.Size); + numEquipAmount.Value = numEquipAmount.Minimum; + numEquipAmount.Enabled = equipItem.MinNumber != WarFoundryCore.INFINITY; + cbEquipAll.Enabled = equipItem.MinNumber != WarFoundryCore.INFINITY && equipItem.MaxNumber == WarFoundryCore.INFINITY; + cbEquipAll.Checked = equipItem.MinNumber == WarFoundryCore.INFINITY; + lblPercent.Visible = false; + numEquipAmount.Width = 144; + } + } + else + { + numEquipAmount.Minimum = 0; + numEquipAmount.Value = 0; + numEquipAmount.Enabled = false; + cbEquipAll.Enabled = false; + } + } + + private void setOkayButton() + { + bttnOkay.Enabled = listItems.SelectedIndex > -1 && (cbEquipAll.Checked || (numEquipAmount.Enabled && numEquipAmount.Value > 0)); + } + + private void numEquipAmount_ValueChanged(object sender, System.EventArgs e) + { + setOkayButton(); + } + } +} diff -r 67c283ea77a7 -r 3ceb0efd261f FrmReplaceUnitEquipment.cs --- a/FrmReplaceUnitEquipment.cs Sun Aug 09 12:05:24 2009 +0000 +++ b/FrmReplaceUnitEquipment.cs Thu Aug 13 21:16:21 2009 +0000 @@ -194,17 +194,17 @@ if (cbEquipAll.Checked) { - commandStack.Execute(new ReplaceUnitEquipmentCommand(unit, oldItem, equipItem, WarFoundryCore.INFINITY)); + commandStack.Execute(new ReplaceUnitEquipmentWithNumericAmountItemCommand(unit, oldItem, equipItem, WarFoundryCore.INFINITY)); } else { if (equipItem.IsRatioLimit) { - commandStack.Execute(new ReplaceUnitEquipmentCommand(unit, oldItem, equipItem, (double)numEquipAmount.Value / 100.0)); + commandStack.Execute(new ReplaceUnitEquipmentWithRatioAmountItemCommand(unit, oldItem, equipItem, (double)numEquipAmount.Value)); } else - { - commandStack.Execute(new ReplaceUnitEquipmentCommand(unit, oldItem, equipItem, (double)numEquipAmount.Value)); + { + commandStack.Execute(new ReplaceUnitEquipmentWithNumericAmountItemCommand(unit, oldItem, equipItem, (int)numEquipAmount.Value)); } } } diff -r 67c283ea77a7 -r 3ceb0efd261f FrmUnit.cs --- a/FrmUnit.cs Sun Aug 09 12:05:24 2009 +0000 +++ b/FrmUnit.cs Thu Aug 13 21:16:21 2009 +0000 @@ -19,8 +19,6 @@ namespace IBBoard.WarFoundry.WinForms { - ///TODO: Separate weapons out into optional and required, where required only has button for replacing - /// /// Summary description for FrmUnit. /// @@ -504,7 +502,7 @@ private void removeWeapon() { - commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, ((UnitEquipmentChoice) optList.SelectedItem).Item, 0)); + commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, ((UnitEquipmentChoice) optList.SelectedItem).Item, 0)); } private void bttnRemoveWeapon_Click(object sender, System.EventArgs e) diff -r 67c283ea77a7 -r 3ceb0efd261f Util/UnitEquipmentChoice.cs --- a/Util/UnitEquipmentChoice.cs Sun Aug 09 12:05:24 2009 +0000 +++ b/Util/UnitEquipmentChoice.cs Thu Aug 13 21:16:21 2009 +0000 @@ -29,8 +29,20 @@ public override string ToString() { - return String.Format("{0} (For {1} at {2}pts each)", item.Name, UnitEquipmentItem.FormatEquipmentAmount(item, unit.GetEquipmentAmount(item)), item.Cost); - } + return String.Format("{0} (For {1} at {2}pts each)", item.Name, GetAmountString(), item.Cost); + } + + private string GetAmountString() + { + if (unit.GetEquipmentAmountIsRatio(item)) + { + return UnitEquipmentRatioSelection.GetEquipmentAmountString(unit.GetEquipmentAmount(item)); + } + else + { + return UnitEquipmentNumericSelection.GetEquipmentAmountString(unit.GetEquipmentAmount(item)); + } + } public UnitEquipmentItem Item {