using System; using UnityEngine; using UnityEngine.UI; namespace SpellBoundAR.Items.Selections.UI { [DisallowMultipleComponent] [RequireComponent(typeof(Button))] public class ItemTypeSelectionButton : MonoBehaviour { public event Action OnMenuChanged; public event Action OnItemTypeChanged; public event Action OnIsSelectedChanged; [Header("Cache")] private Button _button; private ItemTypeSelectionMenu _menu; private ScriptedItemTypeData _scriptedItemTypeData; private bool _isSelected; private ItemTypeSelectionMenu Menu { get => _menu; set { if (_menu == value) return; if (_menu) _menu.OnSelectionChanged -= RefreshIsSelected; _menu = value; if (_menu) _menu.OnSelectionChanged += RefreshIsSelected; OnMenuChanged?.Invoke(); RefreshIsSelected(); } } public ScriptedItemTypeData ScriptedItemTypeData { get => _scriptedItemTypeData; private set { if (_scriptedItemTypeData == value) return; _scriptedItemTypeData = value; OnItemTypeChanged?.Invoke(); RefreshIsSelected(); } } public bool IsSelected { get => _isSelected; private set { if (_isSelected == value) return; _isSelected = value; OnIsSelectedChanged?.Invoke(); } } private void Awake() { _button = GetComponent