Пример #1
0
        private void Convert(string inputFile, string savePath, bool all)
        {
            SngFile sngFile = new SngFile(inputFile);

            if (String.IsNullOrEmpty(sngFile.Metadata.Arrangement))
            {
                return; // Vocal
            }
            int maxDifficulty = Common.getMaxDifficulty(sngFile);

            int[] difficulties;
            if (all)
            {
                difficulties = Enumerable.Range(0, maxDifficulty + 1).ToArray();
            }
            else // if (max)
            {
                difficulties = new int[] { maxDifficulty }
            };

            foreach (int d in difficulties)
            {
                TabFile tabFile = new TabFile(sngFile, d);

                var outputFileName = (sngFile != null && sngFile.Metadata != null) ? String.Format("{0} - ", sngFile.Metadata.SongTitle) : "";
                outputFileName += Path.GetFileNameWithoutExtension(inputFile);
                outputFileName += (difficulties.Length != 1) ? String.Format(" (level {0:00}).txt", d) : ".txt";
                var outputFilePath = Path.Combine(savePath, outputFileName);

                using (TextWriter tw = new StreamWriter(outputFilePath))
                {
                    tw.Write(tabFile.ToString());
                }
            }
        }
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.Out.WriteLine("Syntax: sngtotab.exe [files]");
                return;
            }

            int difficulty = Common.MAX_DIFFICULTY_ONLY;

            try {
                foreach (string filename in args)
                {
                    if (filename.StartsWith("-l"))
                    {
                        string difficultyString = filename.Substring(2);
                        if (difficultyString.Equals("a", StringComparison.Ordinal))
                        {
                            difficulty = Common.ALL_DIFFICULTIES;
                        }
                        else if (difficultyString.Equals("m", StringComparison.Ordinal))
                        {
                            difficulty = Common.MAX_DIFFICULTY_ONLY;
                        }
                        else
                        {
                            difficulty = int.Parse(difficultyString);
                        }

                        continue;
                    }

                    SngFile sngFile = new SngFile(filename);

                    int maxDifficulty = Common.getMaxDifficulty(sngFile);

                    int[] difficulties;
                    switch (difficulty)
                    {
                    case Common.MAX_DIFFICULTY_ONLY:
                        difficulties = new int[] { maxDifficulty };
                        break;

                    case Common.ALL_DIFFICULTIES:
                        difficulties = Enumerable.Range(0, maxDifficulty + 1).ToArray();
                        break;

                    default:
                        difficulties = new int[] { difficulty };
                        break;
                    }

                    foreach (int d in difficulties)
                    {
                        TabFile tabFile = new TabFile(sngFile, d);

                        string outputFilename;
                        if (filename.EndsWith(".sng"))
                        {
                            outputFilename = filename.Substring(0, filename.Length - 4) + "." + d + ".txt";
                        }
                        else
                        {
                            outputFilename = filename + "." + d + ".txt";
                        }
                        TextWriter tw = new StreamWriter(outputFilename);
                        tw.Write(tabFile.ToString());
                        tw.Close();
                    }
                }
                Console.WriteLine("The conversion is complete.");
            } catch (Exception ex) {
                Console.WriteLine("Error occurred: " + ex.Message + Environment.NewLine + ex.InnerException);
            }
        }