Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
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; + } + } +}