void CvGameTextMgr::setRouteHelp(CvWStringBuffer &szBuffer, RouteTypes eRoute, bool bCivilopediaText)
{
CvWString szTempBuffer;
CvWString szFirstBuffer;
int iI;
if (NO_ROUTE == eRoute)
{
return;
}
CvRouteInfo& info = GC.getRouteInfo(eRoute);
if (!bCivilopediaText)
{
szTempBuffer.Format( SETCOLR L"%s" ENDCOLR, TEXT_COLOR("COLOR_HIGHLIGHT_TEXT"), info.getDescription());
szBuffer.append(szTempBuffer);
setYieldChangeHelp(szBuffer, L", ", L"", L"", info.getYieldChangeArray(), false, false);
for (int iTech = 0; iTech < GC.getNumTechInfos(); iTech++)
{
if (GC.getGameINLINE().canEverResearch((TechTypes)iTech))
{
if (0 != info.getTechMovementChange(iTech))
{
szBuffer.append(NEWLINE);
szBuffer.append(gDLL->getText("TXT_KEY_MOVEMENT_ROUTE_WITH_TECH", info.getTechMovementChange(iTech), gDLL->getSymbolID(MOVES_CHAR), GC.getTechInfo((TechTypes)iTech).getTextKeyWide()));
}
}
}
}
if (info.isSeaTunnel())
{
szBuffer.append(NEWLINE);
szBuffer.append(gDLL->getText("TXT_KEY_ROUTE_SEA_TUNNEL"));
}
if (info.getMovementCost() != 0)
{
szBuffer.append(NEWLINE);
szBuffer.append(gDLL->getText("TXT_KEY_ROUTE_MOVEMENT_COST", info.getMovementCost()));
}
if (info.getFlatMovementCost() != 0)
{
szBuffer.append(NEWLINE);
szBuffer.append(gDLL->getText("TXT_KEY_ROUTE_FLAT_MOVEMENT_COST", info.getFlatMovementCost()));
}
if (info.getPrereqBonus() != NO_BONUS)
{
if ((GC.getGame().getActivePlayer()!= NO_PLAYER && !GET_PLAYER(GC.getGame().getActivePlayer()).hasBonus((BonusTypes)info.getPrereqBonus())) || GC.getGame().getActivePlayer() == NO_PLAYER)
{
if (info.isAnyPrereqOrBonus())
{
bool bQualified = true;
if ((GC.getGame().getActivePlayer()!= NO_PLAYER && !GET_PLAYER(GC.getGame().getActivePlayer()).hasBonus((BonusTypes)info.getPrereqBonus())) || GC.getGame().getActivePlayer() == NO_PLAYER)
{
for (iI = 0; iI < GC.getNumBonusInfos(); iI++)
{
BonusTypes eBonusOrPrereq = (BonusTypes)iI;
if (eBonusOrPrereq != NO_BONUS)
{
if (GET_PLAYER(GC.getGame().getActivePlayer()).hasBonus((BonusTypes)info.getPrereqOrBonus(eBonusOrPrereq)))
{
bQualified = false;
}
}
}
if (bQualified)
{
szBuffer.append(NEWLINE);
szBuffer.append(gDLL->getText("TXT_KEY_ROUTE_REQUIRES_BONUS", GC.getBonusInfo((BonusTypes)info.getPrereqBonus()).getTextKeyWide()));
for (iI = 0; iI < GC.getNumBonusInfos(); iI++)
{
BonusTypes eBonusOrPrereq = (BonusTypes)iI;
if (eBonusOrPrereq != NO_BONUS)
{
if ((GC.getGame().getActivePlayer() != NO_PLAYER && !GET_PLAYER(GC.getGame().getActivePlayer()).hasBonus((BonusTypes)info.getPrereqOrBonus(eBonusOrPrereq))) || GC.getGame().getActivePlayer() != NO_PLAYER)
{
szBuffer.append(gDLL->getText("TXT_KEY_ROUTE_REQUIRES_BONUS_OR", GC.getBonusInfo((BonusTypes)info.getPrereqOrBonus(eBonusOrPrereq)).getTextKeyWide()));
}
}
}
}
}
}
else
{
szBuffer.append(NEWLINE);
szBuffer.append(gDLL->getText("TXT_KEY_ROUTE_REQUIRES_BONUS", GC.getBonusInfo((BonusTypes)info.getPrereqBonus()).getTextKeyWide()));
}
}
}
info.getPropertyManipulators()->buildDisplayString(szBuffer);
}