Bazaar developer reference

CvGame::cycleCities(bool, bool)

Defined in
CvGame.cpp, line 2306
Class
CvGame
Hook name
CivHooks::CvGame_cycleCities

Hooks

static bool BeforeCvGame_cycleCities(CvGame* self, bool bForward, bool bAdd);static void AfterCvGame_cycleCities(CvGame* self, bool bForward, bool bAdd);static void ReplaceCvGame_cycleCities(void (*original)(CvGame*, bool, bool), CvGame* self, bool bForward, bool bAdd);CivRegisterBefore<CivHooks::CvGame_cycleCities>(host, &BeforeCvGame_cycleCities);CivRegisterAfter<CivHooks::CvGame_cycleCities>(host, &AfterCvGame_cycleCities);CivRegisterReplace<CivHooks::CvGame_cycleCities>(host, &ReplaceCvGame_cycleCities);

Code

2306void CvGame::cycleCities(bool bForward, bool bAdd)2307{2308	CvCity* pSelectCity;2309	CvCity* pLoopCity;2310	int iLoop;23112312	pSelectCity = NULL;23132314	auto_ptr<ICvCity1> pHeadSelectedCity(GC.GetEngineUserInterface()->getHeadSelectedCity());23152316	CvCity* pkHeadSelectedCity = GC.UnwrapCityPointer(pHeadSelectedCity.get());23172318	if((pkHeadSelectedCity != NULL) && ((pkHeadSelectedCity->getTeam() == getActiveTeam()) || isDebugMode()))2319	{2320		iLoop = pkHeadSelectedCity->getIndex();23212322		iLoop += (bForward ? 1 : -1);23232324		do2325		{2326			pLoopCity = GET_PLAYER(pkHeadSelectedCity->getOwner()).nextCity(&iLoop, !bForward);23272328			if(pLoopCity == NULL)2329			{2330				pLoopCity = GET_PLAYER(pkHeadSelectedCity->getOwner()).firstCity(&iLoop, !bForward);2331			}23322333			if((pLoopCity != NULL) && (pLoopCity != pkHeadSelectedCity) && !pLoopCity->IsPuppet())  // we don't want the player to be able to cycle to puppeted cities - it kind of defeats teh whole purpose2334			{2335				pSelectCity = pLoopCity;2336			}23372338		}2339		while((pLoopCity != pkHeadSelectedCity) && !pSelectCity);23402341	}2342	else2343	{2344		pSelectCity = GET_PLAYER(getActivePlayer()).firstCity(&iLoop, !bForward);2345	}23462347	if(pSelectCity != NULL)2348	{2349		auto_ptr<ICvCity1> pDllSelectedCity = GC.WrapCityPointer(pSelectCity);2350		if(bAdd)2351		{2352			GC.GetEngineUserInterface()->clearSelectedCities();2353			GC.GetEngineUserInterface()->addSelectedCity(pDllSelectedCity.get());2354		}2355		else2356		{2357			GC.GetEngineUserInterface()->selectCity(pDllSelectedCity.get());2358		}2359	}2360}

Calls

Called by