Skip to content

Commit a25cfc8

Browse files
committed
fix(LN transformer): resolve issues in specific regions
1 parent ae5ee0a commit a25cfc8

File tree

2 files changed

+43
-22
lines changed

2 files changed

+43
-22
lines changed

MainWindow.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:krrTools"
77
mc:Ignorable="d"
8-
Title="krrcream's Toolkit V2.2.0" Height="400" Width="300"
8+
Title="krrcream's Toolkit V2.2.1" Height="400" Width="300"
99
ResizeMode="NoResize"
1010
WindowStartupLocation="CenterScreen">
1111

tools/LNTransformer/OsuFileV14.cs

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Linq;
77
using System.Threading.Tasks;
88
using System.Collections.Concurrent;
9+
using System.Globalization; // 添加这个引用
910

1011
namespace krrTools
1112
{
@@ -151,12 +152,12 @@ private static OsuFileV14 ReadSingleOsuFileInternal(FileInfo file, Func<string,
151152

152153
switch (key)
153154
{
154-
case "HPDrainRate": general.HPDrainRate = double.Parse(value); continue;
155-
case "CircleSize": general.CircleSize = double.Parse(value); continue;
156-
case "OverallDifficulty": general.OverallDifficulty = double.Parse(value); continue;
157-
case "ApproachRate": general.ApproachRate = double.Parse(value); continue;
158-
case "SliderMultiplier": general.SliderMultiplier = double.Parse(value); continue;
159-
case "SliderTickRate": general.SliderTickRate = double.Parse(value); continue;
155+
case "HPDrainRate": general.HPDrainRate = double.Parse(value, CultureInfo.InvariantCulture); continue;
156+
case "CircleSize": general.CircleSize = double.Parse(value, CultureInfo.InvariantCulture); continue;
157+
case "OverallDifficulty": general.OverallDifficulty = double.Parse(value, CultureInfo.InvariantCulture); continue;
158+
case "ApproachRate": general.ApproachRate = double.Parse(value, CultureInfo.InvariantCulture); continue;
159+
case "SliderMultiplier": general.SliderMultiplier = double.Parse(value, CultureInfo.InvariantCulture); continue;
160+
case "SliderTickRate": general.SliderTickRate = double.Parse(value, CultureInfo.InvariantCulture); continue;
160161
}
161162

162163
// [HitObjects] & [TimingPoints] & [Colours] & [Events]
@@ -200,7 +201,15 @@ private static OsuFileV14 ReadSingleOsuFileInternal(FileInfo file, Func<string,
200201
if (TimingPoints)
201202
{
202203
var pointElements = line.Split(',');
203-
points.Add(new TimingPoint((int)double.Parse(pointElements[0]), double.Parse(pointElements[1]), (int)double.Parse(pointElements[2]), (int)double.Parse(pointElements[3]), (int)double.Parse(pointElements[4]), (int)double.Parse(pointElements[5]), (int)double.Parse(pointElements[6]), (int)double.Parse(pointElements[7])));
204+
points.Add(new TimingPoint(
205+
int.Parse(pointElements[0], CultureInfo.InvariantCulture),
206+
double.Parse(pointElements[1], CultureInfo.InvariantCulture),
207+
int.Parse(pointElements[2], CultureInfo.InvariantCulture),
208+
int.Parse(pointElements[3], CultureInfo.InvariantCulture),
209+
int.Parse(pointElements[4], CultureInfo.InvariantCulture),
210+
int.Parse(pointElements[5], CultureInfo.InvariantCulture),
211+
int.Parse(pointElements[6], CultureInfo.InvariantCulture),
212+
int.Parse(pointElements[7], CultureInfo.InvariantCulture)));
204213
continue;
205214
}
206215

@@ -209,7 +218,11 @@ private static OsuFileV14 ReadSingleOsuFileInternal(FileInfo file, Func<string,
209218
var colourElements = line.Split(':');
210219
var name = colourElements[0].Trim();
211220
var colour = colourElements[1].Trim().Split(',');
212-
colours.Add(new Colour(name, byte.Parse(colour[0]), byte.Parse(colour[1]), byte.Parse(colour[2])));
221+
colours.Add(new Colour(
222+
name,
223+
byte.Parse(colour[0], CultureInfo.InvariantCulture),
224+
byte.Parse(colour[1], CultureInfo.InvariantCulture),
225+
byte.Parse(colour[2], CultureInfo.InvariantCulture)));
213226
continue;
214227
}
215228

@@ -219,11 +232,11 @@ private static OsuFileV14 ReadSingleOsuFileInternal(FileInfo file, Func<string,
219232
}
220233

221234
var elements = line.Split(',');
222-
var x = (int)double.Parse(elements[0]);
223-
var y = (int)double.Parse(elements[1]);
224-
var time = (int)double.Parse(elements[2]);
225-
var type = (int)double.Parse(elements[3]);
226-
var hitSound = (int)double.Parse(elements[4]);
235+
var x = (int)double.Parse(elements[0], CultureInfo.InvariantCulture);
236+
var y = (int)double.Parse(elements[1], CultureInfo.InvariantCulture);
237+
var time = (int)double.Parse(elements[2], CultureInfo.InvariantCulture);
238+
var type = (int)double.Parse(elements[3], CultureInfo.InvariantCulture);
239+
var hitSound = (int)double.Parse(elements[4], CultureInfo.InvariantCulture);
227240
//var objectParams = elements[4];
228241
var hitSample = elements[5];
229242
obj.Add(new ManiaHitObject(x, y, (int)general.CircleSize, time, type, hitSound, hitSample));
@@ -524,12 +537,12 @@ public void WriteFile(string path = "")
524537

525538
// [Difficulty]
526539
writer.WriteLine("[Difficulty]");
527-
writer.WriteLine("HPDrainRate:" + General.HPDrainRate);
528-
writer.WriteLine("CircleSize:" + General.CircleSize);
529-
writer.WriteLine("OverallDifficulty:" + General.OverallDifficulty);
530-
writer.WriteLine("ApproachRate:" + General.ApproachRate);
531-
writer.WriteLine("SliderMultiplier:" + General.SliderMultiplier);
532-
writer.WriteLine("SliderTickRate:" + General.SliderTickRate);
540+
writer.WriteLine("HPDrainRate:" + General.HPDrainRate.ToString(CultureInfo.InvariantCulture));
541+
writer.WriteLine("CircleSize:" + General.CircleSize.ToString(CultureInfo.InvariantCulture));
542+
writer.WriteLine("OverallDifficulty:" + General.OverallDifficulty.ToString(CultureInfo.InvariantCulture));
543+
writer.WriteLine("ApproachRate:" + General.ApproachRate.ToString(CultureInfo.InvariantCulture));
544+
writer.WriteLine("SliderMultiplier:" + General.SliderMultiplier.ToString(CultureInfo.InvariantCulture));
545+
writer.WriteLine("SliderTickRate:" + General.SliderTickRate.ToString(CultureInfo.InvariantCulture));
533546
writer.WriteLine();
534547

535548
// [Events]
@@ -549,7 +562,15 @@ public void WriteFile(string path = "")
549562
writer.WriteLine("[TimingPoints]");
550563
foreach (var point in TimingPoints)
551564
{
552-
writer.WriteLine(string.Join(",", point.Time, point.BeatLength, point.Meter, point.SampleSet, point.SampleIndex, point.Volume, point.Uninherited, point.Effects));
565+
writer.WriteLine(string.Join(",",
566+
point.Time.ToString(CultureInfo.InvariantCulture),
567+
point.BeatLength.ToString(CultureInfo.InvariantCulture),
568+
point.Meter.ToString(CultureInfo.InvariantCulture),
569+
point.SampleSet.ToString(CultureInfo.InvariantCulture),
570+
point.SampleIndex.ToString(CultureInfo.InvariantCulture),
571+
point.Volume.ToString(CultureInfo.InvariantCulture),
572+
point.Uninherited.ToString(CultureInfo.InvariantCulture),
573+
point.Effects.ToString(CultureInfo.InvariantCulture)));
553574
}
554575
writer.WriteLine();
555576

@@ -624,7 +645,7 @@ public int EndTime
624645
{
625646
return StartTime;
626647
}
627-
int time = int.Parse(HitSample.Split(':')[0]);
648+
int time = int.Parse(HitSample.Split(':')[0], CultureInfo.InvariantCulture);
628649
return time;
629650
}
630651
catch

0 commit comments

Comments
 (0)