diff FrmEditUnitEquipment.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/FrmEditUnitEquipment.cs	Fri Dec 19 15:57:51 2008 +0000
@@ -0,0 +1,249 @@
+using System;
+using System.Drawing;
+using System.Collections;
+using System.ComponentModel;
+using System.Windows.Forms;
+using IBBoard.Commands;
+using IBBoard.WarFoundry.API;
+using IBBoard.WarFoundry.API.Commands;
+
+namespace IBBoard.WarFoundry
+{
+	/// <summary>
+	/// Summary description for FrmEditUnitEquipment.
+	/// </summary>
+	public class FrmEditUnitEquipment : System.Windows.Forms.Form
+	{
+		private Unit unit;
+		private UnitEquipmentItem equipItem;
+		private EquipmentItem equip;
+		private float equipAmount;
+		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;
+		/// <summary>
+		/// Required designer variable.
+		/// </summary>
+		private System.ComponentModel.Container components = null;
+
+		public FrmEditUnitEquipment(Unit unit, UnitEquipmentItem equipItem, CommandStack stack)
+		{
+			commandStack = stack;
+			this.unit = unit;
+			this.equipItem = equipItem;
+			equip = equipItem.EquipmentItem;
+			InitializeComponent();
+			this.Text = equip.Name + " for " + unit.Name;
+			equipAmount = unit.GetEquipmentAmount(equip.ID);
+
+			if (equip.IsRatioLimit)
+			{
+				numEquipAmount.Minimum = (decimal)Math.Round(equip.MinNumber * 100, 2);
+				numEquipAmount.Maximum = (decimal)Math.Round(equip.MaxNumber * 100, 2);
+				numEquipAmount.Value = (decimal)Math.Round(equipAmount * 100, 2);
+				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 = (decimal)(equipAmount == -1 ? unit.Size : equipAmount);
+				cbEquipAll.Checked = (equipAmount == -1);
+				cbEquipAll.Enabled = (equip.MaxNumber == -1 && equip.MinNumber != -1);
+				numEquipAmount.Enabled = !cbEquipAll.Checked && equip.MinNumber != -1;
+				numEquipAmount.Width = 144;
+			}
+
+			bttnOkay.Enabled = false;
+		}
+
+		/// <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();
+			((System.ComponentModel.ISupportInitialize)(this.numEquipAmount)).BeginInit();
+			this.SuspendLayout();
+			// 
+			// numEquipAmount
+			// 
+			this.numEquipAmount.Location = new System.Drawing.Point(88, 8);
+			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, 8);
+			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, 8);
+			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, 64);
+			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, 64);
+			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, 32);
+			this.cbEquipAll.Name = "cbEquipAll";
+			this.cbEquipAll.TabIndex = 5;
+			this.cbEquipAll.Text = "equip all";
+			this.cbEquipAll.CheckedChanged += new System.EventHandler(this.cbEquipAll_CheckedChanged);
+			// 
+			// FrmEditUnitEquipment
+			// 
+			this.AcceptButton = this.bttnOkay;
+			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+			this.CancelButton = this.bttnCancel;
+			this.ClientSize = new System.Drawing.Size(240, 92);
+			this.ControlBox = false;
+			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 = "FrmEditUnitEquipment";
+			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)
+		{
+			if (setValue())
+			{
+				this.Close();
+			}
+		}
+
+		private bool setValue()
+		{			
+			if ((!numEquipAmount.Enabled || numEquipAmount.Value == 0) && !cbEquipAll.Checked && unit.GetEquipmentAmount(equip.ID) != 0)
+			{
+				if (equipItem.IsRequired)
+				{
+					MessageBox.Show(this, "This item is required and cannot be removed. It must have a quantity of at least one or be replaced by an alternative.", "Required item", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+					return false;
+				}
+				else
+				{
+					DialogResult dr = MessageBox.Show(this, "This will remove the item from the unit. Continue?", "Confirm remove", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
+
+					if (dr!=DialogResult.Yes)
+					{
+						return false;
+					}
+				}
+			}
+
+			if (cbEquipAll.Checked)
+			{
+				if (equipAmount!=-1)
+				{
+					commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equip, -1));
+				}
+			}
+			else if (numEquipAmount.Value != (decimal)equipAmount)
+			{
+				if (equip.IsRatioLimit)
+				{
+					commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equip, (float)((double)numEquipAmount.Value / 100.0)));
+				}
+				else
+				{
+					commandStack.Execute(new SetUnitEquipmentAmountCommand(unit, equip, (float)numEquipAmount.Value));
+				}
+			}
+
+			return true;
+		}
+
+		private void bttnCancel_Click(object sender, System.EventArgs e)
+		{
+			this.Close();
+		}
+
+		private void cbEquipAll_CheckedChanged(object sender, System.EventArgs e)
+		{
+			numEquipAmount.Enabled = !cbEquipAll.Checked && equip.MinNumber != -1;
+			setOkayButton();
+		}
+
+		private void setOkayButton()
+		{
+			bttnOkay.Enabled = (cbEquipAll.Checked || (numEquipAmount.Enabled && (numEquipAmount.Value > 0 || !equipItem.IsRequired)));
+		}
+
+		private void numEquipAmount_ValueChanged(object sender, System.EventArgs e)
+		{
+			setOkayButton();
+		}
+	}
+}