Bazaar developer reference

CvWorldBuilderMapLoader::RunPostProcessScript(lua_State *)

Defined in
CvWorldBuilderMapLoader.cpp, line 1647
Class
CvWorldBuilderMapLoader
Hook name
CivHooks::CvWorldBuilderMapLoader_RunPostProcessScript

Hooks

static bool BeforeCvWorldBuilderMapLoader_RunPostProcessScript(lua_State* L, int& result);static void AfterCvWorldBuilderMapLoader_RunPostProcessScript(lua_State* L, int& result);static int ReplaceCvWorldBuilderMapLoader_RunPostProcessScript(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvWorldBuilderMapLoader_RunPostProcessScript>(host, &BeforeCvWorldBuilderMapLoader_RunPostProcessScript);CivRegisterAfter<CivHooks::CvWorldBuilderMapLoader_RunPostProcessScript>(host, &AfterCvWorldBuilderMapLoader_RunPostProcessScript);CivRegisterReplace<CivHooks::CvWorldBuilderMapLoader_RunPostProcessScript>(host, &ReplaceCvWorldBuilderMapLoader_RunPostProcessScript);

Code

1647int CvWorldBuilderMapLoader::RunPostProcessScript(lua_State* L)1648{1649	if(L == NULL)1650	{1651		FAssertMsg(L, "Seriously, you really need a lua state for this.");1652		return 0;1653	}16541655	const int iTop = lua_gettop(L);16561657	ModType& kGlobalsDataType = sg_kSave.m_kModData.m_kMapModData;1658	const uint uiGlobalsCount = kGlobalsDataType.GetFieldCount();1659	if(uiGlobalsCount > 0)1660	{1661		ModDataEntry kEntry = sg_kSave.m_kModData.GetMapDataEntry();1662		for(uint uiField = 0; uiField < uiGlobalsCount; ++uiField)1663		{1664			const char* szFieldName = kGlobalsDataType.GetFieldName(uiField);1665			if(szFieldName != NULL && strcmp(szFieldName, "PostProcessMapScript") == 0)1666			{1667				if(kGlobalsDataType.GetFieldType(uiField) == ModType::TYPE_STRING)1668				{1669					const char* szLua = kEntry.GetFieldAsString(uiField);1670					if(szLua == NULL || strlen(szLua) == 0)1671					{1672						szLua = kGlobalsDataType.GetFieldDefaultAsString(uiField);1673					}1674					1675					ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();1676					if(pkScriptSystem != NULL)1677					{1678						//1040 == _MAX_PATH * 41679						char szMapScriptPath[1040] = {0};1680						const bool bResult = gDLL->GetEvaluatedMapScriptPath(szLua, szMapScriptPath, 1040);1681						if(!bResult)1682						{1683							FAssertMsg(0, "Failed to find \"PostProcessMap\" in Post Process Map Script.");1684						}16851686						const bool bLoadedMapGenerator = pkScriptSystem->LoadFile(L, szMapScriptPath);1687						FAssertMsg(bLoadedMapGenerator, "Failed to load Post Process Map Script.");1688						if(bLoadedMapGenerator)1689						{1690							lua_getglobal(L, "PostProcessMap");1691							if(lua_isfunction(L, -1))1692								pkScriptSystem->CallFunction(L, 0, 0);1693							else1694								FAssertMsg(0, "Failed to find \"PostProcessMap\" in Post Process Map Script.");1695						}1696					}1697				}1698			}1699		}1700	}17011702	lua_settop(L, iTop);17031704	return 0;1705}

Calls

Called by