Files
SimUL/Assets/Scripts/InteractableObjects/BaseInteractableObject.cs
T

60 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class BaseInteractableObject : MonoBehaviour
{
[SerializeField]
public Transform _interactionPoint;
[SerializeField]
public List<RadialMenuActionSO> _menuActions;
protected Player _player;
private InteractionStatus _currentStatus = InteractionStatus.None;
public InteractionStatus Interact(Player player)
{
_player = player;
if (_currentStatus == InteractionStatus.None && _menuActions.Any())
{
UIManager.Instance.ShowItemsMenu(_menuActions, PopupMenuCallback);
_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))
{
InteractAction();
_currentStatus = InteractionStatus.Complete;
}
else
{
_currentStatus = InteractionStatus.FarFromPlayer;
}
}
return _currentStatus;
}
private void PopupMenuCallback(RadialMenuActionSO action)
{
if (action.Action == RadialMenuActions.Cancel)
{
_currentStatus = InteractionStatus.Complete;
}
else
{
_currentStatus = InteractionStatus.InProgress;
}
}
protected virtual void InteractAction()
{
}
}