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("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; }