using BlueWater.Interfaces; 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; } 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; } public override bool IsCompletedMission() { return !OrderedCustomer && !IsMakingCocktail; } 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(); } } }