bool GameCore::AI::TryToSubmitChoiceAndOption<> (Manager *congress,PlayerTypes player,ResolutionTypes res,int option, UnitPromotionClassTypes preferredChoice) { IntRange iRandTarget; uint resolutions_size; UnitPromotionClassTypes *resolutions_begin; UnitPromotionClassTypes *resolutions_end; Instance *pkGame; UnitPromotionClassTypes iPreferredTarget; UnitPromotionClassTypes ePromotionClassType; Vector<> resolutions; iPreferredTarget = preferredChoice; Types::Vector<>::Vector(&resolutions); GameCore::Congress::Manager::GetPossibleResolutionTargets<>(congress,player,res,&resolutions); resolutions_begin = Types::Vector<>::begin(&resolutions); resolutions_end = Types::Vector<>::end(&resolutions); for (; (resolutions_begin != resolutions_end && (*resolutions_begin != iPreferredTarget)); resolutions_begin = resolutions_begin + 1) { } resolutions_end = Types::Vector<>::end(&resolutions); if (resolutions_begin == resolutions_end) { pkGame = GameCore::Game::GetInstance(); resolutions_size = Types::Vector<>::size(&resolutions); iRandTarget = GameCore::Game::Instance::GetRandNum(pkGame,(IntRange)resolutions_size,"Random congress resolution target"); ePromotionClassType = (UnitPromotionClassTypes)iRandTarget; GameCore::Congress::Manager::SubmitResolutionDecisionFromUi<>(congress,player,res,&ePromotionClassType,option); } else { GameCore::Congress::Manager::SubmitResolutionDecision<>(congress,player,res,&iPreferredTarget,option); } Types::Vector<>::~Vector(&resolutions); return resolutions_begin != resolutions_end; }