Skip to content

Commit de125aa

Browse files
committed
[R] Maidata.cs 优化添加ChartConvertTool元信息的逻辑
1 parent ec8e662 commit de125aa

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

maidata/Maidata.cs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,21 @@ public class Maidata : Dictionary<string, string>
2121
*/
2222
public IReadOnlyDictionary<string, string> Infos => _splitLevels().Item2;
2323

24-
public void AddLevel(int levelId, MaidataChart maidataChart)
24+
/**
25+
* 向Maidata中添加"&ChartConvertTool=MuConvert"的信息。
26+
*/
27+
public void AddToolData()
28+
{
29+
this["ChartConvertTool"] = "MuConvert";
30+
this["ChartConvertToolVersion"] = Utils.AppVersion;
31+
}
32+
33+
public void AddLevel(int levelId, MaidataChart maidataChart, bool addToolData = true)
2534
{
2635
this[$"inote_{levelId}"] = maidataChart.Inote;
2736
if (maidataChart.Level != null) this[$"lv_{levelId}"] = maidataChart.Level;
2837
if (maidataChart.NoteDesigner != null) this[$"des_{levelId}"] = maidataChart.NoteDesigner;
38+
if (addToolData) AddToolData();
2939
}
3040

3141
public Maidata() {}
@@ -147,21 +157,23 @@ public int ClockCount
147157
public override string ToString()
148158
{
149159
var result = new StringBuilder();
160+
var (levels, infos) = _splitLevels();
150161

151-
string[] fixedKeys = ["title", "artist", "first", "des", "wholebpm"]; // 对这些键,优先、按这里指定的顺序输出。
152-
foreach (var k in fixedKeys)
162+
string[] firstKeys = ["title", "artist", "first", "des", "wholebpm"]; // 对这些键,优先、按这里指定的顺序输出。
163+
string[] lastKeys = ["ChartConvertTool", "ChartConvertToolVersion"]; // 对这些键,最后、按这里指定的顺序输出。
164+
foreach (var k in firstKeys)
153165
{
154166
if (TryGetValue(k, out var v)) result.AppendLine($"&{k}={v}");
155167
}
156-
157-
var (levels, infos) = _splitLevels();
158168
foreach (var (k, v) in infos)
159169
{
160-
if (fixedKeys.Contains(k)) continue; // 刚刚已经输出过了
170+
if (firstKeys.Contains(k) || lastKeys.Contains(k)) continue; // 刚刚已经输出过了,或者应该最后输出
161171
result.AppendLine($"&{k}={v}");
162172
}
163-
result.AppendLine("&ChartConvertTool=MuConvert");
164-
result.AppendLine($"&ChartConvertToolVersion={Utils.AppVersion}");
173+
foreach (var k in lastKeys)
174+
{
175+
if (TryGetValue(k, out var v)) result.AppendLine($"&{k}={v}");
176+
}
165177
result.AppendLine();
166178

167179
var levelIds = levels.Keys.ToList();

0 commit comments

Comments
 (0)