CvCity::rangeStrike(int, int)
- Defined in
- CvCity.cpp, line 16177
- Class
- CvCity
- Hook name
CivHooks::CvCity_rangeStrike
Hooks
static bool BeforeCvCity_rangeStrike(CvCity* self, int iX, int iY, CityTaskResult& result);static void AfterCvCity_rangeStrike(CvCity* self, int iX, int iY, CityTaskResult& result);static CityTaskResult ReplaceCvCity_rangeStrike(CityTaskResult (*original)(CvCity*, int, int), CvCity* self, int iX, int iY);CivRegisterBefore<CivHooks::CvCity_rangeStrike>(host, &BeforeCvCity_rangeStrike);CivRegisterAfter<CivHooks::CvCity_rangeStrike>(host, &AfterCvCity_rangeStrike);CivRegisterReplace<CivHooks::CvCity_rangeStrike>(host, &ReplaceCvCity_rangeStrike);
Code
16177CityTaskResult CvCity::rangeStrike(int iX, int iY)16178{16179 VALIDATE_OBJECT16180 CvUnit* pDefender;1618116182 CityTaskResult eResult = TASK_ABORTED;1618316184 CvPlot* pPlot = GC.getMap().plot(iX, iY);16185 if(NULL == pPlot)16186 {16187 return eResult;16188 }1618916190 if(!canRangeStrikeAt(iX, iY))16191 {16192 return eResult;16193 }1619416195 setMadeAttack(true);1619616197 // No City16198 if(!pPlot->isCity())16199 {16200 pDefender = rangedStrikeTarget(pPlot);1620116202 CvAssert(pDefender != NULL);16203 if(!pDefender) return TASK_ABORTED;1620416205 CvCombatInfo kCombatInfo;16206 CvUnitCombat::GenerateRangedCombatInfo(*this, pDefender, *pPlot, &kCombatInfo);1620716208 uint uiParentEventID = 0;16209 if(!CvPreGame::quickCombat())16210 {16211 // Center camera here!16212 bool isTargetVisibleToActivePlayer = pPlot->isActiveVisible(false);16213 if(isTargetVisibleToActivePlayer)16214 {16215 auto_ptr<ICvPlot1> pDllPlot = GC.WrapPlotPointer(pPlot);16216 DLLUI->lookAt(pDllPlot.get(), CAMERALOOKAT_NORMAL);16217 }1621816219 kCombatInfo.setVisualizeCombat(pPlot->isActiveVisible(false));1622016221 auto_ptr<ICvCombatInfo1> pDllCombatInfo(new CvDllCombatInfo(&kCombatInfo));16222 uiParentEventID = gDLL->GameplayCityCombat(pDllCombatInfo.get());1622316224 // Set the combat units so that other missions do not continue until combat is over.16225 pDefender->setCombatCity(this);16226 setCombatUnit(pDefender);16227 eResult = TASK_QUEUED;16228 }16229 else16230 {16231 eResult = TASK_COMPLETED;16232 }1623316234 CvUnitCombat::ResolveCombat(kCombatInfo, uiParentEventID);16235 }1623616237 return eResult;16238}
Calls
- CvCity::canRangeStrikeAt(int, int) const
- CvCity::rangedStrikeTarget(CvPlot *)
- CvCity::setCombatUnit(CvUnit *, bool)
- CvCity::setMadeAttack(bool)
- CvCombatInfo::CvCombatInfo()
- CvCombatInfo::setVisualizeCombat(bool)
- CvDllCombatInfo::CvDllCombatInfo(CvCombatInfo *)
- CvGlobals::getDLLIFace()
- CvGlobals::GetEngineUserInterface()
- CvGlobals::getMap()
- CvGlobals::WrapPlotPointer(CvPlot *)
- CvMap::plot(int, int) const
- CvPlot::isActiveVisible(bool) const
- CvPlot::isCity() const
- CvPreGame::quickCombat()
- CvUnit::setCombatCity(CvCity *)
- CvUnitCombat::GenerateRangedCombatInfo(CvCity &, CvUnit *, CvPlot &, CvCombatInfo *)
- CvUnitCombat::ResolveCombat(const CvCombatInfo &, uint)
ICvEngineUtility1::GameplayCityCombatICvUserInterface1::lookAtstd::auto_ptr::auto_ptrstd::auto_ptr::auto_ptrstd::auto_ptr::getstd::auto_ptr::getstd::auto_ptr::operator auto_ptr_ref