private void t曲を検索してリストを作成する(string str基点フォルダ, bool b子BOXへ再帰する, List <C曲リストノード> listノードリスト, C曲リストノード node親) { if (!str基点フォルダ.EndsWith(@"/")) { str基点フォルダ = str基点フォルダ + @"/"; } DirectoryInfo info = new DirectoryInfo(str基点フォルダ); if (TJAPlayer3.ConfigIni.bLog曲検索ログ出力) { Trace.TraceInformation("基点フォルダ: " + str基点フォルダ); } #region [ 個別ファイルからノード作成 ] //----------------------------- foreach (FileInfo fileinfo in info.GetFiles()) { SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす string strExt = fileinfo.Extension.ToLower(); if ((strExt.Equals(".tja")) || strExt.Equals(".tcm") || strExt.Equals(".tci")) { #region [ 新処理 ] CDTX dtx = new CDTX(str基点フォルダ + fileinfo.Name, false, 1.0, 0, 0, false); C曲リストノード c曲リストノード = new C曲リストノード(); c曲リストノード.eNodeType = C曲リストノード.ENodeType.SCORE; c曲リストノード.r親ノード = node親; c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ? str基点フォルダ + fileinfo.Name : c曲リストノード.r親ノード.strBreadcrumbs + " > " + str基点フォルダ + fileinfo.Name; c曲リストノード.strTitle = dtx.TITLE; c曲リストノード.strSubTitle = dtx.SUBTITLE; if (!string.IsNullOrEmpty(dtx.GENRE)) { c曲リストノード.strGenre = dtx.GENRE; } else { if (c曲リストノード.r親ノード != null && c曲リストノード.r親ノード.strGenre != "") { // .tjaのジャンルが存在しなくて、かつ親ノードにジャンルが指定されていればそちらを読み込む。 c曲リストノード.strGenre = c曲リストノード.r親ノード.strGenre; } } if (c曲リストノード.r親ノード != null) { c曲リストノード.ForeColor = c曲リストノード.r親ノード.ForeColor; c曲リストノード.BackColor = c曲リストノード.r親ノード.BackColor; } c曲リストノード.ForeColor = TJAPlayer3.Skin.SongSelect_ForeColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strGenre)]; c曲リストノード.BackColor = TJAPlayer3.Skin.SongSelect_BackColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strGenre)]; c曲リストノード.nLevel = dtx.LEVELtaiko; bool b = false; c曲リストノード.arスコア = new Cスコア(); c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name; c曲リストノード.arスコア.ファイル情報.フォルダの絶対パス = str基点フォルダ; c曲リストノード.arスコア.ファイル情報.ファイルサイズ = fileinfo.Length; c曲リストノード.arスコア.ファイル情報.最終更新日時 = fileinfo.LastWriteTime; string strFileNameScoreIni = c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス + ".score.ini"; if (File.Exists(strFileNameScoreIni)) { FileInfo infoScoreIni = new FileInfo(strFileNameScoreIni); c曲リストノード.arスコア.ScoreIni情報.ファイルサイズ = infoScoreIni.Length; c曲リストノード.arスコア.ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime; } c曲リストノード.arスコア.譜面情報.Title = dtx.TITLE; c曲リストノード.arスコア.譜面情報.Artist = dtx.ARTIST; c曲リストノード.arスコア.譜面情報.Comment = dtx.COMMENT; c曲リストノード.arスコア.譜面情報.Genre = dtx.GENRE; c曲リストノード.arスコア.譜面情報.Backgound = ((dtx.BACKGROUND != null) && (dtx.BACKGROUND.Length > 0)) ? dtx.BACKGROUND : ""; c曲リストノード.arスコア.譜面情報.Bpm = dtx.BPM; c曲リストノード.arスコア.譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms; c曲リストノード.arスコア.譜面情報.strBGMファイル名 = dtx.strBGM_PATH == null ? "" : dtx.strBGM_PATH; c曲リストノード.arスコア.譜面情報.SongVol = dtx.SongVol; c曲リストノード.arスコア.譜面情報.SongLoudnessMetadata = dtx.SongLoudnessMetadata; c曲リストノード.arスコア.譜面情報.nデモBGMオフセット = dtx.nデモBGMオフセット; c曲リストノード.arスコア.譜面情報.b譜面分岐[0] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[0]; c曲リストノード.arスコア.譜面情報.b譜面分岐[1] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[1]; c曲リストノード.arスコア.譜面情報.b譜面分岐[2] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[2]; c曲リストノード.arスコア.譜面情報.b譜面分岐[3] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[3]; c曲リストノード.arスコア.譜面情報.b譜面分岐[4] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[4]; c曲リストノード.arスコア.譜面情報.b譜面分岐[5] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[5]; c曲リストノード.arスコア.譜面情報.b譜面分岐[6] = dtx.bHIDDENBRANCH ? false : dtx.bHasBranch[6]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[0] = dtx.bPapaMamaSupport[0]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[1] = dtx.bPapaMamaSupport[1]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[2] = dtx.bPapaMamaSupport[2]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[3] = dtx.bPapaMamaSupport[3]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[4] = dtx.bPapaMamaSupport[4]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[5] = dtx.bPapaMamaSupport[5]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[6] = dtx.bPapaMamaSupport[6]; c曲リストノード.arスコア.譜面情報.strSubTitle = dtx.SUBTITLE; c曲リストノード.arスコア.譜面情報.nレベル[0] = dtx.LEVELtaiko[0]; c曲リストノード.arスコア.譜面情報.nレベル[1] = dtx.LEVELtaiko[1]; c曲リストノード.arスコア.譜面情報.nレベル[2] = dtx.LEVELtaiko[2]; c曲リストノード.arスコア.譜面情報.nレベル[3] = dtx.LEVELtaiko[3]; c曲リストノード.arスコア.譜面情報.nレベル[4] = dtx.LEVELtaiko[4]; c曲リストノード.arスコア.譜面情報.nレベル[5] = dtx.LEVELtaiko[5]; c曲リストノード.arスコア.譜面情報.nレベル[6] = dtx.LEVELtaiko[6]; c曲リストノード.arスコア.譜面情報.b歌詞あり = dtx.bLyrics; for (int n = 0; n < (int)Difficulty.Total; n++) { if (dtx.b譜面が存在する[n]) { c曲リストノード.nスコア数++; c曲リストノード.arスコア.譜面情報.b譜面が存在する[n] = true; if (b == false) { this.n検索されたスコア数++; listノードリスト.Add(c曲リストノード); this.n検索された曲ノード数++; b = true; } } } dtx = null; try { var scoreIniPath = c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス + ".score.ini"; if (File.Exists(scoreIniPath)) { this.tScoreIniを読み込んで譜面情報を設定する(scoreIniPath, c曲リストノード.arスコア); } else { string[] dtxscoreini = Directory.GetFiles(c曲リストノード.arスコア.ファイル情報.フォルダの絶対パス, "*.dtx.score.ini"); if (dtxscoreini.Length != 0 && File.Exists(dtxscoreini[0])) { this.tScoreIniを読み込んで譜面情報を設定する(dtxscoreini[0], c曲リストノード.arスコア); } } } catch (Exception e) { Trace.TraceError(e.ToString()); Trace.TraceError("An exception has occurred, but processing continues."); } #endregion } } //----------------------------- #endregion foreach (DirectoryInfo infoDir in info.GetDirectories()) { SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす #region [ b.box.def を含むフォルダの場合 ] //----------------------------- if (File.Exists(infoDir.FullName + @"/box.def")) { CBoxDef boxdef = new CBoxDef(infoDir.FullName + @"/box.def"); C曲リストノード c曲リストノード = new C曲リストノード(); c曲リストノード.eNodeType = C曲リストノード.ENodeType.BOX; c曲リストノード.strTitle = boxdef.Title; c曲リストノード.strGenre = boxdef.Genre; c曲リストノード.ForeColor = boxdef.ForeColor; c曲リストノード.BackColor = boxdef.BackColor; c曲リストノード.ForeColor = TJAPlayer3.Skin.SongSelect_ForeColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strGenre)]; c曲リストノード.BackColor = TJAPlayer3.Skin.SongSelect_BackColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strGenre)]; c曲リストノード.nスコア数 = 1; c曲リストノード.arスコア = new Cスコア(); c曲リストノード.arスコア.ファイル情報.フォルダの絶対パス = infoDir.FullName + @"/"; c曲リストノード.arスコア.譜面情報.Title = boxdef.Title; c曲リストノード.arスコア.譜面情報.Genre = boxdef.Genre; c曲リストノード.r親ノード = node親; c曲リストノード.Openindex = 1; c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ? c曲リストノード.strTitle : c曲リストノード.r親ノード.strBreadcrumbs + " > " + c曲リストノード.strTitle; c曲リストノード.list子リスト = new List <C曲リストノード>(); listノードリスト.Add(c曲リストノード); if (b子BOXへ再帰する) { this.t曲を検索してリストを作成する(infoDir.FullName + @"/", b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード); } } //----------------------------- #endregion #region [ c.通常フォルダの場合 ] //----------------------------- else { this.t曲を検索してリストを作成する(infoDir.FullName + @"/", b子BOXへ再帰する, listノードリスト, node親); } //----------------------------- #endregion } }
private void t曲を検索してリストを作成する(string str基点フォルダ, bool b子BOXへ再帰する, List <C曲リストノード> listノードリスト, C曲リストノード node親) { if (!str基点フォルダ.EndsWith(@"\")) { str基点フォルダ = str基点フォルダ + @"\"; } DirectoryInfo info = new DirectoryInfo(str基点フォルダ); if (TJAPlayer3.ConfigIni.bLog曲検索ログ出力) { Trace.TraceInformation("基点フォルダ: " + str基点フォルダ); } #region [ 個別ファイルからノード作成 ] //----------------------------- foreach (FileInfo fileinfo in info.GetFiles()) { SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす string strExt = fileinfo.Extension.ToLower(); if ((strExt.Equals(".tja")) || strExt.Equals(".tcm") || strExt.Equals(".tci")) { #region [ 新処理 ] CDTX dtx = new CDTX(str基点フォルダ + fileinfo.Name, false, 1.0, 0); C曲リストノード c曲リストノード = new C曲リストノード(); c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.SCORE; c曲リストノード.r親ノード = node親; c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ? str基点フォルダ + fileinfo.Name : c曲リストノード.r親ノード.strBreadcrumbs + " > " + str基点フォルダ + fileinfo.Name; c曲リストノード.strタイトル = dtx.TITLE; c曲リストノード.strサブタイトル = dtx.SUBTITLE; if (!string.IsNullOrEmpty(dtx.GENRE)) { c曲リストノード.strジャンル = dtx.GENRE; } else { if (c曲リストノード.r親ノード != null && c曲リストノード.r親ノード.strジャンル != "") { // .tjaのジャンルが存在しなくて、かつ親ノードにジャンルが指定されていればそちらを読み込む。 c曲リストノード.strジャンル = c曲リストノード.r親ノード.strジャンル; } } if (c曲リストノード.r親ノード != null) { if (c曲リストノード.r親ノード.IsChangedForeColor) { c曲リストノード.ForeColor = c曲リストノード.r親ノード.ForeColor; c曲リストノード.IsChangedForeColor = true; } if (c曲リストノード.r親ノード.IsChangedBackColor) { c曲リストノード.BackColor = c曲リストノード.r親ノード.BackColor; c曲リストノード.IsChangedBackColor = true; } } c曲リストノード.ForeColor = TJAPlayer3.Skin.SongSelect_ForeColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strジャンル)]; c曲リストノード.BackColor = TJAPlayer3.Skin.SongSelect_BackColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strジャンル)]; c曲リストノード.nLevel = dtx.LEVELtaiko; bool b = false; c曲リストノード.arスコア = new Cスコア(); c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス = str基点フォルダ + fileinfo.Name; c曲リストノード.arスコア.ファイル情報.フォルダの絶対パス = str基点フォルダ; c曲リストノード.arスコア.ファイル情報.ファイルサイズ = fileinfo.Length; c曲リストノード.arスコア.ファイル情報.最終更新日時 = fileinfo.LastWriteTime; string strFileNameScoreIni = c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス + ".score.ini"; if (File.Exists(strFileNameScoreIni)) { FileInfo infoScoreIni = new FileInfo(strFileNameScoreIni); c曲リストノード.arスコア.ScoreIni情報.ファイルサイズ = infoScoreIni.Length; c曲リストノード.arスコア.ScoreIni情報.最終更新日時 = infoScoreIni.LastWriteTime; } for (int n = 0; n < (int)Difficulty.Total; n++) { if (dtx.b譜面が存在する[n]) { c曲リストノード.nスコア数++; c曲リストノード.arスコア.譜面情報.b譜面が存在する[n] = true; if (b == false) { this.n検索されたスコア数++; listノードリスト.Add(c曲リストノード); this.n検索された曲ノード数++; b = true; } } } dtx = null; #endregion } } //----------------------------- #endregion foreach (DirectoryInfo infoDir in info.GetDirectories()) { SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす #region [ b.box.def を含むフォルダの場合 ] //----------------------------- if (File.Exists(infoDir.FullName + @"\box.def")) { CBoxDef boxdef = new CBoxDef(infoDir.FullName + @"\box.def"); C曲リストノード c曲リストノード = new C曲リストノード(); c曲リストノード.eノード種別 = C曲リストノード.Eノード種別.BOX; c曲リストノード.strタイトル = boxdef.Title; c曲リストノード.strジャンル = boxdef.Genre; if (boxdef.IsChangedForeColor) { c曲リストノード.ForeColor = boxdef.ForeColor; c曲リストノード.IsChangedForeColor = true; } if (boxdef.IsChangedBackColor) { c曲リストノード.BackColor = boxdef.BackColor; c曲リストノード.IsChangedBackColor = true; } c曲リストノード.ForeColor = TJAPlayer3.Skin.SongSelect_ForeColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strジャンル)]; c曲リストノード.BackColor = TJAPlayer3.Skin.SongSelect_BackColor[TJAPlayer3.Skin.nStrジャンルtoNum(c曲リストノード.strジャンル)]; c曲リストノード.nスコア数 = 1; c曲リストノード.arスコア = new Cスコア(); c曲リストノード.arスコア.ファイル情報.フォルダの絶対パス = infoDir.FullName + @"\"; c曲リストノード.arスコア.譜面情報.タイトル = boxdef.Title; c曲リストノード.arスコア.譜面情報.ジャンル = boxdef.Genre; c曲リストノード.r親ノード = node親; c曲リストノード.Openindex = 1; c曲リストノード.strBreadcrumbs = (c曲リストノード.r親ノード == null) ? c曲リストノード.strタイトル : c曲リストノード.r親ノード.strBreadcrumbs + " > " + c曲リストノード.strタイトル; c曲リストノード.list子リスト = new List <C曲リストノード>(); listノードリスト.Add(c曲リストノード); if (b子BOXへ再帰する) { this.t曲を検索してリストを作成する(infoDir.FullName + @"\", b子BOXへ再帰する, c曲リストノード.list子リスト, c曲リストノード); } } //----------------------------- #endregion #region [ c.通常フォルダの場合 ] //----------------------------- else { this.t曲を検索してリストを作成する(infoDir.FullName + @"\", b子BOXへ再帰する, listノードリスト, node親); } //----------------------------- #endregion } }