try\r
{\r
br = new BinaryReader( File.OpenRead( SongsDBファイル名 ) );\r
- if( !br.ReadString().Equals( "SongsDB2" ) )\r
+ if ( !br.ReadString().Equals( SONGSDB_VERSION ) )\r
{\r
throw new InvalidDataException( "ヘッダが異なります。" );\r
}\r
cスコア.譜面情報.演奏履歴.行5 = br.ReadString();\r
cスコア.譜面情報.レベルを非表示にする = br.ReadBoolean();\r
cスコア.譜面情報.曲種別 = (CDTX.E種別) br.ReadInt32();\r
+// cスコア.譜面情報.bpm = br.ReadDouble();\r
return cスコア;\r
}\r
//-----------------\r
c曲リストノード.arスコア[ i ].譜面情報.レベル.Bass = cdtx.LEVEL.Bass;\r
c曲リストノード.arスコア[ i ].譜面情報.レベルを非表示にする = cdtx.HIDDENLEVEL;\r
c曲リストノード.arスコア[ i ].譜面情報.曲種別 = cdtx.e種別;\r
+// c曲リストノード.arスコア[ i ].譜面情報.bpm = cdtx.BPM;\r
this.nファイルから反映できたスコア数++;\r
cdtx.On非活性化();\r
if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
builder.Append( ", lvBs=" + c曲リストノード.arスコア[ i ].譜面情報.レベル.Bass );\r
builder.Append( ", lvHide=" + c曲リストノード.arスコア[ i ].譜面情報.レベルを非表示にする );\r
builder.Append( ", type=" + c曲リストノード.arスコア[ i ].譜面情報.曲種別 );\r
+// builder.Append( ", bpm=" + c曲リストノード.arスコア[ i ].譜面情報.bpm );\r
Trace.TraceInformation( builder.ToString() );\r
}\r
}\r
try\r
{\r
BinaryWriter bw = new BinaryWriter( new FileStream( SongsDBファイル名, FileMode.Create, FileAccess.Write ) );\r
- bw.Write( "SongsDB2" );\r
+ bw.Write( SONGSDB_VERSION );\r
this.tSongsDBにリストを1つ出力する( bw, this.list曲ルート );\r
bw.Close();\r
}\r
bw.Write( node.arスコア[ i ].譜面情報.演奏履歴.行5 );\r
bw.Write( node.arスコア[ i ].譜面情報.レベルを非表示にする );\r
bw.Write( (int) node.arスコア[ i ].譜面情報.曲種別 );\r
+// bw.Write( node.arスコア[ i ].譜面情報.bpm );\r
this.nSongsDBへ出力できたスコア数++;\r
}\r
}\r
nSumPlayCountN1 += c曲リストノード.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ];\r
}\r
// }\r
- Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
\r
// foreach( C曲リストノード c曲リストノード in ノードリスト )\r
{\r
nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.レベル[ (int) part ];\r
}\r
- Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
{\r
nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ];\r
}\r
- Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
{\r
nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ];\r
}\r
- Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
{\r
nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].ファイル情報.最終更新日時;\r
}\r
- Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
+ public void t曲リストのソート8_アーティスト名順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ {\r
+ int nL12345 = (int) p[ 0 ]; \r
+ ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ {\r
+ if ( n1 == n2 )\r
+ {\r
+ return 0;\r
+ }\r
+ int num = this.t比較0_共通( n1, n2 );\r
+ if ( num != 0 )\r
+ {\r
+ return order * System.Math.Sign( num );\r
+ }\r
+ string strAuthorN1 = "";\r
+ string strAuthorN2 = "";\r
+ if (n1.arスコア[ nL12345 ] != null ) {\r
+ strAuthorN1 = n1.arスコア[ nL12345 ].譜面情報.アーティスト名;\r
+ }\r
+ if ( n2.arスコア[ nL12345 ] != null )\r
+ {\r
+ strAuthorN2 = n2.arスコア[ nL12345 ].譜面情報.アーティスト名;\r
+ }\r
+\r
+ return order * strAuthorN1.CompareTo( strAuthorN2 );\r
+ } );\r
+ foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ {\r
+ string s = "";\r
+ if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ {\r
+ s = c曲リストノード.arスコア[ nL12345 ].譜面情報.アーティスト名;\r
+ }\r
+Debug.WriteLine( s + ":" + c曲リストノード.strタイトル );\r
+ }\r
+ }\r
+#if TEST_SORTBGM\r
+ public void t曲リストのソート9_BPM順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ {\r
+ order = -order;\r
+ int nL12345 = (int) p[ 0 ];\r
+ if ( part != E楽器パート.UNKNOWN )\r
+ {\r
+ ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ {\r
+ #region [ 共通処理 ]\r
+ if ( n1 == n2 )\r
+ {\r
+ return 0;\r
+ }\r
+ int num = this.t比較0_共通( n1, n2 );\r
+ if ( num != 0 )\r
+ {\r
+ return order * num;\r
+ }\r
+ if ( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) )\r
+ {\r
+ return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ }\r
+ #endregion\r
+ double dBPMn1 = 0.0, dBPMn2 = 0.0;\r
+ if ( n1.arスコア[ nL12345 ] != null )\r
+ {\r
+ dBPMn1 = n1.arスコア[ nL12345 ].譜面情報.bpm;\r
+ }\r
+ if ( n2.arスコア[ nL12345 ] != null )\r
+ {\r
+ dBPMn2 = n2.arスコア[ nL12345 ].譜面情報.bpm;\r
+ }\r
+ double d = dBPMn1- dBPMn2;\r
+ if ( d != 0 )\r
+ {\r
+ return order * System.Math.Sign( d );\r
+ }\r
+ return order * n1.strタイトル.CompareTo( n2.strタイトル );\r
+ } );\r
+ foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ {\r
+ double dBPM = 0;\r
+ if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ {\r
+ dBPM = c曲リストノード.arスコア[ nL12345 ].譜面情報.bpm;\r
+ }\r
+Debug.WriteLine( dBPM + ":" + c曲リストノード.strタイトル );\r
+ }\r
+ }\r
+ }\r
+#endif\r
//-----------------\r
#endregion\r
\r
this.act曲リスト.n現在のアンカ難易度レベル\r
);\r
break;\r
-// case (int) ESortItem.Author:\r
-// break;\r
+ case (int) ESortItem.Author:\r
+ this.act曲リスト.t曲リストのソート(\r
+ CDTXMania.Songs管理.t曲リストのソート8_アーティスト名順, eInst, nSortOrder,\r
+ this.act曲リスト.n現在のアンカ難易度レベル\r
+ );\r
+ break;\r
case (int) ESortItem.SkillPoint:\r
this.act曲リスト.t曲リストのソート(\r
CDTXMania.Songs管理.t曲リストのソート6_SkillPoint順, eInst, nSortOrder,\r
this.act曲リスト.n現在のアンカ難易度レベル\r
);\r
break;\r
-// case (int) ESortItem.BPM:\r
-// break;\r
+#if TEST_SORTBGM\r
+ case (int) ESortItem.BPM:\r
+ this.act曲リスト.t曲リストのソート(\r
+ CDTXMania.Songs管理.t曲リストのソート9_BPM順, eInst, nSortOrder,\r
+ this.act曲リスト.n現在のアンカ難易度レベル\r
+ );\r
+ break;\r
+#endif\r
case (int) ESortItem.Date:\r
this.act曲リスト.t曲リストのソート(\r
CDTXMania.Songs管理.t曲リストのソート7_更新日時順, eInst, nSortOrder,\r
{ "Level", "99,98,97,...", "1,2,3,..." },\r
{ "Best Rank", "E,D,C,...", "SS,S,A,..." },\r
{ "PlayCount", "10,9,8,...", "1,2,3,..." },\r
- // { "Author", "Z,Y,X,...", "A,B,C,..." },\r
+ { "Author", "Z,Y,X,...", "A,B,C,..." },\r
{ "SkillPoint", "100,99,98,...","1,2,3,..." },\r
- // { "BPM", "300,200,...", "70,80,90,..." },\r
+#if TEST_SORTBGM\r
+ { "BPM", "300,200,...", "70,80,90,..." },\r
+#endif\r
{ "Date", "Dec.31,30,...","Jan.1,2,..." },\r
{ "Return", "", "" }\r
};\r
private enum ESortItem : int\r
{\r
Title = 0, Level, BestRank, PlayCount,\r
- //Author,\r
+ Author,\r
SkillPoint,\r
- //BPM,\r
+#if TEST_SORTBGM\r
+ BPM,\r
+#endif\r
Date,\r
Return, END,\r
Default = 99\r