diff api/Objects/Unit.cs @ 279:51b3027a7dae

Re #295: Index out of bounds when changing unit size and clicking in equipment list * Trigger 'fake' equipment amount changed events when the unit size changes for all ratio equipment - ratio won't have changed, but absolute number will
author IBBoard <dev@ibboard.co.uk>
date Wed, 14 Jul 2010 20:01:14 +0000
parents 6fe0cb1bf74f
children 5c4b3d91795f
line wrap: on
line diff
--- a/api/Objects/Unit.cs	Wed Jul 07 19:01:13 2010 +0000
+++ b/api/Objects/Unit.cs	Wed Jul 14 20:01:14 2010 +0000
@@ -33,8 +33,9 @@
 
 		public Unit(UnitType unitType, int startSize, ArmyCategory parentArmyCat) : this("", "", startSize, unitType, parentArmyCat)
 		{
-			SetInitialEquipment();
-		}		
+			SetInitialEquipment();
+			UnitSizeChanged += new IntValChangedDelegate(RefreshUnitEquipmentAmounts);
+		}	
 		
 		public Unit(string id, string name, int startSize, UnitType unitType, ArmyCategory parentArmyCat) : base(id, name)
 		{
@@ -577,8 +578,20 @@
 			get
 			{
 				return UnitType.GetRequiredAbilities();
-			}
-		}
-
+			}
+		}
+
+		private void RefreshUnitEquipmentAmounts(WarFoundryObject obj, int oldValue, int newValue)
+		{
+			foreach (UnitEquipmentItem item in equipment.Keys)
+			{
+				AbstractUnitEquipmentItemSelection selection = equipment[item];
+				
+				if (selection is UnitEquipmentRatioSelection)
+				{
+					OnUnitEquipmentAmountChanged(item, selection.AmountTaken, selection.AmountTaken);
+				}
+			}
+		}	
 	}
 }