コード例 #1
0
ファイル: SMWriterBase.cs プロジェクト: PerryAsleep/Fumen
        private void WritePropertyInternal(string smPropertyName, object value)
        {
            if (value == null)
            {
                WritePropertyInternal(smPropertyName, "");
            }
            else if (value is List <string> valAsList)
            {
                StreamWriter.Write($"{MSDFile.ValueStartMarker}{smPropertyName}{MSDFile.ParamMarker}");
                var first = true;
                foreach (var entry in valAsList)
                {
                    if (!first)
                    {
                        StreamWriter.Write(MSDFile.ParamMarker);
                    }
                    if (!string.IsNullOrEmpty(entry))
                    {
                        StreamWriter.Write(MSDFile.Escape(entry));
                    }
                    first = false;
                }

                StreamWriter.WriteLine(MSDFile.ValueEndMarker);
            }
            else if (value is double d)
            {
                WritePropertyInternal(smPropertyName, d.ToString(SMCommon.SMDoubleFormat));
            }
            else
            {
                WritePropertyInternal(smPropertyName, value.ToString());
            }
        }
コード例 #2
0
ファイル: SMWriter.cs プロジェクト: PerryAsleep/Fumen
        /// <summary>
        /// Write the given Chart.
        /// </summary>
        /// <param name="chart">Chart to write.</param>
        private void WriteChart(Chart chart)
        {
            // We need a valid ChartType. If we don't have one, don't write the Chart.
            // Logging about ChartType errors performed in DetermineChartDifficultyTypes.
            if (!TryGetChartType(chart, out var chartType))
            {
                return;
            }

            var charTypeStr         = chartType.ToString().Replace('_', '-');
            var chartDifficultyType = GetChartDifficultyTypeString(chart);
            var radarValues         = GetRadarValues(chart);

            // Write chart header.
            StreamWriter.WriteLine();
            StreamWriter.WriteLine($"//---------------{charTypeStr} - {MSDFile.Escape(chart.Description ?? "")}----------------");
            WriteChartNotesValueStart(chart);
            StreamWriter.WriteLine($"     {charTypeStr}{MSDFile.ParamMarker}");
            StreamWriter.WriteLine($"     {MSDFile.Escape(chart.Description)}{MSDFile.ParamMarker}");
            StreamWriter.WriteLine($"     {chartDifficultyType}{MSDFile.ParamMarker}");
            StreamWriter.WriteLine($"     {(int)chart.DifficultyRating}{MSDFile.ParamMarker}");
            StreamWriter.WriteLine($"     {radarValues}{MSDFile.ParamMarker}");

            // Write all the notes.
            WriteChartNotes(chart);

            // Mark the chart as complete.
            StreamWriter.WriteLine(MSDFile.ValueEndMarker);
        }
コード例 #3
0
ファイル: SMWriterBase.cs プロジェクト: PerryAsleep/Fumen
 private void WritePropertyInternal(string smPropertyName, string value)
 {
     if (string.IsNullOrEmpty(value))
     {
         StreamWriter.WriteLine(
             $"{MSDFile.ValueStartMarker}{smPropertyName}{MSDFile.ParamMarker}{MSDFile.ValueEndMarker}");
     }
     else
     {
         StreamWriter.WriteLine(
             $"{MSDFile.ValueStartMarker}{smPropertyName}{MSDFile.ParamMarker}{MSDFile.Escape(value)}{MSDFile.ValueEndMarker}");
     }
 }