using BlueWater.Interfaces; using BlueWater.Items; using BlueWater.Npcs.Customers; using BlueWater.Tycoons; namespace BlueWater.Npcs.Crews.Bartender { public class BartenderCrew : Crew { public BartenderTable MyBartenderTable { get; private set; } public Customer OrderedCustomer { get; set; } public bool IsMakingCocktail { get; private set; } public StateMachineController StateMachineController { get; private set; } public IStateMachine IdleState { get; private set; } public IStateMachine MakingCocktailState { get; private set; } private CocktailData _makingCocktailData; protected override void Update() { StateMachineController.UpdateState(this); base.Update(); } public override void Initialize() { IdleState = new IdleState(); MakingCocktailState = new MakingCocktailState(); StateMachineController = new StateMachineController(this, IdleState); base.Initialize(); } public override void ResetMission() { CrewInteraction = null; IsOnMission = false; BalloonUi.DiscardItem(); OrderedCustomer = null; IsMakingCocktail = false; _makingCocktailData = null; } public override bool IsCompletedMission() { return !OrderedCustomer && !IsMakingCocktail; } public void SetBartenderTable(BartenderTable bartenderTable) => MyBartenderTable = bartenderTable; public void SetOrderedCustomer(Customer orderedCustomer) { OrderedCustomer = orderedCustomer; _makingCocktailData = OrderedCustomer.OrderedCocktailData; IsOnMission = true; } public void MakingCocktail() { if (OrderedCustomer && OrderedCustomer.CurrentBill) { OrderedCustomer.CurrentBill.BartenderMakingCocktail(); } BalloonUi.OrderItem(_makingCocktailData.Idx, 0, 15); IsMakingCocktail = true; } public void CompletedMakingCocktail() { if (OrderedCustomer && OrderedCustomer.CurrentBill) { OrderedCustomer.CurrentBill.BartenderCompleteMakingCocktail(); } MyBartenderTable.CompleteMakingCocktail(_makingCocktailData); ResetMission(); } } }