using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; namespace Michsky.UI.Heat { [DisallowMultipleComponent] public class SettingsElement : MonoBehaviour, IPointerClickHandler, IEventSystemHandler, IPointerEnterHandler, IPointerExitHandler, ISelectHandler, IDeselectHandler, ISubmitHandler { [SerializeField] private CanvasGroup highlightCG; public bool isInteractable = true; public bool useSounds = true; [Range(1f, 15f)] public float fadingMultiplier = 8f; public bool useUINavigation; public Navigation.Mode navigationMode = Navigation.Mode.Automatic; public GameObject selectOnUp; public GameObject selectOnDown; public GameObject selectOnLeft; public GameObject selectOnRight; public bool wrapAround; public UnityEvent onClick = new UnityEvent(); public UnityEvent onHover = new UnityEvent(); public UnityEvent onLeave = new UnityEvent(); private Button targetButton; private void Start() { if (ControllerManager.instance != null) { ControllerManager.instance.settingsElements.Add(this); } if (UIManagerAudio.instance == null) { useSounds = false; } if (highlightCG == null) { highlightCG = new GameObject().AddComponent(); highlightCG.gameObject.AddComponent(); highlightCG.transform.SetParent(base.transform); highlightCG.gameObject.name = "Highlight"; } if (GetComponent() == null) { Image image = base.gameObject.AddComponent(); image.color = new Color(0f, 0f, 0f, 0f); image.raycastTarget = true; } } private void OnEnable() { if (highlightCG != null) { highlightCG.alpha = 0f; } if (Application.isPlaying && useUINavigation) { AddUINavigation(); } else if (Application.isPlaying && !useUINavigation && targetButton == null) { if (base.gameObject.GetComponent