mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Settings: Add get_flags API for mapgen flags (mg_flags, mgv6_spflags, ...) (#9284)
Unified flags handling in C++ and Lua Settings API -> Reading only, for now. Writing can be implemented later, if needed. API function to read the currently active flags -> was impossible from Lua Co-authored-by: Wuzzy <wuzzy2@mail.ru>
This commit is contained in:
parent
9cb3219f34
commit
cde2a7f6f2
23 changed files with 222 additions and 39 deletions
|
@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "lua_api/l_settings.h"
|
||||
#include "lua_api/l_internal.h"
|
||||
#include "cpp_api/s_security.h"
|
||||
#include "util/string.h" // FlagDesc
|
||||
#include "settings.h"
|
||||
#include "noise.h"
|
||||
#include "log.h"
|
||||
|
@ -128,6 +129,29 @@ int LuaSettings::l_get_np_group(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int LuaSettings::l_get_flags(lua_State *L)
|
||||
{
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
LuaSettings *o = checkobject(L, 1);
|
||||
std::string key = std::string(luaL_checkstring(L, 2));
|
||||
|
||||
u32 flags = 0;
|
||||
auto flagdesc = o->m_settings->getFlagDescFallback(key);
|
||||
if (o->m_settings->getFlagStrNoEx(key, flags, flagdesc)) {
|
||||
lua_newtable(L);
|
||||
int table = lua_gettop(L);
|
||||
for (size_t i = 0; flagdesc[i].name; ++i) {
|
||||
lua_pushboolean(L, flags & flagdesc[i].flag);
|
||||
lua_setfield(L, table, flagdesc[i].name);
|
||||
}
|
||||
lua_pushvalue(L, table);
|
||||
} else {
|
||||
lua_pushnil(L);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// set(self, key, value)
|
||||
int LuaSettings::l_set(lua_State* L)
|
||||
{
|
||||
|
@ -305,6 +329,7 @@ const luaL_Reg LuaSettings::methods[] = {
|
|||
luamethod(LuaSettings, get),
|
||||
luamethod(LuaSettings, get_bool),
|
||||
luamethod(LuaSettings, get_np_group),
|
||||
luamethod(LuaSettings, get_flags),
|
||||
luamethod(LuaSettings, set),
|
||||
luamethod(LuaSettings, set_bool),
|
||||
luamethod(LuaSettings, set_np_group),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue