popup menu refactor, player class refactor
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
public abstract class BaseInteractableObject : MonoBehaviour
|
||||
@@ -30,52 +31,28 @@ public abstract class BaseInteractableObject : MonoBehaviour
|
||||
};
|
||||
}
|
||||
|
||||
public InteractionStatus Interact(Player player)
|
||||
public async Task<InteractionStatus> ShowPopupMenu(Player player)
|
||||
{
|
||||
_player = player;
|
||||
|
||||
PrepareMenuActions();
|
||||
|
||||
switch (_currentStatus)
|
||||
{
|
||||
case InteractionStatus.None:
|
||||
var filteredActions = _menuActions.Where(x => x.Value.IsEnabled).ToDictionary(i => i.Key, i => i.Value) ;
|
||||
GameManager.Instance.UI.ShowItemPopupMenu(filteredActions, PopupMenuCallback);
|
||||
_currentStatus = InteractionStatus.WaitForChoose;
|
||||
break;
|
||||
case InteractionStatus.Complete:
|
||||
_currentStatus = InteractionStatus.None;
|
||||
return InteractionStatus.Complete;
|
||||
default:
|
||||
if (_currentStatus != InteractionStatus.WaitForChoose && _currentStatus != InteractionStatus.Complete)
|
||||
{
|
||||
if (_player.IsPathComplete(_interactionPoint.position))
|
||||
{
|
||||
InteractAction(_selectedAction);
|
||||
_currentStatus = InteractionStatus.None;
|
||||
return InteractionStatus.Complete;
|
||||
}
|
||||
else
|
||||
{
|
||||
_currentStatus = InteractionStatus.FarFromPlayer;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return _currentStatus;
|
||||
}
|
||||
|
||||
private void PopupMenuCallback(RadialMenuActions action)
|
||||
{
|
||||
if (action == RadialMenuActions.Cancel)
|
||||
var filteredActions = _menuActions.Where(x => x.Value.IsEnabled).ToDictionary(i => i.Key, i => i.Value);
|
||||
var result=await GameManager.Instance.UI.ShowItemPopupMenu(filteredActions);
|
||||
if (result == RadialMenuActions.Cancel)
|
||||
{
|
||||
_currentStatus = InteractionStatus.Complete;
|
||||
}
|
||||
else
|
||||
{
|
||||
_selectedAction= action;
|
||||
_selectedAction = result;
|
||||
_currentStatus = InteractionStatus.InProgress;
|
||||
}
|
||||
return _currentStatus;
|
||||
}
|
||||
|
||||
public TaskStatus Interact()
|
||||
{
|
||||
InteractAction(_selectedAction);
|
||||
return TaskStatus.Complete;
|
||||
}
|
||||
|
||||
protected abstract void InteractAction(RadialMenuActions interactAction);
|
||||
|
||||
Reference in New Issue
Block a user