Hooks
static bool BeforeCvMapGenerator_pGetMapInitData(lua_State* L, int& result);static void AfterCvMapGenerator_pGetMapInitData(lua_State* L, int& result);static int ReplaceCvMapGenerator_pGetMapInitData(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvMapGenerator_pGetMapInitData>(host, &BeforeCvMapGenerator_pGetMapInitData);CivRegisterAfter<CivHooks::CvMapGenerator_pGetMapInitData>(host, &AfterCvMapGenerator_pGetMapInitData);CivRegisterReplace<CivHooks::CvMapGenerator_pGetMapInitData>(host, &ReplaceCvMapGenerator_pGetMapInitData);
Code
103int CvMapGenerator::pGetMapInitData(lua_State* L)104{105 cvStopWatch stopWatch("CvMapGenerator - GetMapInitData()");106 GetMapInitDataArgs* pArgs = (GetMapInitDataArgs*)lua_touserdata(L, 1);107108 pArgs->bSuccess = false;109 lua_getglobal(L, "GetMapInitData");110 if(lua_isfunction(L, -1))111 {112 lua_pushinteger(L, pArgs->WorldSize);113 pArgs->pkScriptSystem->CallFunction(L, 1, 1);114 const int t = lua_gettop(L);115 if(lua_istable(L, t))116 {117 lua_getfield(L, t, "Width");118 if(!lua_isnoneornil(L, -1))119 pArgs->pkMapInitData->m_iGridW = lua_tointeger(L, -1);120 lua_pop(L, 1);121122 lua_getfield(L, t, "Height");123 if(!lua_isnoneornil(L, -1))124 pArgs->pkMapInitData->m_iGridH = lua_tointeger(L, -1);125 lua_pop(L, 1);126127 lua_getfield(L, t, "WrapX");128 if(!lua_isnoneornil(L, -1))129 pArgs->pkMapInitData->m_bWrapX = lua_toboolean(L, -1);130 lua_pop(L, 1);131132 lua_getfield(L, t, "WrapY");133 if(!lua_isnoneornil(L, -1))134 pArgs->pkMapInitData->m_bWrapY = lua_toboolean(L, -1);135136 lua_getfield(L, t, "TopLatitude");137 if(!lua_isnoneornil(L, -1))138 pArgs->pkMapInitData->m_iTopLatitude = lua_tointeger(L, -1);139140 lua_getfield(L, t, "BottomLatitude");141 if(!lua_isnoneornil(L, -1))142 pArgs->pkMapInitData->m_iBottomLatitude = lua_tointeger(L, -1);143144 pArgs->bSuccess = true;145 }146 }147148 return 0;149}