Bazaar developer reference

CvPlayerAchievements::StartTurn()

Defined in
CvAchievementUnlocker.cpp, line 406
Class
CvPlayerAchievements
Hook name
CivHooks::CvPlayerAchievements_StartTurn

Hooks

static bool BeforeCvPlayerAchievements_StartTurn(CvPlayerAchievements* self);static void AfterCvPlayerAchievements_StartTurn(CvPlayerAchievements* self);static void ReplaceCvPlayerAchievements_StartTurn(void (*original)(CvPlayerAchievements*), CvPlayerAchievements* self);CivRegisterBefore<CivHooks::CvPlayerAchievements_StartTurn>(host, &BeforeCvPlayerAchievements_StartTurn);CivRegisterAfter<CivHooks::CvPlayerAchievements_StartTurn>(host, &AfterCvPlayerAchievements_StartTurn);CivRegisterReplace<CivHooks::CvPlayerAchievements_StartTurn>(host, &ReplaceCvPlayerAchievements_StartTurn);

Code

406void CvPlayerAchievements::StartTurn()407{408#if !defined(NO_ACHIEVEMENTS)409	if(m_kPlayer.GetID() != GC.getGame().getActivePlayer())410		return;411412	if(m_eSwedenType == UNDEFINED_TYPE)413	{414		m_eSwedenType = (CivilizationTypes)GC.getInfoTypeForString("CIVILIZATION_SWEDEN", true);415	}416417	if(m_eGreatGeneralType == UNDEFINED_TYPE)418	{419		m_eGreatGeneralType = (UnitTypes)GC.getInfoTypeForString("UNIT_GREAT_GENERAL", true);420	}421422	if(m_eHakkapelittaType == UNDEFINED_TYPE)423	{424		m_eHakkapelittaType = (UnitTypes)GC.getInfoTypeForString("UNIT_SWEDISH_HAKKAPELIITTA", true);425	}426427	if(m_eSwedenType != NO_CIVILIZATION && m_eGreatGeneralType != NO_UNIT && m_eHakkapelittaType != NO_UNIT)428	{429		if(m_kPlayer.getCivilizationType() == m_eSwedenType)430		{431			int iLoop = 0;432			for(const CvUnit* pUnit = m_kPlayer.firstUnit(&iLoop); pUnit != NULL; pUnit = m_kPlayer.nextUnit(&iLoop))433			{434				if(pUnit->getUnitType() == m_eGreatGeneralType)435				{436					CvPlot* pPlot = pUnit->plot();437					if(pPlot != NULL)438					{439						int iNumUnits = pPlot->getNumUnits();440						for(int i = 0; i < iNumUnits; ++i)441						{442							CvUnit* pStackedUnit = pPlot->getUnitByIndex(i);443							if(pStackedUnit->getUnitType() == m_eHakkapelittaType)444							{445								gDLL->UnlockAchievement(ACHIEVEMENT_XP1_31);446								return;447							}448						}449					}	450				}451			}452		}453		454	}455#endif456}

Called by