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
DirectoryInfo info = new DirectoryInfo(str基点フォルダ);\r
\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
Trace.TraceInformation("基点フォルダ: " + str基点フォルダ);\r
\r
#region [ a.フォルダ内に set.def が存在する場合 → set.def からノード作成]\r
{\r
CSetDef def = new CSetDef(path);\r
new FileInfo(path);\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.TraceInformation("set.def検出 : {0}", path);\r
Trace.Indent();\r
}\r
try\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
for (int i = 0; i < def.blocks.Count; i++)\r
{\r
CSetDef.CBlock block = def.blocks[i];\r
{\r
listノードリスト.Add(item);\r
this.n検索された曲ノード数++;\r
- if (CDTXMania.app.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
}\r
finally\r
{\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.Unindent();\r
}\r
{\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
{\r
this.n検索されたスコア数++;\r
listノードリスト.Add(c曲リストノード);\r
this.n検索された曲ノード数++;\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.Indent();\r
try\r
\r
foreach (DirectoryInfo infoDir in info.GetDirectories())\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
#region [ a. "dtxfiles." で始まるフォルダの場合 ]\r
//-----------------------------\r
{\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
+ if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
{\r
s += System.IO.Path.DirectorySeparatorChar;\r
}\r
- if (CDTXMania.app.Skin.bIsValid(s))\r
+ if (CDTXMania.Instance.Skin.bIsValid(s))\r
{\r
c曲リストノード.strSkinPath = s;\r
}\r
c曲リストノード.nPoor範囲ms = boxdef.PoorRange;\r
}\r
}\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.Indent();\r
try\r
{\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
+ if (s[s.Length - 1] != System.IO.Path.DirectorySeparatorChar) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
{\r
s += System.IO.Path.DirectorySeparatorChar;\r
}\r
- if (CDTXMania.app.Skin.bIsValid(s))\r
+ if (CDTXMania.Instance.Skin.bIsValid(s))\r
{\r
c曲リストノード.strSkinPath = s;\r
}\r
c曲リストノード.nGood範囲ms = boxdef.GoodRange;\r
c曲リストノード.nPoor範囲ms = boxdef.PoorRange;\r
listノードリスト.Add(c曲リストノード);\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.TraceInformation("box.def検出 : {0}", infoDir.FullName + @"\box.def");\r
Trace.Indent();\r
{\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
{\r
if (match == null)\r
{\r
- match = delegate(Cスコア sc)\r
+ match = delegate (Cスコア sc)\r
{\r
return\r
(\r
if (nMatched == -1)\r
{\r
//Trace.TraceInformation( "songs.db に存在しません。({0})", node.arスコア[ lv ].ファイル情報.ファイルの絶対パス );\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.TraceInformation("songs.db に存在しません。({0})", node.arスコア[lv].ファイル情報.ファイルの絶対パス);\r
}\r
{\r
node.arスコア[lv].譜面情報 = this.listSongsDB[nMatched].譜面情報;\r
node.arスコア[lv].bSongDBにキャッシュがあった = true;\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.TraceInformation("songs.db から転記しました。({0})", node.arスコア[lv].ファイル情報.ファイルの絶対パス);\r
}\r
try\r
{\r
CScoreIni scoreIni = new CScoreIni(strFileNameScoreIni);\r
- scoreIni.t全演奏記録セクションの整合性をチェックし不整合があればリセットする();\r
- for (int i = 0; i < 3; i++)\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
+ (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
{\r
node.arスコア[lv].譜面情報.演奏履歴[j] = scoreIni.stファイル.History[j];\r
}\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
{\r
Trace.TraceInformation("演奏記録ファイルから HiSkill 情報と演奏履歴を取得しました。({0})", strFileNameScoreIni);\r
}\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スコア.譜面情報.曲種別 = (EDTX種別)br.ReadInt32();\r
cスコア.譜面情報.Bpm = br.ReadDouble();\r
cスコア.譜面情報.Duration = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Drums = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Guitar = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Bass = br.ReadInt32();\r
\r
//Debug.WriteLine( "songs.db: " + cスコア.ファイル情報.ファイルの絶対パス );\r
return cスコア;\r
{\r
foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX)\r
{\r
{\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
{\r
try\r
{\r
- CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, true);\r
+ CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, false);//DTX ファイルのヘッダだけ読み込んでいたが、使用レーン数の集計の為全て読み込みに変更\r
c曲リストノード.arスコア[i].譜面情報.タイトル = cdtx.TITLE;\r
c曲リストノード.arスコア[i].譜面情報.アーティスト名 = cdtx.ARTIST;\r
c曲リストノード.arスコア[i].譜面情報.コメント = cdtx.COMMENT;\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
+ c曲リストノード.arスコア[i].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;\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
this.nファイルから反映できたスコア数++;\r
cdtx.On非活性化();\r
//Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル );\r
#region [ 曲検索ログ出力 ]\r
//-----------------\r
- if (CDTXMania.app.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(", 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
public void t曲リストへ後処理を適用する()\r
{\r
listStrBoxDefSkinSubfolderFullName = new List<string>();\r
- if (CDTXMania.app.Skin.strBoxDefSkinSubfolders != null)\r
+ if (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders != null)\r
{\r
- foreach (string b in CDTXMania.app.Skin.strBoxDefSkinSubfolders)\r
+ foreach (string b in CDTXMania.Instance.Skin.strBoxDefSkinSubfolders)\r
{\r
listStrBoxDefSkinSubfolderFullName.Add(b);\r
}\r
this.t曲リストへ後処理を適用する(this.list曲ルート);\r
\r
#region [ skin名で比較して、systemスキンとboxdefスキンに重複があれば、boxdefスキン側を削除する ]\r
- string[] systemSkinNames = CSkin.GetSkinName(CDTXMania.app.Skin.strSystemSkinSubfolders);\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
#endregion\r
string[] ba = listStrBoxDefSkinSubfolderFullName.ToArray();\r
Array.Sort(ba);\r
- CDTXMania.app.Skin.strBoxDefSkinSubfolders = ba;\r
+ CDTXMania.Instance.Skin.strBoxDefSkinSubfolders = ba;\r
}\r
private void t曲リストへ後処理を適用する(List<C曲リストノード> ノードリスト)\r
{\r
\r
#region [ ログ出力 ]\r
//-----------------------------\r
- if (CDTXMania.app.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
// すべてのノードについて…\r
foreach (C曲リストノード c曲リストノード in ノードリスト)\r
{\r
- SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
+ SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす\r
\r
#region [ BOXノードなら子リストに <<BACK を入れ、子リストに後処理を適用する ]\r
//-----------------------------\r
\r
#region [ ログ出力 ]\r
//-----------------------------\r
- if (CDTXMania.app.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
{\r
c曲リストノード.strタイトル = c曲リストノード.arスコア[j].譜面情報.タイトル;\r
\r
- if (CDTXMania.app.ConfigIni.bLog曲検索ログ出力)\r
+ if (CDTXMania.Instance.ConfigIni.bLogEnumerateSongs)\r
Trace.TraceInformation("タイトルを設定しました。(nID#{0:D3}, title={1})", c曲リストノード.nID, c曲リストノード.strタイトル);\r
\r
break;\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((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((int)node.arスコア[i].譜面情報.曲種別);\r
bw.Write(node.arスコア[i].譜面情報.Bpm);\r
bw.Write(node.arスコア[i].譜面情報.Duration);\r
+ bw.Write(node.arスコア[i].譜面情報.使用レーン数.Drums);\r
+ bw.Write(node.arスコア[i].譜面情報.使用レーン数.Guitar);\r
+ bw.Write(node.arスコア[i].譜面情報.使用レーン数.Bass);\r
this.nSongsDBへ出力できたスコア数++;\r
}\r
}\r
//-----------------\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
}\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
{\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
+ 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
// {\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
{\r
- nSumPlayCountN2 += n2.arスコア[nL12345].譜面情報.演奏回数[(int)part];\r
+ nSumPlayCountN2 += n2.arスコア[nL12345].譜面情報.演奏回数[part];\r
}\r
// }\r
num = nSumPlayCountN2 - nSumPlayCountN1;\r
// {\r
if (c曲リストノード.arスコア[nL12345] != null)\r
{\r
- nSumPlayCountN1 += c曲リストノード.arスコア[nL12345].譜面情報.演奏回数[(int)part];\r
+ nSumPlayCountN1 += c曲リストノード.arスコア[nL12345].譜面情報.演奏回数[part];\r
}\r
// }\r
// Debug.WriteLine( nSumPlayCountN1 + ":" + c曲リストノード.strタイトル );\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
+ 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
int nSumPlayCountN1 = 0, nSumPlayCountN2 = 0;\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
{\r
- nSumPlayCountN2 = n2.arスコア[nL12345].譜面情報.レベル[(int)part];\r
+ nSumPlayCountN2 = n2.arスコア[nL12345].譜面情報.レベル[part];\r
}\r
num = nSumPlayCountN2 - nSumPlayCountN1;\r
if (num != 0)\r
int nSumPlayCountN1 = 0;\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
}\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
+ 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
bool isFullCombo1 = false, isFullCombo2 = false;\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
{\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
{\r
int nSumPlayCountN1 = 0;\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
}\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
+ 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
double nSumPlayCountN1 = 0, nSumPlayCountN2 = 0;\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
{\r
- nSumPlayCountN2 = n2.arスコア[nL12345].譜面情報.最大スキル[(int)part];\r
+ nSumPlayCountN2 = n2.arスコア[nL12345].譜面情報.最大スキル[part];\r
}\r
double d = nSumPlayCountN2 - nSumPlayCountN1;\r
if (d != 0)\r
double nSumPlayCountN1 = 0;\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
}\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
+ 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
}\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
+ ノードリスト.Sort(delegate (C曲リストノード n1, C曲リストノード n2)\r
{\r
#region [ 共通処理 ]\r
if (n1 == n2)\r
// 事前チェック。\r
\r
if (song == null)\r
- return n現在のアンカ難易度レベル; // 曲がまったくないよ\r
+ return n現在のアンカ難易度レベル; // 曲がまったくないよ\r
\r
if (song.arスコア[n現在のアンカ難易度レベル] != null)\r
- return n現在のアンカ難易度レベル; // 難易度ぴったりの曲があったよ\r
+ return n現在のアンカ難易度レベル; // 難易度ぴったりの曲があったよ\r
\r
if ((song.eノード種別 == C曲リストノード.Eノード種別.BOX) || (song.eノード種別 == C曲リストノード.Eノード種別.BACKBOX))\r
- return 0; // BOX と BACKBOX は関係無いよ\r
+ return 0; // BOX と BACKBOX は関係無いよ\r
\r
\r
// 現在のアンカレベルから、難易度上向きに検索開始。\r
for (int i = 0; i < 5; i++)\r
{\r
if (song.arスコア[n最も近いレベル] != null)\r
- break; // 曲があった。\r
+ break; // 曲があった。\r
\r
- n最も近いレベル = (n最も近いレベル + 1) % 5; // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
+ n最も近いレベル = (n最も近いレベル + 1) % 5; // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
}\r
\r
\r
for (int i = 0; i < 5; i++)\r
{\r
if (song.arスコア[n最も近いレベル] != null)\r
- break; // 曲があった。\r
+ break; // 曲があった。\r
\r
- n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5; // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
+ n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5; // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
}\r
}\r
\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
try\r
{\r
var ini = new CScoreIni(strScoreIniファイルパス);\r
- ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする();\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
+ score.譜面情報.最大ランク[inst] =\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
+ 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
+ {\r
score.譜面情報.演奏履歴[i] = ini.stファイル.History[i];\r
+ }\r
}\r
catch\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
this.searchCount = 0;\r