Hooks
static bool BeforeCvPlayer_IsCityConnectedToCity(CvPlayer* self, CvCity* pCity1, CvCity* pCity2, RouteTypes eRestrictRoute, bool bIgnoreHarbors, bool& result);static void AfterCvPlayer_IsCityConnectedToCity(CvPlayer* self, CvCity* pCity1, CvCity* pCity2, RouteTypes eRestrictRoute, bool bIgnoreHarbors, bool& result);static bool ReplaceCvPlayer_IsCityConnectedToCity(bool (*original)(CvPlayer*, CvCity*, CvCity*, RouteTypes, bool), CvPlayer* self, CvCity* pCity1, CvCity* pCity2, RouteTypes eRestrictRoute, bool bIgnoreHarbors);CivRegisterBefore<CivHooks::CvPlayer_IsCityConnectedToCity>(host, &BeforeCvPlayer_IsCityConnectedToCity);CivRegisterAfter<CivHooks::CvPlayer_IsCityConnectedToCity>(host, &AfterCvPlayer_IsCityConnectedToCity);CivRegisterReplace<CivHooks::CvPlayer_IsCityConnectedToCity>(host, &ReplaceCvPlayer_IsCityConnectedToCity);
Code
5775bool CvPlayer::IsCityConnectedToCity(CvCity* pCity1, CvCity* pCity2, RouteTypes eRestrictRoute, bool bIgnoreHarbors)5776{5777#if defined(MOD_API_EXTENSIONS)5778 return IsPlotConnectedToPlot(pCity1->plot(), pCity2->plot(), eRestrictRoute, bIgnoreHarbors);5779#else5780 int iPathfinderFlags = GetID() | MOVE_ROUTE_ALLOW_UNEXPLORED; // Since we just want to know if we are connected or not, allow the check to search unexplored terrain.5781 if(eRestrictRoute == NO_ROUTE)5782 {5783 iPathfinderFlags |= MOVE_ANY_ROUTE;5784 }5785 else5786 {5787 // assuming that there are fewer than 256 players5788 int iRouteValue = eRestrictRoute + 1;5789 iPathfinderFlags |= (iRouteValue << 8);5790 }57915792 if (bIgnoreHarbors)5793 {5794 GC.getRouteFinder().SetNumExtraChildrenFunc(NULL);5795 GC.getRouteFinder().SetExtraChildGetterFunc(NULL);5796 }57975798 GC.getRouteFinder().ForceReset();5799 bool bReturnValue = GC.getRouteFinder().GeneratePath(pCity1->getX(), pCity1->getY(), pCity2->getX(), pCity2->getY(), iPathfinderFlags, false);58005801 if (bIgnoreHarbors)5802 {5803 // reconnect the land route pathfinder water methods5804 GC.getRouteFinder().SetNumExtraChildrenFunc(RouteGetNumExtraChildren);5805 GC.getRouteFinder().SetExtraChildGetterFunc(RouteGetExtraChild);5806 }58075808 return bReturnValue;5809#endif5810}