Bazaar developer reference

CvPlayer::getNewCityName() const

Defined in
CvPlayer.cpp, line 3154
Class
CvPlayer
Hook name
CivHooks::CvPlayer_getNewCityName

Hooks

static bool BeforeCvPlayer_getNewCityName(const CvPlayer* self, CvString& result);static void AfterCvPlayer_getNewCityName(const CvPlayer* self, CvString& result);static CvString ReplaceCvPlayer_getNewCityName(CvString (*original)(const CvPlayer*), const CvPlayer* self);CivRegisterBefore<CivHooks::CvPlayer_getNewCityName>(host, &BeforeCvPlayer_getNewCityName);CivRegisterAfter<CivHooks::CvPlayer_getNewCityName>(host, &AfterCvPlayer_getNewCityName);CivRegisterReplace<CivHooks::CvPlayer_getNewCityName>(host, &ReplaceCvPlayer_getNewCityName);

Code

3154CvString CvPlayer::getNewCityName() const3155{3156	const CLLNode<CvString>* pNode;3157	CvString strName;31583159	for(pNode = headCityNameNode(); (pNode != NULL); pNode = nextCityNameNode(pNode))3160	{3161		strName = pNode->m_data;3162		if(isCityNameValid(strName, true))3163		{3164			strName = pNode->m_data;3165			break;3166		}3167	}31683169	if(strName.IsEmpty())3170	{3171		getCivilizationCityName(strName, getCivilizationType());3172	}31733174	if(strName.IsEmpty())3175	{3176		// Pick a name from another civ in the game3177		int iPlayersAlive = 0;3178		for(int iI = 0; iI < MAX_PLAYERS; iI++)3179		{3180			const PlayerTypes ePlayer = static_cast<PlayerTypes>(iI);3181			CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);3182			if(ePlayer != GetID() && kPlayer.isAlive() && !kPlayer.isMinorCiv() && !kPlayer.isBarbarian())3183			{3184				iPlayersAlive++;3185			}3186		}31873188		int iChosenPlayer = GC.getGame().getJonRandNum(iPlayersAlive, "Random Player To Steal City Name");31893190		int iPlayersFound = 0;3191		for(int iI = 0; iI < MAX_PLAYERS; iI++)3192		{3193			const PlayerTypes ePlayer = static_cast<PlayerTypes>(iI);3194			CvPlayerAI &kPlayer = GET_PLAYER(ePlayer);3195			if(ePlayer != GetID() && kPlayer.isAlive() && !kPlayer.isMinorCiv() && !kPlayer.isBarbarian())3196			{3197				if(iPlayersFound == iChosenPlayer)3198				{3199					strName = GetBorrowedCityName(kPlayer.getCivilizationType());			3200					break;3201				}3202				else3203				{3204					iPlayersFound++;3205				}3206			}3207		}3208	}32093210	if(strName.IsEmpty())3211	{3212		// Pick a name from another civ in the DATABASE3213		int iCivsInDB = 0;3214		for(int iI = 0; iI < GC.getNumCivilizationInfos(); iI++)3215		{3216			const CivilizationTypes eCiv = static_cast<CivilizationTypes>(iI);32173218			CvCivilizationInfo* pkCivilizationInfo = GC.getCivilizationInfo(eCiv);3219			if(pkCivilizationInfo != NULL && pkCivilizationInfo->getNumCityNames() > RESERVE_TOP_X_NAMES)3220			{3221				iCivsInDB++;3222			}3223		}32243225		int iChosenCiv = GC.getGame().getJonRandNum(iCivsInDB, "Random Civ To Steal City Name");32263227		int iCivsFound = 0;3228		for(int iI = 0; iI < GC.getNumCivilizationInfos(); iI++)3229		{3230			const CivilizationTypes eCiv = static_cast<CivilizationTypes>(iI);32313232			CvCivilizationInfo* pkCivilizationInfo = GC.getCivilizationInfo(eCiv);3233			if (pkCivilizationInfo != NULL && pkCivilizationInfo->getNumCityNames() > RESERVE_TOP_X_NAMES)3234			{3235				if (iCivsFound == iChosenCiv)3236				{3237					strName = GetBorrowedCityName(eCiv);3238					break;3239				}3240				else3241				{3242					iCivsFound++;3243				}3244			}3245		}3246	}32473248	if(strName.IsEmpty())3249	{3250		strName = "TXT_KEY_CITY";3251	}32523253	return strName;3254}

Calls

Called by