diff FrmNewUnit.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/FrmNewUnit.cs	Fri Dec 19 15:57:51 2008 +0000
@@ -0,0 +1,236 @@
+using System;
+using System.Drawing;
+using System.Collections;
+using System.ComponentModel;
+using System.Windows.Forms;
+using IBBoard;
+using IBBoard.Lang;
+using IBBoard.Windows.Forms;
+using IBBoard.WarFoundry.API;
+
+namespace IBBoard.WarFoundry
+{
+	/// <summary>
+	/// Summary description for FrmNewUnit.
+	/// </summary>
+	public class FrmNewUnit : IBBForm
+	{
+		private System.ComponentModel.IContainer components;
+		private IBBoard.Windows.Forms.IBBButton bttnCancel;
+		private IBBoard.Windows.Forms.IBBLabel lblUnitList;
+		private IBBoard.Windows.Forms.IBBButton bttnSelectUnit;
+		private System.Windows.Forms.ListBox lstUnits;
+		private UnitType[] units;
+		private Army army;
+		private System.Windows.Forms.ImageList imageList;
+		private System.Windows.Forms.Label lblNewUnitWarning;
+		private System.Windows.Forms.Label lblWarningIcon;
+		private bool[] allowed;
+
+		public FrmNewUnit(Race race, Category cat, Army army)
+		{
+			InitializeComponent();
+
+			Translation.TranslateControl(this, cat.Name);
+			units = race.GetUnitTypes(cat);
+			allowed = new bool[units.Length];
+			this.army = army;
+			
+			for (int i = 0; i<units.Length; i++)
+			{
+				allowed[i] = army.CanAddUnitType(units[i]).Count == 0;
+				lstUnits.Items.Add(units[i].Name);
+			}
+		}
+
+		/// <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.components = new System.ComponentModel.Container();
+			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FrmNewUnit));
+			this.lstUnits = new System.Windows.Forms.ListBox();
+			this.bttnCancel = new IBBoard.Windows.Forms.IBBButton();
+			this.lblUnitList = new IBBoard.Windows.Forms.IBBLabel();
+			this.bttnSelectUnit = new IBBoard.Windows.Forms.IBBButton();
+			this.lblNewUnitWarning = new System.Windows.Forms.Label();
+			this.imageList = new System.Windows.Forms.ImageList(this.components);
+			this.lblWarningIcon = new System.Windows.Forms.Label();
+			this.SuspendLayout();
+			// 
+			// lstUnits
+			// 
+			this.lstUnits.Location = new System.Drawing.Point(88, 8);
+			this.lstUnits.Name = "lstUnits";
+			this.lstUnits.Size = new System.Drawing.Size(272, 121);
+			this.lstUnits.TabIndex = 7;
+			this.lstUnits.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstUnits_MouseDown);
+			this.lstUnits.DoubleClick += new System.EventHandler(this.lstUnits_DoubleClick);
+			this.lstUnits.SelectedIndexChanged += new System.EventHandler(this.lstUnits_SelectedIndexChanged);
+			// 
+			// bttnCancel
+			// 
+			this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+			this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnCancel.Location = new System.Drawing.Point(8, 168);
+			this.bttnCancel.Name = "bttnCancel";
+			this.bttnCancel.Size = new System.Drawing.Size(80, 24);
+			this.bttnCancel.TabIndex = 6;
+			this.bttnCancel.Text = "Cancel";
+			this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click);
+			// 
+			// lblUnitList
+			// 
+			this.lblUnitList.Location = new System.Drawing.Point(0, 8);
+			this.lblUnitList.Name = "lblUnitList";
+			this.lblUnitList.Size = new System.Drawing.Size(88, 80);
+			this.lblUnitList.TabIndex = 5;
+			this.lblUnitList.Text = "unit list";
+			this.lblUnitList.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			// 
+			// bttnSelectUnit
+			// 
+			this.bttnSelectUnit.Enabled = false;
+			this.bttnSelectUnit.FlatStyle = System.Windows.Forms.FlatStyle.System;
+			this.bttnSelectUnit.Location = new System.Drawing.Point(256, 168);
+			this.bttnSelectUnit.Name = "bttnSelectUnit";
+			this.bttnSelectUnit.Size = new System.Drawing.Size(104, 24);
+			this.bttnSelectUnit.TabIndex = 4;
+			this.bttnSelectUnit.Text = "create unit";
+			this.bttnSelectUnit.Click += new System.EventHandler(this.bttnSelectUnit_Click);
+			// 
+			// lblNewUnitWarning
+			// 
+			this.lblNewUnitWarning.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
+			this.lblNewUnitWarning.ImageList = this.imageList;
+			this.lblNewUnitWarning.Location = new System.Drawing.Point(48, 136);
+			this.lblNewUnitWarning.Name = "lblNewUnitWarning";
+			this.lblNewUnitWarning.Size = new System.Drawing.Size(312, 32);
+			this.lblNewUnitWarning.TabIndex = 9;
+			this.lblNewUnitWarning.Text = "label1";
+			this.lblNewUnitWarning.TextAlign = System.Drawing.ContentAlignment.TopRight;
+			this.lblNewUnitWarning.Visible = false;
+			// 
+			// imageList
+			// 
+			this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+			this.imageList.ImageSize = new System.Drawing.Size(32, 32);
+			this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
+			this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+			// 
+			// lblWarningIcon
+			// 
+			this.lblWarningIcon.ImageIndex = 0;
+			this.lblWarningIcon.ImageList = this.imageList;
+			this.lblWarningIcon.Location = new System.Drawing.Point(8, 136);
+			this.lblWarningIcon.Name = "lblWarningIcon";
+			this.lblWarningIcon.Size = new System.Drawing.Size(40, 32);
+			this.lblWarningIcon.TabIndex = 10;
+			this.lblWarningIcon.Visible = false;
+			// 
+			// FrmNewUnit
+			// 
+			this.AcceptButton = this.bttnSelectUnit;
+			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+			this.CancelButton = this.bttnCancel;
+			this.ClientSize = new System.Drawing.Size(370, 196);
+			this.Controls.Add(this.lblWarningIcon);
+			this.Controls.Add(this.lblNewUnitWarning);
+			this.Controls.Add(this.bttnCancel);
+			this.Controls.Add(this.lblUnitList);
+			this.Controls.Add(this.bttnSelectUnit);
+			this.Controls.Add(this.lstUnits);
+			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+			this.MaximizeBox = false;
+			this.MinimizeBox = false;
+			this.Name = "FrmNewUnit";
+			this.ShowInTaskbar = false;
+			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+			this.Text = "FrmNewUni";
+			this.ResumeLayout(false);
+
+		}
+		#endregion
+
+		public UnitType SelectedUnit
+		{
+			get { return units[lstUnits.SelectedIndex]; }
+		}
+
+		private void bttnCancel_Click(object sender, System.EventArgs e)
+		{
+			DialogResult = DialogResult.Cancel;
+			this.Close();
+		}
+
+		private void bttnSelectUnit_Click(object sender, System.EventArgs e)
+		{
+			selectUnit();
+		}
+
+		private void selectUnit()
+		{
+			DialogResult = DialogResult.OK;
+			this.Close();
+		}
+
+		private void setSelectUnitEnabledVal()
+		{
+			if (lstUnits.SelectedIndex>-1)
+			{
+				bttnSelectUnit.Enabled = true;
+				lblNewUnitWarning.Visible = !allowed[lstUnits.SelectedIndex];
+				lblWarningIcon.Visible = lblNewUnitWarning.Visible;
+
+				if (lblNewUnitWarning.Visible)
+				{
+					//lblNewUnitWarning.Text = army.GetFailedAddRequirement(units[lstUnits.SelectedIndex]).Description;
+                    //FIXME: Add failed requirement text
+				}
+			}
+			else
+			{
+				bttnSelectUnit.Enabled = false;
+			}
+		}
+
+		private void lstUnits_SelectedIndexChanged(object sender, System.EventArgs e)
+		{
+			setSelectUnitEnabledVal();
+		}
+
+		private void lstUnits_DoubleClick(object sender, EventArgs e)
+		{
+			if (lstUnits.SelectedIndex>-1)
+			{
+				selectUnit();
+			}
+		}
+
+		private void lstUnits_MouseDown(object sender, MouseEventArgs e)
+		{
+			//make sure no item is selected when a click is made outside a unit
+			int index = lstUnits.IndexFromPoint(e.X, e.Y);
+			lstUnits.SelectedIndex = index;
+		}
+	}
+}