예제 #1
0
        private void ExportTxt()
        {
            var r = saveFileDialog.ShowDialog(this);

            if (r == DialogResult.Cancel)
            {
                return;
            }

            _score.UpdateNoteHitTimings();

            var difficulty = (Difficulty)(cboDifficulty.SelectedIndex + 1);
            var title      = txtTitle.Text;
            var composer   = txtComposer.Text;
            var lyricist   = txtLyricist.Text;
            var bg         = txtBgFile.Text;
            var song       = txtSongFile.Text;
            var level      = Convert.ToInt32(txtLevel.Text);
            var color      = (MusicColor)(1 << cboColor.SelectedIndex);
            var bgmVolume  = Convert.ToInt32(txtBgmVolume.Text);
            var seVolume   = Convert.ToInt32(txtSeVolume.Text);

            using (var fileStream = File.Open(saveFileDialog.FileName, FileMode.Create, FileAccess.Write, FileShare.Write)) {
                using (var writer = new StreamWriter(fileStream, Encoding.UTF8)) { // Use the encoding instance with BOM (this is important)
                    DelesteHelper.WriteDelesteBeatmap(writer, _score, difficulty, title, composer, lyricist, bg, song, level, color, bgmVolume, seVolume);
                }
            }

            var reportMessageTemplate = LanguageManager.TryGetString("messages.fexporttxt.txt_score_exported") ?? "The score is exported to '{0}'.";
            var reportMessage         = string.Format(reportMessageTemplate, saveFileDialog.FileName);

            MessageBox.Show(this, reportMessage, AssemblyHelper.GetTitle(), MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
예제 #2
0
 public static void ExportToDelesteBeatmap(Score score, string fileName)
 {
     using (var fileStream = File.Open(fileName, FileMode.Create, FileAccess.Write)) {
         using (var streamWriter = new StreamWriter(fileStream, Encoding.UTF8)) {
             streamWriter.NewLine = Constants.NewLine;
             DelesteHelper.WriteBeatmapHeader(score, streamWriter);
             DelesteHelper.WriteEntries(score, streamWriter);
         }
     }
 }
예제 #3
0
        public static Score LoadFromDelesteBeatmap(Project temporaryProject, Difficulty difficulty, string fileName, out string[] warnings, out bool hasErrors)
        {
            warnings  = null;
            hasErrors = false;
            var encoding = DelesteHelper.TryDetectBeatmapEncoding(fileName);

            using (var fileStream = File.Open(fileName, FileMode.Open, FileAccess.Read)) {
                using (var streamReader = new StreamReader(fileStream, encoding, true)) {
                    if (streamReader.EndOfStream)
                    {
                        return(null);
                    }
                    var score        = new Score(temporaryProject, difficulty);
                    var noteCache    = new List <DelesteBasicNote>();
                    var entryCache   = new List <DelesteBeatmapEntry>();
                    var warningList  = new List <string>();
                    var entryCounter = 0;
                    do
                    {
                        var line = streamReader.ReadLine();
                        if (line.Length == 0 || line[0] != '#')
                        {
                            continue;
                        }
                        ++entryCounter;
                        var entry = DelesteHelper.ReadEntry(temporaryProject, line, entryCounter, noteCache, warningList, ref hasErrors);
                        if (hasErrors)
                        {
                            warnings = warningList.ToArray();
                            return(null);
                        }
                        if (entry != null)
                        {
                            entryCache.Add(entry);
                        }
                    } while (!streamReader.EndOfStream);
                    var delesteState = new DelesteState {
                        BPM       = temporaryProject.Settings.GlobalBpm,
                        Signature = Constants.DefaultSignature
                    };
                    DelesteHelper.AnalyzeBeatmap(score, entryCache, delesteState, warningList);
                    if (warningList.Count > 0)
                    {
                        warnings = warningList.ToArray();
                    }
                    return(score);
                }
            }
        }