132 lines
3.7 KiB
C#
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;
|
|
}
|
|
}
|