comparison API/Objects/Army.cs @ 424:d992758b0150

Re #344: Show unit requirement failures * Add event to Army so we can see when anything that might affect validation changes
author IBBoard <dev@ibboard.co.uk>
date Sat, 15 Oct 2011 16:03:22 +0100
parents 314b8b8bf4f1
children 676f5ce04176
comparison
equal deleted inserted replaced
423:314b8b8bf4f1 424:d992758b0150
33 33
34 public event ObjectAddDelegate UnitAdded; 34 public event ObjectAddDelegate UnitAdded;
35 public event ObjectRemoveDelegate UnitRemoved; 35 public event ObjectRemoveDelegate UnitRemoved;
36 public event IntValChangedDelegate MaxPointsValueChanged; 36 public event IntValChangedDelegate MaxPointsValueChanged;
37 public event DoubleValChangedDelegate PointsValueChanged; 37 public event DoubleValChangedDelegate PointsValueChanged;
38 public event MethodInvoker ArmyCompositionChanged;
38 private DoubleValChangedDelegate PointsValueChangedMethod; 39 private DoubleValChangedDelegate PointsValueChangedMethod;
39 40
40 public Army(Race race, string armyName, int maxArmyPoints) : this(race, armyName, maxArmyPoints, null) 41 public Army(Race race, string armyName, int maxArmyPoints) : this(race, armyName, maxArmyPoints, null)
41 { 42 {
42 } 43 }
238 return count; 239 return count;
239 } 240 }
240 241
241 private void Army_UnitAdded(WarFoundryObject val) 242 private void Army_UnitAdded(WarFoundryObject val)
242 { 243 {
243 OnUnitAdded((Unit)val); 244 Unit unit = (Unit)val;
245 OnUnitAdded(unit);
246 OnArmyCompositionChanged();
247 unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged;
248 unit.UnitSizeChanged += HandleUnitUnitSizeChanged;
244 } 249 }
245 250
246 private void Army_UnitRemoved(WarFoundryObject val) 251 private void Army_UnitRemoved(WarFoundryObject val)
247 { 252 {
248 OnUnitRemoved((Unit)val); 253 Unit unit = (Unit)val;
254 OnUnitRemoved(unit);
255 OnArmyCompositionChanged();
256 unit.UnitEquipmentAmountChanged -= HandleUnitUnitEquipmentAmountChanged;
257 unit.UnitSizeChanged -= HandleUnitUnitSizeChanged;
258 }
259
260 private void HandleUnitUnitEquipmentAmountChanged (WarFoundryObject obj, double oldValue, double newValue)
261 {
262 OnArmyCompositionChanged();
263 }
264
265 private void HandleUnitUnitSizeChanged (WarFoundryObject obj, int oldValue, int newValue)
266 {
267 OnArmyCompositionChanged();
249 } 268 }
250 269
251 public ICollection<IRequirement> GetRequirements () 270 public ICollection<IRequirement> GetRequirements ()
252 { 271 {
253 return Race.GetRequirements(); 272 return Race.GetRequirements();
273 }
274
275 internal void OnArmyCompositionChanged()
276 {
277 if (ArmyCompositionChanged != null)
278 {
279 ArmyCompositionChanged();
280 }
254 } 281 }
255 } 282 }
256 } 283 }