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