CvMinorCivAI::GetBestPlayerToFind(PlayerTypes)
- Defined in
- CvMinorCivAI.cpp, line 5938
- Class
- CvMinorCivAI
- Hook name
CivHooks::CvMinorCivAI_GetBestPlayerToFind
Hooks
static bool BeforeCvMinorCivAI_GetBestPlayerToFind(CvMinorCivAI* self, PlayerTypes ePlayer, PlayerTypes& result);static void AfterCvMinorCivAI_GetBestPlayerToFind(CvMinorCivAI* self, PlayerTypes ePlayer, PlayerTypes& result);static PlayerTypes ReplaceCvMinorCivAI_GetBestPlayerToFind(PlayerTypes (*original)(CvMinorCivAI*, PlayerTypes), CvMinorCivAI* self, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvMinorCivAI_GetBestPlayerToFind>(host, &BeforeCvMinorCivAI_GetBestPlayerToFind);CivRegisterAfter<CivHooks::CvMinorCivAI_GetBestPlayerToFind>(host, &AfterCvMinorCivAI_GetBestPlayerToFind);CivRegisterReplace<CivHooks::CvMinorCivAI_GetBestPlayerToFind>(host, &ReplaceCvMinorCivAI_GetBestPlayerToFind);
Code
5937/// Any good players to ask ePlayer to find?5938PlayerTypes CvMinorCivAI::GetBestPlayerToFind(PlayerTypes ePlayer)5939{5940 PlayerTypes eBestTargetPlayer = NO_PLAYER;59415942 TeamTypes eTeam = GET_PLAYER(ePlayer).getTeam();5943 CvTeam* pTeam = &GET_TEAM(eTeam);59445945 FStaticVector<PlayerTypes, MAX_CIV_PLAYERS, true, c_eCiv5GameplayDLL, 0> veValidTargets;59465947 // First, loop through majors and see if the player has met them5948 PlayerTypes eTargetMajor;5949 TeamTypes eTargetTeam;5950 for(int iTargetMajorLoop = 0; iTargetMajorLoop < MAX_MAJOR_CIVS; iTargetMajorLoop++)5951 {5952 eTargetMajor = (PlayerTypes) iTargetMajorLoop;5953 eTargetTeam = GET_PLAYER(eTargetMajor).getTeam();59545955 // Target needs to be alive5956 if(!GET_PLAYER(eTargetMajor).isAlive())5957 {5958 continue;5959 }59605961 // Don't have the player find anyone on his team...5962 if(eTargetTeam == eTeam)5963 {5964 continue;5965 }59665967 // Player must already know the target5968 if(!pTeam->isHasMet(eTargetTeam))5969 {5970 continue;5971 }59725973 // Player can't have seen this guy's territory before5974 if(pTeam->IsHasFoundPlayersTerritory(eTargetMajor))5975 {5976 continue;5977 }59785979 veValidTargets.push_back(eTargetMajor);5980 }59815982 // Didn't find any valid Target players5983 if(veValidTargets.size() == 0)5984 {5985 return NO_PLAYER;5986 }59875988 int iRandIndex = GC.getGame().getJonRandNum(veValidTargets.size(), "Finding random Major player Target for Minor to give out a quest to find.");5989 eBestTargetPlayer = veValidTargets[iRandIndex];59905991 return eBestTargetPlayer;5992}
Calls
BaseVector::operator[]BaseVector::size- CvGame::getJonRandNum(int, const char *)
- CvGlobals::getGame()
- CvPlayer::getTeam() const
- CvPlayer::isAlive() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvTeam::getTeam(TeamTypes)
- CvTeam::IsHasFoundPlayersTerritory(PlayerTypes) const
- CvTeam::isHasMet(TeamTypes) const
FStaticVector::FStaticVectorFStaticVector::push_back