bool CvPlayer::canDoCivics(CivicTypes eCivic) const
{
PROFILE_FUNC();
if (GC.getGameINLINE().isForceCivicOption((CivicOptionTypes)(GC.getCivicInfo(eCivic).getCivicOptionType())))
{
return GC.getGameINLINE().isForceCivic(eCivic);
}
if(GC.getUSE_CAN_DO_CIVIC_CALLBACK())
{
CyArgsList argsList;
argsList.add(getID());
argsList.add(eCivic);
long lResult=0;
gDLL->getPythonIFace()->callFunction(PYGameModule, "canDoCivic", argsList.makeFunctionArgs(), &lResult);
if (lResult == 1)
{
return true;
}
}
//Rhye - start UP
if (getID() == EGYPT)
if ((eCivic == 1) || (eCivic == 11))
return true;
//Rhye - end UP
if (!isHasCivicOption((CivicOptionTypes)(GC.getCivicInfo(eCivic).getCivicOptionType())) && !(GET_TEAM(getTeam()).isHasTech((TechTypes)(GC.getCivicInfo(eCivic).getTechPrereq()))))
{
return false;
}
if(GC.getUSE_CANNOT_DO_CIVIC_CALLBACK())
{
CyArgsList argsList2; // XXX
argsList2.add(getID());
argsList2.add(eCivic);
long lResult=0;
gDLL->getPythonIFace()->callFunction(PYGameModule, "cannotDoCivic", argsList2.makeFunctionArgs(), &lResult);
if (lResult == 1)
{
return false;
}
}
return true;
}