本文整理汇总了C++中Town::recruit方法的典型用法代码示例。如果您正苦于以下问题:C++ Town::recruit方法的具体用法?C++ Town::recruit怎么用?C++ Town::recruit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Town
的用法示例。
在下文中一共展示了Town::recruit方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mobilize_capturer
//-------- Begin of function Nation::mobilize_capturer ------//
//
// Mobilize the capturer unit if he isn't mobilized yet.
//
int Nation::mobilize_capturer(int unitRecno)
{
//--- if the picked unit is an overseer of an existng camp ---//
Unit* unitPtr = unit_array[unitRecno];
if( unitPtr->unit_mode == UNIT_MODE_OVERSEE )
{
Firm* firmPtr = firm_array[unitPtr->unit_mode_para];
Town* townPtr;
//-- can recruit from either a command base or seat of power --//
//-- train a villager with leadership to replace current overseer --//
int i;
for( i=0 ; i<firmPtr->linked_town_count ; i++ )
{
townPtr = town_array[ firmPtr->linked_town_array[i] ];
if( townPtr->nation_recno != nation_recno )
continue;
//--- first try to train a unit who is racially homogenous to the commander ---//
int unitRecno = townPtr->recruit( SKILL_LEADING, firmPtr->majority_race(), COMMAND_AI );
//--- if unsucessful, then try to train a unit whose race is the same as the majority of the town ---//
if( !unitRecno )
unitRecno = townPtr->recruit( SKILL_LEADING, townPtr->majority_race(), COMMAND_AI );
if( unitRecno )
{
add_action(townPtr->loc_x1, townPtr->loc_y1, -1, -1, ACTION_AI_ASSIGN_OVERSEER, FIRM_CAMP);
break;
}
}
if( i==firmPtr->linked_town_count ) // unsuccessful
return 0;
//------- mobilize the current overseer --------//
firmPtr->mobilize_overseer();
}
return 1;
}
示例2: recruit_peasant
//--------- Begin of function Nation::recruit_peasant --------//
//
// <int> raceId - the race the selected unit should have
// (0 for any races)
// <short> destX - the x location the unit will move to
// <short> destY - the y location the unit will move to
//
// <int&> recruitTownRecno - the recno of the town where this unit is recruited.
//
// return: <int> recno of the unit recruited.
//
int Nation::recruit_peasant(int raceId, short destX, short destY, int& recruitTownRecno)
{
//----- locate the best town for training the unit -----//
int i;
Town *townPtr;
int curDist, curRating, bestRating=0;
int destRegionId = world.get_loc(destX, destY)->region_id;
recruitTownRecno = 0;
for(i=0; i<ai_town_count; i++)
{
townPtr = town_array[ai_town_array[i]];
if( !townPtr->jobless_population || // no jobless population or currently a unit is being trained
!townPtr->can_recruit_peasant() )
{
continue;
}
if( townPtr->region_id != destRegionId )
continue;
if( raceId && townPtr->race_id != raceId )
continue;
//--------------------------------------//
curDist = m.points_distance(townPtr->center_x, townPtr->center_y, destX, destY);
curRating = 100-100*curDist/MAX_WORLD_X_LOC;
if( curRating > bestRating )
{
bestRating = curRating;
recruitTownRecno = townPtr->town_recno;
}
}
if( !recruitTownRecno )
return 0;
//--- if the chosen race is not recruitable, pick any recruitable race ---//
townPtr = town_array[recruitTownRecno];
if( !townPtr->can_recruit_peasant() )
{
//---- if the loyalty is too low to recruit, grant the town people first ---//
if( cash > 0 && townPtr->accumulated_reward_penalty < 10 )
townPtr->reward(COMMAND_AI);
//---- if the loyalty is still too low, return now ----//
if( !townPtr->can_recruit_peasant() )
return 0;
}
return townPtr->recruit(0, COMMAND_AI); // 0-not recruit wagon
}