CapersProject/Assets/02.Scripts/Character/Npc/Crew/Bartender/BartenderCrew.cs

76 lines
2.4 KiB
C#
Raw Normal View History

2024-10-22 12:41:31 +00:00
using BlueWater.Interfaces;
2024-10-20 17:21:39 +00:00
using BlueWater.Npcs.Customers;
using BlueWater.Tycoons;
2024-10-14 11:13:08 +00:00
2024-10-22 12:41:31 +00:00
namespace BlueWater.Npcs.Crews.Bartender
2024-10-14 11:13:08 +00:00
{
2024-10-22 12:41:31 +00:00
public class BartenderCrew : Crew
2024-10-14 11:13:08 +00:00
{
2024-10-20 17:21:39 +00:00
public BartenderTable MyBartenderTable { get; private set; }
public Customer OrderedCustomer { get; set; }
2024-10-22 12:41:31 +00:00
public bool IsMakingCocktail { get; private set; }
2024-10-14 11:13:08 +00:00
2024-10-22 12:41:31 +00:00
public StateMachineController<BartenderCrew> StateMachineController { get; private set; }
public IStateMachine<BartenderCrew> IdleState { get; private set; }
public IStateMachine<BartenderCrew> MakingCocktailState { get; private set; }
protected override void Update()
2024-10-20 17:21:39 +00:00
{
2024-10-22 12:41:31 +00:00
StateMachineController.UpdateState(this);
base.Update();
}
public override void Initialize()
{
IdleState = new IdleState();
MakingCocktailState = new MakingCocktailState();
2024-10-20 17:21:39 +00:00
2024-10-22 12:41:31 +00:00
StateMachineController = new StateMachineController<BartenderCrew>(this, IdleState);
base.Initialize();
}
public override void ResetMission()
{
CrewInteraction = null;
IsOnMission = false;
BalloonUi.DiscardItem();
2024-10-20 17:21:39 +00:00
OrderedCustomer = null;
2024-10-22 12:41:31 +00:00
IsMakingCocktail = false;
}
public override bool IsCompletedMission()
{
return !OrderedCustomer && !IsMakingCocktail;
2024-10-20 17:21:39 +00:00
}
public void SetBartenderTable(BartenderTable bartenderTable) => MyBartenderTable = bartenderTable;
public void SetOrderedCustomer(Customer orderedCustomer)
{
OrderedCustomer = orderedCustomer;
IsOnMission = true;
}
public void MakingCocktail()
{
OrderedCustomer.CurrentBill.BartenderMakingCocktail();
BalloonUi.OrderItem(OrderedCustomer.OrderedCocktailData.Idx, 0, 15);
IsMakingCocktail = true;
}
public void CompletedMakingCocktail()
{
if (OrderedCustomer.CurrentBill)
{
OrderedCustomer.CurrentBill.BartenderCompleteMakingCocktail();
}
BalloonUi.DiscardItem();
MyBartenderTable.CompleteMakingCocktail(OrderedCustomer.OrderedCocktailData);
IsMakingCocktail = false;
ResetMission();
}
2024-10-14 11:13:08 +00:00
}
}