using System; using UnityEngine; using UnityEngine.UI; namespace BrewMonster { /// Assign UI row for command/action shortcuts; toggle only — does not Execute(). public class AUIToggleActionAssign : AUIToggle { [Header("ActionAssign")] [SerializeField] private int actionSetIndex; [SerializeField] private int shortcutIndexInSet; /// bool: isOn, int: actionSetIndex, int: shortcutIndexInSet public event Action OnActionAssignToggleChanged; public override void Awake() { UnSubscribeEvents(); SubscribeEvents(); } public void OnDestroy() { UnSubscribeEvents(); } private void UnSubscribeEvents() { if (uiToggle != null) uiToggle.onValueChanged.RemoveAllListeners(); } private void SubscribeEvents() { if (uiToggle != null) uiToggle.onValueChanged.AddListener(OnToggleValueChanged); } private void OnToggleValueChanged(bool isOn) { OnActionAssignToggleChanged?.Invoke(isOn, actionSetIndex, shortcutIndexInSet); } public void SetActionSlotIndices(int setIndex, int indexInSet) { actionSetIndex = setIndex; shortcutIndexInSet = indexInSet; } public int GetActionSetIndexForAssign() => actionSetIndex; public int GetShortcutIndexInSetForAssign() => shortcutIndexInSet; public Toggle GetUIToggle() => uiToggle; public void UncheckAfterAssign() { if (uiToggle != null) uiToggle.isOn = false; } } }