aboutsummaryrefslogtreecommitdiff
path: root/src/settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings.h')
-rw-r--r--src/settings.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/settings.h b/src/settings.h
index 329a61140..0c9a155db 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,15 @@ 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);
+ // Takes the provided setting values and uses them as new defaults
+ void overrideDefaults(Settings *other);
+ 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 +240,7 @@ private:
SettingEntries m_settings;
SettingEntries m_defaults;
+ std::unordered_map<std::string, const FlagDesc *> m_flags;
SettingsCallbackMap m_callbacks;