void OrderRecieved(Carrier playerCarrier) { PlateItem plate = (PlateItem)playerCarrier.GetCarryingItem(); carrier.OnItemPickup(plate); playerCarrier.OnItemDrop(); currentCustomer.ProcessOrder(plate.Salad, playerCarrier.GetComponent <Player>()); //TODO sync state /* * if (correctOrder) * { * currentState = KitchenStandState.CUSTOMER_EATING; * Debug.Log(name + " -- correct order - state : " + currentState); * } * //TODO set state to wrong order */ StartCoroutine(RemovePlate()); }
/* * protected override void Init() * { * base.Init(); * currentState = KitchenStandState.EMPTY; * } */ public override bool Execute(Command command, Carrier playerCarrier = null) { bool result = base.Execute(command, playerCarrier); switch (currentState) { case KitchenStandState.EMPTY: if (command == Command.DROP) { PlateItem plate = Instantiate(platePrefab); //TODO use object pooling plate.AddSalad((SaladItem)playerCarrier.GetCarryingItem()); currentState = KitchenStandState.CONTAIN_SALAD; //ready to pick up carrier.OnItemPickup(plate); playerCarrier.OnItemDrop(); result = true; } break; case KitchenStandState.CONTAIN_SALAD: if (command == Command.PICKUP) { currentState = KitchenStandState.EMPTY; playerCarrier.OnItemPickup(carrier.GetCarryingItem()); carrier.OnItemDrop(); result = true; } else if (command == Command.DROP) { PlateItem plate = (PlateItem)carrier.GetCarryingItem(); plate.AddSalad((SaladItem)playerCarrier.GetCarryingItem()); playerCarrier.OnItemDrop(); result = true; } break; } return(result); }