void EndMinigame() { audioCtrl.source.PlayOneShot(victory); Collider[] hits; Collider golden = null; int i; // Sphere Raycast to center hits = Physics.OverlapSphere(center.position, .25f, 1 << gameObject.layer); if (hits.Length > 0) { // Find the Golden Score i = 0; bool found = false; while (i < hits.Length && !found) { if (hits[i].GetComponent <SoccerBall>() != null) { golden = hits[i]; found = true; } i++; } } // Sphere Raycast to extents List <SoccerBall> hitBalls = null; hits = Physics.OverlapSphere(center.position, 1.75f, 1 << gameObject.layer); if (hits.Length > 0) { hitBalls = new List <SoccerBall>(hits.Length); i = 0; while (i < hits.Length) { if (hits[i].GetComponent <SoccerBall>() != null && hits[i] != golden) { hitBalls.Add(hits[i].GetComponent <SoccerBall>()); } i++; } } // Assign points to players int[] results = new int[players.Length]; // Golden Ball Assignment if (golden != null) { results[golden.GetComponent <SoccerBall>().id] = 3; } if (hitBalls != null) { for (i = 0; i < hitBalls.Count; i++) { results[hitBalls[i].id]++; } } // Define Score for (i = 0; i < results.Length; i++) { players[i].matchMinigameResults[minigameTurn] = results[i]; } players = players.OrderByDescending(p => p.matchMinigameResults[minigameTurn]).ToArray(); // Define standing bool relay; int prevScore = 0, prevStanding = -1; for (i = 0; i < players.Length; i++) { relay = true; // Check for draws if (i > 0) { if (players[i].matchMinigameResults[minigameTurn] == prevScore) { players[i].matchMinigameResults[minigameTurn] = prevStanding; relay = false; } } if (relay) { prevScore = players[i].matchMinigameResults[minigameTurn]; // Assign standing players[i].matchMinigameResults[minigameTurn] = prevStanding + 1; prevStanding = players[i].matchMinigameResults[minigameTurn]; } } // Assign values to original players int j = 0; for (i = 0; i < players.Length; i++) { relay = false; j = 0; while (!relay && j < players.Length) { if (manager.players[i].name == players[j].name) { manager.players[i].matchMinigameResults[minigameTurn] = players[j].matchMinigameResults[minigameTurn]; relay = true; } j++; } } canvas.ToggleButtons(); canvas.TogglePlayerName(); canvas.DisplayMinigameResults(players); minigameTurn++; }