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); }
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); } } }
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); } } }