Bazaar developer reference

CvGame::cycleUnits(bool, bool, bool)

Defined in
CvGame.cpp, line 2363
Class
CvGame
Hook name
CivHooks::CvGame_cycleUnits

Hooks

static bool BeforeCvGame_cycleUnits(CvGame* self, bool bClear, bool bForward, bool bWorkers);static void AfterCvGame_cycleUnits(CvGame* self, bool bClear, bool bForward, bool bWorkers);static void ReplaceCvGame_cycleUnits(void (*original)(CvGame*, bool, bool, bool), CvGame* self, bool bClear, bool bForward, bool bWorkers);CivRegisterBefore<CivHooks::CvGame_cycleUnits>(host, &BeforeCvGame_cycleUnits);CivRegisterAfter<CivHooks::CvGame_cycleUnits>(host, &AfterCvGame_cycleUnits);CivRegisterReplace<CivHooks::CvGame_cycleUnits>(host, &ReplaceCvGame_cycleUnits);

Code

2363void CvGame::cycleUnits(bool bClear, bool bForward, bool bWorkers)2364{2365	CvUnit* pNextUnit;2366	CvCity* pCycleCity = NULL;2367	bool bWrap = false;2368	bool bProcessed = false;2369	PlayerTypes eActivePlayer = getActivePlayer();2370	ICvUserInterface2* pUI = GC.GetEngineUserInterface();2371	CvPlayerAI& theActivePlayer = GET_PLAYER(eActivePlayer);23722373	auto_ptr<ICvUnit1> pDllSelectedUnit(pUI->GetHeadSelectedUnit());2374	CvUnit* pCycleUnit = GC.UnwrapUnitPointer(pDllSelectedUnit.get());23752376	if(pCycleUnit != NULL)2377	{2378		if(pCycleUnit->getOwner() != eActivePlayer)2379		{2380			pCycleUnit = NULL;2381		}23822383		pNextUnit = theActivePlayer.GetUnitCycler().Cycle(pCycleUnit, bForward, bWorkers, &bWrap);23842385		if(bWrap)2386		{2387			if(theActivePlayer.hasAutoUnit())2388			{2389				gDLL->sendAutoMoves();2390			}2391		}2392	}2393	else2394	{2395		pNextUnit = GC.getMap().findUnit(0, 0, eActivePlayer, true, bWorkers);2396	}23972398	if(pNextUnit != NULL && !bWrap)2399	{2400		CvAssert(pNextUnit->getOwner() == eActivePlayer);2401		selectUnit(pNextUnit, bClear);2402		bProcessed = true;2403	}24042405	if(pNextUnit != NULL /*&& bWrap */&& !pCycleCity && !bProcessed)2406	{2407		CvAssert(pNextUnit->getOwner() == eActivePlayer);2408		selectUnit(pNextUnit, bClear);2409	}24102411	if(pNextUnit == NULL && pCycleUnit != NULL && pCycleUnit->getOwner() == eActivePlayer)2412	{2413		pUI->ClearSelectionList();2414		pCycleUnit->plot()->updateCenterUnit();2415	}24162417	pDllSelectedUnit.reset(pUI->GetHeadSelectedUnit());2418	CvUnit* pCurrentSelectedUnit = GC.UnwrapUnitPointer(pDllSelectedUnit.get());2419	if((pCycleUnit != pCurrentSelectedUnit) || ((pCycleUnit != NULL) && pCycleUnit->ReadyToSelect()) || pCycleCity)2420	{2421		pUI->lookAtSelectionPlot();2422	}2423}

Calls

Called by