summaryrefslogtreecommitdiff
path: root/GameCode/OptionsMenu.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-03-21 10:28:46 +0800
committerchai <215380520@qq.com>2024-03-21 10:28:46 +0800
commit3fb2121cc0d00cbd42b2ca10b5dfb399a4df1a04 (patch)
treec1f4683fb021522b459408ab1ad61c40be77ee47 /GameCode/OptionsMenu.cs
parent9ee2cfa385ed77c39003f524f5f03079124fc476 (diff)
*misc
Diffstat (limited to 'GameCode/OptionsMenu.cs')
-rw-r--r--GameCode/OptionsMenu.cs187
1 files changed, 187 insertions, 0 deletions
diff --git a/GameCode/OptionsMenu.cs b/GameCode/OptionsMenu.cs
new file mode 100644
index 0000000..7377cfd
--- /dev/null
+++ b/GameCode/OptionsMenu.cs
@@ -0,0 +1,187 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+public class OptionsMenu : MonoBehaviour
+{
+ public static OptionsMenu instance;
+
+ public bool showConditionText;
+
+ public bool showDamageNumbers = true;
+
+ public bool extraProjectileEffects = true;
+
+ public float masterVolume;
+
+ public float musicVolume;
+
+ public float sfxVolume;
+
+ [SerializeField]
+ private Transform[] scalableUIs;
+
+ public float uiScale;
+
+ [SerializeField]
+ private Toggle showDamageToggle;
+
+ [SerializeField]
+ private Toggle showConditionToggle;
+
+ [SerializeField]
+ private Toggle projectileFXToggle;
+
+ [SerializeField]
+ private Slider masterVolumeSlider;
+
+ [SerializeField]
+ private Slider musicVolumeSlider;
+
+ [SerializeField]
+ private Slider sfxVolumeSlider;
+
+ [SerializeField]
+ private Slider uiScaleSlider;
+
+ private float timer = 1f;
+
+ private void Awake()
+ {
+ instance = this;
+ }
+
+ private void Update()
+ {
+ if (timer >= 0f)
+ {
+ timer -= Time.deltaTime;
+ }
+ }
+
+ private void Start()
+ {
+ if (PlayerPrefs.GetInt("ShowConditionText", 0) == 1)
+ {
+ showConditionText = true;
+ }
+ else
+ {
+ showConditionText = false;
+ }
+ if (showConditionToggle != null)
+ {
+ showConditionToggle.isOn = showConditionText;
+ }
+ if (PlayerPrefs.GetInt("ShowDamageNumbers", 1) == 1)
+ {
+ showDamageNumbers = true;
+ }
+ else
+ {
+ showDamageNumbers = false;
+ }
+ if (showDamageToggle != null)
+ {
+ showDamageToggle.isOn = showDamageNumbers;
+ }
+ if (PlayerPrefs.GetInt("ExtraProjectileFX", 1) == 1)
+ {
+ extraProjectileEffects = true;
+ }
+ else
+ {
+ extraProjectileEffects = false;
+ }
+ if (projectileFXToggle != null)
+ {
+ projectileFXToggle.isOn = extraProjectileEffects;
+ }
+ masterVolume = PlayerPrefs.GetFloat("MasterVolume", 1f);
+ musicVolume = PlayerPrefs.GetFloat("MusicVolume", 0.5f);
+ sfxVolume = PlayerPrefs.GetFloat("SFXVolume", 0.5f);
+ masterVolumeSlider.value = masterVolume;
+ musicVolumeSlider.value = musicVolume;
+ sfxVolumeSlider.value = sfxVolume;
+ if (uiScaleSlider != null)
+ {
+ uiScale = PlayerPrefs.GetFloat("UIScale", 0.5f);
+ uiScaleSlider.value = uiScale;
+ }
+ }
+
+ public void ToggleDamageNumbers()
+ {
+ showDamageNumbers = showDamageToggle.isOn;
+ PlayerPrefs.SetInt("ShowDamageNumbers", showDamageNumbers ? 1 : 0);
+ if (timer < 0f)
+ {
+ SFXManager.instance.ButtonClick();
+ }
+ }
+
+ public void ToggleConditionTexts()
+ {
+ showConditionText = showConditionToggle.isOn;
+ PlayerPrefs.SetInt("ShowConditionText", showConditionText ? 1 : 0);
+ if (timer < 0f)
+ {
+ SFXManager.instance.ButtonClick();
+ }
+ }
+
+ public void ToggleProjectileFX()
+ {
+ extraProjectileEffects = projectileFXToggle.isOn;
+ PlayerPrefs.SetInt("ExtraProjectileFX", extraProjectileEffects ? 1 : 0);
+ if (timer < 0f)
+ {
+ SFXManager.instance.ButtonClick();
+ }
+ }
+
+ public void ChangeMasterVolume()
+ {
+ masterVolume = masterVolumeSlider.value;
+ PlayerPrefs.SetFloat("MasterVolume", masterVolume);
+ if (MusicManager.instance != null)
+ {
+ MusicManager.instance.UpdateVolume(masterVolume * musicVolume);
+ }
+ if (SFXManager.instance != null)
+ {
+ SFXManager.instance.volume = masterVolume * sfxVolume;
+ }
+ }
+
+ public void ChangeMusicVolume()
+ {
+ musicVolume = musicVolumeSlider.value;
+ PlayerPrefs.SetFloat("MusicVolume", musicVolume);
+ if (MusicManager.instance != null)
+ {
+ MusicManager.instance.UpdateVolume(masterVolume * musicVolume);
+ }
+ }
+
+ public void ChangeSFXVolume()
+ {
+ sfxVolume = sfxVolumeSlider.value;
+ PlayerPrefs.SetFloat("SFXVolume", sfxVolume);
+ if (SFXManager.instance != null)
+ {
+ SFXManager.instance.volume = masterVolume * sfxVolume;
+ }
+ }
+
+ public void ChangeUIScale()
+ {
+ uiScale = uiScaleSlider.value;
+ PlayerPrefs.SetFloat("UIScale", uiScale);
+ float num = Mathf.Max(uiScale + 0.5f, (uiScale + 0.5f) * 2f - 1f);
+ Transform[] array = scalableUIs;
+ for (int i = 0; i < array.Length; i++)
+ {
+ array[i].localScale = num * Vector3.one;
+ }
+ }
+}