Hooks
static bool BeforeCvDllNetMessageHandler_ResponseMoveSpy(CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iSpyIndex, int iTargetPlayer, int iTargetCity, bool bAsDiplomat);static void AfterCvDllNetMessageHandler_ResponseMoveSpy(CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iSpyIndex, int iTargetPlayer, int iTargetCity, bool bAsDiplomat);static void ReplaceCvDllNetMessageHandler_ResponseMoveSpy(void (*original)(CvDllNetMessageHandler*, PlayerTypes, int, int, int, bool), CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iSpyIndex, int iTargetPlayer, int iTargetCity, bool bAsDiplomat);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseMoveSpy::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvDllNetMessageHandler_ResponseMoveSpy);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseMoveSpy::ID, CIV_HOOK_AFTER, (void*)&AfterCvDllNetMessageHandler_ResponseMoveSpy);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseMoveSpy::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvDllNetMessageHandler_ResponseMoveSpy);
Code
397void CvDllNetMessageHandler::ResponseMoveSpy(PlayerTypes ePlayer, int iSpyIndex, int iTargetPlayer, int iTargetCity, bool bAsDiplomat)398{399 CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);400 CvPlayerEspionage* pPlayerEspionage = kPlayer.GetEspionage();401402 if(pPlayerEspionage)403 {404 if(iTargetCity == -1)405 {406 pPlayerEspionage->ExtractSpyFromCity(iSpyIndex);407 GC.GetEngineUserInterface()->setDirty(EspionageScreen_DIRTY_BIT, true);408 }409 else410 {411 CvAssertMsg(iTargetPlayer != -1, "iTargetPlayer is -1");412 if(iTargetPlayer != -1)413 {414 PlayerTypes eTargetPlayer = (PlayerTypes)iTargetPlayer;415 CvCity* pCity = GET_PLAYER(eTargetPlayer).getCity(iTargetCity);416 CvAssertMsg(pCity, "pCity is null");417 if(pCity)418 {419 pPlayerEspionage->MoveSpyTo(pCity, iSpyIndex, bAsDiplomat);420 GC.GetEngineUserInterface()->setDirty(EspionageScreen_DIRTY_BIT, true);421 }422 }423 }424 }425}