NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_SettingController.cs

249 lines
7.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using TMPro;
using UnityEngine;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
using Slider = UnityEngine.UI.Slider;
using Gameplay.Performance;
public class UI_SettingController : UIWindow
{
public Button Button_Close;
public Image Image_ScreenSet;
public TMP_Text Text_ScreenSet;
public TMP_Text Text_ImageQuality;
public Button Button_LowQ1;
public Button Button_LowQ2;
public Button Button_HighQ1;
public Button Button_HighQ2;
public Button Button_60F;
public Image Image_YPot_60;
public Image Image_BPot_60;
public Button Button_30F;
public Image Image_YPot_30;
public Image Image_BPot_30;
public Image Image_SoundSet;
public TMP_Text Text_SoundSet;
public TMP_Text Text_BGM;
public Button Button_Open_BGM;
public Button Button_Close_BGM;
public Slider Slider_HaveVoice_BGM;
public TMP_Text Text_Rate_BGM;
public Slider Slider_NoVoice_BGM;
public TMP_Text Text_Effect;
public Button Button_Open_Effect;
public Button Button_Close_Effect;
public Slider Slider_HaveVoice_Effect;
public TMP_Text Text_Rate_Effect;
public Slider Slider_NoVoice_Effect;
public TMP_Text Text_Talk;
public Button Button_Open_Talk;
public Button Button_Close_Talk;
public Slider Slider_HaveVoice_Talk;
public TMP_Text Text_Rate_Talk;
public Slider Slider_NoVoice_Talk;
public Button Button_Open_Map;
public Button Button_Close_Map;
public Button Button_Cancel;
public Button Button_Save;
private bool _isHighQuality;
private int _frameRate;
private bool _isCloseBGM;
private bool _isCloseEffect;
private bool _isCloseTalk;
private float _valueBGM;
private float _valueEffect;
private float _valueTalk;
private bool _isShowGrid;
public override void OnAwake()
{
UI_SettingBinder.GetComponents(this);
Init();
BindButton(Button_LowQ2, LowQuality);
BindButton(Button_HighQ2, HighQuality);
BindButton(Button_60F, Set60FrameRate);
BindButton(Button_30F, Set30FrameRate);
//静音
BindButton(Button_Close_BGM, CloseBGM);
BindButton(Button_Close_Effect, CloseEffect);
BindButton(Button_Close_Talk, CloseTalk);
//取消静音
BindButton(Button_Open_BGM, OpenBGM);
BindButton(Button_Open_Effect, OpenEffect);
BindButton(Button_Open_Talk, OpenTalk);
BindButton(Button_Open_Map, delegate { Button_Close_Map.gameObject.SetActive(true); });
BindButton(Button_Close_Map, delegate { Button_Close_Map.gameObject.SetActive(false); });
BindButton(Button_Close, () => CloseWindow());
BindButton(Button_Cancel, Cancel);
BindButton(Button_Save, Save);
}
private void Init()
{
_valueBGM = AudioManager.Instance.GlobalMusicVolume;
_valueEffect = AudioManager.Instance.GlobalSoundsVolume;
_valueTalk = 1f;
InitSlider();
}
private void InitSlider()
{
Slider_NoVoice_BGM.interactable = false;
Slider_NoVoice_Effect.interactable = false;
Slider_NoVoice_Talk.interactable = false;
Slider_HaveVoice_BGM.value = _valueBGM;
Slider_NoVoice_BGM.value = _valueBGM;
Slider_HaveVoice_Effect.value = _valueEffect;
Slider_NoVoice_Effect.value = _valueEffect;
//TODO 语音初始化
//Slider_HaveVoice_Talk.value = AudioManager.Instance...;
//Slider_NoVoice_Talk.value = AudioManager.Instance...;
Slider_HaveVoice_BGM.onValueChanged.AddListener(OnValueChangedBGM);
Slider_HaveVoice_Effect.onValueChanged.AddListener(OnValueChangedEffect);
Slider_HaveVoice_Talk.onValueChanged.AddListener(OnValueChangedTalk);
}
private void HighQuality()
{
//TODO 高画质接口
Button_LowQ1.gameObject.SetActive(false);
Button_LowQ2.gameObject.SetActive(true);
Button_HighQ1.gameObject.SetActive(true);
Button_HighQ2.gameObject.SetActive(false);
}
private void LowQuality()
{
//TODO 低画质接口
Button_LowQ1.gameObject.SetActive(true);
Button_LowQ2.gameObject.SetActive(false);
Button_HighQ1.gameObject.SetActive(false);
Button_HighQ2.gameObject.SetActive(true);
}
private void Set60FrameRate()
{
PerformanceManager.instance.SetFrameRate(60);
Image_BPot_60.gameObject.SetActive(false);
Image_BPot_30.gameObject.SetActive(true);
}
private void Set30FrameRate()
{
PerformanceManager.instance.SetFrameRate(30);
Image_BPot_60.gameObject.SetActive(true);
Image_BPot_30.gameObject.SetActive(false);
}
private void CloseBGM()
{
_isCloseBGM = true;
Button_Open_BGM.gameObject.SetActive(true);
Slider_NoVoice_BGM.gameObject.SetActive(true);
Slider_HaveVoice_BGM.gameObject.SetActive(false);
}
private void CloseEffect()
{
_isCloseEffect = true;
Button_Open_Effect.gameObject.SetActive(true);
Slider_NoVoice_Effect.gameObject.SetActive(true);
Slider_HaveVoice_Effect.gameObject.SetActive(false);
}
private void CloseTalk()
{
_isCloseTalk = true;
Button_Open_Talk.gameObject.SetActive(true);
Slider_NoVoice_Talk.gameObject.SetActive(true);
Slider_HaveVoice_Talk.gameObject.SetActive(false);
}
private void OpenBGM()
{
_isCloseBGM = false;
Button_Open_BGM.gameObject.SetActive(false);
Slider_NoVoice_BGM.gameObject.SetActive(false);
Slider_HaveVoice_BGM.gameObject.SetActive(true);
if (Slider_HaveVoice_BGM.value <= 0)
Slider_HaveVoice_BGM.value = 0.5f;
}
private void OpenEffect()
{
_isCloseEffect = false;
Button_Open_Effect.gameObject.SetActive(false);
Slider_NoVoice_Effect.gameObject.SetActive(false);
Slider_HaveVoice_Effect.gameObject.SetActive(true);
if (Slider_HaveVoice_Effect.value <= 0)
Slider_HaveVoice_Effect.value = 0.5f;
}
private void OpenTalk()
{
_isCloseTalk = false;
Button_Open_Talk.gameObject.SetActive(false);
Slider_NoVoice_Talk.gameObject.SetActive(false);
Slider_HaveVoice_Talk.gameObject.SetActive(true);
if (Slider_HaveVoice_Talk.value <= 0)
Slider_HaveVoice_Talk.value = 0.5f;
}
private void OnValueChangedBGM(float value)
{
_valueBGM = value;
Text_Rate_BGM.text = Mathf.RoundToInt(value * 100).ToString();
Slider_NoVoice_BGM.value = Slider_HaveVoice_BGM.value;
if (value <= 0)
CloseBGM();
}
private void OnValueChangedEffect(float value)
{
_valueEffect = value;
Text_Rate_Effect.text = Mathf.RoundToInt(value * 100).ToString();
Slider_NoVoice_Effect.value = Slider_HaveVoice_Effect.value;
if (value <= 0)
CloseEffect();
}
private void OnValueChangedTalk(float value)
{
_valueTalk = value;
Text_Rate_Talk.text = Mathf.RoundToInt(value * 100).ToString();
Slider_NoVoice_Talk.value = Slider_HaveVoice_Effect.value;
if (value <= 0)
CloseTalk();
}
private void Save()
{
AudioManager.Instance.GlobalMusicVolume = _isCloseBGM ? 0 : _valueBGM;
AudioManager.Instance.GlobalSoundsVolume = _isCloseEffect ? 0 : _valueEffect;
// ... AudioManager.Instance.GlobalTalkVolume = _valueTalk;
}
private void Cancel()
{
Slider_HaveVoice_BGM.value = AudioManager.Instance.GlobalMusicVolume;
Slider_HaveVoice_Effect.value = AudioManager.Instance.GlobalSoundsVolume;
Slider_NoVoice_BGM.value = AudioManager.Instance.GlobalMusicVolume;
Slider_NoVoice_Effect.value = AudioManager.Instance.GlobalMusicVolume;
}
}