40 lines
1.2 KiB
JavaScript
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;
|
|
})(); |