ProjectDDD/Assets/_DDD/_Scripts/RestaurantEnvironment/Interactions/RestaurantMealInteractionSubsystem.cs

62 lines
1.8 KiB
C#

using System;
using UnityEngine;
namespace DDD
{
public enum RestaurantMealType : uint
{
None = 0u,
WaitForOrder = 1u,
WaitForServe = 1u << 1
}
public class RestaurantMealInteractionSubsystem : MonoBehaviour, IInteractionSubsystemObject<RestaurantMealType>
{
private RestaurantMealType _currentRestaurantMealType;
private void Awake()
{
_currentRestaurantMealType = RestaurantMealType.None;
}
public RestaurantMealType GetInteractionSubsystemType()
{
return _currentRestaurantMealType;
}
public void SetInteractionSubsystemType(RestaurantMealType inValue)
{
_currentRestaurantMealType = inValue;
}
public void InitializeSubsystem()
{
_currentRestaurantMealType = RestaurantMealType.None;
}
public bool CanInteract()
{
return _currentRestaurantMealType != RestaurantMealType.None;
}
public bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = null)
{
var prev = _currentRestaurantMealType;
_currentRestaurantMealType = GetNextState(prev);
return true;
}
public ScriptableObject GetPayload()
{
return null;
}
private RestaurantMealType GetNextState(RestaurantMealType state)
{
switch (state)
{
case RestaurantMealType.None : return RestaurantMealType.WaitForOrder;
case RestaurantMealType.WaitForOrder : return RestaurantMealType.WaitForServe;
case RestaurantMealType.WaitForServe : return RestaurantMealType.None;
default: return RestaurantMealType.None;
}
}
}
}