//if enter sink zone and is holding dirty plate
    private void OnTriggerEnter(Collider other)
    {
        //if player is in sink zone
        if (other.tag == "SinkZone")
        {
            atSink = true;


            //Debug.Log("NetworkedWashInteraction - Entered sink zone!");

            //If there is a plate in the sink and players are not holding anything
            if (GameManager.Instance.platesInSinkCount >= 1 && !networkedPlayerInteraction.IsInventoryFull())
            {
                for (int i = 0; i < PlayerMovement.ActivePlayers.Count; i++)
                {
                    if (PlayerMovement.ActivePlayers[i].GetComponent <NetworkedWashInteraction>().atSink &&
                        PlayerMovement.ActivePlayers[i].GetComponent <NetworkIdentity>().netId != gameObject.GetComponent <NetworkIdentity>().netId)
                    {
                        //Debug.LogError("Some player is at the sink!");
                        canWash      = false;
                        showWashIcon = false;
                        return;
                    }
                }
                canWash      = true;
                showWashIcon = true;
                networkedPlayerInteraction.ChangePlayerState(PlayerState.CanWashPlate);
            }

            //if player is holding a plate
            if (holdingDirtyPlate)
            {
                //player can place plate in the sink
                //Debug.Log("NetworkedWashInteraction - Player can place a plate in the sink!");
                networkedPlayerInteraction.ChangePlayerState(PlayerState.CanPlacePlateInSink, true);
            }

            //if player was washing plate, if they enter the sink zone again they can immediately wash
            //or if there are still plates in the sink
            else if (stoppedWashingPlate || GameManager.Instance.platesInSinkCount != 0)
            {
                networkedPlayerInteraction.ChangePlayerState(PlayerState.CanWashPlate);

                showWashIcon = true;
            }
        }
    }
Beispiel #2
0
    //Taking customers orders
    public void CheckHandsEmpty()
    {
        //Debug.Log("NetworkedCustomerInteraction - CheckHandsEmpty");

        //check if player is looking at table
        if (!networkedPlayerInteraction.detectedObject.GetComponent <TableScript>())
        {
            //Debug.Log("NetworkedCustomerInteraction- Player is not looking at a table");
            return;
        }

        //get table script
        TableScript tableScript = networkedPlayerInteraction.detectedObject.GetComponent <TableScript>();

        CmdCheckHandsEmpty(networkedPlayerInteraction.detectedObject, networkedPlayerInteraction.IsInventoryFull());
        networkedPlayerInteraction.ChangePlayerState(PlayerState.Default);
    }
    // Update is called once per frame
    void Update()
    {
        if (!hasAuthority)
        {
            return;
        }

        // Debug.Log("Ingredient count: " + GameManager.Instance.ingredientsOnTrayCount);

        //pickuppable layer
        //networkedPlayerInteraction.PickUpObject(networkedPlayerInteraction.detectedObject, 17, networkedPlayerInteraction.IsInventoryFull(), PlayerState.CanPickUpIngredient);

        //if player is holding something
        if (networkedPlayerInteraction.playerInventory != null)
        {
            switch (networkedPlayerInteraction.playerInventory.tag)
            {
            case "DirtyPlate":
                return;

            case "Drink":
                if (nearTrashBin)
                {
                    networkedPlayerInteraction.ChangePlayerState(PlayerState.CanThrowDrink, true);
                }
                else
                {
                    Debug.Log("Player inventory tag " + networkedPlayerInteraction.playerInventory.tag);
                    return;
                }
                break;

            case "RottenIngredient":
                //Debug.Log("NetworkedIngredientInteraction - Unable to drop rotten ingredient");

                if (nearTrashBin)
                {
                    networkedPlayerInteraction.playerState = PlayerState.CanThrowIngredient;
                }
                else
                {
                    networkedPlayerInteraction.playerState = PlayerState.HoldingRottenIngredient;
                }
                break;

            case "Customer":
                break;

            case "Dish":
                //networkedPlayerInteraction.ChangePlayerState(PlayerState.HoldingOrder);
                if (nearTrashBin)
                {
                    networkedPlayerInteraction.ChangePlayerState(PlayerState.CanThrowDish, true);
                }
                else
                {
                    networkedPlayerInteraction.ChangePlayerState(PlayerState.HoldingOrder, true);
                }
                break;
            }

            if (nearTrashBin)
            {
                networkedPlayerInteraction.playerState = PlayerState.CanThrowIngredient;
                //Debug.Log("NetworkedIngredientInteraction - Can throw ingredient!");
                return;
            }

            //Debug.Log("NetworkedIngredientInteraction - Able to drop ingredient!");
            else if (GameManager.Instance.ingredientsOnTrayCount >= 4 && nearIngredientTray)
            {
                networkedPlayerInteraction.ChangePlayerState(PlayerState.Default);
                //Debug.Log("Ingredient tray full");
                return;
            }

            else if (canDropIngredient)
            {
                networkedPlayerInteraction.ChangePlayerState(PlayerState.CanDropIngredient);
            }
            else
            {
                networkedPlayerInteraction.ChangePlayerState(PlayerState.Default);
            }
        }

        //if player sees a rotten ingredient
        networkedPlayerInteraction.PickUpObject(networkedPlayerInteraction.detectedObject, 23, networkedPlayerInteraction.IsInventoryFull(), PlayerState.CanPickUpRottenIngredient);
    }
    // Update is called once per frame
    void Update()
    {
        if (!hasAuthority)
        {
            return;
        }

        if (LevelTimer.Instance.hasLevelEnded)
        {
            InitialiseFridge();
        }

        //detect fridge
        //networkedPlayerInteraction.DetectObjectLookingAt(networkedPlayerInteraction.detectedObject, 21, DetectFridge);

        //detected drink
        networkedPlayerInteraction.PickUpObject(networkedPlayerInteraction.detectedObject, 22, networkedPlayerInteraction.IsInventoryFull(), PlayerState.CanPickUpDrink);

        CmdStopCooldown();
    }