diff options
Diffstat (limited to 'features/settings/settingThings')
-rw-r--r-- | features/settings/settingThings/FakeRequireToggle.js | 27 | ||||
-rw-r--r-- | features/settings/settingThings/settingBase.js | 12 |
2 files changed, 39 insertions, 0 deletions
diff --git a/features/settings/settingThings/FakeRequireToggle.js b/features/settings/settingThings/FakeRequireToggle.js new file mode 100644 index 0000000..41932f3 --- /dev/null +++ b/features/settings/settingThings/FakeRequireToggle.js @@ -0,0 +1,27 @@ + +class FakeRequireToggle{ + constructor(val){ + this.val = val + + this.thisToggleEvents = [] + + this.toggleObject = { + addEvent: (event)=>{ + this.thisToggleEvents.push(event) + } + } + } + + set(newVal){ + if(this.val === newVal) return + this.val = newVal + + this.thisToggleEvents.forEach(e=>e._trigger(this, [this.val])) + } + + getValue(){ + return this.val + } +} + +export default FakeRequireToggle
\ No newline at end of file diff --git a/features/settings/settingThings/settingBase.js b/features/settings/settingThings/settingBase.js index a0d3bc7..02cfd9f 100644 --- a/features/settings/settingThings/settingBase.js +++ b/features/settings/settingThings/settingBase.js @@ -40,6 +40,10 @@ class SettingBase { this.temp_val = temp_val_temp this.requiresO = undefined + + this.onchangethings = [] + + this.initTime = Date.now() } getValue(){ @@ -47,6 +51,7 @@ class SettingBase { } setValue(val){ + if(this.val === val) return this.val = val; if(!this.requiresO || this.requiresO.getValue()){ @@ -63,6 +68,8 @@ class SettingBase { this.module.FeatureManager.featureSettingsDataLastUpdated = true } + + if(this.onchangethings && Date.now()-this.initTime > 1000) this.onchangethings.forEach(([fun, context])=>{fun.call(context)}) } getName(){ @@ -102,6 +109,11 @@ class SettingBase { delete(){ settingsCommunicator.removeSetting(this.module, this.settingId) } + + onchange(context, fun){ + this.onchangethings.push([fun, context]) + return this + } } export default SettingBase
\ No newline at end of file |