refactor radial menu, every click work as cancel - problem with invoke in radial button add listener

This commit is contained in:
2023-11-17 12:57:32 +02:00
parent e03633616e
commit c01b969fe0
15 changed files with 170 additions and 187 deletions
@@ -7,20 +7,25 @@ public class BaseInteractableObject : MonoBehaviour
[SerializeField]
public Transform _interactionPoint;
[SerializeField]
public List<ItemsMenuActionSO> _menuActions;
public List<RadialMenuActionSO> _menuActions;
protected Player _player;
private InteractionStatus _currentStatus=InteractionStatus.Complete;
private InteractionStatus _currentStatus = InteractionStatus.None;
public InteractionStatus Interact(Player player)
{
_player=player;
if (_currentStatus == InteractionStatus.Complete && _menuActions.Any())
_player = player;
if (_currentStatus == InteractionStatus.None && _menuActions.Any())
{
UIManager.Instance.ShowItemsMenu(_menuActions,PopupMenuCallback);
UIManager.Instance.ShowItemsMenu(_menuActions, PopupMenuCallback);
_currentStatus = InteractionStatus.WaitForChoose;
}
else if(_currentStatus!=InteractionStatus.WaitForChoose)
else if (_currentStatus == InteractionStatus.Complete)
{
_currentStatus = InteractionStatus.None;
return InteractionStatus.Complete;
}
else if (_currentStatus != InteractionStatus.WaitForChoose && _currentStatus != InteractionStatus.Complete)
{
if (_player.IsPathComplete(_interactionPoint.position))
{
@@ -35,13 +40,20 @@ public class BaseInteractableObject : MonoBehaviour
return _currentStatus;
}
private void PopupMenuCallback()
private void PopupMenuCallback(RadialMenuActionSO action)
{
_currentStatus = InteractionStatus.InProgress;
if (action.Action == RadialMenuActions.Cancel)
{
_currentStatus = InteractionStatus.Complete;
}
else
{
_currentStatus = InteractionStatus.InProgress;
}
}
protected virtual void InteractAction()
{
}
}
}