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

270 lines
8.0 KiB
C#

using TMPro;
using UnityEngine;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
using Slider = UnityEngine.UI.Slider;
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 GameSettingData _settings;
public override void OnAwake()
{
UI_SettingBinder.GetComponents(this);
BindButton(Button_Close, () => CloseWindow());
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, OpenGrid);
BindButton(Button_Close_Map, CloseGrid);
BindButton(Button_Cancel, Cancel);
BindButton(Button_Save, Save);
Slider_HaveVoice_BGM.onValueChanged.AddListener(OnValueChangedBGM);
Slider_HaveVoice_Effect.onValueChanged.AddListener(OnValueChangedEffect);
Slider_HaveVoice_Talk.onValueChanged.AddListener(OnValueChangedTalk);
Init();
}
private void Init()
{
_settings = GameSettingManager.Instance.SettingData;
InitSlider();
if (_settings.PerformanceID > 1)
HighQuality();
else
LowQuality();
if (_settings.FrameRate.Equals(30))
Set30FrameRate();
else
Set60FrameRate();
if (_settings.IsOpenGrid)
CloseGrid();
else
OpenGrid();
}
private void InitSlider()
{
Slider_HaveVoice_BGM.value = _settings.BGMValue;
Slider_NoVoice_BGM.value = _settings.BGMValue;
Slider_HaveVoice_Effect.value = _settings.EffectValue;
Slider_NoVoice_Effect.value = _settings.EffectValue;
Slider_HaveVoice_Talk.value = _settings.TalkValue;
Slider_NoVoice_Talk.value = _settings.TalkValue;
if (_settings.BGMValue <= 0)
CloseBGM();
else
OpenBGM();
if (_settings.EffectValue <= 0)
CloseEffect();
else
OpenEffect();
if (_settings.TalkValue <= 0)
CloseTalk();
else
OpenTalk();
}
private void HighQuality()
{
if (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.Android)
_settings.PerformanceID = 2;
else
_settings.PerformanceID = 3;
Button_LowQ1.gameObject.SetActive(false);
Button_LowQ2.gameObject.SetActive(true);
Button_HighQ1.gameObject.SetActive(true);
Button_HighQ2.gameObject.SetActive(false);
}
private void LowQuality()
{
_settings.PerformanceID = 1;
Button_LowQ1.gameObject.SetActive(true);
Button_LowQ2.gameObject.SetActive(false);
Button_HighQ1.gameObject.SetActive(false);
Button_HighQ2.gameObject.SetActive(true);
}
private void Set60FrameRate()
{
_settings.FrameRate = 60;
Image_BPot_60.gameObject.SetActive(false);
Image_BPot_30.gameObject.SetActive(true);
}
private void Set30FrameRate()
{
_settings.FrameRate = 30;
Image_BPot_60.gameObject.SetActive(true);
Image_BPot_30.gameObject.SetActive(false);
}
private void CloseBGM()
{
_settings.BGMValue = 0;
Button_Open_BGM.gameObject.SetActive(true);
Slider_NoVoice_BGM.gameObject.SetActive(true);
Slider_HaveVoice_BGM.gameObject.SetActive(false);
}
private void CloseEffect()
{
_settings.EffectValue = 0;
Button_Open_Effect.gameObject.SetActive(true);
Slider_NoVoice_Effect.gameObject.SetActive(true);
Slider_HaveVoice_Effect.gameObject.SetActive(false);
}
private void CloseTalk()
{
_settings.TalkValue = 0;
Button_Open_Talk.gameObject.SetActive(true);
Slider_NoVoice_Talk.gameObject.SetActive(true);
Slider_HaveVoice_Talk.gameObject.SetActive(false);
}
private void OpenBGM()
{
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;
_settings.BGMValue = Slider_HaveVoice_BGM.value;
}
private void OpenEffect()
{
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;
_settings.EffectValue = Slider_HaveVoice_Effect.value;
}
private void OpenTalk()
{
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;
_settings.TalkValue = Slider_HaveVoice_Talk.value;
}
private void OnValueChangedBGM(float value)
{
_settings.BGMValue = value;
FormatText(Text_Rate_BGM, value);
Slider_NoVoice_BGM.value = Slider_HaveVoice_BGM.value;
if (value <= 0)
CloseBGM();
}
private void OnValueChangedEffect(float value)
{
_settings.EffectValue = value;
FormatText(Text_Rate_Effect, value);
Slider_NoVoice_Effect.value = Slider_HaveVoice_Effect.value;
if (value <= 0)
CloseEffect();
}
private void OnValueChangedTalk(float value)
{
_settings.TalkValue = value;
FormatText(Text_Rate_Talk, value);
Slider_NoVoice_Talk.value = Slider_HaveVoice_Effect.value;
if (value <= 0)
CloseTalk();
}
private void OpenGrid()
{
_settings.IsOpenGrid = false;
Button_Close_Map.gameObject.SetActive(true);
}
private void CloseGrid()
{
_settings.IsOpenGrid = true;
Button_Close_Map.gameObject.SetActive(false);
}
private void FormatText(TMP_Text tmpText, float value)
{
tmpText.text = Mathf.RoundToInt(value * 100).ToString();
}
private void Save()
{
GameSettingManager.Instance.SettingData = _settings;
GameSettingManager.Instance.ChangeGameSettings();
}
private void Cancel()
{
GameSettingManager.Instance.RevertDefault();
Init();
}
}