using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEditor.SearchService; using UnityEngine; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { public int lapAmount; public GameObject[] checkpoints; public GameObject[] players; [HideInInspector] public List playersFinished; [HideInInspector] public float[] playerTimes; [HideInInspector] public string[] playerTimesStr; int[] playerLaps; public TextMeshProUGUI lapCounter; public TextMeshProUGUI timeCounter; void Start() { // reset laps playerLaps = new int[players.Count()]; playerTimes = new float[players.Count()]; for (int i = 0; i < playerLaps.Count(); i++) { playerLaps[i] = 1; } for (int i = 0; i < players.Count(); i++) { playerTimes[i] = 0; } DontDestroyOnLoad(gameObject); } // Update is called once per frame void Update() { print("playersfinished: " + playersFinished.Count()); for (int i = 0; i < players.Count(); i++) { GameObject player = players[i]; try { if (playersFinished.Contains(player.name) || playersFinished.Contains(player.name + " (player)")) continue; } catch { return; } playerTimes[i] += Time.deltaTime; bool isAI = true; if (player.GetComponent().enabled) isAI = false; if (isAI) { bool isFinished = player.GetComponent().isFinished; if (isFinished) { player.GetComponent().isFinished = false; playerLaps[i] += 1; } } else { int checkpointsCollected = player.GetComponent().checkpointsCollected; if (checkpointsCollected == checkpoints.Count()) { player.GetComponent().checkpointsCollected = 0; playerLaps[i] += 1; lapCounter.text = "Lap count: " + playerLaps[i]; } timeCounter.text = "Time: " + playerTimes[i].ToString(); } if (playerLaps[i] > lapAmount) { if (isAI) { playersFinished.Add(player.name); player.GetComponent().enabled = false; } else playersFinished.Add(player.name + " (player)"); player.GetComponent().enabled = false; playerTimesStr[i] = playerTimes[i].ToString(); } } // race finished if (playersFinished.Count() == players.Count()) { // if not finished DNF //TODO SceneManager.LoadScene("WinScreen"); } } }