DRHPS/code-csharp/en_US/SettingsManager.cs
2025-04-08 11:31:35 +08:00

132 lines
3.7 KiB
C#

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;
}
}