using System.Collections; using UnityEngine; using UnityEngine.UI; public class GonerMenu_Settings_Toggle : MonoBehaviour { [Header("-= References =-")] [SerializeField] private GonerMenu_Settings_Element AssosciatedElement; [SerializeField] private RawImage ToggleTickRenderer; [Header("-= Settings =-")] [Header("Is saved as Setting_")] [SerializeField] private string SettingName; private GonerMenu_Settings settings; private bool InputEnabled; [SerializeField] private bool UpdateDyslexicFontsOnChange; [SerializeField] private bool IgnoreGonerMenuOpenState; [Header("Only used for the main menu settings, keep null to use global reference")] [SerializeField] private GonerMenu_Settings IgnoredGonerSettingsManager; private void OnEnable() { if ((bool)IgnoredGonerSettingsManager) { settings = IgnoredGonerSettingsManager; } else { settings = GonerMenu_Settings.Instance; } ToggleTickRenderer.enabled = SettingsManager.Instance.GetBoolSettingValue(SettingName); } private void Update() { if (!GonerMenu.Instance.GonerMenuOpen && !IgnoreGonerMenuOpenState) { AssosciatedElement.CurrentlySelected = false; } if (AssosciatedElement.CurrentlySelected) { if (InputEnabled) { if (Input.GetKeyDown(PlayerInput.Instance.Key_Confirm)) { SettingsManager.Instance.SaveBoolSetting(SettingName, !SettingsManager.Instance.GetBoolSettingValue(SettingName)); ToggleTickRenderer.enabled = SettingsManager.Instance.GetBoolSettingValue(SettingName); settings.source.PlayOneShot(settings.SettingSound_Tick); if (UpdateDyslexicFontsOnChange) { settings.UpdateSettingFontsDyslexic(); } SettingsManager.Instance.ApplySettings(); } } else { StartCoroutine(DebounceFromInput()); } } else { InputEnabled = false; } } private IEnumerator DebounceFromInput() { yield return new WaitForSeconds(0f); InputEnabled = true; } }