63 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|