public static void startRecordingPaceNotes(GameEnum gameEnum, String trackName, CarData.CarClassEnum carClass) { if (!isPlayingPaceNotes && !isRecordingPaceNotes) { Console.WriteLine("Recording a pace notes session for circuit " + trackName + " with car class " + carClass.ToString()); DriverTrainingService.gameEnum = gameEnum; DriverTrainingService.trackName = trackName; DriverTrainingService.carClass = carClass; if (carClass == CarData.CarClassEnum.UNKNOWN_RACE || carClass == CarData.CarClassEnum.USER_CREATED) { Console.WriteLine("Recording pace notes for any car class"); DriverTrainingService.folderPathForPaceNotes = getAnyCarFolderPath(gameEnum, trackName); } else { Console.WriteLine("Recording pace notes for car class " + carClass.ToString()); DriverTrainingService.folderPathForPaceNotes = getCarSpecificFolderPath(gameEnum, trackName, carClass); } Boolean createFolder = true; Boolean createNewMetaData = true; if (System.IO.Directory.Exists(folderPathForPaceNotes)) { createFolder = false; String fileName = System.IO.Path.Combine(folderPathForPaceNotes, "metadata.json"); if (File.Exists(fileName)) { try { DriverTrainingService.recordingMetaData = JsonConvert.DeserializeObject <MetaData>(File.ReadAllText(fileName)); Console.WriteLine("Pace notes for this game / track / car combination already exists. This will be extended"); createNewMetaData = false; } catch (Exception e) { Console.WriteLine("Unable to load existing metadata - renaming to 'broken_" + fileName + "', " + e.Message); File.Move(fileName, "broken_" + fileName); } } } if (createFolder) { System.IO.Directory.CreateDirectory(folderPathForPaceNotes); } if (createNewMetaData) { DriverTrainingService.recordingMetaData = new MetaData(gameEnum.ToString(), carClass.ToString(), trackName); } isRecordingPaceNotes = true; } }
public static Boolean loadPaceNotes(GameEnum gameEnum, String trackName, CarData.CarClassEnum carClass) { if (!isRecordingPaceNotes && !isPlayingPaceNotes) { Console.WriteLine("Playing pace notes for circuit " + trackName + " with car class " + carClass.ToString()); isRecordingPaceNotes = false; isRecordingSound = false; if (carClass != CarData.CarClassEnum.USER_CREATED && carClass != CarData.CarClassEnum.UNKNOWN_RACE) { DriverTrainingService.folderPathForPaceNotes = getCarSpecificFolderPath(gameEnum, trackName, carClass); if (!Directory.Exists(DriverTrainingService.folderPathForPaceNotes)) { Console.WriteLine("No pace notes folder exists for car class " + carClass + ", game " + gameEnum + ", track " + trackName + ". Checking for pace notes folder applicable to any car"); DriverTrainingService.folderPathForPaceNotes = getAnyCarFolderPath(gameEnum, trackName); if (!Directory.Exists(DriverTrainingService.folderPathForPaceNotes)) { Console.WriteLine("Unable to find any pace notes set for game " + gameEnum + ", track " + trackName); return(false); } } } else { DriverTrainingService.folderPathForPaceNotes = getAnyCarFolderPath(gameEnum, trackName); if (!Directory.Exists(DriverTrainingService.folderPathForPaceNotes)) { Console.WriteLine("Unable to find any pace notes set for game " + gameEnum + ", track " + trackName); return(false); } } String fileName = System.IO.Path.Combine(folderPathForPaceNotes, "metadata.json"); if (File.Exists(fileName)) { try { DriverTrainingService.recordingMetaData = JsonConvert.DeserializeObject <MetaData>(File.ReadAllText(fileName)); if (DriverTrainingService.recordingMetaData.description != null && !DriverTrainingService.recordingMetaData.description.Equals("")) { Console.WriteLine("Playing pace notes with description " + DriverTrainingService.recordingMetaData.description); } } catch (Exception e) { Console.WriteLine("Unable to parse pace notes metadata file: " + e.Message); return(false); } foreach (MetaDataEntry entry in DriverTrainingService.recordingMetaData.entries) { for (int i = 0; i < entry.recordingNames.Count; i++) { try { SoundCache.loadSingleSound(entry.recordingNames[i], System.IO.Path.Combine(DriverTrainingService.folderPathForPaceNotes, entry.fileNames[i])); } catch (Exception e) { Console.WriteLine("Unable to load a sound from pace notes set " + DriverTrainingService.folderPathForPaceNotes + " : " + e.Message); return(false); } } } isPlayingPaceNotes = true; } else { Console.WriteLine("No metadata.json file exists in the pace notes folder " + DriverTrainingService.folderPathForPaceNotes); } return(true); } else { if (isRecordingPaceNotes) { Console.WriteLine("A recording is already in progress, complete this first"); } else { Console.WriteLine("Already playing a session"); } return(false); } }
private static String getCarSpecificFolderPath(GameEnum gameEnum, String trackName, CarData.CarClassEnum carClass) { return(System.IO.Path.Combine(Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments), "CrewChiefV4", "pace_notes", makeValidForPathName(gameEnum.ToString()), makeValidForPathName(carClass.ToString()), makeValidForPathName(trackName))); }