public void ScoreBall(Ball ball) { //Add scored ball to turn container scoredBallsPerTurn[scoredBallsPerTurn.Count - 1].Add(ball.Type); switch (ball.Type) { case Ball.BallType.Black: if (playersBalls[playerTurn] == Ball.BallType.Solid) { if (solidTeamPoints == 7) { gameInProgress = false; menu.EndGame($"Player {playerTurn + 1}"); } gameInProgress = false; menu.EndGame($"Player {(playerTurn + 1) % 2 + 1}"); } else if (playersBalls[playerTurn] == Ball.BallType.Stripe) { if (stripeTeamPoints == 7) { gameInProgress = false; menu.EndGame($"Player {playerTurn + 1}"); } gameInProgress = false; menu.EndGame($"Player {(playerTurn + 1) % 2 + 1}"); } break; case Ball.BallType.White: ball.gameObject.GetComponent <Rigidbody>().velocity = new Vector3(0, 0, 0); ball.gameObject.transform.position = new Vector3(0, 10, 0); return; case Ball.BallType.Stripe: //First score if (playersBalls[0] == Ball.BallType.None) { AssignBallToPlayer(ball.Type); gameCommunicatesText.text = "Current player will play stripe balls"; } else { gameCommunicatesText.text = "Stripe player scores"; } stripeTeamPoints += 1; break; case Ball.BallType.Solid: //First score if (playersBalls[0] == Ball.BallType.None) { AssignBallToPlayer(ball.Type); gameCommunicatesText.text = "Solid player will play stripe balls"; } else { gameCommunicatesText.text = "Solid player scores"; } solidTeamPoints += 1; break; } UpdateScore(); gameBalls.Remove(ball); Destroy(ball.gameObject); }