Bazaar developer reference

CvDllNetMessageHandler::ResponseSwapUnits(PlayerTypes, int, MissionTypes, int, int, int, bool)

Defined in
CvDllNetMessageHandler.cpp, line 967
Class
CvDllNetMessageHandler
Hook name
CivHooks::CvDllNetMessageHandler_ResponseSwapUnits

Hooks

static bool BeforeCvDllNetMessageHandler_ResponseSwapUnits(CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iUnitID, MissionTypes eMission, int iData1, int iData2, int iFlags, bool bShift);static void AfterCvDllNetMessageHandler_ResponseSwapUnits(CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iUnitID, MissionTypes eMission, int iData1, int iData2, int iFlags, bool bShift);static void ReplaceCvDllNetMessageHandler_ResponseSwapUnits(void (*original)(CvDllNetMessageHandler*, PlayerTypes, int, MissionTypes, int, int, int, bool), CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iUnitID, MissionTypes eMission, int iData1, int iData2, int iFlags, bool bShift);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseSwapUnits::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvDllNetMessageHandler_ResponseSwapUnits);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseSwapUnits::ID, CIV_HOOK_AFTER, (void*)&AfterCvDllNetMessageHandler_ResponseSwapUnits);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseSwapUnits::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvDllNetMessageHandler_ResponseSwapUnits);

Code

967void CvDllNetMessageHandler::ResponseSwapUnits(PlayerTypes ePlayer, int iUnitID, MissionTypes eMission, int iData1, int iData2, int iFlags, bool bShift)968{969	CvUnit::dispatchingNetMessage(true);970971	CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);972	CvUnit* pkUnit = kPlayer.getUnit(iUnitID);973974	if(pkUnit != NULL)975	{976		// Get target plot977		CvMap& kMap = GC.getMap();978		CvPlot* pkTargetPlot = kMap.plot(iData1, iData2);979980		if(pkTargetPlot != NULL)981		{982			CvPlot* pkOriginationPlot = pkUnit->plot();983984			// Find unit to move out985			for(int iI = 0; iI < pkTargetPlot->getNumUnits(); iI++)986			{987				CvUnit* pkUnit2 = pkTargetPlot->getUnitByIndex(iI);988989				if(pkUnit2 && pkUnit2->AreUnitsOfSameType(*pkUnit))990				{991					// Start the swap992					pkUnit->PushMission(CvTypes::getMISSION_MOVE_TO(), iData1, iData2, MOVE_IGNORE_STACKING, bShift, true);993994					// Move the other unit back out, again splitting if necessary995					pkUnit2->PushMission(CvTypes::getMISSION_MOVE_TO(), pkOriginationPlot->getX(), pkOriginationPlot->getY());996				}997			}998		}999	}1000	CvUnit::dispatchingNetMessage(false);1001}

Calls