2024-10-22 12:41:31 +00:00
|
|
|
using BlueWater.Interfaces;
|
2024-10-28 12:11:31 +00:00
|
|
|
using BlueWater.Items;
|
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; }
|
2024-10-28 12:11:31 +00:00
|
|
|
|
|
|
|
private CocktailData _makingCocktailData;
|
2024-10-22 12:41:31 +00:00
|
|
|
|
|
|
|
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;
|
2024-10-28 12:11:31 +00:00
|
|
|
_makingCocktailData = null;
|
2024-10-22 12:41:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
2024-10-28 12:11:31 +00:00
|
|
|
_makingCocktailData = OrderedCustomer.OrderedCocktailData;
|
2024-10-20 17:21:39 +00:00
|
|
|
IsOnMission = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void MakingCocktail()
|
|
|
|
{
|
2024-10-28 12:11:31 +00:00
|
|
|
if (OrderedCustomer && OrderedCustomer.CurrentBill)
|
2024-10-28 12:02:31 +00:00
|
|
|
{
|
|
|
|
OrderedCustomer.CurrentBill.BartenderMakingCocktail();
|
|
|
|
}
|
2024-10-28 12:11:31 +00:00
|
|
|
BalloonUi.OrderItem(_makingCocktailData.Idx, 0, 15);
|
2024-10-20 17:21:39 +00:00
|
|
|
|
|
|
|
IsMakingCocktail = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void CompletedMakingCocktail()
|
|
|
|
{
|
2024-10-28 12:11:31 +00:00
|
|
|
if (OrderedCustomer && OrderedCustomer.CurrentBill)
|
2024-10-28 12:02:31 +00:00
|
|
|
{
|
|
|
|
OrderedCustomer.CurrentBill.BartenderCompleteMakingCocktail();
|
|
|
|
}
|
2024-10-28 12:11:31 +00:00
|
|
|
|
|
|
|
MyBartenderTable.CompleteMakingCocktail(_makingCocktailData);
|
2024-10-20 17:21:39 +00:00
|
|
|
ResetMission();
|
|
|
|
}
|
2024-10-14 11:13:08 +00:00
|
|
|
}
|
|
|
|
}
|