118 lines
5.3 KiB
C#
118 lines
5.3 KiB
C#
using System;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class OptionsUI : MonoBehaviour
|
|
{
|
|
public static OptionsUI Instance { get; private set; }
|
|
|
|
[SerializeField] private Button soundEffectsButton;
|
|
[SerializeField] private Button musicButton;
|
|
[SerializeField] private Button closeButton;
|
|
[SerializeField] private Button moveUpButton;
|
|
[SerializeField] private Button moveDownButton;
|
|
[SerializeField] private Button moveLeftButton;
|
|
[SerializeField] private Button moveRightButton;
|
|
[SerializeField] private Button interactButton;
|
|
[SerializeField] private Button interactAlternateButton;
|
|
[SerializeField] private Button pauseButton;
|
|
[SerializeField] private Button gamepadInteractButton;
|
|
[SerializeField] private Button gamepadInteractAlternateButton;
|
|
[SerializeField] private Button gamepadPauseButton;
|
|
[SerializeField] private TextMeshProUGUI soundEffectsText;
|
|
[SerializeField] private TextMeshProUGUI musicText;
|
|
[SerializeField] private TextMeshProUGUI moveUpText;
|
|
[SerializeField] private TextMeshProUGUI moveDownText;
|
|
[SerializeField] private TextMeshProUGUI moveLeftText;
|
|
[SerializeField] private TextMeshProUGUI moveRightText;
|
|
[SerializeField] private TextMeshProUGUI interactText;
|
|
[SerializeField] private TextMeshProUGUI interactAlternateText;
|
|
[SerializeField] private TextMeshProUGUI pauseText;
|
|
[SerializeField] private TextMeshProUGUI gamepadInteractText;
|
|
[SerializeField] private TextMeshProUGUI gamepadInteractAlternateText;
|
|
[SerializeField] private TextMeshProUGUI gamepadPauseText;
|
|
[SerializeField] private Transform pressToRebindKeyTransform;
|
|
|
|
private Action onCloseButtonAction;
|
|
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
soundEffectsButton.onClick.AddListener(() =>
|
|
{
|
|
SoundManager.Instance.ChangeVolume();
|
|
UpdateVisual();
|
|
});
|
|
musicButton.onClick.AddListener(() =>
|
|
{
|
|
MusicManager.Instance.ChangeVolume();
|
|
UpdateVisual();
|
|
});
|
|
closeButton.onClick.AddListener(() =>
|
|
{
|
|
Hide();
|
|
onCloseButtonAction();
|
|
});
|
|
|
|
moveUpButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.MoveUp));
|
|
moveDownButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.MoveDown));
|
|
moveLeftButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.MoveLeft));
|
|
moveRightButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.MoveRight));
|
|
interactButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.Interact));
|
|
interactAlternateButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.InteractAlternate));
|
|
pauseButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.Pause));
|
|
gamepadInteractButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.Gamepad_Interact));
|
|
gamepadInteractAlternateButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.Gamepad_InteractAlternate));
|
|
gamepadPauseButton.onClick.AddListener(() => RebindBinding(GameInput.Binding.Gamepad_Pause));
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
KitchenGameManager.Instance.OnGameUnpaused += KitchenGameManager_OnGameUnpaused;
|
|
UpdateVisual();
|
|
Hide();
|
|
HidePressToRebindKey();
|
|
}
|
|
|
|
private void KitchenGameManager_OnGameUnpaused(object sender, System.EventArgs e) => Hide();
|
|
|
|
private void UpdateVisual()
|
|
{
|
|
soundEffectsText.text = $"Sound Effects: {Mathf.Round(SoundManager.Instance.GetVolume() * 10f)}";
|
|
musicText.text = $"Music: {Mathf.Round(MusicManager.Instance.GetVolume() * 10f)}";
|
|
|
|
moveUpText.text = GameInput.Instance.GetBindingText(GameInput.Binding.MoveUp);
|
|
moveDownText.text = GameInput.Instance.GetBindingText(GameInput.Binding.MoveDown);
|
|
moveLeftText.text = GameInput.Instance.GetBindingText(GameInput.Binding.MoveLeft);
|
|
moveRightText.text = GameInput.Instance.GetBindingText(GameInput.Binding.MoveRight);
|
|
interactText.text = GameInput.Instance.GetBindingText(GameInput.Binding.Interact);
|
|
interactAlternateText.text = GameInput.Instance.GetBindingText(GameInput.Binding.InteractAlternate);
|
|
pauseText.text = GameInput.Instance.GetBindingText(GameInput.Binding.Pause);
|
|
gamepadInteractText.text = GameInput.Instance.GetBindingText(GameInput.Binding.Gamepad_Interact);
|
|
gamepadInteractAlternateText.text = GameInput.Instance.GetBindingText(GameInput.Binding.Gamepad_InteractAlternate);
|
|
gamepadPauseText.text = GameInput.Instance.GetBindingText(GameInput.Binding.Gamepad_Pause);
|
|
}
|
|
|
|
public void Show(Action onCloseButton)
|
|
{
|
|
onCloseButtonAction = onCloseButton;
|
|
gameObject.SetActive(true);
|
|
closeButton.Select();
|
|
}
|
|
|
|
private void Hide() => gameObject.SetActive(false);
|
|
|
|
private void ShowPressToRebindKey() => pressToRebindKeyTransform.gameObject.SetActive(true);
|
|
private void HidePressToRebindKey() => pressToRebindKeyTransform.gameObject.SetActive(false);
|
|
|
|
private void RebindBinding(GameInput.Binding binding)
|
|
{
|
|
ShowPressToRebindKey();
|
|
GameInput.Instance.RebindBinding(binding, () =>
|
|
{
|
|
HidePressToRebindKey();
|
|
UpdateVisual();
|
|
});
|
|
}
|
|
} |