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}