// Start is called before the first frame update
    void Start()
    {
        pauseToggle.onValueChanged.AddListener(onPauseToggleChanged);
        logToggle.onValueChanged.AddListener(onLogToggleChanged);

        for (int i = 0; i < settings.Length; i++)
        {
            SteamPunkSetting setting = (SteamPunkSetting)i;
            settings[i] = PlayerPrefs.GetInt(prefName + setting) == 1;

            SetSetting(setting, settings[i]);
        }
    }
    void SetSetting(SteamPunkSetting setting, bool val)
    {
        PlayerPrefs.SetInt(prefName + setting, val ? 1 : 0);
        settings[(int)setting] = val;

        if (onSettingChanged != null)
        {
            onSettingChanged(setting, val);
        }

        switch (setting)
        {
        case SteamPunkSetting.PauseWhileOpen:
            pauseToggle.isOn = val;
            break;

        case SteamPunkSetting.ShowUnityLog:
            logToggle.isOn = val;
            break;
        }
    }
    void OnSettingChanged(SteamPunkSetting setting, bool val)
    {
        switch (setting)
        {
        case SteamPunkSetting.PauseWhileOpen:
            if (IsConsoleOpen)
            {
                Time.timeScale = val ? 0 : 1;
            }
            break;

        case SteamPunkSetting.ShowUnityLog:
            if (val)
            {
                Application.logMessageReceived += logMessageReceived;
            }
            else
            {
                Application.logMessageReceived -= logMessageReceived;
            }
            break;
        }
    }
 public bool GetSettingValue(SteamPunkSetting setting)
 {
     return(settings[(int)setting]);
 }