Hooks
static bool BeforeCultureHelpers_IsValidForThemingBonus(CvThemingBonusInfo * pBonusInfo, EraTypes eEra, vector<EraTypes> & aErasSeen, PlayerTypes ePlayer, vector<PlayerTypes> & aPlayersSeen, PlayerTypes eOwner, bool& result);static void AfterCultureHelpers_IsValidForThemingBonus(CvThemingBonusInfo * pBonusInfo, EraTypes eEra, vector<EraTypes> & aErasSeen, PlayerTypes ePlayer, vector<PlayerTypes> & aPlayersSeen, PlayerTypes eOwner, bool& result);static bool ReplaceCultureHelpers_IsValidForThemingBonus(bool (*original)(CvThemingBonusInfo *, EraTypes, vector<EraTypes> &, PlayerTypes, vector<PlayerTypes> &, PlayerTypes), CvThemingBonusInfo * pBonusInfo, EraTypes eEra, vector<EraTypes> & aErasSeen, PlayerTypes ePlayer, vector<PlayerTypes> & aPlayersSeen, PlayerTypes eOwner);CivRegisterBefore<CivHooks::CultureHelpers_IsValidForThemingBonus>(host, &BeforeCultureHelpers_IsValidForThemingBonus);CivRegisterAfter<CivHooks::CultureHelpers_IsValidForThemingBonus>(host, &AfterCultureHelpers_IsValidForThemingBonus);CivRegisterReplace<CivHooks::CultureHelpers_IsValidForThemingBonus>(host, &ReplaceCultureHelpers_IsValidForThemingBonus);
Code
5776bool CultureHelpers::IsValidForThemingBonus(CvThemingBonusInfo *pBonusInfo, EraTypes eEra, vector<EraTypes> &aErasSeen, PlayerTypes ePlayer, vector<PlayerTypes> &aPlayersSeen, PlayerTypes eOwner)5777{5778 bool bValid = true;57795780 // Can we rule this out based on era?5781 if (bValid && pBonusInfo->IsSameEra())5782 {5783 if (eEra != aErasSeen[0])5784 {5785 bValid = false;5786 }5787 }5788 if (bValid && pBonusInfo->IsUniqueEras())5789 {5790 if (std::find(aErasSeen.begin(), aErasSeen.end(), eEra) != aErasSeen.end())5791 {5792 bValid = false;5793 }5794 }5795#if defined(MOD_API_EXTENSIONS)5796 // ConsecutiveEras implies UniqueEras, so we don't need any tests in addition to those for UniqueEras5797#endif57985799 // Can we rule this out based on player?5800 if (bValid && pBonusInfo->IsRequiresOwner())5801 {5802 if (ePlayer != eOwner)5803 {5804 bValid = false;5805 }5806 }5807 if (bValid && pBonusInfo->IsRequiresAnyButOwner())5808 {5809 if (ePlayer == eOwner)5810 {5811 bValid = false;5812 }5813 }5814 if (bValid && pBonusInfo->IsRequiresSamePlayer())5815 {5816 if (ePlayer != aPlayersSeen[0])5817 {5818 bValid = false;5819 }58205821 }5822 if (bValid && pBonusInfo->IsRequiresUniquePlayers())5823 {5824 if (std::find(aPlayersSeen.begin(), aPlayersSeen.end(), ePlayer) != aPlayersSeen.end())5825 {5826 bValid = false;5827 }5828 }58295830 return bValid;5831}