Bazaar developer reference

CvCitySpecializationAI::LogSpecializationUpdate(CitySpecializationUpdateType)

Defined in
CvCitySpecializationAI.cpp, line 1509
Class
CvCitySpecializationAI
Hook name
CivHooks::CvCitySpecializationAI_LogSpecializationUpdate

Hooks

static bool BeforeCvCitySpecializationAI_LogSpecializationUpdate(CvCitySpecializationAI* self, CitySpecializationUpdateType eUpdate);static void AfterCvCitySpecializationAI_LogSpecializationUpdate(CvCitySpecializationAI* self, CitySpecializationUpdateType eUpdate);static void ReplaceCvCitySpecializationAI_LogSpecializationUpdate(void (*original)(CvCitySpecializationAI*, CitySpecializationUpdateType), CvCitySpecializationAI* self, CitySpecializationUpdateType eUpdate);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvCitySpecializationAI_LogSpecializationUpdate::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvCitySpecializationAI_LogSpecializationUpdate);host->RegisterHook(host->pluginIndex, CivHooks::CvCitySpecializationAI_LogSpecializationUpdate::ID, CIV_HOOK_AFTER, (void*)&AfterCvCitySpecializationAI_LogSpecializationUpdate);host->RegisterHook(host->pluginIndex, CivHooks::CvCitySpecializationAI_LogSpecializationUpdate::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvCitySpecializationAI_LogSpecializationUpdate);

Code

1508/// Report the reason for reevaluating specializations1509void CvCitySpecializationAI::LogSpecializationUpdate(CitySpecializationUpdateType eUpdate)1510{1511	if(GC.getLogging() && GC.getAILogging())1512	{1513		CvString strOutBuf;1514		CvString strBaseString;1515		CvString strPlayerName;1516		CvString strTypeString;1517		FILogFile* pLog;15181519		// Find the name of this civ1520		strPlayerName = GetPlayer()->getCivilizationShortDescription();1521		pLog = LOGFILEMGR.GetLog(GetLogFileName(strPlayerName), FILogFile::kDontTimeStamp);15221523		// Get the leading info for this line1524		strBaseString.Format("%03d, ", GC.getGame().getElapsedGameTurns());1525		strBaseString += strPlayerName + ", ";15261527		switch(eUpdate)1528		{1529		case SPECIALIZATION_UPDATE_NEW_GRAND_STRATEGY:1530		{1531			CvAIGrandStrategyXMLEntry* pGrandStrategyInfo = GC.getAIGrandStrategyInfo(m_pPlayer->GetGrandStrategyAI()->GetActiveGrandStrategy());1532			if(NULL != pGrandStrategyInfo)1533			{1534				strTypeString.Format("Update: New grand strategy: %s", pGrandStrategyInfo->GetType());1535			}1536		}1537		break;1538		case SPECIALIZATION_UPDATE_NOW_AT_WAR:1539			strTypeString = "Update: New war";1540			break;1541		case SPECIALIZATION_UPDATE_CITY_FOUNDED:1542			strTypeString = "Update: City founded";1543			break;1544		case SPECIALIZATION_UPDATE_MY_CITY_CAPTURED:1545			strTypeString = "Update: My city captured";1546			break;1547		case SPECIALIZATION_UPDATE_ENEMY_CITY_CAPTURED:1548			strTypeString = "Update: Enemy city captured";1549			break;1550		case SPECIALIZATION_UPDATE_STRATEGY_NOW_ON:1551			strTypeString = "Update: War strategy turned on";1552			break;1553		case SPECIALIZATION_UPDATE_STRATEGY_NOW_OFF:1554			strTypeString = "Update: War strategy turned off";1555			break;1556		case SPECIALIZATION_UPDATE_RESEARCH_COMPLETE:1557			strTypeString = "Update: Tech research complete";1558			break;1559		case SPECIALIZATION_UPDATE_WONDER_BUILT_BY_RIVAL:1560			strTypeString = "Update: wonder built by rival, WONDER";1561		}1562		strOutBuf = strBaseString + strTypeString;1563		pLog->Msg(strOutBuf);1564	}1565}

Calls

Called by