public void CheckObjectCount()
        {
            var converter = new StepmaniaConverter("./Stepmania/Resources/chaoz-airflow.sm");
            var qua       = converter.ToQua().First();

            Assert.True(qua.HitObjects.Count >= 1);
        }
        public void ConvertToQua()
        {
            var converter = new StepmaniaConverter("./Stepmania/Resources/chaoz-airflow.sm");
            var quas      = converter.ToQua();

            Assert.Single(quas);
        }
 public void FailUponBadPath()
 {
     try
     {
         var converter = new StepmaniaConverter("bad-path-no-file");
         Assert.NotNull(converter);
     }
     catch (Exception e)
     {
         // passed.
     }
 }
예제 #4
0
        public ConvertSmCommand(string[] args) : base(args)
        {
            OutputPath = args[2];
            Directory.CreateDirectory(OutputPath);

            Converter = new StepmaniaConverter(args[1]);

            var quas = Converter.ToQua();

            for (var i = 0; i < quas.Count; i++)
            {
                quas[i].Save($"{OutputPath}/{i}.qua");
            }
        }
        public void ConvertToQuaFile()
        {
            var dir = "./tests/sm";

            Directory.CreateDirectory(dir);

            var converter = new StepmaniaConverter("./Stepmania/Resources/chaoz-airflow.sm");
            var quas      = converter.ToQua();


            for (var i = 0; i < quas.Count; i++)
            {
                quas[i].Save($"{dir}/{i}.qua");
            }
        }
예제 #6
0
        /// <summary>
        ///    Handles the conversion of a single .sm file
        /// </summary>
        public static void ConvertFile(string file, string extractDirectory)
        {
            var time       = (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).Milliseconds;
            var tempFolder = $@"{ConfigManager.DataDirectory}/Temp/{Path.GetFileNameWithoutExtension(file)} - {time}";

            if (Directory.Exists(tempFolder))
            {
                Directory.Delete(tempFolder, true);
            }

            try
            {
                var quaFiles = new StepmaniaConverter(file).ToQua();
                Directory.CreateDirectory(extractDirectory);

                for (var i = 0; i < quaFiles.Count; i++)
                {
                    var qua = quaFiles[i];

                    // Apparently sm can have backgrounds defaulted to files that end in -bg or just bg.
                    // this handles the case of if the background file is initially null in the .sm file
                    // and sets the appropriate background file to use.
                    if (string.IsNullOrEmpty(qua.BackgroundFile))
                    {
                        foreach (var f in Directory.GetFiles(Path.GetDirectoryName(file)))
                        {
                            var fileName = f.ToLower();

                            if (!fileName.EndsWith("bg.jpg") && !fileName.EndsWith("bg.jpeg") && !fileName.EndsWith("bg.png"))
                            {
                                continue;
                            }

                            qua.BackgroundFile = Path.GetFileName(f);
                            break;
                        }
                    }

                    qua.Save($"{extractDirectory}/{i}.qua");
                }

                foreach (var qua in quaFiles)
                {
                    // Copy over audio files
                    try
                    {
                        var path = $"{extractDirectory}/{qua.AudioFile}";

                        if (!File.Exists(path))
                        {
                            File.Copy($"{Path.GetDirectoryName(file)}/{qua.AudioFile}", path);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e, LogType.Runtime);
                    }

                    // Copy over background files.
                    try
                    {
                        var path = $"{extractDirectory}/{qua.BackgroundFile}";

                        if (!File.Exists(path))
                        {
                            File.Copy($"{Path.GetDirectoryName(file)}/{qua.BackgroundFile}", path);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e, LogType.Runtime);
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e, LogType.Runtime);
            }
        }