diff options
author | SmallJoker <SmallJoker@users.noreply.github.com> | 2020-01-25 16:56:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-25 16:56:54 +0100 |
commit | cde2a7f6f24f638421238ead4e61b155322fefc8 (patch) | |
tree | 96b6b1dd00a0c14660eea6f3f518b5d832dc1bd8 /src/settings.h | |
parent | 9cb3219f34be983e1b84a62a64c25e137d587365 (diff) | |
download | minetest-cde2a7f6f24f638421238ead4e61b155322fefc8.tar.gz minetest-cde2a7f6f24f638421238ead4e61b155322fefc8.tar.bz2 minetest-cde2a7f6f24f638421238ead4e61b155322fefc8.zip |
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>
Diffstat (limited to 'src/settings.h')
-rw-r--r-- | src/settings.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/settings.h b/src/settings.h index 329a61140..b42e36d10 100644 --- a/src/settings.h +++ b/src/settings.h @@ -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; |