mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-27 17:28:41 +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
|
@ -174,10 +174,12 @@ public:
|
|||
bool getFloatNoEx(const std::string &name, float &val) const;
|
||||
bool getV2FNoEx(const std::string &name, v2f &val) const;
|
||||
bool getV3FNoEx(const std::string &name, v3f &val) const;
|
||||
// N.B. getFlagStrNoEx() does not set val, but merely modifies it. Thus,
|
||||
// val must be initialized before using getFlagStrNoEx(). The intention of
|
||||
// this is to simplify modifying a flags field from a default value.
|
||||
bool getFlagStrNoEx(const std::string &name, u32 &val, FlagDesc *flagdesc) const;
|
||||
|
||||
// Like other getters, but handling each flag individualy:
|
||||
// 1) Read default flags (or 0)
|
||||
// 2) Override using user-defined flags
|
||||
bool getFlagStrNoEx(const std::string &name, u32 &val,
|
||||
const FlagDesc *flagdesc) const;
|
||||
|
||||
|
||||
/***********
|
||||
|
@ -201,7 +203,7 @@ public:
|
|||
bool setV2F(const std::string &name, v2f value);
|
||||
bool setV3F(const std::string &name, v3f value);
|
||||
bool setFlagStr(const std::string &name, u32 flags,
|
||||
const FlagDesc *flagdesc, u32 flagmask);
|
||||
const FlagDesc *flagdesc = nullptr, u32 flagmask = U32_MAX);
|
||||
bool setNoiseParams(const std::string &name, const NoiseParams &np,
|
||||
bool set_default=false);
|
||||
// N.B. if setStruct() is used to write a non-POD aggregate type,
|
||||
|
@ -215,6 +217,13 @@ public:
|
|||
void updateValue(const Settings &other, const std::string &name);
|
||||
void update(const Settings &other);
|
||||
|
||||
/**************
|
||||
* Miscellany *
|
||||
**************/
|
||||
|
||||
void setDefault(const std::string &name, const FlagDesc *flagdesc, u32 flags);
|
||||
const FlagDesc *getFlagDescFallback(const std::string &name) const;
|
||||
|
||||
void registerChangedCallback(const std::string &name,
|
||||
SettingsChangedCallback cbf, void *userdata = NULL);
|
||||
void deregisterChangedCallback(const std::string &name,
|
||||
|
@ -229,6 +238,7 @@ private:
|
|||
|
||||
SettingEntries m_settings;
|
||||
SettingEntries m_defaults;
|
||||
std::unordered_map<std::string, const FlagDesc *> m_flags;
|
||||
|
||||
SettingsCallbackMap m_callbacks;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue