示例#1
0
    /// <summary>
    /// Interaction implementation for different types of InteractableObject's .
    /// Takes the GameObject of the InteractableObject.
    /// </summary>
    /// <param name="obj">InteractableObject GameObject is passed here.</param>
    private void Interaction(GameObject obj)
    {
        IInteractableObject interactingObject = obj.GetComponent <IInteractableObject> ( );

        switch (interactingObject._ObjectType)
        {
        ///Interaction with Garbage Bin. If Player's inventory has something, set it to null.
        case InteractableObjects.Garbage:
            if (GetPlayerInventoryEmpty( ))
            {
                return;
            }

            RefreshInventory( );
            break;

        ///Interaction with Chopping Board
        case InteractableObjects.ChoppingBoard:
            if (obj.tag != "Setup" + _playerModel._playerID.ToString( ))
            {
                return;
            }

            _choppingBoardControl = obj.GetComponent <ChoppingBoardController> ();
            ChoppingBoardInteraction( );
            break;

        ///Interaction with Plate.
        case InteractableObjects.Plate:
            if (obj.tag != "Setup" + _playerModel._playerID.ToString( ))
            {
                return;
            }

            _plateControl = obj.GetComponent <PlateController> ( );
            PlateInteraction( );
            break;

        ///Interaction with Veggies A B C D E & F.
        case InteractableObjects.Veggies:
            if (GetPlayerInventoryFull( ))
            {
                return;
            }

            Veggie veg = obj.GetComponent <Veggie>();
            _playerModel._inventory.Add(veg);
            _playerView.DisplayInventory(_playerModel._inventory.ToArray());
            break;

        ///Interaction with customer's seat.
        ///Serves the order to the customer then empties the player inventory.
        case InteractableObjects.Seat:
            if (GetPlayerInventoryEmpty( ))
            {
                return;
            }

            SeatController seatController = obj.GetComponent <SeatController> ( );
            seatController.ServeOrder(_playerModel._inventory.ToArray(), _playerModel._playerID);
            RefreshInventory( );
            break;

        ///Interaction with Pickup.
        case InteractableObjects.Pickup:
            PickupController pickup = obj.GetComponent <PickupController> ( );
            if (!pickup.IsPlayerEligible(_playerModel._playerID))
            {
                return;
            }

            PickupInteraction(pickup.GetPickupType( ));
            Destroy(obj.gameObject);
            break;

        default:
            break;
        }
    }