Roses/Assets/Scripts/View/UI/SettingsMenu.cs
2024-04-19 00:10:29 +02:00

66 lines
No EOL
2 KiB
C#

using System;
using DG.Tweening;
using FMOD.Studio;
using FMODUnity;
using SatorImaging.AppWindowUtility;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace View.UI {
public class SettingsMenu : MonoBehaviour {
[SerializeField] private CanvasGroup mainUIGroup;
[SerializeField] private Button openSettingsButton;
[Space]
[SerializeField] private CanvasGroup settingsUIGroup;
[SerializeField] private Button closeSettingsButton;
[Space]
[SerializeField] private float transitionDuration = .5f;
[Space]
[SerializeField] private Toggle musicToggle;
[SerializeField] private Toggle sfxToggle;
[SerializeField] private Toggle alwaysOnTopToggle;
private Bus _musicBus;
private Bus _sfxBus;
private void Awake() {
openSettingsButton.onClick.AddListener(OpenSettings);
closeSettingsButton.onClick.AddListener(CloseSettings);
musicToggle.onValueChanged.AddListener(MusicStateChange);
sfxToggle.onValueChanged.AddListener(SFXStateChange);
alwaysOnTopToggle.onValueChanged.AddListener(AlwaysOnTopStateChange);
_musicBus = RuntimeManager.GetBus("bus:/Music");
_sfxBus = RuntimeManager.GetBus("bus:/SFX");
}
private void AlwaysOnTopStateChange(bool state) {
AppWindowUtility.AlwaysOnTop = state;
}
private void SFXStateChange(bool state) => _sfxBus.setMute(!state);
private void MusicStateChange(bool state) => _musicBus.setMute(!state);
private void OpenSettings() {
mainUIGroup.interactable = mainUIGroup.blocksRaycasts = false;
mainUIGroup.DOFade(0f, transitionDuration);
settingsUIGroup.interactable = settingsUIGroup.blocksRaycasts = true;
settingsUIGroup.DOFade(1f, transitionDuration);
}
private void CloseSettings() {
settingsUIGroup.interactable = settingsUIGroup.blocksRaycasts = false;
settingsUIGroup.DOFade(0f, transitionDuration);
mainUIGroup.interactable = mainUIGroup.blocksRaycasts = true;
mainUIGroup.DOFade(1f, transitionDuration);
}
}
}