ClientServer/Client/Assets/Scripts/UI/OptionsCanvas.cs
TG9six 03a642d635 first push
first push
2025-09-06 17:17:39 +04:00

97 lines
2.9 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using TMPro;
using DG.Tweening;
public class OptionsCanvas : MonoBehaviour
{
[SerializeField] private TMP_Text optionsHeaderText;
[SerializeField] private OptionsButton graphicsButton;
[SerializeField] private OptionsButton audioButton;
[SerializeField] private OptionsButton gameplayButton;
[SerializeField] private OptionsButton controlsButton;
[Space(20)]
[SerializeField] private GameObject graphicsMenu;
[SerializeField] private GameObject audioMenu;
[SerializeField] private GameObject gameplayMenu;
[SerializeField] private GameObject controlsMenu;
private void Awake()
{
InitializeButtonEvents();
}
private void OnEnable()
{
if (!UIManager.Instance.getInterface<GameObject>("LoginScreen").activeInHierarchy)
{
SetInitialState();
}
}
private void SetInitialState()
{
optionsHeaderText.SetText("Graphics");
graphicsButton.SetState(false, graphicsMenu);
audioButton.SetState(true, audioMenu);
gameplayButton.SetState(true, gameplayMenu);
controlsButton.SetState(true, controlsMenu);
}
private void InitializeButtonEvents()
{
graphicsButton.GetButton().onClick.AddListener(OnGraphicsButton);
audioButton.GetButton().onClick.AddListener(OnAudioButton);
gameplayButton.GetButton().onClick.AddListener(OnGameplayButton);
controlsButton.GetButton().onClick.AddListener(OnControlsButton);
}
private void OnGraphicsButton()
{
optionsHeaderText.SetText("Graphics");
graphicsButton.SetState(false, graphicsMenu);
audioButton.SetState(true, audioMenu);
gameplayButton.SetState(true, gameplayMenu);
controlsButton.SetState(true, controlsMenu);
}
private void OnAudioButton()
{
optionsHeaderText.SetText("Audio");
graphicsButton.SetState(true, graphicsMenu);
audioButton.SetState(false, audioMenu);
gameplayButton.SetState(true, gameplayMenu);
controlsButton.SetState(true, controlsMenu);
}
private void OnGameplayButton()
{
optionsHeaderText.SetText("Gameplay");
graphicsButton.SetState(true, graphicsMenu);
audioButton.SetState(true, audioMenu);
gameplayButton.SetState(false, gameplayMenu);
controlsButton.SetState(true, controlsMenu);
}
private void OnControlsButton()
{
optionsHeaderText.SetText("Controls");
graphicsButton.SetState(true, graphicsMenu);
audioButton.SetState(true, audioMenu);
gameplayButton.SetState(true, gameplayMenu);
controlsButton.SetState(false, controlsMenu);
}
public GameObject GetGraphicsMenu() => graphicsMenu;
public GameObject GetAudioMenu() => audioMenu;
public GameObject GetGameplayMenu() => gameplayMenu;
public GameObject GetControlsMenu() => controlsMenu;
}