diff options
author | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
commit | 766cdff5ffa72b65d7f106658d1603f47739b2ba (patch) | |
tree | 34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/OptionsButton.cs |
+ init
Diffstat (limited to 'GameCode/OptionsButton.cs')
-rw-r--r-- | GameCode/OptionsButton.cs | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/GameCode/OptionsButton.cs b/GameCode/OptionsButton.cs new file mode 100644 index 0000000..f33bfc6 --- /dev/null +++ b/GameCode/OptionsButton.cs @@ -0,0 +1,204 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class OptionsButton : MonoBehaviour +{ + public enum SettingsTarget + { + Resolution, + Vol_Master, + Vol_SFX, + Vol_Music, + CharacterPattern, + MapPattern, + leftStickAim, + lockAimDirections, + ShowCardStarts, + FullScreen, + FreeStickAim, + Vsync + } + + public enum SettingsType + { + Binary, + Slider, + MultiOption + } + + public SettingsTarget settingsTarget; + + public SettingsType settingsType; + + public bool currentBoolValue; + + public Resolution currentResolutionValue; + + public Optionshandler.FullScreenOption currentFullscreenValue; + + public float currentFloatValue; + + private TextMeshProUGUI text; + + public Slider slider; + + private void Awake() + { + text = GetComponentsInChildren<TextMeshProUGUI>(includeInactive: true)[1]; + if (settingsType == SettingsType.Slider) + { + slider = GetComponentInChildren<Slider>(includeInactive: true); + slider.onValueChanged.AddListener(SliderSlide); + } + else + { + GetComponent<Button>().onClick.AddListener(ClickButton); + } + } + + private void OnEnable() + { + switch (settingsTarget) + { + case SettingsTarget.Resolution: + currentResolutionValue = Optionshandler.resolution; + break; + case SettingsTarget.Vol_Master: + currentFloatValue = Optionshandler.vol_Master; + break; + case SettingsTarget.Vol_SFX: + currentFloatValue = Optionshandler.vol_Sfx; + break; + case SettingsTarget.Vol_Music: + currentFloatValue = Optionshandler.vol_Music; + break; + case SettingsTarget.CharacterPattern: + currentBoolValue = Optionshandler.characterPattrens; + break; + case SettingsTarget.MapPattern: + currentBoolValue = Optionshandler.mapPatterns; + break; + case SettingsTarget.leftStickAim: + currentBoolValue = Optionshandler.leftStickAim; + break; + case SettingsTarget.lockAimDirections: + currentBoolValue = Optionshandler.lockMouse; + break; + case SettingsTarget.FreeStickAim: + currentBoolValue = Optionshandler.lockStick; + break; + case SettingsTarget.ShowCardStarts: + currentBoolValue = Optionshandler.showCardStatNumbers; + break; + case SettingsTarget.FullScreen: + currentFullscreenValue = Optionshandler.fullScreen; + break; + case SettingsTarget.Vsync: + currentBoolValue = Optionshandler.vSync; + break; + } + if (settingsType == SettingsType.Slider) + { + slider.value = currentFloatValue; + } + ReDraw(); + } + + public void SetResolutionAndFullscreen(Resolution newRess, Optionshandler.FullScreenOption fullScreen) + { + currentResolutionValue = newRess; + currentFullscreenValue = fullScreen; + ClickButton(); + if (settingsTarget == SettingsTarget.Resolution) + { + Optionshandler.instance.SetResolution(newRess); + } + if (settingsTarget == SettingsTarget.FullScreen) + { + Optionshandler.instance.SetFullScreen(fullScreen); + } + } + + public void SliderChanged() + { + currentFloatValue = slider.value; + } + + private void SliderSlide(float newVal) + { + currentFloatValue = newVal; + ClickButton(); + } + + public void ClickButton() + { + if (settingsType == SettingsType.Binary) + { + currentBoolValue = !currentBoolValue; + } + switch (settingsTarget) + { + case SettingsTarget.Resolution: + base.transform.parent.parent.GetComponentInChildren<MultiOptions>(includeInactive: true).Open(settingsTarget, base.transform.GetChild(1).position, this); + break; + case SettingsTarget.Vol_Master: + Optionshandler.instance.SetVolMaster(currentFloatValue); + break; + case SettingsTarget.Vol_SFX: + Optionshandler.instance.SetVolSFX(currentFloatValue); + break; + case SettingsTarget.Vol_Music: + Optionshandler.instance.SetVolMusic(currentFloatValue); + break; + case SettingsTarget.CharacterPattern: + Optionshandler.instance.SetCharacterPatterns(currentBoolValue); + break; + case SettingsTarget.MapPattern: + Optionshandler.instance.SetMapPatterns(currentBoolValue); + break; + case SettingsTarget.leftStickAim: + Optionshandler.instance.SetLeftStickAim(currentBoolValue); + break; + case SettingsTarget.lockAimDirections: + Optionshandler.instance.lockMouseAim(currentBoolValue); + break; + case SettingsTarget.FreeStickAim: + Optionshandler.instance.lockStickAim(currentBoolValue); + break; + case SettingsTarget.ShowCardStarts: + Optionshandler.instance.SetShowCardStatNumbers(currentBoolValue); + break; + case SettingsTarget.FullScreen: + base.transform.parent.parent.GetComponentInChildren<MultiOptions>(includeInactive: true).Open(settingsTarget, base.transform.GetChild(1).position, this); + break; + case SettingsTarget.Vsync: + Optionshandler.instance.SetVSync(currentBoolValue); + break; + } + ReDraw(); + } + + private void ReDraw() + { + if (settingsType == SettingsType.Binary) + { + text.text = (currentBoolValue ? "YES" : "NO"); + } + if (settingsType == SettingsType.MultiOption) + { + if (settingsTarget == SettingsTarget.Resolution) + { + text.text = currentResolutionValue.width + " X " + currentResolutionValue.height; + } + else if (currentFullscreenValue == Optionshandler.FullScreenOption.WindowedFullScreen) + { + text.text = "WINDOWED FULLSCREEN"; + } + else + { + text.text = currentFullscreenValue.ToString().ToUpper(); + } + } + } +} |