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;
}