XGravity/Public/ecma/Managers/SettingsManager.ecma.js

40 lines
1.2 KiB
JavaScript

"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;
})();