Bazaar developer reference

CvLuaPlayer::lGetGreatWorks(lua_State *)

Defined in
Lua/CvLuaPlayer.cpp, line 4815
Class
CvLuaPlayer
Hook name
CivHooks::CvLuaPlayer_lGetGreatWorks

Hooks

static bool BeforeCvLuaPlayer_lGetGreatWorks(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetGreatWorks(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetGreatWorks(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetGreatWorks>(host, &BeforeCvLuaPlayer_lGetGreatWorks);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetGreatWorks>(host, &AfterCvLuaPlayer_lGetGreatWorks);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetGreatWorks>(host, &ReplaceCvLuaPlayer_lGetGreatWorks);

Code

4815int CvLuaPlayer::lGetGreatWorks(lua_State* L)4816{4817	CvPlayerAI* pkPlayer = GetInstance(L);4818	GreatWorkClass eGreatWorkClass = (GreatWorkClass)lua_tointeger(L, 2);48194820	lua_createtable(L, 0, 0);4821	int index = 1;48224823	int iCityLoop;4824	CvCity* pCity = NULL;4825	for (pCity = pkPlayer->firstCity(&iCityLoop); pCity != NULL; pCity = pkPlayer->nextCity(&iCityLoop))4826	{4827		for(int iBuildingClassLoop = 0; iBuildingClassLoop < GC.getNumBuildingClassInfos(); iBuildingClassLoop++)4828		{4829			CvCivilizationInfo& playerCivilizationInfo = pkPlayer->getCivilizationInfo();4830			BuildingTypes eBuilding = (BuildingTypes)playerCivilizationInfo.getCivilizationBuildings((BuildingClassTypes)iBuildingClassLoop);4831			if (eBuilding != NO_BUILDING)4832			{4833				CvBuildingEntry *pkBuilding = GC.getBuildingInfo(eBuilding);4834				if (pkBuilding)4835				{4836					if (pCity->GetCityBuildings()->GetNumBuilding(eBuilding) > 0)4837					{4838						int iNumSlots = pkBuilding->GetGreatWorkCount();4839						for (int iI = 0; iI < iNumSlots; iI++)4840						{4841							int iGreatWorkIndex = pCity->GetCityBuildings()->GetBuildingGreatWork((BuildingClassTypes)iBuildingClassLoop, iI);4842							if (iGreatWorkIndex != -1)4843							{4844								if (GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iGreatWorkIndex].m_eClassType == eGreatWorkClass)4845								{4846									lua_createtable(L, 0, 0);4847									const int t = lua_gettop(L);4848									lua_pushinteger(L, iGreatWorkIndex);4849									lua_setfield(L, t, "Index");4850									lua_pushinteger(L, GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iGreatWorkIndex].m_ePlayer);4851									lua_setfield(L, t, "Creator");4852									int iEra = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iGreatWorkIndex].m_eEra;4853									lua_pushinteger(L, iEra);4854									lua_setfield(L, t, "Era");4855									lua_rawseti(L, -2, index++);4856								}4857							}4858						}4859					}4860				}4861			}4862		}4863	}48644865	return 1;4866}

Calls

Called by