bool LuaUnitDefs::IsDefaultParam(const string& word) { if (paramMap.empty()) { InitParamMap(); } return (paramMap.find(word) != paramMap.end()); }
bool LuaFeatureDefs::PushEntries(lua_State* L) { InitParamMap(); typedef int (*IndxFuncType)(lua_State*); typedef int (*IterFuncType)(lua_State*); const auto& defsMap = featureHandler->GetFeatureDefs(); const std::array<const LuaHashString, 3> indxOpers = {{ LuaHashString("__index"), LuaHashString("__newindex"), LuaHashString("__metatable") }}; const std::array<const LuaHashString, 2> iterOpers = {{ LuaHashString("pairs"), LuaHashString("next") }}; const std::array<const IndxFuncType, 3> indxFuncs = {FeatureDefIndex, FeatureDefNewIndex, FeatureDefMetatable}; const std::array<const IterFuncType, 2> iterFuncs = {Pairs, Next}; for (auto it = defsMap.cbegin(); it != defsMap.cend(); ++it) { const auto def = featureHandler->GetFeatureDefByID(it->second); // ObjectDefMapType::mapped_type if (def == NULL) continue; PushObjectDefProxyTable(L, indxOpers, iterOpers, indxFuncs, iterFuncs, def); } return true; }
bool LuaUnitDefs::PushEntries(lua_State* L) { if (paramMap.empty()) { InitParamMap(); } const map<string, int>& udMap = unitDefHandler->unitDefIDsByName; map<string, int>::const_iterator udIt; for (udIt = udMap.begin(); udIt != udMap.end(); ++udIt) { const UnitDef* ud = unitDefHandler->GetUnitDefByID(udIt->second); if (ud == NULL) { continue; } lua_pushnumber(L, ud->id); lua_newtable(L); { // the proxy table lua_newtable(L); { // the metatable HSTR_PUSH(L, "__index"); lua_pushlightuserdata(L, (void*)ud); lua_pushcclosure(L, UnitDefIndex, 1); lua_rawset(L, -3); // closure HSTR_PUSH(L, "__newindex"); lua_pushlightuserdata(L, (void*)ud); lua_pushcclosure(L, UnitDefNewIndex, 1); lua_rawset(L, -3); HSTR_PUSH(L, "__metatable"); lua_pushlightuserdata(L, (void*)ud); lua_pushcclosure(L, UnitDefMetatable, 1); lua_rawset(L, -3); } lua_setmetatable(L, -2); } HSTR_PUSH(L, "pairs"); lua_pushcfunction(L, Pairs); lua_rawset(L, -3); HSTR_PUSH(L, "next"); lua_pushcfunction(L, Next); lua_rawset(L, -3); lua_rawset(L, -3); // proxy table into UnitDefs } return true; }
bool LuaWeaponDefs::PushEntries(lua_State* L) { if (paramMap.empty()) { InitParamMap(); } const map<string, int>& weaponMap = weaponDefHandler->weaponID; map<string, int>::const_iterator wit; for (wit = weaponMap.begin(); wit != weaponMap.end(); ++wit) { const WeaponDef* wd = &weaponDefHandler->weaponDefs[wit->second]; if (wd == NULL) { continue; } lua_pushnumber(L, wd->id); lua_newtable(L); { // the proxy table lua_newtable(L); { // the metatable HSTR_PUSH(L, "__index"); lua_pushlightuserdata(L, (void*)wd); lua_pushcclosure(L, WeaponDefIndex, 1); lua_rawset(L, -3); // closure HSTR_PUSH(L, "__newindex"); lua_pushlightuserdata(L, (void*)wd); lua_pushcclosure(L, WeaponDefNewIndex, 1); lua_rawset(L, -3); HSTR_PUSH(L, "__metatable"); lua_pushlightuserdata(L, (void*)wd); lua_pushcclosure(L, WeaponDefMetatable, 1); lua_rawset(L, -3); } lua_setmetatable(L, -2); } HSTR_PUSH(L, "pairs"); lua_pushcfunction(L, Pairs); lua_rawset(L, -3); HSTR_PUSH(L, "next"); lua_pushcfunction(L, Next); lua_rawset(L, -3); lua_rawset(L, -3); // proxy table into WeaponDefs } return true; }
bool LuaFeatureDefs::PushEntries(lua_State* L) { if (paramMap.empty()) { InitParamMap(); } const map<string, const FeatureDef*>& featureDefs = featureHandler->GetFeatureDefs(); map<string, const FeatureDef*>::const_iterator fdIt; for (fdIt = featureDefs.begin(); fdIt != featureDefs.end(); ++fdIt) { const FeatureDef* fd = fdIt->second; if (fd == NULL) { continue; } lua_pushnumber(L, fd->id); lua_newtable(L); { // the proxy table lua_newtable(L); { // the metatable HSTR_PUSH(L, "__index"); lua_pushlightuserdata(L, (void*)fd); lua_pushcclosure(L, FeatureDefIndex, 1); lua_rawset(L, -3); // closure HSTR_PUSH(L, "__newindex"); lua_pushlightuserdata(L, (void*)fd); lua_pushcclosure(L, FeatureDefNewIndex, 1); lua_rawset(L, -3); HSTR_PUSH(L, "__metatable"); lua_pushlightuserdata(L, (void*)fd); lua_pushcclosure(L, FeatureDefMetatable, 1); lua_rawset(L, -3); } lua_setmetatable(L, -2); } HSTR_PUSH(L, "pairs"); lua_pushcfunction(L, Pairs); lua_rawset(L, -3); HSTR_PUSH(L, "next"); lua_pushcfunction(L, Next); lua_rawset(L, -3); lua_rawset(L, -3); // proxy table into FeatureDefs } return true; }