summaryrefslogtreecommitdiff
path: root/src/settings.h
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2020-01-25 16:56:54 +0100
committerGitHub <noreply@github.com>2020-01-25 16:56:54 +0100
commitcde2a7f6f24f638421238ead4e61b155322fefc8 (patch)
tree96b6b1dd00a0c14660eea6f3f518b5d832dc1bd8 /src/settings.h
parent9cb3219f34be983e1b84a62a64c25e137d587365 (diff)
downloadminetest-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.h20
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;