void CampaignPlanStrategic::ScoreNeeds(Combatant* c) { ListIter<CombatZone> zone = campaign->GetZones(); while (++zone) { ZoneForce* force = zone->FindForce(c->GetIFF()); // clear needs: force->SetNeed(CombatGroup::CARRIER_GROUP, 0); force->SetNeed(CombatGroup::BATTLE_GROUP, 0); force->SetNeed(CombatGroup::DESTROYER_SQUADRON, 0); force->SetNeed(CombatGroup::ATTACK_SQUADRON, 0); force->SetNeed(CombatGroup::FIGHTER_SQUADRON, 0); force->SetNeed(CombatGroup::INTERCEPT_SQUADRON, 0); // what defensive assets are needed in this zone? ListIter<CombatGroup> def = force->GetDefendList(); while (++def) { int defender_type = *CombatGroup::PreferredDefender(def->Type()); force->AddNeed(defender_type, def->Value()); } // what offensive assets are needed in this zone? ListIter<CombatGroup> tgt = force->GetTargetList(); while (++tgt) { int attacker_type = *CombatGroup::PreferredAttacker(tgt->Type()); force->AddNeed(attacker_type, tgt->Value()); } } }