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 StateMachineController { get; private set; } public IStateMachine IdleState { get; private set; } public IStateMachine WalkingState { get; private set; } public IStateMachine 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(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; } } }