Show
Ignore:
Timestamp:
06/27/09 14:39:04 (14 months ago)
Author:
ibboard
Message:

Re #90: Stop new units showing up twice

  • Hand all of unit adding/removing down to category
  • Refactor out OnFailedRequirement method in Army
  • Make Army listen to and propogate FailedRequirement events from Units
  • Add OnUnitAdded/Removed method to ArmyCategory that takes list of failures
  • Remove direct reference to Army from Unit and go via ArmyCategory instead
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • IBBoard.WarFoundry.API/trunk/api/Objects/Army.cs

    r143 r146  
    7070                        cat.UnitAdded+=new ObjectAddDelegate(Army_UnitAdded); 
    7171                        cat.UnitRemoved+=new ObjectRemoveDelegate(Army_UnitRemoved); 
     72                        cat.FailedRequirement+=new FailedUnitRequirementDelegate(Army_FailedRequirement); 
    7273                    } 
    7374                } 
     
    102103        protected void OnUnitAdded(Unit unit, List<FailedUnitRequirement> failedReqs) 
    103104        { 
    104             if (UnitAdded!=null) 
     105            if (UnitAdded != null) 
    105106            { 
    106107                UnitAdded(unit); 
    107108            } 
    108109 
    109             if (FailedRequirement!=null && failedReqs!=null && failedReqs.Count > 0) 
    110             { 
    111                 FailedRequirement(failedReqs); 
    112             } 
     110            OnFailedRequirement(failedReqs); 
    113111        } 
    114112 
     
    125123            } 
    126124 
    127             if (FailedRequirement!=null && failedReqs!=null && failedReqs.Count > 0) 
     125            OnFailedRequirement(failedReqs); 
     126        } 
     127 
     128        protected void OnFailedRequirement(List<FailedUnitRequirement> failedReqs) 
     129        { 
     130            if (FailedRequirement != null && failedReqs != null && failedReqs.Count > 0) 
    128131            { 
    129132                FailedRequirement(failedReqs); 
     
    161164        public void AddUnit(Unit unit) 
    162165        { 
    163             unit.Army = this; 
    164166            ArmyCategory armyCat = GetCategory(unit.UnitType.MainCategory); 
    165167            armyCat.AddUnit(unit); 
     
    168170        public void RemoveUnit(Unit unit) 
    169171        { 
    170             List<FailedUnitRequirement> failedReqs = CanRemoveUnit(unit); 
    171             unit.Army = null; 
    172172            unit.Category.RemoveUnit(unit); 
    173             OnUnitRemoved(unit, failedReqs); 
    174173        } 
    175174 
     
    255254        } 
    256255 
    257         private void Army_UnitAdded(object val) 
     256        private void Army_UnitAdded(WarFoundryObject val) 
    258257        { 
    259258            OnUnitAdded((Unit)val); 
    260259        } 
    261260 
    262         private void Army_UnitRemoved(object val) 
     261        private void Army_UnitRemoved(WarFoundryObject val) 
    263262        { 
    264263            OnUnitRemoved((Unit)val); 
     264        } 
     265 
     266        private void Army_FailedRequirement(List<FailedUnitRequirement> val) 
     267        { 
     268            OnFailedRequirement(val); 
    265269        } 
    266270    }