Exemple #1
0
    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());
    }
Exemple #2
0
    /*
     * 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);
    }