//So features can add settings by adding to this class, then the gui will load data from this class
//this makes it so i can add settings before the settings gui is loaded
//and so that settings gui can still be dynamicly reloaded and not break things

class SettingsCommunicator {
    constructor(){
        this.settings = {}
    }

    addSetting(module, settingID, settingObject){
        if(!this.settings[module]) this.settings[module] = {}

        this.settings[module][settingID] = settingObject
    }
    removeSetting(module, settingID){
        if(!this.settings[module]) return;
        delete this.settings[module][settingID]
    }
    getSetting(module, settingID){
        return this.settings[module][settingID]
    }
    getModuleSettings(module){
        return Object.values(this.settings[module] || [])
    }
}

if(!global.soopyv2SettingsCommunicator){
    global.soopyv2SettingsCommunicator = new SettingsCommunicator()
    
    register("gameUnload", ()=>{
        global.soopyv2SettingsCommunicator = undefined
    })
}

export default global.soopyv2SettingsCommunicator