"use strict"; const SettingsManager = (function(){ const SettingsManager = function(xgravity){ const self = this, data = {}; const constructor = () => { self.add(settings, true); }; this.add = (block, overwrite = true) => { for(const key in block) if(overwrite || data[key] === undefined) data[key] = block[key]; }; this.get = (keys, inputs = null, _default = null) => Common.get_value(keys, [inputs, data], _default); this.get_difficulty_preset = () => { const diff_key = self.get("current_difficulty", null, "average"); const presets = self.get("difficulty_presets", null, {}); return presets[diff_key] || presets["average"]; }; this.get_effective_stat = (base_key, mult_key) => { const base_val = self.get(base_key, null, 1.0); const preset = self.get_difficulty_preset(); const mult = (preset && typeof preset[mult_key] === "number") ? preset[mult_key] : 1.0; return base_val * mult; }; constructor(); }; return SettingsManager; })();