本文整理汇总了C++中Town::can_recruit_peasant方法的典型用法代码示例。如果您正苦于以下问题:C++ Town::can_recruit_peasant方法的具体用法?C++ Town::can_recruit_peasant怎么用?C++ Town::can_recruit_peasant使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Town
的用法示例。
在下文中一共展示了Town::can_recruit_peasant方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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
}