using TMPro; using UnityEngine; using UnityEngine.Audio; public class SettingsManager : MonoBehaviour { private static SettingsManager instance; [SerializeField] private AudioMixer MasterMixer; public TMP_FontAsset DyslexicFont; public static SettingsManager Instance => instance; private void Awake() { if (instance != null && instance != this) { Object.Destroy(base.gameObject); return; } instance = this; Object.DontDestroyOnLoad(instance); PlayerPrefs.SetInt("Screenmanager Is Fullscreen mode", 0); } private void Update() { Application.targetFrameRate = 30; } public void SaveBoolSetting(string SettingName, bool Value) { PlayerPrefs.SetInt("Setting_" + SettingName, BoolToInt(Value)); } public void SaveIntSetting(string SettingName, int Value) { PlayerPrefs.SetInt("Setting_" + SettingName, Value); } public void SaveFloatSetting(string SettingName, float Value) { PlayerPrefs.SetFloat("Setting_" + SettingName, Value); } public void SaveStringSetting(string SettingName, string Value) { PlayerPrefs.SetString("Setting_" + SettingName, Value); } public bool GetBoolSettingValue(string SettingName, int DefaultValue = 0) { int @int = PlayerPrefs.GetInt("Setting_" + SettingName, DefaultValue); return IntToBool(@int); } public float GetFloatSettingValue(string SettingName, float DefaultValue = 0f) { return PlayerPrefs.GetFloat("Setting_" + SettingName, DefaultValue); } public string GetStringSettingValue(string SettingName, string DefaultValue = "") { return PlayerPrefs.GetString("Setting_" + SettingName, DefaultValue); } public int GetIntSettingValue(string SettingName, int DefaultValue = 0) { return PlayerPrefs.GetInt("Setting_" + SettingName, DefaultValue); } public void ApplySettings() { if (GetBoolSettingValue("Fullscreen")) { Screen.SetResolution(1280, 960, FullScreenMode.FullScreenWindow, new RefreshRate { numerator = 30u, denominator = 1u }); } else { Screen.SetResolution(1280, 960, FullScreenMode.Windowed, new RefreshRate { numerator = 30u, denominator = 1u }); } PlayerPrefs.SetInt("Screenmanager Is Fullscreen mode", 0); if (GetBoolSettingValue("VSYNC")) { QualitySettings.vSyncCount = 0; Application.targetFrameRate = 30; } else { QualitySettings.vSyncCount = 0; Application.targetFrameRate = 30; } MasterMixer.SetFloat("MasterVolume", Mathf.Log10(GetFloatSettingValue("MasterVolume", 100f)) * 20f); MasterMixer.SetFloat("DialogueVolume", Mathf.Log10(GetFloatSettingValue("DialogueVolume", 100f)) * 20f); MasterMixer.SetFloat("EffectVolume", Mathf.Log10(GetFloatSettingValue("EffectVolume", 100f)) * 20f); MasterMixer.SetFloat("MusicVolume", Mathf.Log10(GetFloatSettingValue("MusicVolume", 100f)) * 20f); } private void OnApplicationQuit() { PlayerPrefs.SetInt("Screenmanager Is Fullscreen mode", 0); } private int BoolToInt(bool value) { if (!value) { return 0; } return 1; } private bool IntToBool(int value) { if (value <= 0) { return false; } return true; } }