예제 #1
0
        static void PlayBMSChart(object obj)
        {
            Chart.EventDispatcher dispatcher = obj as Chart.EventDispatcher;
            DateTime startDateTime           = DateTime.Now;

            for (TimeSpan current = TimeSpan.Zero, end = dispatcher.EndTime + TimeSpan.FromSeconds(1); current <= end; current = DateTime.Now - startDateTime)
            {
                dispatcher.Seek(current);
                Thread.Sleep(0);
            }
        }
예제 #2
0
        static void ParseFile(string path)
        {
            FileInfo fileInfo = new FileInfo(path);

            if (!fileInfo.Exists)
            {
                Console.WriteLine("{0} does not exists. ", fileInfo.Name);
                return;
            }

            Console.WriteLine("File: {0}", fileInfo.Name);
            string fileContent = LoadFileContent(fileInfo);

            Chart chart;

            switch (fileInfo.Extension.ToLower())
            {
            case ".bms":
            case ".bme":
            case ".bml":
            case ".pms":
                chart = new BMSChart(fileContent);
                break;

            case ".bmson":
                chart = new BmsonChart(fileContent);
                break;

            default:
                Console.WriteLine("Unknown file type {0}.", fileInfo.Extension);
                return;
            }
            chart.Parse(ParseType.Header | ParseType.Content | ParseType.Resources);
            LoadAllResources(chart, fileInfo);

            Console.WriteLine("BMS Meta Data:");
            Console.WriteLine("Title: {0}\n{1}", chart.Title, chart.SubTitle);
            Console.WriteLine("Artist: {0}\n{1}", chart.Artist, chart.SubArtist);
            Console.WriteLine("Genre: {0}", chart.Genre);
            Console.WriteLine("Comments: {0}", chart.Comments);
            Console.WriteLine("Level: {0} (Rank {1})", chart.PlayLevel, chart.Rank);
            Console.WriteLine("BPM: {0} (Min. {1})", chart.BPM, chart.MinBPM);
            Console.WriteLine("Maximum Combos: {0}", chart.MaxCombos);
            Console.WriteLine("Duration: {0}", GetLength(chart));
            Console.WriteLine("Randomized: {0}", chart.Randomized);

            float min, max, average, mean;

            CountDensity(chart, out min, out max, out average, out mean);
            Console.WriteLine("Note Density (Notes per second): ({0} ~ {1})\nAverage {2} Mean {3}", min, max, average, mean);

            Console.ReadKey(true);

            Console.WriteLine();

            Chart.EventDispatcher dispatcher = chart.GetEventDispatcher();
            dispatcher.BMSEvent += OnBmsEvent;
            PlayBMSChart(dispatcher);

            Console.WriteLine();
            Console.WriteLine();
        }