private int finishPositionSort(RacingAI a1,RacingAI a2) { if(a1.finishPoints>a2.finishPoints) { return -1; } else if(a1.finishPoints<a2.finishPoints) { return 1; } return 0; }
public ErrorState (float aHumanError,RacingAI aAI) { framesOfError = Convert.ToInt32(aHumanError*1000); corneringSpeedEffector = 1000f*UnityEngine.Random.Range(0,aHumanError); brakeAggressionEffector = aHumanError; backToLineError = -0.25f*aHumanError; }
public SectorTimeTriplet (IRDSCarControllerAI aCar,RacingAI aCustomAI) { car = aCar; customAI = aCustomAI; lapNumber = aCar.GetLap(); time = aCar.GetCurrentLapTime(); timeString = aCar.GetCurrentLapTimeString(); totalTime = aCar.GetCurrentTotalRaceTime(); }
// Use this for initialization public void addEffectToCar(RacingAI aAI,IRDSWing[] aWings) { IRDSCarControllerAI ai = aAI.GetComponent<IRDSCarControllerAI>(); IRDSDrivetrain driveTrain = aAI.GetComponent<IRDSDrivetrain>(); //IRDSCarControllInput controlInput = aAI.GetComponent<IRDSCarControllInput>(); if(humanErrorPercent!=0f) ai.SetHumanError(ai.GetHumanError()*humanErrorPercent); ai.SetHumanError(ai.GetHumanError()+humanErrorModifier); aAI.engineWearPerFrame += engineWearAdd; if(corneringSpeedFactorPercent!=0f) ai.SetCorneringSpeedFactor(aAI.originalCorneringSpeed*corneringSpeedFactorPercent); if(aggressionOnBrakingPercent!=0f) ai.SetAggressivenessOnBrake(aAI.originalBrakingAggressiveness*aggressionOnBrakingPercent); ai.SetOvertakeSpeedDiference(aAI.originalOvertakeSpeedDiff+overtakeSpeedDiffModifier); if(overtakeFactorPercent!=0f) ai.SetOvertakeFactor(aAI.originalOvertakeFactor*overtakeFactorPercent); aAI.staminaDecrementer = staminaDecrementer; if(horsePowerMultiplier!=0f) { float newPower = aAI.originalPower*horsePowerMultiplier; if(float.IsNaN(newPower)) { Debug.LogError("New Power is NaN: "+aAI.originalPower+","+horsePowerMultiplier); } else driveTrain.SetMaxPower(newPower); } if(torqueMultiplier!=0f) { float newMaxTorque = aAI.originalTorque*torqueMultiplier; if(float.IsNaN(newMaxTorque)) { Debug.LogError("New Torque is NaN: "+aAI.originalTorque+","+torqueMultiplier); } else driveTrain.SetMaxTorque(newMaxTorque); } if(float.IsNaN(driveTrain.GetRPM())) { Debug.LogError("RPM is now NaN!"); } if(changeUpMultiplier!=0f) { float newShiftRange = changeUpMultiplier; // Debug.Log ("new shift range is: "+newShiftRange+" car is: "+aAI.gameObject.name); if(newShiftRange>0.97f) { newShiftRange = 0.97f; } ai.shiftUpFactor = newShiftRange; } /* aWings[0].SetLiftCoefficient(aWings[0].GetLiftCoefficient()+frontWingAddition); aWings[1].SetLiftCoefficient(aWings[1].GetLiftCoefficient()+rearWingAddition);*/ }
public void finish() { try { Destroy(this.btnDoOrDieEngine1.gameObject); Destroy(this.btnDriveNormalEngine1.gameObject); Destroy(this.btnTakeItEasyEngine1.gameObject); if(changeCars!=null) { Destroy(this.changeCars.gameObject); Destroy(this.changeCamera.gameObject); } } catch(Exception e) { } selectedCar = null; carInterface.finish(); }
public void applyPartToCar(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aAI,RacingAI aRacingAI) { for(int i = 0;i<activeLevel;i++) { aDriveTrain.SetTurboPSI(aDriveTrain.GetTurboAirPresure()+researchRow._effectonturbopsi); float hpToKW = 745.699872f; aDriveTrain.SetMaxPower(aDriveTrain.GetOriginalPower()+researchRow._effectonhp*hpToKW); aDriveTrain.SetMaxTorque(aDriveTrain.GetMaxTorque()+researchRow._effectontorque); aRacingAI.nitrosRemaining += (byte) researchRow._effectonnitrocapacity; aDriveTrain.ShiftSpeed += researchRow._effectonshiftspeed; if(aDriveTrain.ShiftSpeed<0) { aDriveTrain.ShiftSpeed = 0.01f; } IRDSAerodynamicResistance ar = aDriveTrain.gameObject.GetComponent<IRDSAerodynamicResistance>(); Vector3 coefficients = ar.GetCoefficients(); coefficients.z -= researchRow._bodyaerodragreduce; if(coefficients.z<0.001f) { coefficients.z = 0.001f; } ar.SetCoefficients(coefficients); aAI.SetHumanError(aAI.GetHumanError()-researchRow._humanerrorreductor); aRacingAI.engineTempMonitor.engineBlowupTemp += researchRow._coolingmaxtempeffect; aRacingAI.engineTempMonitor.baseCooling += researchRow._coolingbaseeffect; if(float.IsNaN(aRacingAI.engineTempMonitor.baseCooling)||float.IsNaN(aRacingAI.engineTempMonitor.engineBlowupTemp)) { Debug.Log ("STOP!"); } /* IRDSWheel[] wheels = aRacingAI.wheels; for(int c = 0;c<wheels.Length;c++) { wheels[c].SetGrip(wheels[c].GetGrip()+researchRow._tirecoefficientofgripchange); }*/ aRacingAI.nitroFerocity += researchRow._effectonnitrodurability; aRacingAI.nitroFuel += researchRow._effectonnitrofuel; } }
public void init(RacingAI aDriver,int aPosition) { driver = aDriver; if(positionLabel==null) { UILabel[] childLabels = this.GetComponentsInChildren<UILabel>(); for(int i = 0;i<childLabels.Length;i++) { if(childLabels[i].gameObject.name=="FinisherPosition") { positionLabel = childLabels[i]; } if(childLabels[i].gameObject.name=="FinisherName") { nameLabel = childLabels[i]; } if(childLabels[i].gameObject.name=="FinisherDetail") { prizeInfo = childLabels[i]; } } } string pos = (aPosition+1)+". "; this.positionLabel.text = pos; this.nameLabel.text = aDriver.driverName+" "+ChampionshipSeason.ACTIVE_SEASON.getTeamFromDriver(aDriver.driverRecord).teamName; this.prizeInfo.text = aDriver.finishTimeString; }
public void Update(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aCarController,IRDSCarControllInput aInput,RacingAI aAI) { // First, we add the heat from the current RPM if(aDriveTrain==null) { return; } float currentRPM = aDriveTrain.GetRPM(); float originalMinRPM = aDriveTrain.GetOriginalMinRPM(); if(!float.IsNaN(currentRPM)) { float tempToAdd = (((float) Math.Pow(currentRPM/(aDriveTrain.revLimiterRPM-originalMinRPM),5))/15f)/2; currentTemperature += tempToAdd; // Just for montioring in Unity IDE lastHeat = tempToAdd; lastRPMPercent = aDriveTrain.GetRPM()/aDriveTrain.revLimiterRPM; } // Is the cars cooler "on" (yes if temperature is above perfect temperature)? if(currentTemperature>perfectTemperature) { // The faster we're going, the more cooling, car coolers + we get the base cooling amount float currentSpeed = aInput.GetCarSpeed(); if(currentSpeed>maxCoolingSpeed) { currentSpeed = maxCoolingSpeed; } float tempToTake = (((float) Math.Pow(currentSpeed/maxCoolingSpeed,4))/8f+this.baseCooling)/2; currentTemperature -= tempToTake; lastCool = tempToTake; } percentTempRange= (currentTemperature-perfectTemperature)/(engineBlowupTemp-perfectTemperature); if(percentTempRange>maxTempPercent) { // Just for monitoring in Unity IDE maxTempPercent = percentTempRange; } if(hasFailed) { return; } if(percentTempRange<0.70f) { if(aAI.engineFailure!=EEngineFailureStage.Normal) { aAI.engineFailure = EEngineFailureStage.Normal; aAI.setEngineFailureStage(); this.isTooHot = false; this.isOverheating = false; this.isGettingHot = false; } } else if(percentTempRange<0.85f) { if(aAI.engineFailure!=EEngineFailureStage.Hot) { aAI.engineFailure = EEngineFailureStage.Hot; aAI.setEngineFailureStage(); this.isGettingHot = true; this.isTooHot = false; this.isOverheating = false; } } else if(percentTempRange<1f) { if(aAI.engineFailure!=EEngineFailureStage.VeryHot) { aAI.engineFailure = EEngineFailureStage.VeryHot; aAI.setEngineFailureStage(); this.isGettingHot = false; this.isTooHot = false; this.isOverheating = true; } } else { if(aAI.engineFailure!=EEngineFailureStage.Failed) { hasFailed = true; aAI.engineFailure = EEngineFailureStage.Failed; aAI.setEngineFailureStage(); this.isGettingHot = false; this.isTooHot = true; this.isOverheating = true; } } }
public void HandleNewFinisher(RacingAI aRacingAI) { finishers.Add(aRacingAI); GTTeam team = ChampionshipSeason.ACTIVE_SEASON.getTeamFromDriver(aRacingAI.driverRecord); team.cash += ChampionshipRaceSettings.ACTIVE_RACE.prizeForPosition(finishers.size,this.maxCars);; aRacingAI.prizeString = ""+ChampionshipRaceSettings.ACTIVE_RACE.prizeForPosition(finishers.size,this.maxCars); aRacingAI.prize = ChampionshipRaceSettings.ACTIVE_RACE.prizeForPosition(finishers.size,this.maxCars); aRacingAI.won = finishers.size==1; aRacingAI.finishPoints = ChampionshipRaceSettings.ACTIVE_RACE.pointsForDriverPosition(finishers.size); aRacingAI.driverRecord.lastRacePoints = aRacingAI.finishPoints; aRacingAI.driverRecord.championshipPoints += aRacingAI.finishPoints; GTTeam owningTeam = ChampionshipSeason.ACTIVE_SEASON.getTeamFromDriver(aRacingAI.driverRecord); if(finishers.size==1) { timeUntilForcedFinish = 45; owningTeam.seasonWins++; } owningTeam.addPoints(aRacingAI.finishPoints,finishers.size); activeCarsCount--; if(activeCarsCount==0) { Debug.Log ("Race Finished!"); this.teamController.finish(); findAndDestroyGameObjectIfExists("PositionArea"); findAndDestroyGameObjectIfExists("TopMiddleArea"); findAndDestroyGameObjectIfExists("LapArea"); findAndDestroyGameObjectIfExists("BottomArea"); findAndDestroyGameObjectIfExists("CarBehindLabel"); findAndDestroyGameObjectIfExists("CarInfrontLabel"); findAndDestroyGameObjectIfExists("SimSpeedButton"); Destroy(this.minimapObject); if(this.racePositions!=null) Destroy(this.racePositions.gameObject); RandomEvent r = ChampionshipSeason.ACTIVE_SEASON.leagueForTeam(ChampionshipSeason.ACTIVE_SEASON.getUsersTeam()).getRandomEventCompletingOnDay(ChampionshipSeason.ACTIVE_SEASON.secondsPast); if(r!=null) { if(r.eventType==ERandomEventType.FinishAheadOf) { if(pointsForTeamInRace(r.targetTeam)<pointsForTeamInRace(ChampionshipSeason.ACTIVE_SEASON.getUsersTeam())) { // User has won their bet RaceFinisherTable.betWon = r.rewardCash*2; DialogueLua.SetVariable("RandomEventStringMessage",r.wonAlert); //DialogueManager.ShowAlert(r.wonAlert); activateFinishersOnClose = true; this.doConversation("RandomEventComplete"); } else { DialogueLua.SetVariable("RandomEventStringMessage",r.lostAlert); RaceFinisherTable.betWon = r.rewardCash*-1; activateFinishersOnClose = true; this.doConversation("RandomEventComplete"); } StartCoroutine(delayToActivateFinishers()); return; } } else { RaceFinisherTable.betWon = 0; } raceFinisherTable.activate(finishers); } }
public void initHumanCar(IRDSCarControllerAI aCar) { if(carCamera==null) { carCamera = GameObject.Find ("Main_Camera").GetComponent<IRDSCarCamera> ();; if(GameObject.Find("RaceStartCamera")!=null) { carCamera.GetComponent<Camera>().enabled = false; raceStartCamera = GameObject.Find ("RaceStartCamera").GetComponent<Camera>();; } } RacingAI thisCarsAI = aCar.GetComponent<RacingAI>(); thisCarsAI.aiInput = aCar.GetComponent<IRDSCarControllInput>(); racingAIs.Add(thisCarsAI); if(selectedCar==null) { selectedCar = thisCarsAI; selectedCar.aiInput = selectedCar.GetComponent<IRDSCarControllInput>(); selectedCar.aiCar.onRaceStart += onStartedRace; carCamera.changeTarget(selectedCar.aiInput.GetInstanceID()); } if(racingAIs.Count==2) { changeCar(); } if(carInterface==null) { carInterface = GameObject.Find("IndividualRaceInterface").GetComponent<IndividualCarInterfaceManager>(); } carInterface.targetAI = selectedCar; }
public void changeCar() { if(selectedCar == null) { selectedCar = racingAIs[1]; } if (selectedCar.driverRecord.id==racingAIs[0].driverRecord.id) { carCamera.changeTarget(racingAIs[1].aiInput.GetInstanceID()); selectedCar = racingAIs[1]; } else { carCamera.changeTarget(racingAIs[0].aiInput.GetInstanceID()); selectedCar = racingAIs[0]; } if(currentlyViewingTween!=null) { currentlyViewingTween.ResetToBeginning(); currentlyViewingTween.enabled = true; currentlyViewingLabel.text = "NOW VIEWING "+selectedCar.driverName.ToUpper(); changeCameraIcon(); } else this.initButtons(); carInterface.targetAI = selectedCar; }
public void initDriversFace(RacingAI aAI) { GTTeam team = ChampionshipSeason.ACTIVE_SEASON.getUsersTeam(); int indexForThis = team.indexForDriver(aAI.driverRecord); string findThis = "DriverFace2"; if(indexForThis==0) { findThis = "DriverFace1"; } GameObject f = GameObject.Find (findThis); if(f!=null) { DriverFaceManager m = f.GetComponent<DriverFaceManager>(); RacingAI ai = aAI; m.init(ai); } }
public void applyResearchToCar(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aAI,RacingAI aRacingAI) { for(int i = 0;i<this.rndParts.Count;i++) { rndParts[i].applyPartToCar(aDriveTrain,aAI,aRacingAI); } }
public void initLibraryValues(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aAI,RacingAI aRacingAI) { float hpToKW = 745.699872f; aDriveTrain.SetMaxPower(carHP*hpToKW); aDriveTrain.SetPowerRPM(this.carLibRecord.carHPRPM); aDriveTrain.SetMaxTorque(this.carTorque); aDriveTrain.SetTorqueRPM(this.carLibRecord.carTorqueRPM); aDriveTrain.ShiftSpeed = this.shiftSpeed; aAI.spdLimit = (float) this.carMaxSpeed; aRacingAI.nitrosRemaining = (byte) this.nitroCapacity; // aDriveTrain.SetEngineOrientation(Vector3.up); }
public void init(RacingAI aAI) { faceSprite.sprite2D = aAI.driverRecord.record.sprite; driverName.text = aAI.driverName; aAI.messageHolder = this; racingAIRef = aAI; this.btnEngineEasy.onClick.Add(new EventDelegate(this,"onEngineEasy")); this.btnEngineNormal.onClick.Add(new EventDelegate(this,"onEngineNormal")); this.btnEngineHard.onClick.Add(new EventDelegate(this,"onEngineHard")); this.btnTyresEasy.onClick.Add(new EventDelegate(this,"onTyresEasy")); this.btnTyresNormal.onClick.Add(new EventDelegate(this,"onTyresNormal")); this.btnTyresHard.onClick.Add(new EventDelegate(this,"onTyresHard")); this.btnNitro.onClick.Add (new EventDelegate(this,"onUseNitro")); remainingNitros.text = ""+aAI.nitrosRemaining; }
// Use this for initialization void Start() { followcam = GameObject.Find("FollowCam").GetComponent <FollowCam>(); vehicleList = new GameObject[transform.childCount]; for (int i = 0; i < transform.childCount; i++) { vehicleList[i] = transform.GetChild(i).gameObject; } switch (PlayerPrefs.GetInt("VehicleSelected")) { case 1: print("1"); foreach (GameObject g in vehicleList) { if (!g.name.Equals("truckFinal")) { g.tag = "AI"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = true; motor.enabled = false; //g.SetActive(false); } else { g.tag = "Player"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = false; motor.enabled = true; followcam.target = g.transform; speedometer.car = g; } } break; case 2: print("2"); foreach (GameObject g in vehicleList) { if (!g.name.Equals("sportFinal")) { g.tag = "AI"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = true; motor.enabled = false; //g.SetActive(false); } else { g.tag = "Player"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = false; motor.enabled = true; followcam.target = g.transform; speedometer.car = g; } } break; case 3: print("3"); foreach (GameObject g in vehicleList) { if (!g.name.Equals("limoFinal")) { g.tag = "AI"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = true; motor.enabled = false; //g.SetActive(false); } else { g.tag = "Player"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = false; motor.enabled = true; followcam.target = g.transform; speedometer.car = g; } } break; case 0: print("4"); foreach (GameObject g in vehicleList) { if (!g.name.Equals("muscleFinal")) { g.tag = "AI"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = true; motor.enabled = false; //g.SetActive(false); } else { g.tag = "Player"; ai = g.GetComponent <RacingAI>(); motor = g.GetComponent <MLP_HoverMotor>(); ai.enabled = false; motor.enabled = true; followcam.target = g.transform; speedometer.car = g; } } break; } }