/// <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); } } } } }
// public CarLibrary carLib; // Use this for initialization void Start () { lastUpdate = Time.time; REF = this; Time.timeScale = 1f; carCamera = GameObject.Find("Main_Camera").GetComponent<IRDSCarCamera>(); levLoad = GameObject.Find ("LevelLoad").GetComponent<IRDSLevelLoadVariables>(); levLoad.laps = 3; //Screen.SetResolution(640, 480, true); carCamera.ActivateRoadCamera (); if (TeamDatabase.REF == null) { return; } GameObject light = GameObject.Find("Directional Light"); Light dl = light.GetComponent<Light>(); switch(SettingsScreen.shadowLevel) { case(0):dl.shadows = LightShadows.None;break; case(1):dl.shadows = LightShadows.Hard;break; case(2):dl.shadows = LightShadows.Soft;break; } NGUIDisabler.PAUSED_TIME_SCALE = 0.1f; // Time.timeScale = 4; manager = GameObject.Find ("IRDSManager").GetComponent<IRDSManager> (); statistics =manager.GetComponentInChildren<IRDSStatistics>(); statistics.startRaceManually = true; // statistics.StartTheRace(); carCamera = manager.GetComponentInChildren<IRDSCarCamera>(); placeCars = manager.gameObject.GetComponentInChildren<IRDSPlaceCars> (); // BetterList<IRDSCarControllerAI> allCars = new BetterList<IRDSCarControllerAI> (); genericRaceGUI = GameObject.Find("GenericRaceGUI"); UILabel totalLaps = GameObject.Find("LAP").GetComponent<UILabel>(); driver1Label = GameObject.Find("DriverMessage1").GetComponent<UILabel>(); driver2Label = GameObject.Find("DriverMessage2").GetComponent<UILabel>(); simSpeedBtn = GameObject.Find("SimSpeedButton").GetComponent<UIButton>(); simSpeedLbl = GameObject.Find("SimSpeedButton").GetComponent<UILabel>(); simSpeedBtn.onClick.Add(new EventDelegate(this,"onSimSpeedChange")); if(genericRaceGUI!=null) { genericRaceGUI.gameObject.SetActive(false); } List<GTDriver> driversInRace = ChampionshipRaceSettings.ACTIVE_RACE.driversForRace(); totalLaps.text = "/ "+this.levLoad.laps; GameObject raceStarters = GameObject.Find("RaceLineupPanel"); if(raceStarters!=null) { raceStartersTable = raceStarters.GetComponent<RaceStarterTable>(); raceStartersTable.activate(driversInRace); } for(int i = 0;i<this.fv.Count;i++) { fv[i].enabled = true; } if(levLoad.raceStartType!=IRDSLevelLoadVariables.RaceStartType.Rolling) { StartCoroutine(makeCars()); } else { raceStartersTable.allowRaceStart(); } // }
void Awake(){ defaultLevelload = GameObject.FindObjectOfType(typeof(IRDSLevelLoadVariables)) as IRDSLevelLoadVariables; originalCars = defaultLevelload.CarsForRace.Clone() as GameObject[]; defaultCarsPath = new List<IRDSLevelLoadVariables.IRDSCarsPaths>(defaultLevelload.preloadedCarsPath); originalCarFolders = defaultLevelload.carsFolders.Clone() as string[]; endRaceResultWindowRect =new Rect(Screen.width/2f-350,Screen.height/2f-250,700,500); }