Settings are now loaded from and saved to the config.json file. Reworked the UI structure a bit (the script that manage the settings have to be active before the UI is opened to actually take effect at game startup). Fixed several UI bugs (slider deselection, UI labels blocking the sliders, etc).
This commit is contained in:
@@ -13,76 +13,81 @@ public class SliderToVCA : MonoBehaviour
|
||||
}
|
||||
|
||||
public VCATarget target;
|
||||
private AudioSliderDragHandler slider;
|
||||
public AudioSliderDragHandler slider;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
slider = GetComponent<AudioSliderDragHandler>();
|
||||
slider.OnValueChanged += ApplyVolume;
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
float initialValue = GetInitialValueFromAudioManager();
|
||||
slider.SetHandlePosition(initialValue); // we will add this function
|
||||
}
|
||||
|
||||
|
||||
private float GetInitialValueFromAudioManager()
|
||||
{
|
||||
switch (target)
|
||||
{
|
||||
case VCATarget.Master:
|
||||
return AudioManager.Instance.MasterVolume;
|
||||
case VCATarget.Ambiences:
|
||||
return AudioManager.Instance.AmbienceVolume;
|
||||
case VCATarget.Music:
|
||||
return AudioManager.Instance.MusicVolume;
|
||||
case VCATarget.SFX:
|
||||
return AudioManager.Instance.SFXVolume;
|
||||
case VCATarget.UI:
|
||||
return AudioManager.Instance.UIVolume;
|
||||
case VCATarget.Voiceovers:
|
||||
return AudioManager.Instance.VoiceoverVolume;
|
||||
default:
|
||||
return 0.5f;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// Constantly push slider value to the VCA
|
||||
ApplyVolume(slider.CurrentValue);
|
||||
//Debug.Log("CurrentValue: " + slider.CurrentValue);
|
||||
float initialValue = GetInitialValue();
|
||||
slider.SetHandleValue(initialValue);
|
||||
}
|
||||
|
||||
private void ApplyVolume(float value)
|
||||
|
||||
private float GetInitialValue()
|
||||
{
|
||||
switch (target)
|
||||
{
|
||||
case VCATarget.Master:
|
||||
return ConfigManager.instance.getVolumeMaster();
|
||||
case VCATarget.Ambiences:
|
||||
return ConfigManager.instance.getVolumeAmbient();
|
||||
case VCATarget.Music:
|
||||
return ConfigManager.instance.getVolumeMusic();
|
||||
case VCATarget.SFX:
|
||||
return ConfigManager.instance.getVolumeSFX();
|
||||
case VCATarget.UI:
|
||||
return ConfigManager.instance.getVolumeUI();
|
||||
case VCATarget.Voiceovers:
|
||||
return ConfigManager.instance.getVolumeVO();
|
||||
default:
|
||||
return 0.5f;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// Constantly push slider value to the VCA
|
||||
ApplyVolume(slider.CurrentValue, false);
|
||||
//Debug.Log("CurrentValue: " + slider.CurrentValue);
|
||||
}
|
||||
|
||||
private void ApplyVolume(float value, bool isLastChange)
|
||||
{
|
||||
switch (target)
|
||||
{
|
||||
case VCATarget.Master:
|
||||
AudioManager.Instance.SetMasterVCA(value);
|
||||
//Debug.LogError(value);
|
||||
break;
|
||||
if (isLastChange) ConfigManager.instance.SetVolumeMaster(value);
|
||||
break;
|
||||
|
||||
case VCATarget.Ambiences:
|
||||
AudioManager.Instance.SetAmbientVCA(value);
|
||||
if (isLastChange) ConfigManager.instance.SetVolumeAmbient(value);
|
||||
break;
|
||||
|
||||
case VCATarget.Music:
|
||||
AudioManager.Instance.SetMusicVCA(value);
|
||||
if (isLastChange) ConfigManager.instance.SetVolumeMusic(value);
|
||||
break;
|
||||
|
||||
case VCATarget.SFX:
|
||||
AudioManager.Instance.SetSFXVCA(value);
|
||||
if (isLastChange) ConfigManager.instance.SetVolumeSFX(value);
|
||||
break;
|
||||
|
||||
case VCATarget.UI:
|
||||
AudioManager.Instance.SetUIVCA(value);
|
||||
if (isLastChange) ConfigManager.instance.SetVolumeUI(value);
|
||||
break;
|
||||
|
||||
case VCATarget.Voiceovers:
|
||||
AudioManager.Instance.SetVoiceoverVCA(value);
|
||||
if (isLastChange) ConfigManager.instance.SetVolumeVO(value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user