# HG changeset patch # User IBBoard # Date 1318691002 -3600 # Node ID d992758b0150b8a3dd4058af63e21c2ec0c8ea54 # Parent 314b8b8bf4f1b22bc168a8afd2e6756c602ce063 Re #344: Show unit requirement failures * Add event to Army so we can see when anything that might affect validation changes diff -r 314b8b8bf4f1 -r d992758b0150 API/Objects/Army.cs --- a/API/Objects/Army.cs Wed Oct 12 20:39:28 2011 +0100 +++ b/API/Objects/Army.cs Sat Oct 15 16:03:22 2011 +0100 @@ -35,6 +35,7 @@ public event ObjectRemoveDelegate UnitRemoved; public event IntValChangedDelegate MaxPointsValueChanged; public event DoubleValChangedDelegate PointsValueChanged; + public event MethodInvoker ArmyCompositionChanged; private DoubleValChangedDelegate PointsValueChangedMethod; public Army(Race race, string armyName, int maxArmyPoints) : this(race, armyName, maxArmyPoints, null) @@ -240,17 +241,43 @@ private void Army_UnitAdded(WarFoundryObject val) { - OnUnitAdded((Unit)val); + Unit unit = (Unit)val; + OnUnitAdded(unit); + OnArmyCompositionChanged(); + unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged; + unit.UnitSizeChanged += HandleUnitUnitSizeChanged; } private void Army_UnitRemoved(WarFoundryObject val) { - OnUnitRemoved((Unit)val); + Unit unit = (Unit)val; + OnUnitRemoved(unit); + OnArmyCompositionChanged(); + unit.UnitEquipmentAmountChanged -= HandleUnitUnitEquipmentAmountChanged; + unit.UnitSizeChanged -= HandleUnitUnitSizeChanged; + } + + private void HandleUnitUnitEquipmentAmountChanged (WarFoundryObject obj, double oldValue, double newValue) + { + OnArmyCompositionChanged(); + } + + private void HandleUnitUnitSizeChanged (WarFoundryObject obj, int oldValue, int newValue) + { + OnArmyCompositionChanged(); } public ICollection GetRequirements () { return Race.GetRequirements(); } + + internal void OnArmyCompositionChanged() + { + if (ArmyCompositionChanged != null) + { + ArmyCompositionChanged(); + } + } } }