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