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