Bazaar developer reference

CvDllNetMessageHandler::ResponseSetSwappableGreatWork(PlayerTypes, int, int)

Defined in
CvDllNetMessageHandler.cpp, line 512
Class
CvDllNetMessageHandler
Hook name
CivHooks::CvDllNetMessageHandler_ResponseSetSwappableGreatWork

Hooks

static bool BeforeCvDllNetMessageHandler_ResponseSetSwappableGreatWork(CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iWorkClass, int iWorkIndex);static void AfterCvDllNetMessageHandler_ResponseSetSwappableGreatWork(CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iWorkClass, int iWorkIndex);static void ReplaceCvDllNetMessageHandler_ResponseSetSwappableGreatWork(void (*original)(CvDllNetMessageHandler*, PlayerTypes, int, int), CvDllNetMessageHandler* self, PlayerTypes ePlayer, int iWorkClass, int iWorkIndex);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseSetSwappableGreatWork::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvDllNetMessageHandler_ResponseSetSwappableGreatWork);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseSetSwappableGreatWork::ID, CIV_HOOK_AFTER, (void*)&AfterCvDllNetMessageHandler_ResponseSetSwappableGreatWork);host->RegisterHook(host->pluginIndex, CivHooks::CvDllNetMessageHandler_ResponseSetSwappableGreatWork::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvDllNetMessageHandler_ResponseSetSwappableGreatWork);

Code

512void CvDllNetMessageHandler::ResponseSetSwappableGreatWork(PlayerTypes ePlayer, int iWorkClass, int iWorkIndex)513{514	CvAssertMsg(ePlayer != NO_PLAYER, "ePlayer invalid");515	516	// is this player alive517	if (GET_PLAYER(ePlayer).isAlive())518	{519		// -1 indicates that they want to clear the slot520		if (iWorkIndex == -1)521		{522			if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_ARTIFACT"))523			{524				GET_PLAYER(ePlayer).GetCulture()->SetSwappableArtifactIndex(-1);525			}526			else if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_ART"))527			{528				GET_PLAYER(ePlayer).GetCulture()->SetSwappableArtIndex(-1);529			}530			else if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_LITERATURE"))531			{532				GET_PLAYER(ePlayer).GetCulture()->SetSwappableWritingIndex(-1);533			}			534			else if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_MUSIC"))535			{536				GET_PLAYER(ePlayer).GetCulture()->SetSwappableMusicIndex(-1);537			}538		}539		else540		{541			// does this player control this work542			if (GET_PLAYER(ePlayer).GetCulture()->ControlsGreatWork(iWorkIndex))543			{544				if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_ARTIFACT"))545				{546					GET_PLAYER(ePlayer).GetCulture()->SetSwappableArtifactIndex(iWorkIndex);547				}548				else if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_ART"))549				{550					GET_PLAYER(ePlayer).GetCulture()->SetSwappableArtIndex(iWorkIndex);551				}552				else if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_LITERATURE"))553				{554					GET_PLAYER(ePlayer).GetCulture()->SetSwappableWritingIndex(iWorkIndex);555				}			556				else if (iWorkClass == GC.getInfoTypeForString("GREAT_WORK_MUSIC"))557				{558					GET_PLAYER(ePlayer).GetCulture()->SetSwappableMusicIndex(iWorkIndex);559				}				560			}561		}562		GC.GetEngineUserInterface()->setDirty(GreatWorksScreen_DIRTY_BIT, true);563	}564}

Calls