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