/// <summary> /// Gets the random car team. /// </summary> /// <returns> /// The random car team. /// </returns> /// <param name='championshipTeams'> /// Championship teams. /// </param> public string GetRandomCarTeam(ChampionShipData.ChampionShipTeam championshipTeams, bool checkAI, bool checkPlayer) { List<string> carList = new List<string>(); if (championshipTeams.teamCars.teamCars.Count>0) { for (int i = 0; i < championshipTeams.teamCars.teamCars.Count;i++){ if (championshipTeams.teamCars.teamCars[i].enabled && ((!checkAI || (checkAI && championshipTeams.teamCars.teamCars[i].enabledForAI)) &&(!checkPlayer || (checkPlayer &&championshipTeams.teamCars.teamCars[i].enabledForPlayers)))) for (int w = 0; w < championshipTeams.teamCars.teamCars[i].preloadedCarsPath.Count;w++){ string[] carStrings = championshipTeams.teamCars.teamCars[i].preloadedCarsPath[w].Split('\\'); carList.Add(carStrings[carStrings.Length-1]); } } } if (championshipTeams.teamCars.carsArray.Length>0) { for (int i =0; i < championshipTeams.teamCars.carsArray.Length;i++) { carList.Add(championshipTeams.teamCars.carsArray[i].name); } } return carList[Random.Range(0,carList.Count)]; }
/// <summary> /// Applies the champion ship to level load. You have to setup the championship player before running this method. /// </summary> /// <param name="levelLoad">Level load.</param> /// <param name="selectedChampionShip">Selected champion ship.</param> public void ApplyChampionShipToLevelLoad(IRDSLevelLoadVariables levelLoad, ChampionShipData selectedChampionShip) { //We set to the currentChampionShip singleton the current championship fur future reference when the race ends currentChampionShip = selectedChampionShip; //We set here the current track to race for this championship levelLoad.trackToRace = selectedChampionShip.championshipTracks[selectedChampionShip.currentTrack].sceneName; levelLoad.laps = selectedChampionShip.championshipTracks[selectedChampionShip.currentTrack].laps; //Set all car folders available to disabled for (int i = 0; i < levelLoad.preloadedCarsPath.Count;i++){ levelLoad.preloadedCarsPath[i].enabled = false; levelLoad.preloadedCarsPath[i].enabledForAI = false; levelLoad.preloadedCarsPath[i].enabledForPlayers = false; } //Clean all assigned drivers on the levelload object, since every championship have its own //AI drivers levelLoad.carsDrivers = new List<AICarsDrivers>(); levelLoad.assignCarsToAIDrivers = true; int playerIndex =0; for (int i = 0; i < championShipDrivers.Count; i++) { if (championShipDrivers[i].imPlayer) { championShipDrivers[i].AIcarsDrivers.driverName = levelLoad.playerName; playerIndex = i; } } if (!championshipTeams[playerSelectedTeam].teamDrivers.Contains(playerIndex)) championshipTeams[playerSelectedTeam].teamDrivers.Add(playerIndex); //Team loop for (int teamsIndex = 0; teamsIndex < selectedChampionShip.championshipTeams.Count;teamsIndex++){ // Car in this team loop int currentTeam = selectedChampionShip.championshipTeams[teamsIndex]; for (int teamCarsIndex = 0; teamCarsIndex < championshipTeams[currentTeam].teamCars.teamCars.Count;teamCarsIndex++){ //Car in levelload loop, to search if they are in there and enable them bool found = false; if (championshipTeams[currentTeam].teamCars.teamCars.Count>0) { levelLoad.preloadCarsEnabled = true; for (int i = 0; i < levelLoad.preloadedCarsPath.Count;i++){ if (levelLoad.preloadedCarsPath[i].folderName == championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].folderName) { found = true; levelLoad.preloadedCarsPath[i].enabled = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabled; levelLoad.preloadedCarsPath[i].enabledForAI = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabledForAI; levelLoad.preloadedCarsPath[i].enabledForPlayers = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabledForPlayers; if (championshipTeams[currentTeam].isPlayerAssignedToTeam && championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabledForPlayers && levelLoad.selectedCar == ""){ //We check if the actual car that the player selected is available on the team bool currentlySelectedCarExists = false; for (int r = 0; r < championshipTeams[currentTeam].teamCars.teamCars.Count; r++){ for (int w = 0; w < championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath.Count;w++) { string[] carStrings = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath[w].Split('\\'); if (carStrings[carStrings.Length-1] == levelLoad.selectedCar) currentlySelectedCarExists = true; } } if (!currentlySelectedCarExists){ int selectedFolder = Random.Range(0,championshipTeams[currentTeam].teamCars.teamCars.Count); int selectedCar = Random.Range(0,championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath.Count); string[] carStrings = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath[selectedCar].Split('\\'); levelLoad.selectedCar = carStrings[carStrings.Length-1]; } } // else levelLoad.preloadedCarsPath[i].enabledForPlayers = false; } } //If the path have not been found, we add it if (!found) { IRDSLevelLoadVariables.IRDSCarsPaths carPath = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex]; carPath.enabled = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabled; carPath.enabledForAI = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabledForAI; carPath.enabledForPlayers = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabledForPlayers; if (carPath.enabledForPlayers && championshipTeams[currentTeam].isPlayerAssignedToTeam && levelLoad.selectedCar == ""){ //We check if the actual car that the player selected is available on the team bool currentlySelectedCarExists = false; for (int r = 0; r < championshipTeams[currentTeam].teamCars.teamCars.Count; r++){ for (int w = 0; w < championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath.Count;w++) { string[] carStrings = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath[w].Split('\\'); if (carStrings[carStrings.Length-1] == levelLoad.selectedCar) currentlySelectedCarExists = true; } } if (!currentlySelectedCarExists){ int selectedFolder = Random.Range(0,championshipTeams[currentTeam].teamCars.teamCars.Count); int selectedCar = Random.Range(0,championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath.Count); carPath.enabledForAI = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].enabledForAI; string[] carStrings = championshipTeams[currentTeam].teamCars.teamCars[teamCarsIndex].preloadedCarsPath[selectedCar].Split('\\'); levelLoad.selectedCar = carStrings[carStrings.Length-1]; } } // else carPath.enabledForPlayers = false; levelLoad.preloadedCarsPath.Add(carPath); } } if (championshipTeams[currentTeam].teamCars.carsArray.Length>0) { for (int i = 0; i < championshipTeams[currentTeam].teamCars.carsArray.Length;i++) { System.Array.Resize<GameObject>(ref levelLoad.CarsForRace,levelLoad.CarsForRace.Length+1); levelLoad.CarsForRace[levelLoad.CarsForRace.Length-1] = championshipTeams[currentTeam].teamCars.carsArray[i]; } } } //We add now all the AI drivers we have on this ChampionShip to the levelload, //Also we activate the assignCarsToAIDrivers option so the System would use //The preassigned AI drivers we have on this ChampionShip and that we are going to //Pass to the levelload object below for (int i = 0; i < championshipTeams[currentTeam].teamDrivers.Count;i++){ //We check here if on this team is the player and if it replaces the first AI of the team int driverIndex = championshipTeams[currentTeam].teamDrivers[i]; if (!championShipDrivers[driverIndex].imPlayer){ bool test = ( championshipTeams[currentTeam].isPlayerAssignedToTeam && ((!championshipTeams[currentTeam].playerReplacesFirstAI ) ||(championshipTeams[currentTeam].playerReplacesFirstAI && i >0))) ||!championshipTeams[currentTeam].isPlayerAssignedToTeam; if (test){ levelLoad.carsDrivers.Add(championShipDrivers[championshipTeams[currentTeam].teamDrivers[i]].AIcarsDrivers); levelLoad.carsDrivers[levelLoad.carsDrivers.Count-1].car = GetRandomCarTeam(championshipTeams[currentTeam],true,false); } } } } }