public override void clearState() { lastLapTyreTemps = new TyreTemps(); thisLapTyreTemps = new TyreTemps(); lastStatus = TyreTempStatus.COLD; hasPlayedMessage = false; }
protected override void triggerInternal(Shared lastState, Shared currentState) { if (CommonData.isNewLap && CommonData.isSessionRunning) { if (currentState.CompletedLaps > 1) { if (lastLapTyreTemps == null) { clearState(); updateTyreTemps(currentState, lastLapTyreTemps); } lastLapTyreTemps.display(); // completed 2 laps, so now we have some comparison data TyreTempStatus tempStatus = lastLapTyreTemps.getStatus(); if (tempStatus != lastStatus || !hasPlayedMessage) { hasPlayedMessage = true; switch (tempStatus) { case TyreTempStatus.GOOD: audioPlayer.queueClip(folderGoodTemps, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_ALL_ROUND: audioPlayer.queueClip(folderHotAllRound, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_FRONTS: audioPlayer.queueClip(folderHotFronts, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_REARS: audioPlayer.queueClip(folderHotRears, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_LEFTS: audioPlayer.queueClip(folderHotLefts, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_RIGHTS: audioPlayer.queueClip(folderHotRights, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_LEFT_FRONT: audioPlayer.queueClip(folderHotLeftFront, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_LEFT_REAR: audioPlayer.queueClip(folderHotLeftRear, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_RIGHT_FRONT: audioPlayer.queueClip(folderHotRightFront, tyreTempMessageDelay, this); break; case TyreTempStatus.HOT_RIGHT_REAR: audioPlayer.queueClip(folderHotRightRear, tyreTempMessageDelay, this); break; case TyreTempStatus.COLD: Console.WriteLine("tyres are cold"); break; } lastStatus = tempStatus; } } lastLapTyreTemps = thisLapTyreTemps; thisLapTyreTemps = new TyreTemps(); } if (thisLapTyreTemps == null) { Console.WriteLine("resetting tyre temps data"); clearState(); } updateTyreTemps(currentState, thisLapTyreTemps); }
private void checkTemps(TyreTemps tyreTempsToCheck) { // only give a message if we've completed more than the minimum laps here if (tyreTempsToCheck != null) { tyreTempsToCheck.displayAverages(); TyreTempStatus tempsStatus = tyreTempsToCheck.getAverageTempStatus(); if (tempsStatus != lastReportedStatus) { String messageFolder = getMessage(tempsStatus); if (messageFolder != null) { Console.WriteLine("Reporting tyre temp status: " + tempsStatus); audioPlayer.queueClip(messageFolder, tyreTempMessageDelay, this); } lastReportedStatus = tempsStatus; } else { Console.WriteLine("No tyre temp status change: " + tempsStatus); } } }
private String getMessage(TyreTempStatus tempStatus) { switch (tempStatus) { case TyreTempStatus.GOOD: return folderGoodTemps; case TyreTempStatus.HOT_ALL_ROUND: return folderHotAllRound; case TyreTempStatus.HOT_FRONTS: return folderHotFronts; case TyreTempStatus.HOT_REARS: return folderHotRears; case TyreTempStatus.HOT_LEFTS: return folderHotLefts; case TyreTempStatus.HOT_RIGHTS: return folderHotRights; case TyreTempStatus.HOT_LEFT_FRONT: return folderHotLeftFront; case TyreTempStatus.HOT_LEFT_REAR: return folderHotLeftRear; case TyreTempStatus.HOT_RIGHT_FRONT: return folderHotRightFront; case TyreTempStatus.HOT_RIGHT_REAR: return folderHotRightRear; } return null; }
public override void clearState() { lastLapTyreTemps = null; thisLapTyreTemps = null; lastReportedStatus = TyreTempStatus.NO_DATA; lastReportedKnackeredTyreStatus = TyreWearStatus.NOT_TRIGGERED; lastReportedWornTyreStatus = TyreWearStatus.NOT_TRIGGERED; checkedTempsAtSector3 = false; leftFrontWear = 0; rightFrontWear = 0; leftRearWear = 0; rightRearWear = 0; reportedTyreWearForCurrentPitEntry = false; reportedEstimatedTimeLeft = false; }