76 lines
2.4 KiB
C#
76 lines
2.4 KiB
C#
using System.IO;
|
|
using DefaultNamespace;
|
|
using DG.Tweening;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using AudioSettings = MainMenu.AudioSettings;
|
|
|
|
public class SettingsController : MonoBehaviour
|
|
{
|
|
[SerializeField] private AudioSource menuMusSrc;
|
|
[SerializeField] private string dataFilePath;
|
|
[SerializeField] private Slider musicSlider;
|
|
[SerializeField] private Slider sfxSlider;
|
|
[SerializeField] private Image musicImage;
|
|
[SerializeField] private Sprite musicOnSprite;
|
|
[SerializeField] private Sprite musicOffSprite;
|
|
|
|
[SerializeField] private Image sfxImage;
|
|
[SerializeField] private Sprite sfxOnSprite;
|
|
[SerializeField] private Sprite sfxOffSprite;
|
|
|
|
private AudioSettings _audioSettings;
|
|
|
|
private void Start()
|
|
{
|
|
dataFilePath = Application.persistentDataPath + "/" + dataFilePath;
|
|
if (File.Exists(dataFilePath))
|
|
_audioSettings = JsonUtility.FromJson<AudioSettings>(File.ReadAllText(dataFilePath));
|
|
else
|
|
{
|
|
_audioSettings = new AudioSettings(1f, 1f);
|
|
FileStream stream = new FileStream(dataFilePath, FileMode.Create);
|
|
using StreamWriter writer = new StreamWriter(stream);
|
|
writer.Write(JsonUtility.ToJson(_audioSettings));
|
|
stream.Close();
|
|
writer.Close();
|
|
}
|
|
|
|
musicSlider.value = _audioSettings.musicVolume;
|
|
sfxSlider.value = _audioSettings.sfxVolume;
|
|
|
|
musicSlider.onValueChanged.AddListener(x => OnMusicSliderValueChanged());
|
|
sfxSlider.onValueChanged.AddListener(x => OnSFXSliderValueChanged());
|
|
|
|
UpdateVisuals();
|
|
SetMenuMusicState();
|
|
gameObject.SetActive(false);
|
|
}
|
|
|
|
private void UpdateVisuals()
|
|
{
|
|
musicImage.sprite = _audioSettings.musicVolume == 0f ? musicOffSprite : musicOnSprite;
|
|
|
|
sfxImage.sprite = _audioSettings.sfxVolume == 0f ? sfxOffSprite : sfxOnSprite;
|
|
}
|
|
|
|
private void OnMusicSliderValueChanged()
|
|
{
|
|
_audioSettings.musicVolume = musicSlider.value;
|
|
SetMenuMusicState();
|
|
File.WriteAllText(dataFilePath, JsonUtility.ToJson(_audioSettings));
|
|
UpdateVisuals();
|
|
}
|
|
|
|
private void OnSFXSliderValueChanged()
|
|
{
|
|
_audioSettings.sfxVolume = sfxSlider.value;
|
|
File.WriteAllText(dataFilePath, JsonUtility.ToJson(_audioSettings));
|
|
UpdateVisuals();
|
|
}
|
|
|
|
private void SetMenuMusicState()
|
|
{
|
|
menuMusSrc.volume = musicSlider.value;
|
|
}
|
|
} |