// CStage 実装 public override void On活性化() { Trace.TraceInformation("曲読み込みステージを活性化します。"); Trace.Indent(); try { this.str曲タイトル = ""; this.strSTAGEFILE = ""; if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName)) { this.pfTITLE = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.SongLoading_Title_FontSize); this.pfSUBTITLE = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), TJAPlayer3.Skin.SongLoading_SubTitle_FontSize); } else { this.pfTITLE = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.SongLoading_Title_FontSize); this.pfSUBTITLE = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.SongLoading_SubTitle_FontSize); } this.nBGM再生開始時刻 = -1; this.nBGMの総再生時間ms = 0; if (this.sd読み込み音 != null) { TJAPlayer3.Sound管理.tサウンドを破棄する(this.sd読み込み音); this.sd読み込み音 = null; } if (TJAPlayer3.bコンパクトモード) { string strDTXファイルパス = TJAPlayer3.strコンパクトモードファイル; CDTX cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 0); if (File.Exists(cdtx.strフォルダ名 + @"set.def")) { cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 1); } this.str曲タイトル = cdtx.TITLE; this.strサブタイトル = cdtx.SUBTITLE; cdtx.On非活性化(); } else { string strDTXファイルパス = TJAPlayer3.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス; var strフォルダ名 = Path.GetDirectoryName(strDTXファイルパス) + @"\"; if (File.Exists(strフォルダ名 + @"set.def")) { var cdtx = new CDTX(strDTXファイルパス, true, 1.0, 0, 1); this.str曲タイトル = cdtx.TITLE; this.strサブタイトル = cdtx.SUBTITLE; cdtx.On非活性化(); } else { var 譜面情報 = TJAPlayer3.stage選曲.r確定されたスコア.譜面情報; this.str曲タイトル = 譜面情報.タイトル; this.strサブタイトル = 譜面情報.strサブタイトル; } } // For the moment, detect that we are performing // calibration via there being an actual single // player and the special song title and subtitle // of the .tja used to perform input calibration TJAPlayer3.IsPerformingCalibration = !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay && TJAPlayer3.ConfigIni.nPlayerCount == 1 && str曲タイトル == "Input Calibration" && strサブタイトル == "TJAPlayer3 Developers"; this.strSTAGEFILE = CSkin.Path(@"Graphics\4_SongLoading\Background.png"); base.On活性化(); } finally { Trace.TraceInformation("曲読み込みステージの活性化を完了しました。"); Trace.Unindent(); } }
private void tSongsDBになかった曲をファイルから読み込んで反映する(List <C曲リストノード> ノードリスト) { foreach (C曲リストノード c曲リストノード in ノードリスト) { SlowOrSuspendSearchTask(); // #27060 中断要求があったら、解除要求が来るまで待機, #PREMOVIE再生中は検索負荷を落とす if (c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.BOX) { this.tSongsDBになかった曲をファイルから読み込んで反映する(c曲リストノード.list子リスト); } else if ((c曲リストノード.eノード種別 == C曲リストノード.Eノード種別.SCORE)) { for (int i = 0; i < (int)Difficulty.Total; i++) { if ((c曲リストノード.arスコア.譜面情報.b譜面が存在する[i] != false)) { #region [ DTX ファイルのヘッダだけ読み込み、Cスコア.譜面情報 を設定する ] //----------------- string path = c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス; if (File.Exists(path)) { try { CDTX cdtx = new CDTX(c曲リストノード.arスコア.ファイル情報.ファイルの絶対パス, true, 0, 0); c曲リストノード.arスコア.譜面情報.タイトル = cdtx.TITLE; c曲リストノード.arスコア.譜面情報.アーティスト名 = cdtx.ARTIST; c曲リストノード.arスコア.譜面情報.コメント = cdtx.COMMENT; c曲リストノード.arスコア.譜面情報.ジャンル = cdtx.GENRE; c曲リストノード.arスコア.譜面情報.Backgound = ((cdtx.BACKGROUND != null) && (cdtx.BACKGROUND.Length > 0)) ? cdtx.BACKGROUND : ""; c曲リストノード.arスコア.譜面情報.Bpm = cdtx.BPM; c曲リストノード.arスコア.譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms; c曲リストノード.arスコア.譜面情報.strBGMファイル名 = cdtx.strBGM_PATH == null ? "" : cdtx.strBGM_PATH; //ここのnullをどうにか-------- c曲リストノード.arスコア.譜面情報.SongVol = cdtx.SongVol; c曲リストノード.arスコア.譜面情報.SongLoudnessMetadata = cdtx.SongLoudnessMetadata; c曲リストノード.arスコア.譜面情報.nデモBGMオフセット = cdtx.nデモBGMオフセット; c曲リストノード.arスコア.譜面情報.b譜面分岐[0] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[0]; c曲リストノード.arスコア.譜面情報.b譜面分岐[1] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[1]; c曲リストノード.arスコア.譜面情報.b譜面分岐[2] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[2]; c曲リストノード.arスコア.譜面情報.b譜面分岐[3] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[3]; c曲リストノード.arスコア.譜面情報.b譜面分岐[4] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[4]; c曲リストノード.arスコア.譜面情報.b譜面分岐[5] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[5]; c曲リストノード.arスコア.譜面情報.b譜面分岐[6] = cdtx.bHIDDENBRANCH ? false : cdtx.bHasBranch[6]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[0] = cdtx.bPapaMamaSupport[0]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[1] = cdtx.bPapaMamaSupport[1]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[2] = cdtx.bPapaMamaSupport[2]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[3] = cdtx.bPapaMamaSupport[3]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[4] = cdtx.bPapaMamaSupport[4]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[5] = cdtx.bPapaMamaSupport[5]; c曲リストノード.arスコア.譜面情報.bPapaMamaSupport[6] = cdtx.bPapaMamaSupport[6]; c曲リストノード.arスコア.譜面情報.strサブタイトル = cdtx.SUBTITLE; c曲リストノード.arスコア.譜面情報.nレベル[0] = cdtx.LEVELtaiko[0]; c曲リストノード.arスコア.譜面情報.nレベル[1] = cdtx.LEVELtaiko[1]; c曲リストノード.arスコア.譜面情報.nレベル[2] = cdtx.LEVELtaiko[2]; c曲リストノード.arスコア.譜面情報.nレベル[3] = cdtx.LEVELtaiko[3]; c曲リストノード.arスコア.譜面情報.nレベル[4] = cdtx.LEVELtaiko[4]; c曲リストノード.arスコア.譜面情報.nレベル[5] = cdtx.LEVELtaiko[5]; c曲リストノード.arスコア.譜面情報.nレベル[6] = cdtx.LEVELtaiko[6]; c曲リストノード.arスコア.譜面情報.b歌詞あり = cdtx.bLyrics; this.nファイルから反映できたスコア数++; cdtx.On非活性化(); //Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル ); #region [ 曲検索ログ出力 ] //----------------- if (TJAPlayer3.ConfigIni.bLog曲検索ログ出力) { StringBuilder sb = new StringBuilder(0x400); sb.Append(string.Format("曲データファイルから譜面情報を転記しました。({0})", path)); sb.Append("(title=" + c曲リストノード.arスコア.譜面情報.タイトル); sb.Append(", artist=" + c曲リストノード.arスコア.譜面情報.アーティスト名); sb.Append(", comment=" + c曲リストノード.arスコア.譜面情報.コメント); sb.Append(", genre=" + c曲リストノード.arスコア.譜面情報.ジャンル); sb.Append(", background=" + c曲リストノード.arスコア.譜面情報.Backgound); sb.Append(", bpm=" + c曲リストノード.arスコア.譜面情報.Bpm); sb.Append(", lyrics=" + c曲リストノード.arスコア.譜面情報.b歌詞あり); Trace.TraceInformation(sb.ToString()); } //----------------- #endregion } catch (Exception exception) { Trace.TraceError(exception.ToString()); c曲リストノード.arスコア = null; c曲リストノード.nスコア数--; this.n検索されたスコア数--; Trace.TraceError("曲データファイルの読み込みに失敗しました。({0})", path); } } //----------------- #endregion #region [ 対応する .score.ini が存在していれば読み込み、Cスコア.譜面情報 に追加設定する ] //----------------- 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("例外が発生しましたが処理を継続します。 (c8b6538c-46a1-403e-8cc3-fc7e7ff914fb)"); } //----------------- #endregion } } } } }