CapersProject/Assets/02.Scripts/Character/Npc/Crew/Server/ServerCrew.cs
2024-10-22 21:41:31 +09:00

71 lines
2.3 KiB
C#

using BlueWater.Interfaces;
using BlueWater.Npcs.Customers;
namespace BlueWater.Npcs.Crews.Server
{
public class ServerCrew : Crew
{
public Customer OrderedCustomer { get; private set; }
public IPickup CurrentPickupItem { get; private set; }
public bool IsServing { get; private set; }
public StateMachineController<ServerCrew> StateMachineController { get; private set; }
public IStateMachine<ServerCrew> IdleState { get; private set; }
public IStateMachine<ServerCrew> WalkingState { get; private set; }
public IStateMachine<ServerCrew> ServingState { get; private set; }
protected override void Update()
{
StateMachineController.UpdateState(this);
base.Update();
}
public override void Initialize()
{
IdleState = new IdleState();
WalkingState = new WalkingState();
ServingState = new ServingState();
StateMachineController = new StateMachineController<ServerCrew>(this, IdleState);
base.Initialize();
}
public override void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
OrderedCustomer = null;
CurrentPickupItem = null;
IsServing = false;
}
public void CanNotServing()
{
CrewInteraction = null;
OrderedCustomer = null;
}
public override bool IsCompletedMission()
{
return CrewInteraction == null && !OrderedCustomer && CurrentPickupItem == null && !IsServing;
}
public void OnMission(ICrewInteraction crewInteraction, Customer orderedCustomer)
{
base.OnMission(crewInteraction);
OrderedCustomer = orderedCustomer;
}
public void TakeFromServingTable(IPickup pickupItem, Customer orderedCustomer)
{
CurrentPickupItem = pickupItem;
OrderedCustomer = orderedCustomer;
CrewInteraction = OrderedCustomer;
BalloonUi.SetItemImage(CurrentPickupItem);
IsServing = true;
}
}
}