diff UIControl/AddEquipmentUIControl.cs @ 56:0c5fbb54bfb0

Re #60: Add UI to add/remove/edit weapons in GTK * Refactor enabling/disabling of radio buttons * Handle null selections * Move Dispose() to be an interface method and move call out to controller
author IBBoard <dev@ibboard.co.uk>
date Wed, 25 Aug 2010 20:04:27 +0000
parents eb7db8495bb5
children 293d204e40db
line wrap: on
line diff
--- a/UIControl/AddEquipmentUIControl.cs	Wed Aug 25 19:51:23 2010 +0000
+++ b/UIControl/AddEquipmentUIControl.cs	Wed Aug 25 20:04:27 2010 +0000
@@ -24,6 +24,7 @@
 		private void SetupUI()
 		{
 			CreateEquipmentUI();
+			ui.SetUnitEquipmentLimitsEnabled(false);
 			UnitEquipmentItem[] items = Arrays.Subtract(UnitEquipmentUtil.GetAllowedEquipmentItems(unit), unit.GetEquipment());
 			ui.SetUnitEquipmentItems(items);
 			ui.UnitEquipmentItemChoiceChanged += HandleUiUnitEquipmentItemChoiceChanged;
@@ -37,28 +38,38 @@
 
 		private void HandleUiUnitEquipmentItemChoiceChanged(UnitEquipmentItem equip)
 		{
-			bool equipIsRatioLimit = UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip);
-			double maxPercent = RoundPercentage(UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
-			maxPercent = Math.Max(0, maxPercent);
-			double minPercent = RoundPercentage(UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
-			minPercent = Math.Max(0, minPercent);
-			int maxNumber = UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip);
-			maxNumber = Math.Max(0, maxNumber);
-			int minNumber = UnitEquipmentUtil.GetMinEquipmentCount(unit, equip);
-			minNumber = Math.Max(0, minNumber);
+			if (equip != null)
+			{
+				bool equipIsRatioLimit = UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip);
+				double maxPercent = RoundPercentage(UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip));
+				maxPercent = Math.Max(0, maxPercent);
+				double minPercent = RoundPercentage(UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip));
+				minPercent = Math.Max(0, minPercent);
+				int maxNumber = UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip);
+				maxNumber = Math.Max(0, maxNumber);
+				int minNumber = UnitEquipmentUtil.GetMinEquipmentCount(unit, equip);
+				minNumber = Math.Max(0, minNumber);
 			
-			ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercent, maxPercent, minNumber, maxNumber);
-			
+				ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercent, maxPercent, minNumber, maxNumber);
+				ui.SetUnitEquipmentLimitsEnabled(true);
+			}
+			else
+			{
+				ui.SetUnitEquipmentLimits(true, 0, 0, 0, 0);
+				ui.SetUnitEquipmentLimitsEnabled(false);
+			}
 		}
 		
 		private double RoundPercentage(double percent)
 		{
 			return Math.Round(percent, 1);
 		}
-		
+
 		public void Show()
 		{
 			ui.ShowControl();
+			//Do command stuff here
+			ui.Dispose();
 		}
 	}
 }