Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
diff FrmReplaceUnitEquipment.cs @ 0:7dd160dacb60
Initial commit of WarFoundry code
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 19 Dec 2008 15:57:51 +0000 |
parents | |
children | 42cf06b8f897 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FrmReplaceUnitEquipment.cs Fri Dec 19 15:57:51 2008 +0000 @@ -0,0 +1,271 @@ +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; + +namespace IBBoard.WarFoundry +{ + /// <summary> + /// Summary description for FrmNewUnitEquipment. + /// </summary> + public class FrmReplaceUnitEquipment : System.Windows.Forms.Form + { + private Unit unit; + private EquipmentItem oldItem; + 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; + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.Container components = null; + + public FrmReplaceUnitEquipment(Unit unit, UnitEquipmentItem item, CommandStack stack) + { + commandStack = stack; + this.unit = unit; + oldItem = item.EquipmentItem; + InitializeComponent(); + this.Text = "Replace " + item.EquipmentItem.Name + " with new equipment"; + object[] items = Arrays.Subtract(unit.UnitType.GetEquipmentItemsByExclusionGroup(item.MutexGroup), unit.GetEquipment()); + listItems.Items.AddRange(items); + } + + /// <summary> + /// Clean up any resources being used. + /// </summary> + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if(components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + 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); + // + // FrmReplaceUnitEquipment + // + 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 = "FrmReplaceUnitEquipment"; + 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; + EquipmentItem equip = equipItem.EquipmentItem; + + if (cbEquipAll.Checked) + { + commandStack.Execute(new ReplaceUnitEquipmentCommand(unit, oldItem, equip, -1)); + } + else + { + if (equip.IsRatioLimit) + { + commandStack.Execute(new ReplaceUnitEquipmentCommand(unit, oldItem, equip, (float)((double)numEquipAmount.Value / 100.0))); + } + else + { + commandStack.Execute(new ReplaceUnitEquipmentCommand(unit, oldItem, equip, (float)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).EquipmentItem.MinNumber != -1 && !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; + EquipmentItem equip = equipItem.EquipmentItem; + required = equipItem.IsRequired; + + if (equip.IsRatioLimit) + { + numEquipAmount.Minimum = (decimal)Math.Round(equip.MinNumber * 100, 2); + numEquipAmount.Maximum = (decimal)Math.Round(equip.MaxNumber * 100, 2); + numEquipAmount.Value = numEquipAmount.Minimum; + cbEquipAll.Enabled = false; + lblPercent.Visible = true; + numEquipAmount.Width = 120; + } + else + { + numEquipAmount.Minimum = (decimal)(equip.MinNumber != -1 ? equip.MinNumber : unit.Size); + numEquipAmount.Maximum = (decimal)(equip.MaxNumber != -1 ? equip.MaxNumber : unit.Size); + numEquipAmount.Value = numEquipAmount.Minimum; + cbEquipAll.Enabled = (equip.MaxNumber == -1 && equip.MinNumber != -1); + cbEquipAll.Checked = equip.MinNumber == -1; + 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(); + } + } +}