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

249 lines
7.8 KiB
C#
Raw Normal View History

2023-11-06 19:06:05 +08:00
using TMPro;
2023-11-07 14:25:44 +08:00
using UnityEngine;
2023-11-06 19:06:05 +08:00
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
using Slider = UnityEngine.UI.Slider;
2023-12-07 19:58:28 +08:00
using Gameplay.Performance;
2023-11-06 19:06:05 +08:00
public class UI_SettingController : UIWindow
{
2023-12-07 19:58:28 +08:00
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;
}
2023-11-06 19:06:05 +08:00
}