Example #1
0
	/// <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)];
	}
Example #2
0
	/// <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);
					}
				}

			}
			
		}
		
		
		
	}