/// <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; } }