diff UI/EquipmentAmountControl.cs @ 40:740350673006

Re #117: Add percentage and number boxes to equipment item dialogs * Add a new EquipmentAmountControl to bundle the controls with some initial implementation * Add new control to "new equipment" dialog and remove old controls Also: * Update some namespaces
author IBBoard <dev@ibboard.co.uk>
date Sun, 06 Sep 2009 18:01:54 +0000
parents
children 4fc87d6e6119
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UI/EquipmentAmountControl.cs	Sun Sep 06 18:01:54 2009 +0000
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using IBBoard.Lang;
+using IBBoard.WarFoundry.API;
+using IBBoard.WarFoundry.API.Objects;
+
+namespace IBBoard.WarFoundry.GUI.WinForms.UI
+{
+	public partial class EquipmentAmountControl : UserControl
+	{
+		private Unit unit;
+		private UnitEquipmentItem equip;
+
+		public EquipmentAmountControl()
+		{
+			InitializeComponent();
+		}
+
+		public void SetUnit(Unit equipUnit)
+		{
+			unit = equipUnit;
+		}
+
+		public void SetUnitEquipmentItem(UnitEquipmentItem unitEquipment)
+		{
+			equip = unitEquipment;
+			//SetWidgetValues();
+		}
+
+		private void rbEquipAll_CheckedChanged(object sender, EventArgs e)
+		{
+			bool equipAll = rbEquipAll.Checked;
+			numeric.Enabled = !equipAll;
+			percentage.Enabled = !equipAll;
+
+			if (equipAll)
+			{
+				numeric.Value = unit.Size;
+				percentage.Value = 100;
+			}
+		}
+
+		private void percentage_ValueChanged(object sender, EventArgs e)
+		{
+			double percent = (double) percentage.Value;
+			numeric.Value = (decimal) IBBMath.Round(unit.Size * (percent / 100.0), equip.RoundNumberUp);
+			rbEquipAll.Checked = (percentage.Value == 100);
+		}
+
+		private void numeric_ValueChanged(object sender, EventArgs e)
+		{
+			percentage.Value = (unit.Size / numeric.Value) * 100;
+		}
+
+		public double EquipmentAmount
+		{
+			get
+			{
+				double val = 0;
+
+				if (rbNumeric.Checked)
+				{
+					val = (double) numeric.Value;
+				}
+				else if (rbPercentage.Enabled)
+				{
+					val = (double) percentage.Value / 100.0;
+				}
+				else
+				{
+					val = WarFoundryCore.INFINITY;
+				}
+
+				return val;
+			}
+		}
+
+		public bool IsRatioEquipmentAmount
+		{
+			get
+			{
+				return rbPercentage.Checked;
+			}
+		}
+	}
+}