CvGame::cyclePlotUnits(CvPlot *, bool, bool, int)
- Defined in
- CvGame.cpp, line 2427
- Class
- CvGame
- Hook name
CivHooks::CvGame_cyclePlotUnits
Hooks
static bool BeforeCvGame_cyclePlotUnits(CvGame* self, CvPlot* pPlot, bool bForward, bool bAuto, int iCount, bool& result);static void AfterCvGame_cyclePlotUnits(CvGame* self, CvPlot* pPlot, bool bForward, bool bAuto, int iCount, bool& result);static bool ReplaceCvGame_cyclePlotUnits(bool (*original)(CvGame*, CvPlot*, bool, bool, int), CvGame* self, CvPlot* pPlot, bool bForward, bool bAuto, int iCount);CivRegisterBefore<CivHooks::CvGame_cyclePlotUnits>(host, &BeforeCvGame_cyclePlotUnits);CivRegisterAfter<CivHooks::CvGame_cyclePlotUnits>(host, &AfterCvGame_cyclePlotUnits);CivRegisterReplace<CivHooks::CvGame_cyclePlotUnits>(host, &ReplaceCvGame_cyclePlotUnits);
Code
2426// Returns true if unit was cycled...2427bool CvGame::cyclePlotUnits(CvPlot* pPlot, bool bForward, bool bAuto, int iCount)2428{2429 IDInfo* pUnitNode;2430 CvUnit* pSelectedUnit;2431 CvUnit* pLoopUnit = NULL;24322433 CvAssertMsg(iCount >= -1, "iCount expected to be >= -1");24342435 if(iCount == -1)2436 {2437 pUnitNode = pPlot->headUnitNode();24382439 while(pUnitNode != NULL)2440 {2441 pLoopUnit = ::getUnit(*pUnitNode);24422443 if(NULL != pLoopUnit && pLoopUnit->IsSelected())2444 {2445 break;2446 }24472448 pUnitNode = pPlot->nextUnitNode(pUnitNode);2449 }2450 }2451 else2452 {2453 pUnitNode = pPlot->headUnitNode();24542455 while(pUnitNode != NULL)2456 {2457 pLoopUnit = ::getUnit(*pUnitNode);24582459 if((iCount - 1) == 0)2460 {2461 break;2462 }24632464 if(iCount > 0)2465 {2466 iCount--;2467 }24682469 pUnitNode = pPlot->nextUnitNode(pUnitNode);2470 }24712472 if(pUnitNode == NULL)2473 {2474 pUnitNode = pPlot->tailUnitNode();24752476 if(pUnitNode != NULL)2477 {2478 pLoopUnit = ::getUnit(*pUnitNode);2479 }2480 }2481 }24822483 if(pUnitNode != NULL)2484 {2485 pSelectedUnit = pLoopUnit;24862487 while(true)2488 {2489 if(bForward)2490 {2491 pUnitNode = pPlot->nextUnitNode(pUnitNode);2492 if(pUnitNode == NULL)2493 {2494 pUnitNode = pPlot->headUnitNode();2495 }2496 }2497 else2498 {2499 pUnitNode = pPlot->prevUnitNode(pUnitNode);2500 if(pUnitNode == NULL)2501 {2502 pUnitNode = pPlot->tailUnitNode();2503 }2504 }25052506 pLoopUnit = ::getUnit(*pUnitNode);25072508 if(iCount == -1)2509 {2510 if(pLoopUnit == pSelectedUnit)2511 {2512 break;2513 }2514 }25152516 if(NULL != pLoopUnit && pLoopUnit->getOwner() == getActivePlayer())2517 {2518 if(bAuto)2519 {2520 if(pLoopUnit->ReadyToSelect())2521 {2522 /*GC.GetEngineUserInterface()->*/selectUnit(pLoopUnit, true);2523 return true;2524 }2525 }2526 else2527 {2528 auto_ptr<ICvUnit1> pDllLoopUnit = GC.WrapUnitPointer(pLoopUnit);2529 GC.GetEngineUserInterface()->InsertIntoSelectionList(pDllLoopUnit.get(), true, false);2530 return true;2531 }2532 }25332534 if(pLoopUnit == pSelectedUnit)2535 {2536 break;2537 }2538 }2539 }25402541 return false;2542}
Calls
- CvGame::getActivePlayer() const
- CvGame::selectUnit(CvUnit *, bool, bool, bool)
- CvGlobals::GetEngineUserInterface()
- CvGlobals::WrapUnitPointer(CvUnit *)
- CvPlot::headUnitNode()
- CvPlot::nextUnitNode(IDInfo *)
- CvPlot::prevUnitNode(IDInfo *)
- CvPlot::tailUnitNode()
- CvUnit::getOwner() const
- CvUnit::IsSelected() const
- CvUnit::ReadyToSelect() const
- getUnit(const IDInfo &)
ICvUserInterface1::InsertIntoSelectionListstd::auto_ptr::auto_ptrstd::auto_ptr::getstd::auto_ptr::operator auto_ptr_ref