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
- CvCivilizationInfo::getNumCityNames() const
- CvGame::getJonRandNum(int, const char *)
- CvGlobals::getCivilizationInfo(CivilizationTypes)
- CvGlobals::getGame()
- CvGlobals::getNumCivilizationInfos()
- CvPlayer::GetBorrowedCityName(CivilizationTypes) const
- CvPlayer::getCivilizationCityName(CvString &, CivilizationTypes) const
- CvPlayer::getCivilizationType() const
- CvPlayer::GetID() const
- CvPlayer::headCityNameNode() const
- CvPlayer::isAlive() const
- CvPlayer::isBarbarian() const
- CvPlayer::isCityNameValid(CvString &, bool) const
- CvPlayer::isMinorCiv() const
- CvPlayer::nextCityNameNode(const CLLNode<CvString> *) const
- CvPlayerAI::getPlayer(PlayerTypes)
CvString::CvStringCvString::CvStringCvString::IsEmptyCvString::operator=CvString::operator=