Files
2026-04-07 14:52:34 +07:00

63 lines
1.8 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
namespace BrewMonster
{
/// <summary>Assign UI row for command/action shortcuts; toggle only — does not Execute().</summary>
public class AUIToggleActionAssign : AUIToggle
{
[Header("ActionAssign")]
[SerializeField] private int actionSetIndex;
[SerializeField] private int shortcutIndexInSet;
/// <summary>bool: isOn, int: actionSetIndex, int: shortcutIndexInSet</summary>
public event Action<bool, int, int> 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;
}
}
}