\r
public int nSongsDBから取得できたスコア数\r
{\r
- get; \r
- set; \r
+ get;\r
+ set;\r
}\r
public int nSongsDBへ出力できたスコア数\r
{\r
get;\r
set;\r
}\r
- public int nスコアキャッシュから反映できたスコア数 \r
+ public int nスコアキャッシュから反映できたスコア数\r
{\r
get;\r
- set; \r
+ set;\r
}\r
public int nファイルから反映できたスコア数\r
{\r
get;\r
set;\r
}\r
- public int n検索されたスコア数 \r
- { \r
+ public int n検索されたスコア数\r
+ {\r
get;\r
set;\r
}\r
public int n検索された曲ノード数\r
{\r
- get; \r
+ get;\r
set;\r
}\r
[NonSerialized]\r
- public List<Cスコア> listSongsDB; // songs.dbから構築されるlist\r
- public List<C曲リストノード> list曲ルート; // 起動時にフォルダ検索して構築されるlist\r
- public bool bIsSuspending // 外部スレッドから、内部スレッドのsuspendを指示する時にtrueにする\r
- { // 再開時は、これをfalseにしてから、次のautoReset.Set()を実行する\r
+ public List<Cスコア> listSongsDB; // songs.dbから構築されるlist\r
+ public List<C曲リストノード> list曲ルート; // 起動時にフォルダ検索して構築されるlist\r
+ public bool bIsSuspending // 外部スレッドから、内部スレッドのsuspendを指示する時にtrueにする\r
+ { // 再開時は、これをfalseにしてから、次のautoReset.Set()を実行する\r
get;\r
set;\r
}\r
- public bool bIsSlowdown // #PREMOVIE再生時に曲検索を遅くする\r
+ public bool bIsSlowdown // #PREMOVIE再生時に曲検索を遅くする\r
{\r
get;\r
set;\r
}\r
}\r
\r
- private int searchCount; // #PREMOVIE中は検索n回実行したら少しスリープする\r
+ private int searchCount; // #PREMOVIE中は検索n回実行したら少しスリープする\r
\r
// コンストラクタ\r
\r
this.list曲ルート = new List<C曲リストノード>();\r
this.n検索された曲ノード数 = 0;\r
this.n検索されたスコア数 = 0;\r
- this.bIsSuspending = false; // #27060\r
- this.autoReset = new AutoResetEvent( true ); // #27060\r
+ this.bIsSuspending = false; // #27060\r
+ this.autoReset = new AutoResetEvent(true); // #27060\r
this.searchCount = 0;\r
}\r
\r
\r
#region [ SongsDB(songs.db) を読み込む ]\r
//-----------------\r
- public void tSongsDBを読み込む( string SongsDBファイル名 )\r
+ public void tSongsDBを読み込む(string SongsDBファイル名)\r
{\r
this.nSongsDBから取得できたスコア数 = 0;\r
- if( File.Exists( SongsDBファイル名 ) )\r
+ if (File.Exists(SongsDBファイル名))\r
{\r
BinaryReader br = null;\r
try\r
{\r
- br = new BinaryReader( File.OpenRead( SongsDBファイル名 ) );\r
- if ( !br.ReadString().Equals( SONGSDB_VERSION ) )\r
+ br = new BinaryReader(File.OpenRead(SongsDBファイル名));\r
+ if (!br.ReadString().Equals(SONGSDB_VERSION))\r
{\r
- throw new InvalidDataException( "ヘッダが異なります。" );\r
+ throw new InvalidDataException("ヘッダが異なります。");\r
}\r
this.listSongsDB = new List<Cスコア>();\r
\r
- while( true )\r
+ while (true)\r
{\r
try\r
{\r
- Cスコア item = this.tSongsDBからスコアを1つ読み込む( br );\r
- this.listSongsDB.Add( item );\r
+ Cスコア item = this.tSongsDBからスコアを1つ読み込む(br);\r
+ this.listSongsDB.Add(item);\r
this.nSongsDBから取得できたスコア数++;\r
}\r
- catch( EndOfStreamException )\r
+ catch (EndOfStreamException)\r
{\r
break;\r
}\r
}\r
finally\r
{\r
- if( br != null )\r
+ if (br != null)\r
br.Close();\r
}\r
}\r
\r
#region [ 曲を検索してリストを作成する ]\r
//-----------------\r
- public void t曲を検索してリストを作成する( string str基点フォルダ, bool b子BOXへ再帰する )\r
+ public void t曲を検索してリストを作成する(string str基点フォルダ, bool b子BOXへ再帰する)\r
{\r
- this.t曲を検索してリストを作成する( str基点フォルダ, b子BOXへ再帰する, this.list曲ルート, null );\r
+ this.t曲を検索してリストを作成する(str基点フォルダ, b子BOXへ再帰する, this.list曲ルート, null);\r
}\r
- private void t曲を検索してリストを作成する( string str基点フォルダ, bool b子BOXへ再帰する, List<C曲リストノード> listノードリスト, C曲リストノード node親 )\r
+ private void t曲を検索してリストを作成する(string str基点フォルダ, bool b子BOXへ再帰する, List<C曲リストノード> listノードリスト, C曲リストノード node親)\r
{\r
- if( !str基点フォルダ.EndsWith( @"\" ) )\r
+ if (!str基点フォルダ.EndsWith(@"\"))\r
str基点フォルダ = str基点フォルダ + @"\";\r
\r
- DirectoryInfo info = new DirectoryInfo( str基点フォルダ );\r
+ DirectoryInfo info = new DirectoryInfo(str基点フォルダ);\r
\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
- Trace.TraceInformation( "基点フォルダ: " + str基点フォルダ );\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
+ Trace.TraceInformation("基点フォルダ: " + str基点フォルダ);\r
\r
#region [ a.フォルダ内に set.def が存在する場合 → set.def からノード作成]\r
//-----------------------------\r
string path = str基点フォルダ + "set.def";\r
- if( File.Exists( path ) )\r
+ if (File.Exists(path))\r
{\r
- CSetDef def = new CSetDef( path );\r
- new FileInfo( path );\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ CSetDef def = new CSetDef(path);\r
+ new FileInfo(path);\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- Trace.TraceInformation( "set.def検出 : {0}", path );\r
+ Trace.TraceInformation("set.def検出 : {0}", path);\r
Trace.Indent();\r
}\r
try\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
- for( int i = 0; i < def.blocks.Count; i++ )\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ for (int i = 0; i < def.blocks.Count; i++)\r
{\r
- CSetDef.CBlock block = def.blocks[ i ];\r
+ CSetDef.CBlock block = def.blocks[i];\r
C曲リストノード item = new C曲リストノード();\r
item.eノード種別 = C曲リストノード.Eノード種別.SCORE;\r
item.strタイトル = block.Title;\r
item.pathSetDefの絶対パス = path;\r
item.r親ノード = node親;\r
\r
- item.strBreadcrumbs = ( item.r親ノード == null ) ?\r
+ item.strBreadcrumbs = (item.r親ノード == null) ?\r
path + i : item.r親ノード.strBreadcrumbs + " > " + path + i;\r
\r
- for( int j = 0; j < 5; j++ )\r
+ for (int j = 0; j < 5; j++)\r
{\r
- if( !string.IsNullOrEmpty( block.File[ j ] ) )\r
+ if (!string.IsNullOrEmpty(block.File[j]))\r
{\r
- string str2 = str基点フォルダ + block.File[ j ];\r
- if( File.Exists( str2 ) )\r
+ string str2 = str基点フォルダ + block.File[j];\r
+ if (File.Exists(str2))\r
{\r
- item.ar難易度ラベル[ j ] = block.Label[ j ];\r
- item.arスコア[ j ] = new Cスコア();\r
- item.arスコア[ j ].ファイル情報.ファイルの絶対パス = str2;\r
- item.arスコア[ j ].ファイル情報.フォルダの絶対パス = Path.GetFullPath( Path.GetDirectoryName( str2 ) ) + @"\";\r
- FileInfo info2 = new FileInfo( str2 );\r
- item.arスコア[ j ].ファイル情報.ファイルサイズ = info2.Length;\r
- item.arスコア[ j ].ファイル情報.最終更新日時 = info2.LastWriteTime;\r
+ item.ar難易度ラベル[j] = block.Label[j];\r
+ item.arスコア[j] = new Cスコア();\r
+ item.arスコア[j].ファイル情報.ファイルの絶対パス = str2;\r
+ item.arスコア[j].ファイル情報.フォルダの絶対パス = Path.GetFullPath(Path.GetDirectoryName(str2)) + @"\";\r
+ FileInfo info2 = new FileInfo(str2);\r
+ item.arスコア[j].ファイル情報.ファイルサイズ = info2.Length;\r
+ item.arスコア[j].ファイル情報.最終更新日時 = info2.LastWriteTime;\r
string str3 = str2 + ".score.ini";\r
- if( File.Exists( str3 ) )\r
+ if (File.Exists(str3))\r
{\r
- FileInfo info3 = new FileInfo( str3 );\r
- item.arスコア[ j ].ScoreIni情報.ファイルサイズ = info3.Length;\r
- item.arスコア[ j ].ScoreIni情報.最終更新日時 = info3.LastWriteTime;\r
+ FileInfo info3 = new FileInfo(str3);\r
+ item.arスコア[j].ScoreIni情報.ファイルサイズ = info3.Length;\r
+ item.arスコア[j].ScoreIni情報.最終更新日時 = info3.LastWriteTime;\r
}\r
item.nスコア数++;\r
this.n検索されたスコア数++;\r
}\r
else\r
{\r
- item.arスコア[ j ] = null;\r
+ item.arスコア[j] = null;\r
}\r
}\r
}\r
- if( item.nスコア数 > 0 )\r
+ if (item.nスコア数 > 0)\r
{\r
- listノードリスト.Add( item );\r
+ listノードリスト.Add(item);\r
this.n検索された曲ノード数++;\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- StringBuilder builder = new StringBuilder( 0x200 );\r
- builder.Append( string.Format( "nID#{0:D3}", item.nID ) );\r
- if( item.r親ノード != null )\r
+ StringBuilder builder = new StringBuilder(0x200);\r
+ builder.Append(string.Format("nID#{0:D3}", item.nID));\r
+ if (item.r親ノード != null)\r
{\r
- builder.Append( string.Format( "(in#{0:D3}):", item.r親ノード.nID ) );\r
+ builder.Append(string.Format("(in#{0:D3}):", item.r親ノード.nID));\r
}\r
else\r
{\r
- builder.Append( "(onRoot):" );\r
+ builder.Append("(onRoot):");\r
}\r
- if( ( item.strタイトル != null ) && ( item.strタイトル.Length > 0 ) )\r
+ if ((item.strタイトル != null) && (item.strタイトル.Length > 0))\r
{\r
- builder.Append( " SONG, Title=" + item.strタイトル );\r
+ builder.Append(" SONG, Title=" + item.strタイトル);\r
}\r
- if( ( item.strジャンル != null ) && ( item.strジャンル.Length > 0 ) )\r
+ if ((item.strジャンル != null) && (item.strジャンル.Length > 0))\r
{\r
- builder.Append( ", Genre=" + item.strジャンル );\r
+ builder.Append(", Genre=" + item.strジャンル);\r
}\r
- if( item.col文字色 != Color.White )\r
+ if (item.col文字色 != Color.White)\r
{\r
- builder.Append( ", FontColor=" + item.col文字色 );\r
+ builder.Append(", FontColor=" + item.col文字色);\r
}\r
- Trace.TraceInformation( builder.ToString() );\r
+ Trace.TraceInformation(builder.ToString());\r
Trace.Indent();\r
try\r
{\r
- for( int k = 0; k < 5; k++ )\r
+ for (int k = 0; k < 5; k++)\r
{\r
- if( item.arスコア[ k ] != null )\r
+ if (item.arスコア[k] != null)\r
{\r
- Cスコア cスコア = item.arスコア[ k ];\r
- builder.Remove( 0, builder.Length );\r
- builder.Append( string.Format( "ブロック{0}-{1}:", item.SetDefのブロック番号 + 1, k + 1 ) );\r
- builder.Append( " Label=" + item.ar難易度ラベル[ k ] );\r
- builder.Append( ", File=" + cスコア.ファイル情報.ファイルの絶対パス );\r
- builder.Append( ", Size=" + cスコア.ファイル情報.ファイルサイズ );\r
- builder.Append( ", LastUpdate=" + cスコア.ファイル情報.最終更新日時 );\r
- Trace.TraceInformation( builder.ToString() );\r
+ Cスコア cスコア = item.arスコア[k];\r
+ builder.Remove(0, builder.Length);\r
+ builder.Append(string.Format("ブロック{0}-{1}:", item.SetDefのブロック番号 + 1, k + 1));\r
+ builder.Append(" Label=" + item.ar難易度ラベル[k]);\r
+ builder.Append(", File=" + cスコア.ファイル情報.ファイルの絶対パス);\r
+ builder.Append(", Size=" + cスコア.ファイル情報.ファイルサイズ);\r
+ builder.Append(", LastUpdate=" + cスコア.ファイル情報.最終更新日時);\r
+ Trace.TraceInformation(builder.ToString());\r
}\r
}\r
}\r
}\r
finally\r
{\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.Unindent();\r
}\r
//-----------------------------\r
else\r
{\r
- foreach( FileInfo fileinfo in info.GetFiles() )\r
+ foreach (FileInfo fileinfo in info.GetFiles())\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
string strExt = fileinfo.Extension.ToLower();\r
- if( ( strExt.Equals( ".dtx" ) || strExt.Equals( ".gda" ) ) || ( ( strExt.Equals( ".g2d" ) || strExt.Equals( ".bms" ) ) || strExt.Equals( ".bme" ) ) )\r
+ if ((strExt.Equals(".dtx") || strExt.Equals(".gda")) || ((strExt.Equals(".g2d") || strExt.Equals(".bms")) || strExt.Equals(".bme")))\r
{\r
C曲リストノード c曲リストノード = new C曲リストノード();\r
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.SCORE;\r
c曲リストノード.nスコア数 = 1;\r
c曲リストノード.r親ノード = node親;\r
\r
- c曲リストノード.strBreadcrumbs = ( c曲リストノード.r親ノード == null ) ?\r
+ c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ?\r
str基点フォルダ + fileinfo.Name : c曲リストノード.r親ノード.strBreadcrumbs + " > " + str基点フォルダ + fileinfo.Name;\r
\r
- c曲リストノード.arスコア[ 0 ] = new Cスコア();\r
- c曲リストノード.arスコア[ 0 ].ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name;\r
- c曲リストノード.arスコア[ 0 ].ファイル情報.フォルダの絶対パス = str基点フォルダ;\r
- c曲リストノード.arスコア[ 0 ].ファイル情報.ファイルサイズ = fileinfo.Length;\r
- c曲リストノード.arスコア[ 0 ].ファイル情報.最終更新日時 = fileinfo.LastWriteTime;\r
- string strFileNameScoreIni = c曲リストノード.arスコア[ 0 ].ファイル情報.ファイルの絶対パス + ".score.ini";\r
- if( File.Exists( strFileNameScoreIni ) )\r
+ c曲リストノード.arスコア[0] = new Cスコア();\r
+ c曲リストノード.arスコア[0].ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name;\r
+ c曲リストノード.arスコア[0].ファイル情報.フォルダの絶対パス = str基点フォルダ;\r
+ c曲リストノード.arスコア[0].ファイル情報.ファイルサイズ = fileinfo.Length;\r
+ c曲リストノード.arスコア[0].ファイル情報.最終更新日時 = fileinfo.LastWriteTime;\r
+ string strFileNameScoreIni = c曲リストノード.arスコア[0].ファイル情報.ファイルの絶対パス + ".score.ini";\r
+ if (File.Exists(strFileNameScoreIni))\r
{\r
- FileInfo infoScoreIni = new FileInfo( strFileNameScoreIni );\r
- c曲リストノード.arスコア[ 0 ].ScoreIni情報.ファイルサイズ = infoScoreIni.Length;\r
- c曲リストノード.arスコア[ 0 ].ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime;\r
+ FileInfo infoScoreIni = new FileInfo(strFileNameScoreIni);\r
+ c曲リストノード.arスコア[0].ScoreIni情報.ファイルサイズ = infoScoreIni.Length;\r
+ c曲リストノード.arスコア[0].ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime;\r
}\r
this.n検索されたスコア数++;\r
- listノードリスト.Add( c曲リストノード );\r
+ listノードリスト.Add(c曲リストノード);\r
this.n検索された曲ノード数++;\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.Indent();\r
try\r
{\r
- StringBuilder sb = new StringBuilder( 0x100 );\r
- sb.Append( string.Format( "nID#{0:D3}", c曲リストノード.nID ) );\r
- if( c曲リストノード.r親ノード != null )\r
+ StringBuilder sb = new StringBuilder(0x100);\r
+ sb.Append(string.Format("nID#{0:D3}", c曲リストノード.nID));\r
+ if (c曲リストノード.r親ノード != null)\r
{\r
- sb.Append( string.Format( "(in#{0:D3}):", c曲リストノード.r親ノード.nID ) );\r
+ sb.Append(string.Format("(in#{0:D3}):", c曲リストノード.r親ノード.nID));\r
}\r
else\r
{\r
- sb.Append( "(onRoot):" );\r
+ sb.Append("(onRoot):");\r
}\r
- sb.Append( " SONG, File=" + c曲リストノード.arスコア[ 0 ].ファイル情報.ファイルの絶対パス );\r
- sb.Append( ", Size=" + c曲リストノード.arスコア[ 0 ].ファイル情報.ファイルサイズ );\r
- sb.Append( ", LastUpdate=" + c曲リストノード.arスコア[ 0 ].ファイル情報.最終更新日時 );\r
- Trace.TraceInformation( sb.ToString() );\r
+ sb.Append(" SONG, File=" + c曲リストノード.arスコア[0].ファイル情報.ファイルの絶対パス);\r
+ sb.Append(", Size=" + c曲リストノード.arスコア[0].ファイル情報.ファイルサイズ);\r
+ sb.Append(", LastUpdate=" + c曲リストノード.arスコア[0].ファイル情報.最終更新日時);\r
+ Trace.TraceInformation(sb.ToString());\r
}\r
finally\r
{\r
}\r
}\r
}\r
- else if( strExt.Equals( ".mid" ) || strExt.Equals( ".smf" ))\r
+ else if (strExt.Equals(".mid") || strExt.Equals(".smf"))\r
{\r
// 何もしない\r
}\r
//-----------------------------\r
#endregion\r
\r
- foreach( DirectoryInfo infoDir in info.GetDirectories() )\r
+ foreach (DirectoryInfo infoDir in info.GetDirectories())\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
#region [ a. "dtxfiles." で始まるフォルダの場合 ]\r
//-----------------------------\r
- if( infoDir.Name.ToLower().StartsWith( "dtxfiles." ) )\r
+ if (infoDir.Name.ToLower().StartsWith("dtxfiles."))\r
{\r
C曲リストノード c曲リストノード = new C曲リストノード();\r
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.BOX;\r
c曲リストノード.bDTXFilesで始まるフォルダ名のBOXである = true;\r
- c曲リストノード.strタイトル = infoDir.Name.Substring( 9 );\r
+ c曲リストノード.strタイトル = infoDir.Name.Substring(9);\r
c曲リストノード.nスコア数 = 1;\r
c曲リストノード.r親ノード = node親;\r
\r
// 一旦、上位BOXのスキン情報をコピー (後でbox.defの記載にて上書きされる場合がある)\r
- c曲リストノード.strSkinPath = ( c曲リストノード.r親ノード == null ) ?\r
+ c曲リストノード.strSkinPath = (c曲リストノード.r親ノード == null) ?\r
"" : c曲リストノード.r親ノード.strSkinPath;\r
\r
- c曲リストノード.strBreadcrumbs = ( c曲リストノード.r親ノード == null ) ?\r
+ c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ?\r
c曲リストノード.strタイトル : c曲リストノード.r親ノード.strBreadcrumbs + " > " + c曲リストノード.strタイトル;\r
\r
- \r
+\r
c曲リストノード.list子リスト = new List<C曲リストノード>();\r
- c曲リストノード.arスコア[ 0 ] = new Cスコア();\r
- c曲リストノード.arスコア[ 0 ].ファイル情報.フォルダの絶対パス = infoDir.FullName + @"\";\r
- c曲リストノード.arスコア[ 0 ].譜面情報.タイトル = c曲リストノード.strタイトル;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.コメント =\r
+ c曲リストノード.arスコア[0] = new Cスコア();\r
+ c曲リストノード.arスコア[0].ファイル情報.フォルダの絶対パス = infoDir.FullName + @"\";\r
+ c曲リストノード.arスコア[0].譜面情報.タイトル = c曲リストノード.strタイトル;\r
+ c曲リストノード.arスコア[0].譜面情報.コメント =\r
(CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ?\r
"BOX に移動します。" :\r
"Enter into the BOX.";\r
listノードリスト.Add(c曲リストノード);\r
- if( File.Exists( infoDir.FullName + @"\box.def" ) )\r
+ if (File.Exists(infoDir.FullName + @"\box.def"))\r
{\r
- CBoxDef boxdef = new CBoxDef( infoDir.FullName + @"\box.def" );\r
- if( ( boxdef.Title != null ) && ( boxdef.Title.Length > 0 ) )\r
+ CBoxDef boxdef = new CBoxDef(infoDir.FullName + @"\box.def");\r
+ if ((boxdef.Title != null) && (boxdef.Title.Length > 0))\r
{\r
c曲リストノード.strタイトル = boxdef.Title;\r
}\r
- if( ( boxdef.Genre != null ) && ( boxdef.Genre.Length > 0 ) )\r
+ if ((boxdef.Genre != null) && (boxdef.Genre.Length > 0))\r
{\r
c曲リストノード.strジャンル = boxdef.Genre;\r
}\r
- if( boxdef.Color != Color.White )\r
+ if (boxdef.Color != Color.White)\r
{\r
c曲リストノード.col文字色 = boxdef.Color;\r
}\r
- if( ( boxdef.Artist != null ) && ( boxdef.Artist.Length > 0 ) )\r
+ if ((boxdef.Artist != null) && (boxdef.Artist.Length > 0))\r
{\r
- c曲リストノード.arスコア[ 0 ].譜面情報.アーティスト名 = boxdef.Artist;\r
+ c曲リストノード.arスコア[0].譜面情報.アーティスト名 = boxdef.Artist;\r
}\r
- if( ( boxdef.Comment != null ) && ( boxdef.Comment.Length > 0 ) )\r
+ if ((boxdef.Comment != null) && (boxdef.Comment.Length > 0))\r
{\r
- c曲リストノード.arスコア[ 0 ].譜面情報.コメント = boxdef.Comment;\r
+ c曲リストノード.arスコア[0].譜面情報.コメント = boxdef.Comment;\r
}\r
- if( ( boxdef.Preimage != null ) && ( boxdef.Preimage.Length > 0 ) )\r
+ if ((boxdef.Preimage != null) && (boxdef.Preimage.Length > 0))\r
{\r
- c曲リストノード.arスコア[ 0 ].譜面情報.Preimage = boxdef.Preimage;\r
+ c曲リストノード.arスコア[0].譜面情報.Preimage = boxdef.Preimage;\r
}\r
- if( ( boxdef.Premovie != null ) && ( boxdef.Premovie.Length > 0 ) )\r
+ if ((boxdef.Premovie != null) && (boxdef.Premovie.Length > 0))\r
{\r
- c曲リストノード.arスコア[ 0 ].譜面情報.Premovie = boxdef.Premovie;\r
+ c曲リストノード.arスコア[0].譜面情報.Premovie = boxdef.Premovie;\r
}\r
- if( ( boxdef.Presound != null ) && ( boxdef.Presound.Length > 0 ) )\r
+ if ((boxdef.Presound != null) && (boxdef.Presound.Length > 0))\r
{\r
- c曲リストノード.arスコア[ 0 ].譜面情報.Presound = boxdef.Presound;\r
+ c曲リストノード.arスコア[0].譜面情報.Presound = boxdef.Presound;\r
}\r
- if ( boxdef.SkinPath != null )\r
+ if (boxdef.SkinPath != null)\r
{\r
- if ( boxdef.SkinPath == "" )\r
+ if (boxdef.SkinPath == "")\r
{\r
// box.defにスキン情報が記載されていないなら、上位BOXのスキン情報をコピー\r
- c曲リストノード.strSkinPath = ( c曲リストノード.r親ノード == null ) ?\r
+ c曲リストノード.strSkinPath = (c曲リストノード.r親ノード == null) ?\r
"" : c曲リストノード.r親ノード.strSkinPath;\r
}\r
else\r
{\r
- // box.def 記載のスキン情報を利用\r
- c曲リストノード.strSkinPath = System.IO.Path.Combine( infoDir.FullName, boxdef.SkinPath );\r
+ // box.defに記載されているスキン情報をコピー。末尾に必ず\をつけておくこと。\r
+ string s = System.IO.Path.Combine(infoDir.FullName, boxdef.SkinPath);\r
+ if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
+ {\r
+ s += System.IO.Path.DirectorySeparatorChar;\r
+ }\r
+ if (CDTXMania.Instance.Skin.bIsValid(s))\r
+ {\r
+ c曲リストノード.strSkinPath = s;\r
+ }\r
+ else\r
+ {\r
+ c曲リストノード.strSkinPath = (c曲リストノード.r親ノード == null) ?\r
+ "" : c曲リストノード.r親ノード.strSkinPath;\r
+ }\r
}\r
}\r
- if ( boxdef.PerfectRange >= 0 )\r
+ if (boxdef.PerfectRange >= 0)\r
{\r
c曲リストノード.nPerfect範囲ms = boxdef.PerfectRange;\r
}\r
- if( boxdef.GreatRange >= 0 )\r
+ if (boxdef.GreatRange >= 0)\r
{\r
c曲リストノード.nGreat範囲ms = boxdef.GreatRange;\r
}\r
- if( boxdef.GoodRange >= 0 )\r
+ if (boxdef.GoodRange >= 0)\r
{\r
c曲リストノード.nGood範囲ms = boxdef.GoodRange;\r
}\r
- if( boxdef.PoorRange >= 0 )\r
+ if (boxdef.PoorRange >= 0)\r
{\r
c曲リストノード.nPoor範囲ms = boxdef.PoorRange;\r
}\r
}\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.Indent();\r
try\r
{\r
- StringBuilder sb = new StringBuilder( 0x100 );\r
- sb.Append( string.Format( "nID#{0:D3}", c曲リストノード.nID ) );\r
- if( c曲リストノード.r親ノード != null )\r
+ StringBuilder sb = new StringBuilder(0x100);\r
+ sb.Append(string.Format("nID#{0:D3}", c曲リストノード.nID));\r
+ if (c曲リストノード.r親ノード != null)\r
{\r
- sb.Append( string.Format( "(in#{0:D3}):", c曲リストノード.r親ノード.nID ) );\r
+ sb.Append(string.Format("(in#{0:D3}):", c曲リストノード.r親ノード.nID));\r
}\r
else\r
{\r
- sb.Append( "(onRoot):" );\r
+ sb.Append("(onRoot):");\r
}\r
- sb.Append( " BOX, Title=" + c曲リストノード.strタイトル );\r
- sb.Append( ", Folder=" + c曲リストノード.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
- sb.Append( ", Comment=" + c曲リストノード.arスコア[ 0 ].譜面情報.コメント );\r
- sb.Append( ", SkinPath=" + c曲リストノード.strSkinPath );\r
- Trace.TraceInformation( sb.ToString() );\r
+ sb.Append(" BOX, Title=" + c曲リストノード.strタイトル);\r
+ sb.Append(", Folder=" + c曲リストノード.arスコア[0].ファイル情報.フォルダの絶対パス);\r
+ sb.Append(", Comment=" + c曲リストノード.arスコア[0].譜面情報.コメント);\r
+ sb.Append(", SkinPath=" + c曲リストノード.strSkinPath);\r
+ Trace.TraceInformation(sb.ToString());\r
}\r
finally\r
{\r
Trace.Unindent();\r
}\r
}\r
- if( b子BOXへ再帰する )\r
+ if (b子BOXへ再帰する)\r
{\r
- this.t曲を検索してリストを作成する( infoDir.FullName + @"\", b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード );\r
+ this.t曲を検索してリストを作成する(infoDir.FullName + @"\", b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード);\r
}\r
}\r
//-----------------------------\r
\r
#region [ b.box.def を含むフォルダの場合 ]\r
//-----------------------------\r
- else if( File.Exists( infoDir.FullName + @"\box.def" ) )\r
+ else if (File.Exists(infoDir.FullName + @"\box.def"))\r
{\r
- CBoxDef boxdef = new CBoxDef( infoDir.FullName + @"\box.def" );\r
+ CBoxDef boxdef = new CBoxDef(infoDir.FullName + @"\box.def");\r
C曲リストノード c曲リストノード = new C曲リストノード();\r
c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.BOX;\r
c曲リストノード.bDTXFilesで始まるフォルダ名のBOXである = false;\r
c曲リストノード.strジャンル = boxdef.Genre;\r
c曲リストノード.col文字色 = boxdef.Color;\r
c曲リストノード.nスコア数 = 1;\r
- c曲リストノード.arスコア[ 0 ] = new Cスコア();\r
- c曲リストノード.arスコア[ 0 ].ファイル情報.フォルダの絶対パス = infoDir.FullName + @"\";\r
- c曲リストノード.arスコア[ 0 ].譜面情報.タイトル = boxdef.Title;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.ジャンル = boxdef.Genre;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.アーティスト名 = boxdef.Artist;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.コメント = boxdef.Comment;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.Preimage = boxdef.Preimage;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.Premovie = boxdef.Premovie;\r
- c曲リストノード.arスコア[ 0 ].譜面情報.Presound = boxdef.Presound;\r
+ c曲リストノード.arスコア[0] = new Cスコア();\r
+ c曲リストノード.arスコア[0].ファイル情報.フォルダの絶対パス = infoDir.FullName + @"\";\r
+ c曲リストノード.arスコア[0].譜面情報.タイトル = boxdef.Title;\r
+ c曲リストノード.arスコア[0].譜面情報.ジャンル = boxdef.Genre;\r
+ c曲リストノード.arスコア[0].譜面情報.アーティスト名 = boxdef.Artist;\r
+ c曲リストノード.arスコア[0].譜面情報.コメント = boxdef.Comment;\r
+ c曲リストノード.arスコア[0].譜面情報.Preimage = boxdef.Preimage;\r
+ c曲リストノード.arスコア[0].譜面情報.Premovie = boxdef.Premovie;\r
+ c曲リストノード.arスコア[0].譜面情報.Presound = boxdef.Presound;\r
c曲リストノード.r親ノード = node親;\r
\r
- if ( boxdef.SkinPath == "" )\r
+ if (boxdef.SkinPath == "")\r
{\r
// box.defにスキン情報が記載されていないなら、上位BOXのスキン情報をコピー\r
- c曲リストノード.strSkinPath = ( c曲リストノード.r親ノード == null ) ?\r
+ c曲リストノード.strSkinPath = (c曲リストノード.r親ノード == null) ?\r
"" : c曲リストノード.r親ノード.strSkinPath;\r
}\r
else\r
{\r
- // box.defに記載されているスキン情報をコピー\r
- c曲リストノード.strSkinPath = System.IO.Path.Combine( infoDir.FullName, boxdef.SkinPath );\r
+ // box.defに記載されているスキン情報をコピー。末尾に必ず\をつけておくこと。\r
+ string s = System.IO.Path.Combine(infoDir.FullName, boxdef.SkinPath);\r
+ if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
+ {\r
+ s += System.IO.Path.DirectorySeparatorChar;\r
+ }\r
+ if (CDTXMania.Instance.Skin.bIsValid(s))\r
+ {\r
+ c曲リストノード.strSkinPath = s;\r
+ }\r
+ else\r
+ {\r
+ c曲リストノード.strSkinPath = (c曲リストノード.r親ノード == null) ?\r
+ "" : c曲リストノード.r親ノード.strSkinPath;\r
+ }\r
}\r
- c曲リストノード.strBreadcrumbs = ( c曲リストノード.r親ノード == null ) ?\r
+ c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ?\r
c曲リストノード.strタイトル : c曲リストノード.r親ノード.strBreadcrumbs + " > " + c曲リストノード.strタイトル;\r
- \r
- \r
+\r
+\r
c曲リストノード.list子リスト = new List<C曲リストノード>();\r
c曲リストノード.nPerfect範囲ms = boxdef.PerfectRange;\r
c曲リストノード.nGreat範囲ms = boxdef.GreatRange;\r
c曲リストノード.nGood範囲ms = boxdef.GoodRange;\r
c曲リストノード.nPoor範囲ms = boxdef.PoorRange;\r
- listノードリスト.Add( c曲リストノード );\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ listノードリスト.Add(c曲リストノード);\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- Trace.TraceInformation( "box.def検出 : {0}", infoDir.FullName + @"\box.def" );\r
+ Trace.TraceInformation("box.def検出 : {0}", infoDir.FullName + @"\box.def");\r
Trace.Indent();\r
try\r
{\r
- StringBuilder sb = new StringBuilder( 0x400 );\r
- sb.Append( string.Format( "nID#{0:D3}", c曲リストノード.nID ) );\r
- if( c曲リストノード.r親ノード != null )\r
+ StringBuilder sb = new StringBuilder(0x400);\r
+ sb.Append(string.Format("nID#{0:D3}", c曲リストノード.nID));\r
+ if (c曲リストノード.r親ノード != null)\r
{\r
- sb.Append( string.Format( "(in#{0:D3}):", c曲リストノード.r親ノード.nID ) );\r
+ sb.Append(string.Format("(in#{0:D3}):", c曲リストノード.r親ノード.nID));\r
}\r
else\r
{\r
- sb.Append( "(onRoot):" );\r
+ sb.Append("(onRoot):");\r
}\r
- sb.Append( "BOX, Title=" + c曲リストノード.strタイトル );\r
- if( ( c曲リストノード.strジャンル != null ) && ( c曲リストノード.strジャンル.Length > 0 ) )\r
+ sb.Append("BOX, Title=" + c曲リストノード.strタイトル);\r
+ if ((c曲リストノード.strジャンル != null) && (c曲リストノード.strジャンル.Length > 0))\r
{\r
- sb.Append( ", Genre=" + c曲リストノード.strジャンル );\r
+ sb.Append(", Genre=" + c曲リストノード.strジャンル);\r
}\r
- if( ( c曲リストノード.arスコア[ 0 ].譜面情報.アーティスト名 != null ) && ( c曲リストノード.arスコア[ 0 ].譜面情報.アーティスト名.Length > 0 ) )\r
+ if ((c曲リストノード.arスコア[0].譜面情報.アーティスト名 != null) && (c曲リストノード.arスコア[0].譜面情報.アーティスト名.Length > 0))\r
{\r
- sb.Append( ", Artist=" + c曲リストノード.arスコア[ 0 ].譜面情報.アーティスト名 );\r
+ sb.Append(", Artist=" + c曲リストノード.arスコア[0].譜面情報.アーティスト名);\r
}\r
- if( ( c曲リストノード.arスコア[ 0 ].譜面情報.コメント != null ) && ( c曲リストノード.arスコア[ 0 ].譜面情報.コメント.Length > 0 ) )\r
+ if ((c曲リストノード.arスコア[0].譜面情報.コメント != null) && (c曲リストノード.arスコア[0].譜面情報.コメント.Length > 0))\r
{\r
- sb.Append( ", Comment=" + c曲リストノード.arスコア[ 0 ].譜面情報.コメント );\r
+ sb.Append(", Comment=" + c曲リストノード.arスコア[0].譜面情報.コメント);\r
}\r
- if( ( c曲リストノード.arスコア[ 0 ].譜面情報.Preimage != null ) && ( c曲リストノード.arスコア[ 0 ].譜面情報.Preimage.Length > 0 ) )\r
+ if ((c曲リストノード.arスコア[0].譜面情報.Preimage != null) && (c曲リストノード.arスコア[0].譜面情報.Preimage.Length > 0))\r
{\r
- sb.Append( ", Preimage=" + c曲リストノード.arスコア[ 0 ].譜面情報.Preimage );\r
+ sb.Append(", Preimage=" + c曲リストノード.arスコア[0].譜面情報.Preimage);\r
}\r
- if( ( c曲リストノード.arスコア[ 0 ].譜面情報.Premovie != null ) && ( c曲リストノード.arスコア[ 0 ].譜面情報.Premovie.Length > 0 ) )\r
+ if ((c曲リストノード.arスコア[0].譜面情報.Premovie != null) && (c曲リストノード.arスコア[0].譜面情報.Premovie.Length > 0))\r
{\r
- sb.Append( ", Premovie=" + c曲リストノード.arスコア[ 0 ].譜面情報.Premovie );\r
+ sb.Append(", Premovie=" + c曲リストノード.arスコア[0].譜面情報.Premovie);\r
}\r
- if( ( c曲リストノード.arスコア[ 0 ].譜面情報.Presound != null ) && ( c曲リストノード.arスコア[ 0 ].譜面情報.Presound.Length > 0 ) )\r
+ if ((c曲リストノード.arスコア[0].譜面情報.Presound != null) && (c曲リストノード.arスコア[0].譜面情報.Presound.Length > 0))\r
{\r
- sb.Append( ", Presound=" + c曲リストノード.arスコア[ 0 ].譜面情報.Presound );\r
+ sb.Append(", Presound=" + c曲リストノード.arスコア[0].譜面情報.Presound);\r
}\r
- if( c曲リストノード.col文字色 != ColorTranslator.FromHtml( "White" ) )\r
+ if (c曲リストノード.col文字色 != ColorTranslator.FromHtml("White"))\r
{\r
- sb.Append( ", FontColor=" + c曲リストノード.col文字色 );\r
+ sb.Append(", FontColor=" + c曲リストノード.col文字色);\r
}\r
- if( c曲リストノード.nPerfect範囲ms != -1 )\r
+ if (c曲リストノード.nPerfect範囲ms != -1)\r
{\r
- sb.Append( ", Perfect=" + c曲リストノード.nPerfect範囲ms + "ms" );\r
+ sb.Append(", Perfect=" + c曲リストノード.nPerfect範囲ms + "ms");\r
}\r
- if( c曲リストノード.nGreat範囲ms != -1 )\r
+ if (c曲リストノード.nGreat範囲ms != -1)\r
{\r
- sb.Append( ", Great=" + c曲リストノード.nGreat範囲ms + "ms" );\r
+ sb.Append(", Great=" + c曲リストノード.nGreat範囲ms + "ms");\r
}\r
- if( c曲リストノード.nGood範囲ms != -1 )\r
+ if (c曲リストノード.nGood範囲ms != -1)\r
{\r
- sb.Append( ", Good=" + c曲リストノード.nGood範囲ms + "ms" );\r
+ sb.Append(", Good=" + c曲リストノード.nGood範囲ms + "ms");\r
}\r
- if( c曲リストノード.nPoor範囲ms != -1 )\r
+ if (c曲リストノード.nPoor範囲ms != -1)\r
{\r
- sb.Append( ", Poor=" + c曲リストノード.nPoor範囲ms + "ms" );\r
+ sb.Append(", Poor=" + c曲リストノード.nPoor範囲ms + "ms");\r
}\r
- if ( ( c曲リストノード.strSkinPath != null ) && ( c曲リストノード.strSkinPath.Length > 0 ) )\r
+ if ((c曲リストノード.strSkinPath != null) && (c曲リストノード.strSkinPath.Length > 0))\r
{\r
- sb.Append( ", SkinPath=" + c曲リストノード.strSkinPath );\r
+ sb.Append(", SkinPath=" + c曲リストノード.strSkinPath);\r
}\r
- Trace.TraceInformation( sb.ToString() );\r
+ Trace.TraceInformation(sb.ToString());\r
}\r
finally\r
{\r
Trace.Unindent();\r
}\r
}\r
- if( b子BOXへ再帰する )\r
+ if (b子BOXへ再帰する)\r
{\r
- this.t曲を検索してリストを作成する( infoDir.FullName + @"\", b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード );\r
+ this.t曲を検索してリストを作成する(infoDir.FullName + @"\", b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード);\r
}\r
}\r
//-----------------------------\r
//-----------------------------\r
else\r
{\r
- this.t曲を検索してリストを作成する( infoDir.FullName + @"\", b子BOXへ再帰する, listノードリスト, node親 );\r
+ this.t曲を検索してリストを作成する(infoDir.FullName + @"\", b子BOXへ再帰する, listノードリスト, node親);\r
}\r
//-----------------------------\r
#endregion\r
public void tスコアキャッシュを曲リストに反映する()\r
{\r
this.nスコアキャッシュから反映できたスコア数 = 0;\r
- this.tスコアキャッシュを曲リストに反映する( this.list曲ルート );\r
+ this.tスコアキャッシュを曲リストに反映する(this.list曲ルート);\r
}\r
- private void tスコアキャッシュを曲リストに反映する( List<C曲リストノード> ノードリスト )\r
+ private void tスコアキャッシュを曲リストに反映する(List<C曲リストノード> ノードリスト)\r
{\r
- using( List<C曲リストノード>.Enumerator enumerator = ノードリスト.GetEnumerator() )\r
+ using (List<C曲リストノード>.Enumerator enumerator = ノードリスト.GetEnumerator())\r
{\r
- while( enumerator.MoveNext() )\r
+ while (enumerator.MoveNext())\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
C曲リストノード node = enumerator.Current;\r
- if( node.eノード種別 == C曲リストノード.Eノード種別.BOX )\r
+ if (node.eノード種別 == C曲リストノード.Eノード種別.BOX)\r
{\r
- this.tスコアキャッシュを曲リストに反映する( node.list子リスト );\r
+ this.tスコアキャッシュを曲リストに反映する(node.list子リスト);\r
}\r
- else if( ( node.eノード種別 == C曲リストノード.Eノード種別.SCORE ) || ( node.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI ) )\r
+ else if ((node.eノード種別 == C曲リストノード.Eノード種別.SCORE) || (node.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI))\r
{\r
Predicate<Cスコア> match = null;\r
- for( int lv = 0; lv < 5; lv++ )\r
+ for (int lv = 0; lv < 5; lv++)\r
{\r
- if( node.arスコア[ lv ] != null )\r
+ if (node.arスコア[lv] != null)\r
{\r
- if( match == null )\r
+ if (match == null)\r
{\r
- match = delegate( Cスコア sc )\r
+ match = delegate (Cスコア sc)\r
{\r
return\r
(\r
- ( sc.ファイル情報.ファイルの絶対パス.Equals( node.arスコア[ lv ].ファイル情報.ファイルの絶対パス )\r
- && sc.ファイル情報.ファイルサイズ.Equals( node.arスコア[ lv ].ファイル情報.ファイルサイズ ) )\r
- && ( sc.ファイル情報.最終更新日時.Equals( node.arスコア[ lv ].ファイル情報.最終更新日時 )\r
- && sc.ScoreIni情報.ファイルサイズ.Equals( node.arスコア[ lv ].ScoreIni情報.ファイルサイズ ) ) )\r
- && sc.ScoreIni情報.最終更新日時.Equals( node.arスコア[ lv ].ScoreIni情報.最終更新日時 );\r
+ (sc.ファイル情報.ファイルの絶対パス.Equals(node.arスコア[lv].ファイル情報.ファイルの絶対パス)\r
+ && sc.ファイル情報.ファイルサイズ.Equals(node.arスコア[lv].ファイル情報.ファイルサイズ))\r
+ && (sc.ファイル情報.最終更新日時.Equals(node.arスコア[lv].ファイル情報.最終更新日時)\r
+ && sc.ScoreIni情報.ファイルサイズ.Equals(node.arスコア[lv].ScoreIni情報.ファイルサイズ)))\r
+ && sc.ScoreIni情報.最終更新日時.Equals(node.arスコア[lv].ScoreIni情報.最終更新日時);\r
};\r
}\r
- int nMatched = this.listSongsDB.FindIndex( match );\r
- if( nMatched == -1 )\r
+ int nMatched = this.listSongsDB.FindIndex(match);\r
+ if (nMatched == -1)\r
{\r
-//Trace.TraceInformation( "songs.db に存在しません。({0})", node.arスコア[ lv ].ファイル情報.ファイルの絶対パス );\r
- if ( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ //Trace.TraceInformation( "songs.db に存在しません。({0})", node.arスコア[ lv ].ファイル情報.ファイルの絶対パス );\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- Trace.TraceInformation( "songs.db に存在しません。({0})", node.arスコア[ lv ].ファイル情報.ファイルの絶対パス );\r
+ Trace.TraceInformation("songs.db に存在しません。({0})", node.arスコア[lv].ファイル情報.ファイルの絶対パス);\r
}\r
}\r
else\r
{\r
- node.arスコア[ lv ].譜面情報 = this.listSongsDB[ nMatched ].譜面情報;\r
- node.arスコア[ lv ].bSongDBにキャッシュがあった = true;\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ node.arスコア[lv].譜面情報 = this.listSongsDB[nMatched].譜面情報;\r
+ node.arスコア[lv].bSongDBにキャッシュがあった = true;\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- Trace.TraceInformation( "songs.db から転記しました。({0})", node.arスコア[ lv ].ファイル情報.ファイルの絶対パス );\r
+ Trace.TraceInformation("songs.db から転記しました。({0})", node.arスコア[lv].ファイル情報.ファイルの絶対パス);\r
}\r
this.nスコアキャッシュから反映できたスコア数++;\r
- if( node.arスコア[ lv ].ScoreIni情報.最終更新日時 != this.listSongsDB[ nMatched ].ScoreIni情報.最終更新日時 )\r
+ if (node.arスコア[lv].ScoreIni情報.最終更新日時 != this.listSongsDB[nMatched].ScoreIni情報.最終更新日時)\r
{\r
- string strFileNameScoreIni = node.arスコア[ lv ].ファイル情報.ファイルの絶対パス + ".score.ini";\r
+ string strFileNameScoreIni = node.arスコア[lv].ファイル情報.ファイルの絶対パス + ".score.ini";\r
try\r
{\r
- CScoreIni scoreIni = new CScoreIni( strFileNameScoreIni );\r
- scoreIni.t全演奏記録セクションの整合性をチェックし不整合があればリセットする();\r
- for( int i = 0; i < 3; i++ )\r
+ CScoreIni scoreIni = new CScoreIni(strFileNameScoreIni);\r
+ for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
{\r
- int nSectionHiSkill = ( i * 2 ) + 1;\r
- if( scoreIni.stセクション[ nSectionHiSkill ].b演奏にMIDI入力を使用した\r
- || scoreIni.stセクション[ nSectionHiSkill ].b演奏にキーボードを使用した\r
- || scoreIni.stセクション[ nSectionHiSkill ].b演奏にジョイパッドを使用した\r
- || scoreIni.stセクション[ nSectionHiSkill ].b演奏にマウスを使用した )\r
+ if (scoreIni.stセクション.HiSkill[i].b演奏にMIDI入力を使用した\r
+ || scoreIni.stセクション.HiSkill[i].b演奏にキーボードを使用した\r
+ || scoreIni.stセクション.HiSkill[i].b演奏にジョイパッドを使用した\r
+ || scoreIni.stセクション.HiSkill[i].b演奏にマウスを使用した)\r
{\r
- node.arスコア[ lv ].譜面情報.最大ランク[ i ] = \r
- (scoreIni.stファイル.BestRank[i] != (int)CScoreIni.ERANK.UNKNOWN)?\r
- (int)scoreIni.stファイル.BestRank[i] : CScoreIni.tランク値を計算して返す( scoreIni.stセクション[ nSectionHiSkill ] );\r
+ node.arスコア[lv].譜面情報.最大ランク[i] =\r
+ (scoreIni.stファイル.BestRank[i] != CScoreIni.ERANK.UNKNOWN) ?\r
+ scoreIni.stファイル.BestRank[i] : CScoreIni.tランク値を計算して返す(scoreIni.stセクション.HiSkill[i]);\r
}\r
else\r
{\r
- node.arスコア[ lv ].譜面情報.最大ランク[ i ] = (int)CScoreIni.ERANK.UNKNOWN;\r
+ node.arスコア[lv].譜面情報.最大ランク[i] = CScoreIni.ERANK.UNKNOWN;\r
}\r
- node.arスコア[ lv ].譜面情報.最大スキル[ i ] = scoreIni.stセクション[ nSectionHiSkill ].db演奏型スキル値;\r
- node.arスコア[ lv ].譜面情報.フルコンボ[ i ] = scoreIni.stセクション[ nSectionHiSkill ].bフルコンボである;\r
+ node.arスコア[lv].譜面情報.最大スキル[i] = scoreIni.stセクション.HiSkill[i].db演奏型スキル値;\r
+ node.arスコア[lv].譜面情報.フルコンボ[i] = scoreIni.stセクション.HiSkill[i].bフルコンボである;\r
}\r
- node.arスコア[ lv ].譜面情報.演奏回数.Drums = scoreIni.stファイル.PlayCountDrums;\r
- node.arスコア[ lv ].譜面情報.演奏回数.Guitar = scoreIni.stファイル.PlayCountGuitar;\r
- node.arスコア[ lv ].譜面情報.演奏回数.Bass = scoreIni.stファイル.PlayCountBass;\r
- for( int j = 0; j < 5; j++ )\r
+ node.arスコア[lv].譜面情報.演奏回数.Drums = scoreIni.stファイル.PlayCountDrums;\r
+ node.arスコア[lv].譜面情報.演奏回数.Guitar = scoreIni.stファイル.PlayCountGuitar;\r
+ node.arスコア[lv].譜面情報.演奏回数.Bass = scoreIni.stファイル.PlayCountBass;\r
+ for (int j = 0; j < 5; j++)\r
{\r
- node.arスコア[ lv ].譜面情報.演奏履歴[ j ] = scoreIni.stファイル.History[ j ];\r
+ node.arスコア[lv].譜面情報.演奏履歴[j] = scoreIni.stファイル.History[j];\r
}\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- Trace.TraceInformation( "演奏記録ファイルから HiSkill 情報と演奏履歴を取得しました。({0})", strFileNameScoreIni );\r
+ Trace.TraceInformation("演奏記録ファイルから HiSkill 情報と演奏履歴を取得しました。({0})", strFileNameScoreIni);\r
}\r
}\r
catch\r
{\r
- Trace.TraceError( "演奏記録ファイルの読み込みに失敗しました。({0})", strFileNameScoreIni );\r
+ Trace.TraceError("演奏記録ファイルの読み込みに失敗しました。({0})", strFileNameScoreIni);\r
}\r
}\r
}\r
}\r
}\r
}\r
- private Cスコア tSongsDBからスコアを1つ読み込む( BinaryReader br )\r
+ private Cスコア tSongsDBからスコアを1つ読み込む(BinaryReader br)\r
{\r
Cスコア cスコア = new Cスコア();\r
cスコア.ファイル情報.ファイルの絶対パス = br.ReadString();\r
cスコア.ファイル情報.フォルダの絶対パス = br.ReadString();\r
- cスコア.ファイル情報.最終更新日時 = new DateTime( br.ReadInt64() );\r
+ cスコア.ファイル情報.最終更新日時 = new DateTime(br.ReadInt64());\r
cスコア.ファイル情報.ファイルサイズ = br.ReadInt64();\r
- cスコア.ScoreIni情報.最終更新日時 = new DateTime( br.ReadInt64() );\r
+ cスコア.ScoreIni情報.最終更新日時 = new DateTime(br.ReadInt64());\r
cスコア.ScoreIni情報.ファイルサイズ = br.ReadInt64();\r
cスコア.譜面情報.タイトル = br.ReadString();\r
cスコア.譜面情報.アーティスト名 = br.ReadString();\r
cスコア.譜面情報.レベル.Drums = br.ReadInt32();\r
cスコア.譜面情報.レベル.Guitar = br.ReadInt32();\r
cスコア.譜面情報.レベル.Bass = br.ReadInt32();\r
- cスコア.譜面情報.最大ランク.Drums = br.ReadInt32();\r
- cスコア.譜面情報.最大ランク.Guitar = br.ReadInt32();\r
- cスコア.譜面情報.最大ランク.Bass = br.ReadInt32();\r
+ cスコア.譜面情報.最大ランク.Drums = (CScoreIni.ERANK)br.ReadInt32();\r
+ cスコア.譜面情報.最大ランク.Guitar = (CScoreIni.ERANK)br.ReadInt32();\r
+ cスコア.譜面情報.最大ランク.Bass = (CScoreIni.ERANK)br.ReadInt32();\r
cスコア.譜面情報.最大スキル.Drums = br.ReadDouble();\r
cスコア.譜面情報.最大スキル.Guitar = br.ReadDouble();\r
cスコア.譜面情報.最大スキル.Bass = br.ReadDouble();\r
cスコア.譜面情報.演奏履歴.行4 = br.ReadString();\r
cスコア.譜面情報.演奏履歴.行5 = br.ReadString();\r
cスコア.譜面情報.レベルを非表示にする = br.ReadBoolean();\r
- cスコア.譜面情報.曲種別 = (CDTX.E種別) br.ReadInt32();\r
+ cスコア.譜面情報.曲種別 = (EDTX種別)br.ReadInt32();\r
cスコア.譜面情報.Bpm = br.ReadDouble();\r
cスコア.譜面情報.Duration = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Drums = (EUseLanes)br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Guitar = (EUseLanes)br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Bass = (EUseLanes)br.ReadInt32();\r
\r
-//Debug.WriteLine( "songs.db: " + cスコア.ファイル情報.ファイルの絶対パス );\r
+ //Debug.WriteLine( "songs.db: " + cスコア.ファイル情報.ファイルの絶対パス );\r
return cスコア;\r
}\r
//-----------------\r
public void tSongsDBになかった曲をファイルから読み込んで反映する()\r
{\r
this.nファイルから反映できたスコア数 = 0;\r
- this.tSongsDBになかった曲をファイルから読み込んで反映する( this.list曲ルート );\r
+ this.tSongsDBになかった曲をファイルから読み込んで反映する(this.list曲ルート);\r
}\r
- private void tSongsDBになかった曲をファイルから読み込んで反映する( List<C曲リストノード> ノードリスト )\r
+ private void tSongsDBになかった曲をファイルから読み込んで反映する(List<C曲リストノード> ノードリスト)\r
{\r
- foreach( C曲リストノード c曲リストノード in ノードリスト )\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
- if( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX )\r
+ if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX)\r
{\r
- this.tSongsDBになかった曲をファイルから読み込んで反映する( c曲リストノード.list子リスト );\r
+ this.tSongsDBになかった曲をファイルから読み込んで反映する(c曲リストノード.list子リスト);\r
}\r
- else if( ( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE )\r
- || ( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI ) )\r
+ else if ((c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE)\r
+ || (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI))\r
{\r
- for( int i = 0; i < 5; i++ )\r
+ for (int i = 0; i < 5; i++)\r
{\r
- if( ( c曲リストノード.arスコア[ i ] != null ) && !c曲リストノード.arスコア[ i ].bSongDBにキャッシュがあった )\r
+ if ((c曲リストノード.arスコア[i] != null) && !c曲リストノード.arスコア[i].bSongDBにキャッシュがあった)\r
{\r
- #region [ DTX ファイルのヘッダだけ読み込み、Cスコア.譜面情報 を設定する ]\r
+ #region [ Cスコア.譜面情報 を設定する ]\r
//-----------------\r
- string path = c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス;\r
- if( File.Exists( path ) )\r
+ string path = c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス;\r
+ if (File.Exists(path))\r
{\r
try\r
{\r
- CDTX cdtx = new CDTX( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス, true );\r
- c曲リストノード.arスコア[ i ].譜面情報.タイトル = cdtx.TITLE;\r
- c曲リストノード.arスコア[ i ].譜面情報.アーティスト名 = cdtx.ARTIST;\r
- c曲リストノード.arスコア[ i ].譜面情報.コメント = cdtx.COMMENT;\r
- c曲リストノード.arスコア[ i ].譜面情報.ジャンル = cdtx.GENRE;\r
- c曲リストノード.arスコア[ i ].譜面情報.Preimage = cdtx.PREIMAGE;\r
- c曲リストノード.arスコア[ i ].譜面情報.Premovie = cdtx.PREMOVIE;\r
- c曲リストノード.arスコア[ i ].譜面情報.Presound = cdtx.PREVIEW;\r
- c曲リストノード.arスコア[ i ].譜面情報.Backgound = ( ( cdtx.BACKGROUND != null ) && ( cdtx.BACKGROUND.Length > 0 ) ) ? cdtx.BACKGROUND : cdtx.BACKGROUND_GR;\r
- c曲リストノード.arスコア[ i ].譜面情報.レベル.Drums = cdtx.LEVEL.Drums;\r
- c曲リストノード.arスコア[ i ].譜面情報.レベル.Guitar = cdtx.LEVEL.Guitar;\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
- c曲リストノード.arスコア[ i ].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;\r
+ //#36177 2016.7.30 ikanick 曲データの取得時、bLoadDTXDetailがtrueであれば bヘッダのみをfalseにし 詳細なデータを取得する\r
+ CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, !CDTXMania.Instance.ConfigIni.bLoadDTXDetail );\r
+ c曲リストノード.arスコア[i].譜面情報.タイトル = cdtx.TITLE;\r
+ c曲リストノード.arスコア[i].譜面情報.アーティスト名 = cdtx.ARTIST;\r
+ c曲リストノード.arスコア[i].譜面情報.コメント = cdtx.COMMENT;\r
+ c曲リストノード.arスコア[i].譜面情報.ジャンル = cdtx.GENRE;\r
+ c曲リストノード.arスコア[i].譜面情報.Preimage = cdtx.PREIMAGE;\r
+ c曲リストノード.arスコア[i].譜面情報.Premovie = cdtx.PREMOVIE;\r
+ c曲リストノード.arスコア[i].譜面情報.Presound = cdtx.PREVIEW;\r
+ c曲リストノード.arスコア[i].譜面情報.Backgound = ((cdtx.BACKGROUND != null) && (cdtx.BACKGROUND.Length > 0)) ? cdtx.BACKGROUND : cdtx.BACKGROUND_GR;\r
+ c曲リストノード.arスコア[i].譜面情報.レベル.Drums = cdtx.LEVEL.Drums;\r
+ c曲リストノード.arスコア[i].譜面情報.レベル.Guitar = cdtx.LEVEL.Guitar;\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
+ c曲リストノード.arスコア[i].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;\r
+ \r
+ // #36177 2016.7.30 ikanick\r
+ #region [ LoadDTXDetail ]\r
+ c曲リストノード.arスコア[i].譜面情報.使用レーン数.Drums = cdtx.n使用レーン数.Drums;\r
+ c曲リストノード.arスコア[i].譜面情報.使用レーン数.Guitar = cdtx.n使用レーン数.Guitar;\r
+ c曲リストノード.arスコア[i].譜面情報.使用レーン数.Bass = cdtx.n使用レーン数.Bass;\r
+ #endregion\r
+\r
this.nファイルから反映できたスコア数++;\r
cdtx.On非活性化();\r
-//Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル );\r
+ //Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル );\r
#region [ 曲検索ログ出力 ]\r
//-----------------\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- StringBuilder sb = new StringBuilder( 0x400 );\r
- sb.Append( string.Format( "曲データファイルから譜面情報を転記しました。({0})", path ) );\r
- sb.Append( "(title=" + c曲リストノード.arスコア[ i ].譜面情報.タイトル );\r
- sb.Append( ", artist=" + c曲リストノード.arスコア[ i ].譜面情報.アーティスト名 );\r
- sb.Append( ", comment=" + c曲リストノード.arスコア[ i ].譜面情報.コメント );\r
- sb.Append( ", genre=" + c曲リストノード.arスコア[ i ].譜面情報.ジャンル );\r
- sb.Append( ", preimage=" + c曲リストノード.arスコア[ i ].譜面情報.Preimage );\r
- sb.Append( ", premovie=" + c曲リストノード.arスコア[ i ].譜面情報.Premovie );\r
- sb.Append( ", presound=" + c曲リストノード.arスコア[ i ].譜面情報.Presound );\r
- sb.Append( ", background=" + c曲リストノード.arスコア[ i ].譜面情報.Backgound );\r
- sb.Append( ", lvDr=" + c曲リストノード.arスコア[ i ].譜面情報.レベル.Drums );\r
- sb.Append( ", lvGt=" + c曲リストノード.arスコア[ i ].譜面情報.レベル.Guitar );\r
- sb.Append( ", lvBs=" + c曲リストノード.arスコア[ i ].譜面情報.レベル.Bass );\r
- sb.Append( ", lvHide=" + c曲リストノード.arスコア[ i ].譜面情報.レベルを非表示にする );\r
- sb.Append( ", type=" + c曲リストノード.arスコア[ i ].譜面情報.曲種別 );\r
- sb.Append( ", bpm=" + c曲リストノード.arスコア[ i ].譜面情報.Bpm );\r
- // sb.Append( ", duration=" + c曲リストノード.arスコア[ i ].譜面情報.Duration );\r
- Trace.TraceInformation( sb.ToString() );\r
+ StringBuilder sb = new StringBuilder(0x400);\r
+ sb.Append(string.Format("曲データファイルから譜面情報を転記しました。({0})", path));\r
+ sb.Append("(title=" + c曲リストノード.arスコア[i].譜面情報.タイトル);\r
+ sb.Append(", artist=" + c曲リストノード.arスコア[i].譜面情報.アーティスト名);\r
+ sb.Append(", comment=" + c曲リストノード.arスコア[i].譜面情報.コメント);\r
+ sb.Append(", genre=" + c曲リストノード.arスコア[i].譜面情報.ジャンル);\r
+ sb.Append(", preimage=" + c曲リストノード.arスコア[i].譜面情報.Preimage);\r
+ sb.Append(", premovie=" + c曲リストノード.arスコア[i].譜面情報.Premovie);\r
+ sb.Append(", presound=" + c曲リストノード.arスコア[i].譜面情報.Presound);\r
+ sb.Append(", background=" + c曲リストノード.arスコア[i].譜面情報.Backgound);\r
+ sb.Append(", lvDr=" + c曲リストノード.arスコア[i].譜面情報.レベル.Drums);\r
+ sb.Append(", lvGt=" + c曲リストノード.arスコア[i].譜面情報.レベル.Guitar);\r
+ sb.Append(", lvBs=" + c曲リストノード.arスコア[i].譜面情報.レベル.Bass);\r
+ sb.Append(", lvHide=" + c曲リストノード.arスコア[i].譜面情報.レベルを非表示にする);\r
+ sb.Append(", type=" + c曲リストノード.arスコア[i].譜面情報.曲種別);\r
+ sb.Append(", bpm=" + c曲リストノード.arスコア[i].譜面情報.Bpm);\r
+ // sb.Append( ", duration=" + c曲リストノード.arスコア[ i ].譜面情報.Duration );\r
+ sb.Append(", lnDr=" + c曲リストノード.arスコア[i].譜面情報.使用レーン数.Drums);\r
+ sb.Append(", lnGt=" + c曲リストノード.arスコア[i].譜面情報.使用レーン数.Guitar);\r
+ sb.Append(", lnBs=" + c曲リストノード.arスコア[i].譜面情報.使用レーン数.Bass);\r
+ Trace.TraceInformation(sb.ToString());\r
}\r
//-----------------\r
#endregion\r
}\r
- catch( Exception exception )\r
+ catch (Exception exception)\r
{\r
- Trace.TraceError( exception.Message );\r
- c曲リストノード.arスコア[ i ] = null;\r
+ Trace.TraceError(exception.Message);\r
+ c曲リストノード.arスコア[i] = null;\r
c曲リストノード.nスコア数--;\r
this.n検索されたスコア数--;\r
- Trace.TraceError( "曲データファイルの読み込みに失敗しました。({0})", path );\r
+ Trace.TraceError("曲データファイルの読み込みに失敗しました。({0})", path);\r
}\r
}\r
//-----------------\r
\r
#region [ 対応する .score.ini が存在していれば読み込み、Cスコア.譜面情報 に追加設定する ]\r
//-----------------\r
- this.tScoreIniを読み込んで譜面情報を設定する( c曲リストノード.arスコア[ i ].ファイル情報.ファイルの絶対パス + ".score.ini", ref c曲リストノード.arスコア[ i ] );\r
+ this.tScoreIniを読み込んで譜面情報を設定する(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス + ".score.ini", ref c曲リストノード.arスコア[i]);\r
//-----------------\r
#endregion\r
}\r
//-----------------\r
public void t曲リストへ後処理を適用する()\r
{\r
- this.t曲リストへ後処理を適用する( this.list曲ルート );\r
+ listStrBoxDefSkinSubfolderFullName = new List<string>();\r
+ if (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders != null)\r
+ {\r
+ foreach (string b in CDTXMania.Instance.Skin.strBoxDefSkinSubfolders)\r
+ {\r
+ listStrBoxDefSkinSubfolderFullName.Add(b);\r
+ }\r
+ }\r
+\r
+ this.t曲リストへ後処理を適用する(this.list曲ルート);\r
+\r
+ #region [ skin名で比較して、systemスキンとboxdefスキンに重複があれば、boxdefスキン側を削除する ]\r
+ string[] systemSkinNames = CSkin.GetSkinName(CDTXMania.Instance.Skin.strSystemSkinSubfolders);\r
+ List<string> l = new List<string>(listStrBoxDefSkinSubfolderFullName);\r
+ foreach (string boxdefSkinSubfolderFullName in l)\r
+ {\r
+ if (Array.BinarySearch(systemSkinNames,\r
+ CSkin.GetSkinName(boxdefSkinSubfolderFullName),\r
+ StringComparer.InvariantCultureIgnoreCase) >= 0)\r
+ {\r
+ listStrBoxDefSkinSubfolderFullName.Remove(boxdefSkinSubfolderFullName);\r
+ }\r
+ }\r
+ #endregion\r
+ string[] ba = listStrBoxDefSkinSubfolderFullName.ToArray();\r
+ Array.Sort(ba);\r
+ CDTXMania.Instance.Skin.strBoxDefSkinSubfolders = ba;\r
}\r
- private void t曲リストへ後処理を適用する( List<C曲リストノード> ノードリスト )\r
+ private void t曲リストへ後処理を適用する(List<C曲リストノード> ノードリスト)\r
{\r
#region [ リストに1つ以上の曲があるなら RANDOM BOX を入れる ]\r
//-----------------------------\r
- if( ノードリスト.Count > 0 )\r
+ if (ノードリスト.Count > 0)\r
{\r
C曲リストノード itemRandom = new C曲リストノード();\r
itemRandom.eノード種別 = C曲リストノード.Eノード種別.RANDOM;\r
itemRandom.strタイトル = "< RANDOM SELECT >";\r
itemRandom.nスコア数 = 5;\r
- itemRandom.r親ノード = ノードリスト[ 0 ].r親ノード;\r
+ itemRandom.r親ノード = ノードリスト[0].r親ノード;\r
\r
- itemRandom.strBreadcrumbs = ( itemRandom.r親ノード == null ) ?\r
- itemRandom.strタイトル : itemRandom.r親ノード.strBreadcrumbs + " > " + itemRandom.strタイトル;\r
+ itemRandom.strBreadcrumbs = (itemRandom.r親ノード == null) ?\r
+ itemRandom.strタイトル : itemRandom.r親ノード.strBreadcrumbs + " > " + itemRandom.strタイトル;\r
\r
- for( int i = 0; i < 5; i++ )\r
+ for (int i = 0; i < 5; i++)\r
{\r
- itemRandom.arスコア[ i ] = new Cスコア();\r
- itemRandom.arスコア[ i ].譜面情報.タイトル = string.Format( "< RANDOM SELECT Lv.{0} >", i + 1 );\r
+ itemRandom.arスコア[i] = new Cスコア();\r
+ itemRandom.arスコア[i].譜面情報.タイトル = string.Format("< RANDOM SELECT Lv.{0} >", i + 1);\r
itemRandom.arスコア[i].譜面情報.コメント =\r
(CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ?\r
string.Format("難易度レベル {0} 付近の曲をランダムに選択します。難易度レベルを持たない曲も選択候補となります。", i + 1) :\r
string.Format("Random select from the songs which has the level about L{0}. Non-leveled songs may also selected.", i + 1);\r
- itemRandom.ar難易度ラベル[ i ] = string.Format( "L{0}", i + 1 );\r
+ itemRandom.ar難易度ラベル[i] = string.Format("L{0}", i + 1);\r
}\r
- ノードリスト.Add( itemRandom );\r
+ ノードリスト.Add(itemRandom);\r
\r
#region [ ログ出力 ]\r
//-----------------------------\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- StringBuilder sb = new StringBuilder( 0x100 );\r
- sb.Append( string.Format( "nID#{0:D3}", itemRandom.nID ) );\r
- if( itemRandom.r親ノード != null )\r
+ StringBuilder sb = new StringBuilder(0x100);\r
+ sb.Append(string.Format("nID#{0:D3}", itemRandom.nID));\r
+ if (itemRandom.r親ノード != null)\r
{\r
- sb.Append( string.Format( "(in#{0:D3}):", itemRandom.r親ノード.nID ) );\r
+ sb.Append(string.Format("(in#{0:D3}):", itemRandom.r親ノード.nID));\r
}\r
else\r
{\r
- sb.Append( "(onRoot):" );\r
+ sb.Append("(onRoot):");\r
}\r
- sb.Append( " RANDOM" );\r
- Trace.TraceInformation( sb.ToString() );\r
+ sb.Append(" RANDOM");\r
+ Trace.TraceInformation(sb.ToString());\r
}\r
//-----------------------------\r
#endregion\r
#endregion\r
\r
// すべてのノードについて…\r
- foreach( C曲リストノード c曲リストノード in ノードリスト )\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
#region [ BOXノードなら子リストに <<BACK を入れ、子リストに後処理を適用する ]\r
//-----------------------------\r
- if( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX )\r
+ if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX)\r
{\r
C曲リストノード itemBack = new C曲リストノード();\r
itemBack.eノード種別 = C曲リストノード.Eノード種別.BACKBOX;\r
itemBack.nスコア数 = 1;\r
itemBack.r親ノード = c曲リストノード;\r
\r
- itemBack.strSkinPath = ( c曲リストノード.r親ノード == null ) ?\r
+ itemBack.strSkinPath = (c曲リストノード.r親ノード == null) ?\r
"" : c曲リストノード.r親ノード.strSkinPath;\r
\r
- itemBack.strBreadcrumbs = ( itemBack.r親ノード == null ) ?\r
+ if (itemBack.strSkinPath != "" && !listStrBoxDefSkinSubfolderFullName.Contains(itemBack.strSkinPath))\r
+ {\r
+ listStrBoxDefSkinSubfolderFullName.Add(itemBack.strSkinPath);\r
+ }\r
+\r
+ itemBack.strBreadcrumbs = (itemBack.r親ノード == null) ?\r
itemBack.strタイトル : itemBack.r親ノード.strBreadcrumbs + " > " + itemBack.strタイトル;\r
\r
- itemBack.arスコア[ 0 ] = new Cスコア();\r
- itemBack.arスコア[ 0 ].ファイル情報.フォルダの絶対パス = "";\r
- itemBack.arスコア[ 0 ].譜面情報.タイトル = itemBack.strタイトル;\r
- itemBack.arスコア[ 0 ].譜面情報.コメント =\r
+ itemBack.arスコア[0] = new Cスコア();\r
+ itemBack.arスコア[0].ファイル情報.フォルダの絶対パス = "";\r
+ itemBack.arスコア[0].譜面情報.タイトル = itemBack.strタイトル;\r
+ itemBack.arスコア[0].譜面情報.コメント =\r
(CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ?\r
"BOX を出ます。" :\r
"Exit from the BOX.";\r
- c曲リストノード.list子リスト.Insert( 0, itemBack );\r
+ c曲リストノード.list子リスト.Insert(0, itemBack);\r
\r
#region [ ログ出力 ]\r
//-----------------------------\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
- StringBuilder sb = new StringBuilder( 0x100 );\r
- sb.Append( string.Format( "nID#{0:D3}", itemBack.nID ) );\r
- if( itemBack.r親ノード != null )\r
+ StringBuilder sb = new StringBuilder(0x100);\r
+ sb.Append(string.Format("nID#{0:D3}", itemBack.nID));\r
+ if (itemBack.r親ノード != null)\r
{\r
- sb.Append( string.Format( "(in#{0:D3}):", itemBack.r親ノード.nID ) );\r
+ sb.Append(string.Format("(in#{0:D3}):", itemBack.r親ノード.nID));\r
}\r
else\r
{\r
- sb.Append( "(onRoot):" );\r
+ sb.Append("(onRoot):");\r
}\r
- sb.Append( " BACKBOX" );\r
- Trace.TraceInformation( sb.ToString() );\r
+ sb.Append(" BACKBOX");\r
+ Trace.TraceInformation(sb.ToString());\r
}\r
//-----------------------------\r
#endregion\r
\r
- this.t曲リストへ後処理を適用する( c曲リストノード.list子リスト );\r
+ this.t曲リストへ後処理を適用する(c曲リストノード.list子リスト);\r
continue;\r
}\r
//-----------------------------\r
\r
#region [ ノードにタイトルがないなら、最初に見つけたスコアのタイトルを設定する ]\r
//-----------------------------\r
- if( string.IsNullOrEmpty( c曲リストノード.strタイトル ) )\r
+ if (string.IsNullOrEmpty(c曲リストノード.strタイトル))\r
{\r
- for( int j = 0; j < 5; j++ )\r
+ for (int j = 0; j < 5; j++)\r
{\r
- if( ( c曲リストノード.arスコア[ j ] != null ) && !string.IsNullOrEmpty( c曲リストノード.arスコア[ j ].譜面情報.タイトル ) )\r
+ if ((c曲リストノード.arスコア[j] != null) && !string.IsNullOrEmpty(c曲リストノード.arスコア[j].譜面情報.タイトル))\r
{\r
- c曲リストノード.strタイトル = c曲リストノード.arスコア[ j ].譜面情報.タイトル;\r
+ c曲リストノード.strタイトル = c曲リストノード.arスコア[j].譜面情報.タイトル;\r
\r
- if( CDTXMania.ConfigIni.bLog曲検索ログ出力 )\r
- Trace.TraceInformation( "タイトルを設定しました。(nID#{0:D3}, title={1})", c曲リストノード.nID, c曲リストノード.strタイトル );\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
+ Trace.TraceInformation("タイトルを設定しました。(nID#{0:D3}, title={1})", c曲リストノード.nID, c曲リストノード.strタイトル);\r
\r
break;\r
}\r
\r
#region [ ノードをソートする ]\r
//-----------------------------\r
- this.t曲リストのソート1_絶対パス順( ノードリスト );\r
+ this.t曲リストのソート1_絶対パス順(ノードリスト);\r
//-----------------------------\r
#endregion\r
}\r
#endregion\r
#region [ スコアキャッシュをSongsDBに出力する ]\r
//-----------------\r
- public void tスコアキャッシュをSongsDBに出力する( string SongsDBファイル名 )\r
+ public void tスコアキャッシュをSongsDBに出力する(string SongsDBファイル名)\r
{\r
this.nSongsDBへ出力できたスコア数 = 0;\r
try\r
{\r
- BinaryWriter bw = new BinaryWriter( new FileStream( SongsDBファイル名, FileMode.Create, FileAccess.Write ) );\r
+ //BinaryWriter bw = new BinaryWriter( new FileStream( SongsDBファイル名, FileMode.Create, FileAccess.Write ) );\r
+ BinaryWriter bw = new BinaryWriter( new FileStreamSSD( SongsDBファイル名, FileMode.Create, FileAccess.Write ) );\r
bw.Write( SONGSDB_VERSION );\r
- this.tSongsDBにリストを1つ出力する( bw, this.list曲ルート );\r
+ this.tSongsDBにリストを1つ出力する(bw, this.list曲ルート);\r
bw.Close();\r
}\r
catch\r
{\r
- Trace.TraceError( "songs.dbの出力に失敗しました。" );\r
+ Trace.TraceError("songs.dbの出力に失敗しました。");\r
}\r
}\r
- private void tSongsDBにノードを1つ出力する( BinaryWriter bw, C曲リストノード node )\r
+ private void tSongsDBにノードを1つ出力する(BinaryWriter bw, C曲リストノード node)\r
{\r
- for( int i = 0; i < 5; i++ )\r
+ for (int i = 0; i < 5; i++)\r
{\r
// ここではsuspendに応じないようにしておく(深い意味はない。ファイルの書き込みオープン状態を長時間維持したくないだけ)\r
//if ( this.bIsSuspending ) // #27060 中断要求があったら、解除要求が来るまで待機\r
// autoReset.WaitOne();\r
//}\r
\r
- if( node.arスコア[ i ] != null )\r
+ if (node.arスコア[i] != null)\r
{\r
- bw.Write( node.arスコア[ i ].ファイル情報.ファイルの絶対パス );\r
- bw.Write( node.arスコア[ i ].ファイル情報.フォルダの絶対パス );\r
- bw.Write( node.arスコア[ i ].ファイル情報.最終更新日時.Ticks );\r
- bw.Write( node.arスコア[ i ].ファイル情報.ファイルサイズ );\r
- bw.Write( node.arスコア[ i ].ScoreIni情報.最終更新日時.Ticks );\r
- bw.Write( node.arスコア[ i ].ScoreIni情報.ファイルサイズ );\r
- bw.Write( node.arスコア[ i ].譜面情報.タイトル );\r
- bw.Write( node.arスコア[ i ].譜面情報.アーティスト名 );\r
- bw.Write( node.arスコア[ i ].譜面情報.コメント );\r
- bw.Write( node.arスコア[ i ].譜面情報.ジャンル );\r
- bw.Write( node.arスコア[ i ].譜面情報.Preimage );\r
- bw.Write( node.arスコア[ i ].譜面情報.Premovie );\r
- bw.Write( node.arスコア[ i ].譜面情報.Presound );\r
- bw.Write( node.arスコア[ i ].譜面情報.Backgound );\r
- bw.Write( node.arスコア[ i ].譜面情報.レベル.Drums );\r
- bw.Write( node.arスコア[ i ].譜面情報.レベル.Guitar );\r
- bw.Write( node.arスコア[ i ].譜面情報.レベル.Bass );\r
- bw.Write( node.arスコア[ i ].譜面情報.最大ランク.Drums );\r
- bw.Write( node.arスコア[ i ].譜面情報.最大ランク.Guitar );\r
- bw.Write( node.arスコア[ i ].譜面情報.最大ランク.Bass );\r
- bw.Write( node.arスコア[ i ].譜面情報.最大スキル.Drums );\r
- bw.Write( node.arスコア[ i ].譜面情報.最大スキル.Guitar );\r
- bw.Write( node.arスコア[ i ].譜面情報.最大スキル.Bass );\r
- bw.Write( node.arスコア[ i ].譜面情報.フルコンボ.Drums );\r
- bw.Write( node.arスコア[ i ].譜面情報.フルコンボ.Guitar );\r
- bw.Write( node.arスコア[ i ].譜面情報.フルコンボ.Bass );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏回数.Drums );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏回数.Guitar );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏回数.Bass );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏履歴.行1 );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏履歴.行2 );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏履歴.行3 );\r
- bw.Write( node.arスコア[ i ].譜面情報.演奏履歴.行4 );\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
- bw.Write( node.arスコア[ i ].譜面情報.Duration );\r
+ bw.Write(node.arスコア[i].ファイル情報.ファイルの絶対パス);\r
+ bw.Write(node.arスコア[i].ファイル情報.フォルダの絶対パス);\r
+ bw.Write(node.arスコア[i].ファイル情報.最終更新日時.Ticks);\r
+ bw.Write(node.arスコア[i].ファイル情報.ファイルサイズ);\r
+ bw.Write(node.arスコア[i].ScoreIni情報.最終更新日時.Ticks);\r
+ bw.Write(node.arスコア[i].ScoreIni情報.ファイルサイズ);\r
+ bw.Write(node.arスコア[i].譜面情報.タイトル);\r
+ bw.Write(node.arスコア[i].譜面情報.アーティスト名);\r
+ bw.Write(node.arスコア[i].譜面情報.コメント);\r
+ bw.Write(node.arスコア[i].譜面情報.ジャンル);\r
+ bw.Write(node.arスコア[i].譜面情報.Preimage);\r
+ bw.Write(node.arスコア[i].譜面情報.Premovie);\r
+ bw.Write(node.arスコア[i].譜面情報.Presound);\r
+ bw.Write(node.arスコア[i].譜面情報.Backgound);\r
+ bw.Write(node.arスコア[i].譜面情報.レベル.Drums);\r
+ bw.Write(node.arスコア[i].譜面情報.レベル.Guitar);\r
+ bw.Write(node.arスコア[i].譜面情報.レベル.Bass);\r
+ bw.Write((int)node.arスコア[i].譜面情報.最大ランク.Drums);\r
+ bw.Write((int)node.arスコア[i].譜面情報.最大ランク.Guitar);\r
+ bw.Write((int)node.arスコア[i].譜面情報.最大ランク.Bass);\r
+ bw.Write(node.arスコア[i].譜面情報.最大スキル.Drums);\r
+ bw.Write(node.arスコア[i].譜面情報.最大スキル.Guitar);\r
+ bw.Write(node.arスコア[i].譜面情報.最大スキル.Bass);\r
+ bw.Write(node.arスコア[i].譜面情報.フルコンボ.Drums);\r
+ bw.Write(node.arスコア[i].譜面情報.フルコンボ.Guitar);\r
+ bw.Write(node.arスコア[i].譜面情報.フルコンボ.Bass);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏回数.Drums);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏回数.Guitar);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏回数.Bass);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏履歴.行1);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏履歴.行2);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏履歴.行3);\r
+ bw.Write(node.arスコア[i].譜面情報.演奏履歴.行4);\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
+ bw.Write(node.arスコア[i].譜面情報.Duration);\r
+ bw.Write((int)node.arスコア[i].譜面情報.使用レーン数.Drums);\r
+ bw.Write((int)node.arスコア[i].譜面情報.使用レーン数.Guitar);\r
+ bw.Write((int)node.arスコア[i].譜面情報.使用レーン数.Bass);\r
this.nSongsDBへ出力できたスコア数++;\r
}\r
}\r
}\r
- private void tSongsDBにリストを1つ出力する( BinaryWriter bw, List<C曲リストノード> list )\r
+ private void tSongsDBにリストを1つ出力する(BinaryWriter bw, List<C曲リストノード> list)\r
{\r
- foreach( C曲リストノード c曲リストノード in list )\r
+ foreach (C曲リストノード c曲リストノード in list)\r
{\r
- if( ( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE )\r
- || ( c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI ) )\r
+ if ((c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE)\r
+ || (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE_MIDI))\r
{\r
- this.tSongsDBにノードを1つ出力する( bw, c曲リストノード );\r
+ this.tSongsDBにノードを1つ出力する(bw, c曲リストノード);\r
}\r
- if( c曲リストノード.list子リスト != null )\r
+ if (c曲リストノード.list子リスト != null)\r
{\r
- this.tSongsDBにリストを1つ出力する( bw, c曲リストノード.list子リスト );\r
+ this.tSongsDBにリストを1つ出力する(bw, c曲リストノード.list子リスト);\r
}\r
}\r
}\r
//-----------------\r
#endregion\r
- \r
+\r
#region [ 曲リストソート ]\r
//-----------------\r
- public void t曲リストのソート1_絶対パス順( List<C曲リストノード> ノードリスト )\r
+ public void t曲リストのソート1_絶対パス順(List<C曲リストノード> ノードリスト)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
- if ( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if( num != 0 )\r
+ int num = this.t比較0_共通(n1, n2);\r
+ if (num != 0)\r
{\r
return num;\r
}\r
- if( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) )\r
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
- return n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ return n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);\r
}\r
#endregion\r
string str = "";\r
- if( string.IsNullOrEmpty( n1.pathSetDefの絶対パス ) )\r
+ if (string.IsNullOrEmpty(n1.pathSetDefの絶対パス))\r
{\r
- for( int i = 0; i < 5; i++ )\r
+ for (int i = 0; i < 5; i++)\r
{\r
- if( n1.arスコア[ i ] != null )\r
+ if (n1.arスコア[i] != null)\r
{\r
- str = n1.arスコア[ i ].ファイル情報.ファイルの絶対パス;\r
- if( str == null )\r
+ str = n1.arスコア[i].ファイル情報.ファイルの絶対パス;\r
+ if (str == null)\r
{\r
str = "";\r
}\r
}\r
else\r
{\r
- str = n1.pathSetDefの絶対パス + n1.SetDefのブロック番号.ToString( "00" );\r
+ str = n1.pathSetDefの絶対パス + n1.SetDefのブロック番号.ToString("00");\r
}\r
string strB = "";\r
- if( string.IsNullOrEmpty( n2.pathSetDefの絶対パス ) )\r
+ if (string.IsNullOrEmpty(n2.pathSetDefの絶対パス))\r
{\r
- for( int j = 0; j < 5; j++ )\r
+ for (int j = 0; j < 5; j++)\r
{\r
- if( n2.arスコア[ j ] != null )\r
+ if (n2.arスコア[j] != null)\r
{\r
- strB = n2.arスコア[ j ].ファイル情報.ファイルの絶対パス;\r
- if( strB == null )\r
+ strB = n2.arスコア[j].ファイル情報.ファイルの絶対パス;\r
+ if (strB == null)\r
{\r
strB = "";\r
}\r
}\r
else\r
{\r
- strB = n2.pathSetDefの絶対パス + n2.SetDefのブロック番号.ToString( "00" );\r
+ strB = n2.pathSetDefの絶対パス + n2.SetDefのブロック番号.ToString("00");\r
}\r
- return str.CompareTo( strB );\r
- } );\r
- foreach( C曲リストノード c曲リストノード in ノードリスト )\r
+ return str.CompareTo(strB);\r
+ });\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
- if( ( c曲リストノード.list子リスト != null ) && ( c曲リストノード.list子リスト.Count > 1 ) )\r
+ if ((c曲リストノード.list子リスト != null) && (c曲リストノード.list子リスト.Count > 1))\r
{\r
- this.t曲リストのソート1_絶対パス順( c曲リストノード.list子リスト );\r
+ this.t曲リストのソート1_絶対パス順(c曲リストノード.list子リスト);\r
}\r
}\r
}\r
- public void t曲リストのソート2_タイトル順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ public void t曲リストのソート2_タイトル順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
- if( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if( num != 0 )\r
+ int num = this.t比較0_共通(n1, n2);\r
+ if (num != 0)\r
{\r
return order * num;\r
}\r
- return order * n1.strタイトル.CompareTo( n2.strタイトル );\r
- } );\r
-// foreach( C曲リストノード c曲リストノード in ノードリスト )\r
-// {\r
-// if( ( c曲リストノード.list子リスト != null ) && ( c曲リストノード.list子リスト.Count > 1 ) )\r
-// {\r
-// this.t曲リストのソート2_タイトル順( c曲リストノード.list子リスト, part, order );\r
-// }\r
-// }\r
+ return order * n1.strタイトル.CompareTo(n2.strタイトル);\r
+ });\r
+ // foreach( C曲リストノード c曲リストノード in ノードリスト )\r
+ // {\r
+ // if( ( c曲リストノード.list子リスト != null ) && ( c曲リストノード.list子リスト.Count > 1 ) )\r
+ // {\r
+ // this.t曲リストのソート2_タイトル順( c曲リストノード.list子リスト, part, order );\r
+ // }\r
+ // }\r
}\r
/// <summary>\r
/// \r
/// <param name="ノードリスト"></param>\r
/// <param name="part"></param>\r
/// <param name="order">1=Ascend -1=Descend</param>\r
- public void t曲リストのソート3_演奏回数の多い順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ public void t曲リストのソート3_演奏回数の多い順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
order = -order;\r
- int nL12345 = (int) p[ 0 ];\r
- if ( part != E楽器パート.UNKNOWN )\r
+ int nL12345 = (int)p[0];\r
+ if (part != EPart.Unknown)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
- if ( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if( num != 0 )\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
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
- return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ return order * n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);\r
}\r
#endregion\r
int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0;\r
-// for( int i = 0; i < 5; i++ )\r
-// {\r
- if( n1.arスコア[ nL12345 ] != null )\r
- {\r
- nSumPlayCountN1 += n1.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ];\r
- }\r
- if( n2.arスコア[ nL12345 ] != null )\r
- {\r
- nSumPlayCountN2 += n2.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ];\r
- }\r
-// }\r
+ // for( int i = 0; i < 5; i++ )\r
+ // {\r
+ if (n1.arスコア[nL12345] != null)\r
+ {\r
+ nSumPlayCountN1 += n1.arスコア[nL12345].譜面情報.演奏回数[part];\r
+ }\r
+ if (n2.arスコア[nL12345] != null)\r
+ {\r
+ nSumPlayCountN2 += n2.arスコア[nL12345].譜面情報.演奏回数[part];\r
+ }\r
+ // }\r
num = nSumPlayCountN2 - nSumPlayCountN1;\r
- if( num != 0 )\r
+ if (num != 0)\r
{\r
return order * num;\r
}\r
- return order * n1.strタイトル.CompareTo( n2.strタイトル );\r
- } );\r
- foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ return order * n1.strタイトル.CompareTo(n2.strタイトル);\r
+ });\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
int nSumPlayCountN1 = 0;\r
-// for ( int i = 0; i < 5; i++ )\r
-// {\r
- if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
- {\r
- nSumPlayCountN1 += c曲リストノード.arスコア[ nL12345 ].譜面情報.演奏回数[ (int) part ];\r
- }\r
-// }\r
-// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+ // for ( int i = 0; i < 5; i++ )\r
+ // {\r
+ if (c曲リストノード.arスコア[nL12345] != null)\r
+ {\r
+ nSumPlayCountN1 += c曲リストノード.arスコア[nL12345].譜面情報.演奏回数[part];\r
+ }\r
+ // }\r
+ // Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
\r
-// foreach( C曲リストノード c曲リストノード in ノードリスト )\r
-// {\r
-// if( ( c曲リストノード.list子リスト != null ) && ( c曲リストノード.list子リスト.Count > 1 ) )\r
-// {\r
-// this.t曲リストのソート3_演奏回数の多い順( c曲リストノード.list子リスト, part );\r
-// }\r
-// }\r
+ // foreach( C曲リストノード c曲リストノード in ノードリスト )\r
+ // {\r
+ // if( ( c曲リストノード.list子リスト != null ) && ( c曲リストノード.list子リスト.Count > 1 ) )\r
+ // {\r
+ // this.t曲リストのソート3_演奏回数の多い順( c曲リストノード.list子リスト, part );\r
+ // }\r
+ // }\r
}\r
}\r
- public void t曲リストのソート4_LEVEL順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ public void t曲リストのソート4_LEVEL順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
order = -order;\r
- int nL12345 = (int)p[ 0 ];\r
- if ( part != E楽器パート.UNKNOWN )\r
+ int nL12345 = (int)p[0];\r
+ if (part != EPart.Unknown)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
- if ( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if ( num != 0 )\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
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
- return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ return order * n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);\r
}\r
#endregion\r
int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0;\r
- if ( n1.arスコア[ nL12345 ] != null )\r
+ if (n1.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = n1.arスコア[ nL12345 ].譜面情報.レベル[ (int) part ];\r
+ nSumPlayCountN1 = n1.arスコア[nL12345].譜面情報.レベル[part];\r
}\r
- if ( n2.arスコア[ nL12345 ] != null )\r
+ if (n2.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN2 = n2.arスコア[ nL12345 ].譜面情報.レベル[ (int) part ];\r
+ nSumPlayCountN2 = n2.arスコア[nL12345].譜面情報.レベル[part];\r
}\r
num = nSumPlayCountN2 - nSumPlayCountN1;\r
- if ( num != 0 )\r
+ if (num != 0)\r
{\r
return order * num;\r
}\r
- return order * n1.strタイトル.CompareTo( n2.strタイトル );\r
- } );\r
- foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ return order * n1.strタイトル.CompareTo(n2.strタイトル);\r
+ });\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
int nSumPlayCountN1 = 0;\r
- if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ if (c曲リストノード.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.レベル[ (int) part ];\r
+ nSumPlayCountN1 = c曲リストノード.arスコア[nL12345].譜面情報.レベル[part];\r
}\r
-// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+ // Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
- public void t曲リストのソート5_BestRank順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ public void t曲リストのソート5_BestRank順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
order = -order;\r
- int nL12345 = (int) p[ 0 ];\r
- if ( part != E楽器パート.UNKNOWN )\r
+ int nL12345 = (int)p[0];\r
+ if (part != EPart.Unknown)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
- if ( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if ( num != 0 )\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
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
- return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ return order * n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);\r
}\r
#endregion\r
int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0;\r
bool isFullCombo1 = false, isFullCombo2 = false;\r
- if ( n1.arスコア[ nL12345 ] != null )\r
+ if (n1.arスコア[nL12345] != null)\r
{\r
- isFullCombo1 = n1.arスコア[ nL12345 ].譜面情報.フルコンボ[ (int) part ];\r
- nSumPlayCountN1 = n1.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ];\r
+ isFullCombo1 = n1.arスコア[nL12345].譜面情報.フルコンボ[part];\r
+ nSumPlayCountN1 = (int)n1.arスコア[nL12345].譜面情報.最大ランク[part];\r
}\r
- if ( n2.arスコア[ nL12345 ] != null )\r
+ if (n2.arスコア[nL12345] != null)\r
{\r
- isFullCombo2 = n2.arスコア[ nL12345 ].譜面情報.フルコンボ[ (int) part ];\r
- nSumPlayCountN2 = n2.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ];\r
+ isFullCombo2 = n2.arスコア[nL12345].譜面情報.フルコンボ[part];\r
+ nSumPlayCountN2 = (int)n2.arスコア[nL12345].譜面情報.最大ランク[part];\r
}\r
- if ( isFullCombo1 ^ isFullCombo2 )\r
+ if (isFullCombo1 ^ isFullCombo2)\r
{\r
- if ( isFullCombo1 ) return order; else return -order;\r
+ if (isFullCombo1) return order; else return -order;\r
}\r
num = nSumPlayCountN2 - nSumPlayCountN1;\r
- if ( num != 0 )\r
+ if (num != 0)\r
{\r
return order * num;\r
}\r
- return order * n1.strタイトル.CompareTo( n2.strタイトル );\r
- } );\r
- foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ return order * n1.strタイトル.CompareTo(n2.strタイトル);\r
+ });\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
int nSumPlayCountN1 = 0;\r
- if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ if (c曲リストノード.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.最大ランク[ (int) part ];\r
+ nSumPlayCountN1 = (int)c曲リストノード.arスコア[nL12345].譜面情報.最大ランク[part];\r
}\r
-// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+ // Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
- public void t曲リストのソート6_SkillPoint順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ public void t曲リストのソート6_SkillPoint順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
order = -order;\r
- int nL12345 = (int) p[ 0 ];\r
- if ( part != E楽器パート.UNKNOWN )\r
+ int nL12345 = (int)p[0];\r
+ if (part != EPart.Unknown)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
- if ( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if ( num != 0 )\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
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
- return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ return order * n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);\r
}\r
#endregion\r
double nSumPlayCountN1 = 0, nSumPlayCountN2 = 0;\r
- if ( n1.arスコア[ nL12345 ] != null )\r
+ if (n1.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = n1.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ];\r
+ nSumPlayCountN1 = n1.arスコア[nL12345].譜面情報.最大スキル[part];\r
}\r
- if ( n2.arスコア[ nL12345 ] != null )\r
+ if (n2.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN2 = n2.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ];\r
+ nSumPlayCountN2 = n2.arスコア[nL12345].譜面情報.最大スキル[part];\r
}\r
double d = nSumPlayCountN2 - nSumPlayCountN1;\r
- if ( d != 0 )\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
+ return order * n1.strタイトル.CompareTo(n2.strタイトル);\r
+ });\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
double nSumPlayCountN1 = 0;\r
- if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ if (c曲リストノード.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].譜面情報.最大スキル[ (int) part ];\r
+ nSumPlayCountN1 = c曲リストノード.arスコア[nL12345].譜面情報.最大スキル[part];\r
}\r
-// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
+ // Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\r
}\r
}\r
}\r
- public void t曲リストのソート7_更新日時順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
+ public void t曲リストのソート7_更新日時順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
- int nL12345 = (int) p[ 0 ];\r
- if ( part != E楽器パート.UNKNOWN )\r
+ int nL12345 = (int)p[0];\r
+ if (part != EPart.Unknown)\r
{\r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
- if ( n1 == n2 )\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if ( num != 0 )\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
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
- return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
+ return order * n1.arスコア[0].ファイル情報.フォルダの絶対パス.CompareTo(n2.arスコア[0].ファイル情報.フォルダの絶対パス);\r
}\r
#endregion\r
DateTime nSumPlayCountN1 = DateTime.Parse("0001/01/01 12:00:01.000");\r
DateTime nSumPlayCountN2 = DateTime.Parse("0001/01/01 12:00:01.000");\r
- if ( n1.arスコア[ nL12345 ] != null )\r
+ if (n1.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = n1.arスコア[ nL12345 ].ファイル情報.最終更新日時;\r
+ nSumPlayCountN1 = n1.arスコア[nL12345].ファイル情報.最終更新日時;\r
}\r
- if ( n2.arスコア[ nL12345 ] != null )\r
+ if (n2.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN2 = n2.arスコア[ nL12345 ].ファイル情報.最終更新日時;\r
+ nSumPlayCountN2 = n2.arスコア[nL12345].ファイル情報.最終更新日時;\r
}\r
int d = nSumPlayCountN1.CompareTo(nSumPlayCountN2);\r
- if ( d != 0 )\r
+ if (d != 0)\r
{\r
- return order * System.Math.Sign( d );\r
+ return order * System.Math.Sign(d);\r
}\r
- return order * n1.strタイトル.CompareTo( n2.strタイトル );\r
- } );\r
- foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ return order * n1.strタイトル.CompareTo(n2.strタイトル);\r
+ });\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
- DateTime nSumPlayCountN1 = DateTime.Parse( "0001/01/01 12:00:01.000" );\r
- if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ DateTime nSumPlayCountN1 = DateTime.Parse("0001/01/01 12:00:01.000");\r
+ if (c曲リストノード.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 = c曲リストノード.arスコア[ nL12345 ].ファイル情報.最終更新日時;\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
+ public void t曲リストのソート8_アーティスト名順(List<C曲リストノード> ノードリスト, EPart part, int order, params object[] p)\r
{\r
- int nL12345 = (int) p[ 0 ]; \r
- ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
+ int nL12345 = (int)p[0];\r
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
- if ( n1 == n2 )\r
+ #region [ 共通処理 ]\r
+ if (n1 == n2)\r
{\r
return 0;\r
}\r
- int num = this.t比較0_共通( n1, n2 );\r
- if ( num != 0 )\r
+ int num = this.t比較0_共通(n1, n2);\r
+ if (num != 0)\r
{\r
- return order * System.Math.Sign( num );\r
+ return order * System.Math.Sign(num);\r
}\r
+ #endregion\r
string strAuthorN1 = "";\r
string strAuthorN2 = "";\r
- if (n1.arスコア[ nL12345 ] != null ) {\r
- strAuthorN1 = n1.arスコア[ nL12345 ].譜面情報.アーティスト名;\r
+ int nL12345補正後1 = nL12345;\r
+ int nL12345補正後2 = nL12345;\r
+ if (n1.arスコア[nL12345] == null)\r
+ {\r
+ nL12345補正後1 = n現在のアンカ難易度レベルに最も近い難易度レベルを返す(n1, nL12345);\r
+ }\r
+ if (n1.arスコア[nL12345補正後1] != null)\r
+ {\r
+ strAuthorN1 = n1.arスコア[nL12345補正後1].譜面情報.アーティスト名;\r
}\r
- if ( n2.arスコア[ nL12345 ] != null )\r
+ if (n2.arスコア[nL12345] == null)\r
{\r
- strAuthorN2 = n2.arスコア[ nL12345 ].譜面情報.アーティスト名;\r
+ nL12345補正後2 = n現在のアンカ難易度レベルに最も近い難易度レベルを返す(n2, nL12345);\r
+ }\r
+ if (n2.arスコア[nL12345補正後2] != null)\r
+ {\r
+ strAuthorN2 = n2.arスコア[nL12345補正後2].譜面情報.アーティスト名;\r
}\r
\r
- return order * strAuthorN1.CompareTo( strAuthorN2 );\r
- } );\r
- foreach ( C曲リストノード c曲リストノード in ノードリスト )\r
+ return order * strAuthorN1.CompareTo(strAuthorN2);\r
+ });\r
+ #region [ デバッグ用 ]\r
+ foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
string s = "";\r
- if ( c曲リストノード.arスコア[ nL12345 ] != null )\r
+ if (c曲リストノード.arスコア[nL12345] != null)\r
+ {\r
+ s = c曲リストノード.arスコア[nL12345].譜面情報.アーティスト名;\r
+ }\r
+ //Debug.WriteLine( s + ":" + c曲リストノード.strタイトル );\r
+ }\r
+ #endregion\r
+ }\r
+ /// <summary>\r
+ /// CActSelect曲リスト のメソッドのデッドコピー。美しくない実装ですみません。\r
+ /// </summary>\r
+ /// <param name="song"></param>\r
+ /// <param name="n現在のアンカ難易度レベル"></param>\r
+ /// <returns></returns>\r
+ public int n現在のアンカ難易度レベルに最も近い難易度レベルを返す(C曲リストノード song, int n現在のアンカ難易度レベル)\r
+ {\r
+ // 事前チェック。\r
+\r
+ if (song == null)\r
+ return n現在のアンカ難易度レベル; // 曲がまったくないよ\r
+\r
+ if (song.arスコア[n現在のアンカ難易度レベル] != null)\r
+ return n現在のアンカ難易度レベル; // 難易度ぴったりの曲があったよ\r
+\r
+ if ((song.eノード種別 == C曲リストノード.Eノード種別.BOX) || (song.eノード種別 == C曲リストノード.Eノード種別.BACKBOX))\r
+ return 0; // BOX と BACKBOX は関係無いよ\r
+\r
+\r
+ // 現在のアンカレベルから、難易度上向きに検索開始。\r
+\r
+ int n最も近いレベル = n現在のアンカ難易度レベル;\r
+\r
+ for (int i = 0; i < 5; i++)\r
+ {\r
+ if (song.arスコア[n最も近いレベル] != null)\r
+ break; // 曲があった。\r
+\r
+ n最も近いレベル = (n最も近いレベル + 1) % 5; // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
+ }\r
+\r
+\r
+ // 見つかった曲がアンカより下のレベルだった場合……\r
+ // アンカから下向きに検索すれば、もっとアンカに近い曲があるんじゃね?\r
+\r
+ if (n最も近いレベル < n現在のアンカ難易度レベル)\r
+ {\r
+ // 現在のアンカレベルから、難易度下向きに検索開始。\r
+\r
+ n最も近いレベル = n現在のアンカ難易度レベル;\r
+\r
+ for (int i = 0; i < 5; i++)\r
{\r
- s = c曲リストノード.arスコア[ nL12345 ].譜面情報.アーティスト名;\r
+ if (song.arスコア[n最も近いレベル] != null)\r
+ break; // 曲があった。\r
+\r
+ n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5; // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
}\r
-Debug.WriteLine( s + ":" + c曲リストノード.strタイトル );\r
}\r
+\r
+ return n最も近いレベル;\r
}\r
#if TEST_SORTBGM\r
public void t曲リストのソート9_BPM順( List<C曲リストノード> ノードリスト, E楽器パート part, int order, params object[] p )\r
{\r
ノードリスト.Sort( delegate( C曲リストノード n1, C曲リストノード n2 )\r
{\r
- #region [ 共通処理 ]\r
+ #region [ 共通処理 ]\r
if ( n1 == n2 )\r
{\r
return 0;\r
{\r
return order * n1.arスコア[ 0 ].ファイル情報.フォルダの絶対パス.CompareTo( n2.arスコア[ 0 ].ファイル情報.フォルダの絶対パス );\r
}\r
- #endregion\r
+ #endregion\r
double dBPMn1 = 0.0, dBPMn2 = 0.0;\r
if ( n1.arスコア[ nL12345 ] != null )\r
{\r
#endregion\r
#region [ .score.ini を読み込んで Cスコア.譜面情報に設定する ]\r
//-----------------\r
- public void tScoreIniを読み込んで譜面情報を設定する( string strScoreIniファイルパス, ref Cスコア score )\r
+ public void tScoreIniを読み込んで譜面情報を設定する(string strScoreIniファイルパス, ref Cスコア score)\r
{\r
- if( !File.Exists( strScoreIniファイルパス ) )\r
+ if (!File.Exists(strScoreIniファイルパス))\r
return;\r
\r
try\r
{\r
- var ini = new CScoreIni( strScoreIniファイルパス );\r
- ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする();\r
+ var ini = new CScoreIni(strScoreIniファイルパス);\r
\r
- for( int n楽器番号 = 0; n楽器番号 < 3; n楽器番号++ )\r
+ for (EPart inst = EPart.Drums; inst <= EPart.Bass; inst++)\r
{\r
- int n = ( n楽器番号 * 2 ) + 1; // n = 0~5\r
-\r
- #region socre.譜面情報.最大ランク[ n楽器番号 ] = ... \r
//-----------------\r
- if( ini.stセクション[ n ].b演奏にMIDI入力を使用した ||\r
- ini.stセクション[ n ].b演奏にキーボードを使用した ||\r
- ini.stセクション[ n ].b演奏にジョイパッドを使用した ||\r
- ini.stセクション[ n ].b演奏にマウスを使用した )\r
+ if (\r
+ ini.stセクション.HiSkill[inst].b演奏にMIDI入力を使用した ||\r
+ ini.stセクション.HiSkill[inst].b演奏にキーボードを使用した ||\r
+ ini.stセクション.HiSkill[inst].b演奏にジョイパッドを使用した ||\r
+ ini.stセクション.HiSkill[inst].b演奏にマウスを使用した)\r
{\r
// (A) 全オートじゃないようなので、演奏結果情報を有効としてランクを算出する。\r
\r
- score.譜面情報.最大ランク[ n楽器番号 ] =\r
- CScoreIni.tランク値を計算して返す( \r
- ini.stセクション[ n ].n全チップ数,\r
- ini.stセクション[ n ].nPerfect数, \r
- ini.stセクション[ n ].nGreat数,\r
- ini.stセクション[ n ].nGood数, \r
- ini.stセクション[ n ].nPoor数,\r
- ini.stセクション[ n ].nMiss数 );\r
+ score.譜面情報.最大ランク[inst] =\r
+ CScoreIni.tランク値を計算して返す(\r
+ ini.stセクション.HiSkill[inst].n全チップ数,\r
+ ini.stセクション.HiSkill[inst].nPerfect数,\r
+ ini.stセクション.HiSkill[inst].nGreat数,\r
+ ini.stセクション.HiSkill[inst].nGood数,\r
+ ini.stセクション.HiSkill[inst].nPoor数,\r
+ ini.stセクション.HiSkill[inst].nMiss数);\r
}\r
else\r
{\r
// (B) 全オートらしいので、ランクは無効とする。\r
\r
- score.譜面情報.最大ランク[ n楽器番号 ] = (int) CScoreIni.ERANK.UNKNOWN;\r
+ score.譜面情報.最大ランク[inst] = CScoreIni.ERANK.UNKNOWN;\r
}\r
//-----------------\r
- #endregion\r
- score.譜面情報.最大スキル[ n楽器番号 ] = ini.stセクション[ n ].db演奏型スキル値;\r
- score.譜面情報.フルコンボ[ n楽器番号 ] = ini.stセクション[ n ].bフルコンボである;\r
+ score.譜面情報.最大スキル[inst] = ini.stセクション.HiSkill[inst].db演奏型スキル値;\r
+ score.譜面情報.フルコンボ[inst] = ini.stセクション.HiSkill[inst].bフルコンボである;\r
}\r
score.譜面情報.演奏回数.Drums = ini.stファイル.PlayCountDrums;\r
score.譜面情報.演奏回数.Guitar = ini.stファイル.PlayCountGuitar;\r
score.譜面情報.演奏回数.Bass = ini.stファイル.PlayCountBass;\r
- for( int i = 0; i < 5; i++ )\r
- score.譜面情報.演奏履歴[ i ] = ini.stファイル.History[ i ];\r
+ for (int i = 0; i < 5; i++)\r
+ {\r
+ score.譜面情報.演奏履歴[i] = ini.stファイル.History[i];\r
+ }\r
}\r
catch\r
{\r
- Trace.TraceError( "演奏記録ファイルの読み込みに失敗しました。[{0}]", strScoreIniファイルパス );\r
+ Trace.TraceError("演奏記録ファイルの読み込みに失敗しました。[{0}]", strScoreIniファイルパス);\r
}\r
}\r
//-----------------\r
\r
#region [ private ]\r
//-----------------\r
- private const string SONGSDB_VERSION = "SongsDB3";\r
+ private const string SONGSDB_VERSION = "SongsDB4";\r
+ private List<string> listStrBoxDefSkinSubfolderFullName;\r
\r
- private int t比較0_共通( C曲リストノード n1, C曲リストノード n2 )\r
+ private int t比較0_共通(C曲リストノード n1, C曲リストノード n2)\r
{\r
- if( n1.eノード種別 == C曲リストノード.Eノード種別.BACKBOX )\r
+ if (n1.eノード種別 == C曲リストノード.Eノード種別.BACKBOX)\r
{\r
return -1;\r
}\r
- if( n2.eノード種別 == C曲リストノード.Eノード種別.BACKBOX )\r
+ if (n2.eノード種別 == C曲リストノード.Eノード種別.BACKBOX)\r
{\r
return 1;\r
}\r
- if( n1.eノード種別 == C曲リストノード.Eノード種別.RANDOM )\r
+ if (n1.eノード種別 == C曲リストノード.Eノード種別.RANDOM)\r
{\r
return 1;\r
}\r
- if( n2.eノード種別 == C曲リストノード.Eノード種別.RANDOM )\r
+ if (n2.eノード種別 == C曲リストノード.Eノード種別.RANDOM)\r
{\r
return -1;\r
}\r
- if( ( n1.eノード種別 == C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 != C曲リストノード.Eノード種別.BOX ) )\r
+ if ((n1.eノード種別 == C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 != C曲リストノード.Eノード種別.BOX))\r
{\r
return -1;\r
}\r
- if( ( n1.eノード種別 != C曲リストノード.Eノード種別.BOX ) && ( n2.eノード種別 == C曲リストノード.Eノード種別.BOX ) )\r
+ if ((n1.eノード種別 != C曲リストノード.Eノード種別.BOX) && (n2.eノード種別 == C曲リストノード.Eノード種別.BOX))\r
{\r
return 1;\r
}\r
/// </summary>\r
private void SlowOrSuspendSearchTask()\r
{\r
- if ( this.bIsSuspending ) // #27060 中断要求があったら、解除要求が来るまで待機\r
+ if (this.bIsSuspending) // #27060 中断要求があったら、解除要求が来るまで待機\r
{\r
autoReset.WaitOne();\r
}\r
- if ( this.bIsSlowdown && ++this.searchCount > 10 ) // #27060 #PREMOVIE再生中は検索負荷を下げる\r
+ if (this.bIsSlowdown && ++this.searchCount > 10) // #27060 #PREMOVIE再生中は検索負荷を下げる\r
{\r
- Thread.Sleep( 100 );\r
+ Thread.Sleep(100);\r
this.searchCount = 0;\r
}\r
}\r