Hooks
static bool BeforeCvLuaEnums_RegisterDynamicEnums(lua_State* L, const char* szTableName, const char* szIdField, const char* szNameField, const char* szCountName);static void AfterCvLuaEnums_RegisterDynamicEnums(lua_State* L, const char* szTableName, const char* szIdField, const char* szNameField, const char* szCountName);static void ReplaceCvLuaEnums_RegisterDynamicEnums(void (*original)(lua_State*, const char*, const char*, const char*, const char*), lua_State* L, const char* szTableName, const char* szIdField, const char* szNameField, const char* szCountName);CivRegisterBefore<CivHooks::CvLuaEnums_RegisterDynamicEnums>(host, &BeforeCvLuaEnums_RegisterDynamicEnums);CivRegisterAfter<CivHooks::CvLuaEnums_RegisterDynamicEnums>(host, &AfterCvLuaEnums_RegisterDynamicEnums);CivRegisterReplace<CivHooks::CvLuaEnums_RegisterDynamicEnums>(host, &ReplaceCvLuaEnums_RegisterDynamicEnums);
Code
1097void CvLuaEnums::RegisterDynamicEnums(lua_State* L, const char* szTableName, const char* szIdField, const char* szNameField, const char* szCountName)1098{1099 Database::Connection& db = *GC.GetGameDatabase();1100 Database::Results kResults;11011102 char zSQL[256];1103 sprintf_s(zSQL, 255, "select %s, %s from %s", szIdField, szNameField, szTableName);11041105 if(db.Execute(kResults, zSQL))1106 {1107 while(kResults.Step())1108 {1109 const int value = kResults.GetInt(0);1110 const char* name = kResults.GetText(1);11111112 lua_pushstring(L, name);1113 lua_pushvalue(L, -1);11141115 lua_pushinteger(L, value);1116 lua_rawset(L, -4);11171118 lua_rawseti(L, -2, value);1119 }1120 }11211122 if(szCountName != NULL)1123 {1124 lua_pushstring(L, szCountName);1125 lua_pushinteger(L, db.Count(szTableName, false));1126 lua_rawset(L, -3);1127 }1128}