Hooks
static bool BeforeCvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot>(host, &BeforeCvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot>(host, &AfterCvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot>(host, &ReplaceCvLuaPlayer_lGetBuildingOfClosestGreatWorkSlot);
Code
2814//BuildingType GetBuildingOfClosestGreatWorkSlot(int iX, int iY, GreatWorkSlotType eGreatWorkSlot);2815int CvLuaPlayer::lGetBuildingOfClosestGreatWorkSlot(lua_State* L)2816{2817 CvPlayerAI* pkPlayer = GetInstance(L);2818 int iX = lua_tointeger(L, 2);2819 int iY = lua_tointeger(L, 3);2820 GreatWorkSlotType eGreatWorkSlot = static_cast<GreatWorkSlotType>(lua_tointeger(L, 4));2821 BuildingClassTypes eBuildingClass;2822 int iSlot;2823 CvCity* pkCity = pkPlayer->GetCulture()->GetClosestAvailableGreatWorkSlot(iX, iY, eGreatWorkSlot, &eBuildingClass, &iSlot);2824 CvCivilizationInfo *pkCivInfo = GC.getCivilizationInfo(pkPlayer->getCivilizationType());2825 if (pkCity && pkCivInfo)2826 {2827 int iBuilding = pkCivInfo->getCivilizationBuildings(eBuildingClass);2828 lua_pushinteger(L, iBuilding);2829 return 1;2830 }2831 else2832 {2833 return 0;2834 }2835}