66using System . Linq ;
77using System . Threading . Tasks ;
88using System . Collections . Concurrent ;
9+ using System . Globalization ; // 添加这个引用
910
1011namespace 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