Bazaar developer reference

CultureHelpers::IsValidForThemingBonus(CvThemingBonusInfo *, EraTypes, vector<EraTypes> &, PlayerTypes, vector<PlayerTypes> &, PlayerTypes)

Defined in
CvCultureClasses.cpp, line 5776
Hook name
CivHooks::CultureHelpers_IsValidForThemingBonus

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}

Calls

Called by