本文整理汇总了C++中CvPromotionEntry::GetPrereqPromotion方法的典型用法代码示例。如果您正苦于以下问题:C++ CvPromotionEntry::GetPrereqPromotion方法的具体用法?C++ CvPromotionEntry::GetPrereqPromotion怎么用?C++ CvPromotionEntry::GetPrereqPromotion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CvPromotionEntry
的用法示例。
在下文中一共展示了CvPromotionEntry::GetPrereqPromotion方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isPromotionValid
bool isPromotionValid(PromotionTypes ePromotion, UnitTypes eUnit, bool bLeader, bool bTestingPrereq)
{
CvUnitEntry* unitInfo = GC.getUnitInfo(eUnit);
CvPromotionEntry* promotionInfo = GC.getPromotionInfo(ePromotion);
if(unitInfo == NULL || promotionInfo == NULL)
return false;
// Can this Promotion not be chosen through normal leveling?
if(!bTestingPrereq && promotionInfo->IsCannotBeChosen())
{
return false;
}
// If a Unit gets a Promotion for free then hand it out, no questions asked
if(unitInfo->GetFreePromotions(ePromotion))
{
return true;
}
// If this isn't a combat Unit, no Promotion
if(unitInfo->GetUnitCombatType() == NO_UNITCOMBAT)
{
return false;
}
// Is this a valid Promotion for the UnitCombatType?
if(!::IsPromotionValidForUnitCombatType(ePromotion, eUnit))
{
return false;
}
if(!bLeader && promotionInfo->IsLeader())
{
return false;
}
// If the Unit only has one move then Blitz is not useful
if(unitInfo->GetMoves() == 1)
{
if(promotionInfo->IsBlitz())
{
return false;
}
}
// Promotion Prereqs
if(NO_PROMOTION != promotionInfo->GetPrereqPromotion())
{
if(!isPromotionValid((PromotionTypes)promotionInfo->GetPrereqPromotion(), eUnit, bLeader, true))
{
return false;
}
}
PromotionTypes ePrereq1 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion1();
PromotionTypes ePrereq2 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion2();
PromotionTypes ePrereq3 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion3();
PromotionTypes ePrereq4 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion4();
PromotionTypes ePrereq5 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion5();
PromotionTypes ePrereq6 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion6();
PromotionTypes ePrereq7 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion7();
PromotionTypes ePrereq8 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion8();
PromotionTypes ePrereq9 = (PromotionTypes)promotionInfo->GetPrereqOrPromotion9();
if(ePrereq1 != NO_PROMOTION ||
ePrereq2 != NO_PROMOTION ||
ePrereq3 != NO_PROMOTION ||
ePrereq4 != NO_PROMOTION ||
ePrereq5 != NO_PROMOTION ||
ePrereq6 != NO_PROMOTION ||
ePrereq7 != NO_PROMOTION ||
ePrereq8 != NO_PROMOTION ||
ePrereq9 != NO_PROMOTION)
{
bool bValid = false;
if(!bValid)
{
if(NO_PROMOTION != ePrereq1 && isPromotionValid(ePrereq1, eUnit, bLeader, true))
{
bValid = true;
}
}
if(!bValid)
{
if(NO_PROMOTION != ePrereq2 && isPromotionValid(ePrereq2, eUnit, bLeader, true))
{
bValid = true;
}
}
if(!bValid)
{
if(NO_PROMOTION != ePrereq3 && isPromotionValid(ePrereq3, eUnit, bLeader, true))
{
bValid = true;
}
}
if(!bValid)
//.........这里部分代码省略.........