CvPlayer::getAdvancedStartRouteCost(RouteTypes, bool, CvPlot *)
- Defined in
- CvPlayer.cpp, line 23198
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_getAdvancedStartRouteCost
Hooks
static bool BeforeCvPlayer_getAdvancedStartRouteCost(CvPlayer* self, RouteTypes eRoute, bool bAdd, CvPlot* pPlot, int& result);static void AfterCvPlayer_getAdvancedStartRouteCost(CvPlayer* self, RouteTypes eRoute, bool bAdd, CvPlot* pPlot, int& result);static int ReplaceCvPlayer_getAdvancedStartRouteCost(int (*original)(CvPlayer*, RouteTypes, bool, CvPlot*), CvPlayer* self, RouteTypes eRoute, bool bAdd, CvPlot* pPlot);CivRegisterBefore<CivHooks::CvPlayer_getAdvancedStartRouteCost>(host, &BeforeCvPlayer_getAdvancedStartRouteCost);CivRegisterAfter<CivHooks::CvPlayer_getAdvancedStartRouteCost>(host, &AfterCvPlayer_getAdvancedStartRouteCost);CivRegisterReplace<CivHooks::CvPlayer_getAdvancedStartRouteCost>(host, &ReplaceCvPlayer_getAdvancedStartRouteCost);
Code
23198int CvPlayer::getAdvancedStartRouteCost(RouteTypes eRoute, bool bAdd, CvPlot* pPlot)23199{23200 if(0 == getNumCities())23201 {23202 return -1;23203 }2320423205 if(eRoute == NO_ROUTE)23206 {23207 return -1;23208 }2320923210 CvRouteInfo* pkRouteInfo = GC.getRouteInfo(eRoute);23211 if(pkRouteInfo == NULL)23212 {23213 return -1;23214 }2321523216 int iCost = pkRouteInfo->getAdvancedStartCost();2321723218 // This denotes cities may not be purchased through Advanced Start23219 if(iCost < 0)23220 {23221 return -1;23222 }2322323224 iCost *= GC.getGame().getGameSpeedInfo().getBuildPercent();23225 iCost /= 100;2322623227 // No invalid plots!23228 if(pPlot != NULL)23229 {23230 if(pPlot->isCity())23231 {23232 return -1;23233 }2323423235 if(bAdd)23236 {23237 if(pPlot->isImpassable() || pPlot->isWater() || pPlot->isMountain())23238 {23239 return -1;23240 }23241 // Can't place twice23242 if(pPlot->getRouteType() == eRoute)23243 {23244 return -1;23245 }23246 }23247 else23248 {23249 // Need Route to remove it23250 if(pPlot->getRouteType() != eRoute)23251 {23252 return -1;23253 }23254 }2325523256 // Must be owned by me23257 if(pPlot->getOwner() != GetID())23258 {23259 return -1;23260 }23261 }2326223263 // Tech requirement23264 for(int iBuildLoop = 0; iBuildLoop < GC.getNumBuildInfos(); iBuildLoop++)23265 {23266 const BuildTypes eBuild = static_cast<BuildTypes>(iBuildLoop);23267 CvBuildInfo* pkBuildInfo = GC.getBuildInfo(eBuild);23268 if(pkBuildInfo)23269 {23270 if(pkBuildInfo->getRoute() == eRoute)23271 {23272 if(!(GET_TEAM(getTeam()).GetTeamTechs()->HasTech((TechTypes)pkBuildInfo->getTechPrereq())))23273 {23274 return -1;23275 }23276 }23277 }23278 }2327923280 return iCost;23281}
Calls
- CvBuildInfo::getRoute() const
- CvBuildInfo::getTechPrereq() const
- CvGame::getGameSpeedInfo() const
- CvGameSpeedInfo::getBuildPercent() const
- CvGlobals::getBuildInfo(BuildTypes)
- CvGlobals::getGame()
- CvGlobals::getNumBuildInfos()
- CvGlobals::getRouteInfo(RouteTypes)
- CvPlayer::GetID() const
- CvPlayer::getNumCities() const
- CvPlayer::getTeam() const
- CvPlot::getOwner() const
- CvPlot::getRouteType() const
- CvPlot::isCity() const
- CvPlot::isImpassable() const
- CvPlot::isMountain() const
- CvPlot::isWater() const
- CvRouteInfo::getAdvancedStartCost() const
- CvTeam::getTeam(TeamTypes)
- CvTeam::GetTeamTechs() const
- CvTeamTechs::HasTech(TechTypes) const