Exemplo n.º 1
0
        private static void ImportSound(AtsMotorNoise motorNoise, string path, string sectionName)
        {
            var directoryName = Path.GetDirectoryName(path);
            var soundTxt      = AtsParser.ParseIni(path, a => AtsStorage.ReadText(a));

            var keyValuePairs = soundTxt[sectionName].GetPairArray();


            var motorTrackList = new List <AtsMotorNoise.MotorTrack>();


            foreach (var keyValuePair in keyValuePairs)
            {
                var index    = int.Parse(keyValuePair.Key);
                var filePath = Path.Combine(directoryName, keyValuePair.Value);


                if (!File.Exists(filePath))
                {
                    AtsDebug.LogError(string.Format("{0}: The file does not exist: {1}, {2}", typeof(AtsMotorNoiseImporter).Name, index, filePath));
                    return;
                }

                var audio = new AtsMotorNoise.MotorAudio(new StreamReader(filePath).BaseStream);


                motorTrackList.Add(new AtsMotorNoise.MotorTrack(index, filePath, audio));
            }

            motorNoise.SetMotorTracks(motorTrackList.ToArray());
        }
Exemplo n.º 2
0
        public static string ReadText(string path)
        {
            if (!Path.IsPathRooted(path))
            {
                path = Path.Combine(AtsModule.ModuleDirectoryPath, path);
            }

            if (!File.Exists(path))
            {
                throw new FileNotFoundException($"{typeof(AtsStorage).Name}: The file does not exist: {path}");
            }

            AtsDebug.LogInfo($"{nameof(AtsStorage)}: ReadText: Load: {path}");


            var header    = string.Empty;
            var body      = string.Empty;
            var encoding  = Encoding.UTF8;
            var hasHeader = false;


            using (var streamReader = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
            {
                header = streamReader.ReadLine();
            }


            var match = Regex.Match(header.ToLower(), "bvets.+|version .+");

            if (match.Success)
            {
                hasHeader = true;

                match = Regex.Match(header.ToLower(), ":");

                if (match.Success)
                {
                    var headerLength = header.IndexOf(',');
                    var encodingName = (headerLength == -1 ? header : header.Substring(0, headerLength)).Substring(match.Index + 1);
                    encoding = Encoding.GetEncoding(encodingName);
                }
            }


            using (var streamReader = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), encoding))
            {
                if (hasHeader)
                {
                    streamReader.ReadLine();
                }

                body = streamReader.ReadToEnd();
            }


            return(body);
        }