@@ -42,60 +42,56 @@ public ImportChartCheckResult ImportChartCheck(IFormFile file, [FromForm] bool i
4242 fatal = true ;
4343 }
4444
45- var levels = new bool [ 5 ] ;
4645 var allChartText = new Dictionary < int , string > ( ) ;
47-
48- for ( var i = 0 ; i < 5 ; i ++ )
46+ for ( var i = 2 ; i < 9 ; i ++ )
4947 {
50- // maidata 里 2 是绿谱,6 是白谱
51- if ( ! string . IsNullOrWhiteSpace ( maiData . GetValueOrDefault ( $ "inote_{ i + 2 } ") ) )
48+ if ( ! string . IsNullOrWhiteSpace ( maiData . GetValueOrDefault ( $ "inote_{ i } ") ) )
5249 {
53- levels [ i ] = true ;
54- allChartText . Add ( i + 2 , maiData . GetValueOrDefault ( $ "inote_{ i + 2 } ") ) ;
50+ allChartText . Add ( i , maiData . GetValueOrDefault ( $ "inote_{ i } ") ) ;
5551 }
5652 }
5753
58- if ( levels . Any ( it => it ) )
54+ if ( ! string . IsNullOrWhiteSpace ( maiData . GetValueOrDefault ( "inote_0" ) ) )
5955 {
60- string [ ] levelNames = [ Locale . DifficultyBasic , Locale . DifficultyAdvanced , Locale . DifficultyExpert , Locale . DifficultyMaster , Locale . DifficultyReMaster ] ;
61- var message = Locale . ImportingDifficulties ;
62- for ( var i = 0 ; i < 5 ; i ++ )
63- {
64- if ( levels [ i ] )
65- {
66- message += levelNames [ i ] + " " ;
67- }
68- }
69-
70- errors . Add ( new ImportChartMessage ( message , MessageLevel . Info ) ) ;
56+ allChartText . Add ( 0 , maiData . GetValueOrDefault ( $ "inote_0") ) ;
7157 }
72-
73- foreach ( var i in ( int [ ] ) [ 7 , 8 , 0 ] )
58+ var targetLevelMap = importService . mapMaidataLevelToGame ( allChartText . Keys . ToList ( ) ) ;
59+
60+ # region 向前端返回,关于导入谱面的inote_映射到游戏中的难度的提示信息
61+ string [ ] levelNames = [ Locale . DifficultyBasic , Locale . DifficultyAdvanced , Locale . DifficultyExpert , Locale . DifficultyMaster , Locale . DifficultyReMaster ] ;
62+ string [ ] importAsMessages = [ Locale . DifficultyImportedAsBasic , null , null , Locale . DifficultyImportedAsMaster , Locale . DifficultyImportedAsReMaster ] ;
63+
64+ string generalImportMessage = "" ; // “将导入以下难度:” 的默认信息
65+ var extraImportMessages = new List < string > ( ) ; // “有一个难度为 {0} 的谱面,将导入为XX谱 ” 的信息
66+ foreach ( var ( lv , _) in allChartText )
7467 {
75- if ( string . IsNullOrWhiteSpace ( maiData . GetValueOrDefault ( $ "inote_{ i } ") ) ) continue ;
76- allChartText . Add ( i , maiData . GetValueOrDefault ( $ "inote_{ i } ") ) ;
77- if ( ! levels [ 3 ] )
78- {
79- levels [ 3 ] = true ;
80- errors . Add ( new ImportChartMessage ( string . Format ( Locale . DifficultyImportedAsMaster , i ) , MessageLevel . Warning ) ) ;
68+ if ( ! targetLevelMap . TryGetValue ( lv , out var targetLevel ) )
69+ { // 根据targetLevelMap返回的结果,该谱面应被忽略
70+ extraImportMessages . Add ( string . Format ( Locale . DifficultyIgnored , lv ) ) ;
71+ continue ;
8172 }
82- else if ( ! levels [ 4 ] )
73+ if ( 2 <= lv && lv <= 6 )
8374 {
84- levels [ 4 ] = true ;
85- errors . Add ( new ImportChartMessage ( string . Format ( Locale . DifficultyImportedAsReMaster , i ) , MessageLevel . Warning ) ) ;
86- }
87- else if ( ! levels [ 0 ] )
88- {
89- levels [ 0 ] = true ;
90- errors . Add ( new ImportChartMessage ( string . Format ( Locale . DifficultyImportedAsBasic , i ) , MessageLevel . Warning ) ) ;
75+ generalImportMessage += levelNames [ targetLevel ] + " " ;
9176 }
9277 else
9378 {
94- errors . Add ( new ImportChartMessage ( string . Format ( Locale . DifficultyIgnored , i ) , MessageLevel . Warning ) ) ;
79+ extraImportMessages . Add ( string . Format ( importAsMessages [ targetLevel ] , lv ) ) ;
9580 }
9681 }
82+
83+ if ( ! string . IsNullOrEmpty ( generalImportMessage ) )
84+ {
85+ errors . Add ( new ImportChartMessage ( Locale . ImportingDifficulties + generalImportMessage , MessageLevel . Info ) ) ;
86+ }
87+
88+ foreach ( var message in extraImportMessages )
89+ {
90+ errors . Add ( new ImportChartMessage ( message , MessageLevel . Warning ) ) ;
91+ }
92+ # endregion
9793
98- if ( ! levels . Any ( it => it ) )
94+ if ( targetLevelMap . Count == 0 ) // 没有能够被映射的谱面
9995 {
10096 errors . Add ( new ImportChartMessage ( Locale . MusicNoCharts , MessageLevel . Fatal ) ) ;
10197 fatal = true ;
0 commit comments