public override int On進行描画() { if (base.b活性化してない) { return(0); } #region [ 初めての進行描画 ] //----------------------------- if (base.b初めての進行描画) { if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { if (this.sd読み込み音 != null) { if (TJAPlayer3.Skin.sound曲読込開始音.b排他 && (CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド != null)) { CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド.t停止する(); } this.sd読み込み音.t再生を開始する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms; } else { TJAPlayer3.Skin.sound曲読込開始音.t再生する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = TJAPlayer3.Skin.sound曲読込開始音.n長さ_現在のサウンド; } } //this.actFI.tフェードイン開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン; base.b初めての進行描画 = false; nWAVcount = 1; bitmapFilename = new Bitmap(640, 24); graphicsFilename = Graphics.FromImage(bitmapFilename); graphicsFilename.TextRenderingHint = TextRenderingHint.AntiAlias; ftFilename = new Font("MS UI Gothic", 24f, FontStyle.Bold, GraphicsUnit.Pixel); } //----------------------------- #endregion this.ct待機.t進行(); #region [ ESC押下時は選曲画面に戻る ] if (tキー入力()) { if (this.sd読み込み音 != null) { this.sd読み込み音.tサウンドを停止する(); this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込中止); } #endregion #region [ 背景、音符+タイトル表示 ] //----------------------------- this.ct曲名表示.t進行(); if (this.tx背景 != null) { this.tx背景.t2D描画(TJAPlayer3.app.Device, 0, 0); } //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() ); if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { if (TJAPlayer3.Tx.SongLoading_Plate != null) { TJAPlayer3.Tx.SongLoading_Plate.bスクリーン合成 = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_Plate.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } } //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() ); int y = 720 - 45; if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strサブタイトル) ? 15 : 0; this.txタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Left) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X, TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X - (this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_Title_X - ((this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } } if (this.txサブタイトル != null) { this.txサブタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X, TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X - (this.txサブタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_SubTitle_X - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } } } //----------------------------- #endregion switch (base.eフェーズID) { case CStage.Eフェーズ.共通_フェードイン: //if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 // 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。 // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。 base.eフェーズID = CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む; return((int)E曲読込画面の戻り値.継続); case CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む: { timeBeginLoad = DateTime.Now; string str = TJAPlayer3.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス; CScoreIni ini = new CScoreIni(str + ".score.ini"); ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする(); if ((TJAPlayer3.DTX[0] != null) && TJAPlayer3.DTX[0].b活性化してる) { TJAPlayer3.DTX[0].On非活性化(); } //if( CDTXMania.DTX == null ) { TJAPlayer3.DTX[0] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX[1] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 1, true); } Trace.TraceInformation("----曲情報-----------------"); Trace.TraceInformation("TITLE: {0}", TJAPlayer3.DTX[0].TITLE); Trace.TraceInformation("FILE: {0}", TJAPlayer3.DTX[0].strファイル名の絶対パス); Trace.TraceInformation("---------------------------"); TimeSpan span = (TimeSpan)(DateTime.Now - timeBeginLoad); Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); // 段位認定モード用。 if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan && TJAPlayer3.DTX[0].List_DanSongs != null) { var pfTitle = new CPrivateFont(); var pfSubTitle = new CPrivateFont(); if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName)) { pfTitle = new CPrivateFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 32); pfSubTitle = new CPrivateFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 19); } var titleForeColor = TJAPlayer3.Skin.Game_DanC_Title_ForeColor; var titleBackColor = TJAPlayer3.Skin.Game_DanC_Title_BackColor; var subtitleForeColor = TJAPlayer3.Skin.Game_DanC_SubTitle_ForeColor; var subtitleBackColor = TJAPlayer3.Skin.Game_DanC_SubTitle_BackColor; for (int i = 0; i < TJAPlayer3.DTX[0].List_DanSongs.Count; i++) { if (!string.IsNullOrEmpty(TJAPlayer3.DTX[0].List_DanSongs[i].Title)) { using (var bmpSongTitle = pfTitle.DrawPrivateFont(TJAPlayer3.DTX[0].List_DanSongs[i].Title, titleForeColor, titleBackColor)) { TJAPlayer3.DTX[0].List_DanSongs[i].TitleTex = TJAPlayer3.tテクスチャの生成(bmpSongTitle, false); TJAPlayer3.DTX[0].List_DanSongs[i].TitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX[0].List_DanSongs[i].TitleTex, 710); } } if (!string.IsNullOrEmpty(TJAPlayer3.DTX[0].List_DanSongs[i].SubTitle)) { using (var bmpSongSubTitle = pfSubTitle.DrawPrivateFont(TJAPlayer3.DTX[0].List_DanSongs[i].SubTitle, subtitleForeColor, subtitleBackColor)) { TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex = TJAPlayer3.tテクスチャの生成(bmpSongSubTitle, false); TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex, 710); } } } pfTitle?.Dispose(); pfSubTitle?.Dispose(); } } base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAV読み込み待機; timeBeginLoadWAV = DateTime.Now; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAV読み込み待機: { if (this.ct待機.n現在の値 > 260) { base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む: { if (nWAVcount == 1 && TJAPlayer3.DTX[0].listWAV.Count > 0) // #28934 2012.7.7 yyagi (added checking Count) { ShowProgressByFilename(TJAPlayer3.DTX[0].listWAV[nWAVcount].strファイル名); } int looptime = (TJAPlayer3.ConfigIni.b垂直帰線待ちを行う)? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする for (int i = 0; i < looptime && nWAVcount <= TJAPlayer3.DTX[0].listWAV.Count; i++) { if (TJAPlayer3.DTX[0].listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi { TJAPlayer3.DTX[0].tWAVの読み込み(TJAPlayer3.DTX[0].listWAV[nWAVcount]); } nWAVcount++; } if (nWAVcount <= TJAPlayer3.DTX[0].listWAV.Count) { ShowProgressByFilename(TJAPlayer3.DTX[0].listWAV[nWAVcount].strファイル名); } if (nWAVcount > TJAPlayer3.DTX[0].listWAV.Count) { TimeSpan span = ( TimeSpan )(DateTime.Now - timeBeginLoadWAV); Trace.TraceInformation("WAV読込所要時間({0,4}): {1}", TJAPlayer3.DTX[0].listWAV.Count, span.ToString()); timeBeginLoadWAV = DateTime.Now; if (TJAPlayer3.ConfigIni.bDynamicBassMixerManagement) { TJAPlayer3.DTX[0].PlanToAddMixerChannel(); } for (int nPlayer = 0; nPlayer < TJAPlayer3.ConfigIni.nPlayerCount; nPlayer++) { TJAPlayer3.DTX[nPlayer].t太鼓チップのランダム化(TJAPlayer3.ConfigIni.eRandom[nPlayer]); //太鼓チップをランダム化する際、1P後2Pの処理をすぐに行うと、 //1Pと酷似した、もしくは全く同じチップが流れてしまうので、 //1Pのランダム化後、ある程度時間を空ける。 Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1;) { if (sw.ElapsedMilliseconds >= 500) { sw.Reset(); i++; } } } TJAPlayer3.stage演奏ドラム画面.On活性化(); span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む: { TimeSpan span; DateTime timeBeginLoadBMPAVI = DateTime.Now; if (TJAPlayer3.ConfigIni.bAVI有効) { TJAPlayer3.DTX[0].tAVIの読み込み(); } span = ( TimeSpan )(DateTime.Now - timeBeginLoadBMPAVI); span = ( TimeSpan )(DateTime.Now - timeBeginLoad); Trace.TraceInformation("総読込時間: {0}", span.ToString()); if (TJAPlayer3.ConfigIni.FastRender) { var fastRender = new FastRender(); fastRender.Render(); fastRender = null; } if (bitmapFilename != null) { bitmapFilename.Dispose(); bitmapFilename = null; } if (graphicsFilename != null) { graphicsFilename.Dispose(); graphicsFilename = null; } if (ftFilename != null) { ftFilename.Dispose(); ftFilename = null; } TJAPlayer3.Timer.t更新(); //CSound管理.rc演奏用タイマ.t更新(); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ: { long nCurrentTime = TJAPlayer3.Timer.n現在時刻; if (nCurrentTime < this.nBGM再生開始時刻) { this.nBGM再生開始時刻 = nCurrentTime; } // if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) ) if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間 { base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.共通_フェードアウト: if (this.ct待機.b終了値に達してない) { return((int)E曲読込画面の戻り値.継続); } if (txFilename != null) { txFilename.Dispose(); } if (this.sd読み込み音 != null) { this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込完了); } return((int)E曲読込画面の戻り値.継続); }
public override int On進行描画() { if (base.b活性化してない) { return(0); } #region [ 初めての進行描画 ] //----------------------------- if (base.b初めての進行描画) { Cスコア cスコア1 = TJAPlayer3.stage選曲.r確定されたスコア; if (this.sd読み込み音 != null) { if (TJAPlayer3.Skin.sound曲読込開始音.b排他 && (CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド != null)) { CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド.t停止する(); } this.sd読み込み音.t再生を開始する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms; } else { TJAPlayer3.Skin.sound曲読込開始音.t再生する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = TJAPlayer3.Skin.sound曲読込開始音.n長さ_現在のサウンド; } //this.actFI.tフェードイン開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン; base.b初めての進行描画 = false; nWAVcount = 1; bitmapFilename = new Bitmap(640, 24); graphicsFilename = Graphics.FromImage(bitmapFilename); graphicsFilename.TextRenderingHint = TextRenderingHint.AntiAlias; ftFilename = new Font(FontUtilities.FallbackFontName, 24f, FontStyle.Bold, GraphicsUnit.Pixel); } //----------------------------- #endregion this.ct待機.t進行(); ctどんちゃん.t進行(); double 回転値 = 180.0; double Don = Math.Sin(this.ctどんちゃん.n現在の値 * Math.PI / (this.ctどんちゃん.n終了値 * 180.0 / 回転値)) * 160; #region [ ESC押下時は選曲画面に戻る ] if (tキー入力()) { if (this.sd読み込み音 != null) { this.sd読み込み音.tサウンドを停止する(); this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込中止); } #endregion #region [ 背景、音符+タイトル表示 ] //----------------------------- this.ct曲名表示.t進行(); if (this.tx背景 != null) { this.tx背景.t2D描画(TJAPlayer3.app.Device, 0, 0); TJAPlayer3.Tx.SongLoading_FadeIn.Opacity = (int)((this.ctどんちゃん.n現在の値 / 3) * 2.55); TJAPlayer3.Tx.SongLoading_FadeIn.t2D描画(TJAPlayer3.app.Device, 940 - ctどんちゃん.n現在の値, (int)(0 - Don), new Rectangle(640, 0, 640, 720)); TJAPlayer3.Tx.SongLoading_FadeIn.t2D描画(TJAPlayer3.app.Device, -300 + ctどんちゃん.n現在の値, (int)(0 - Don), new Rectangle(0, 0, 640, 720)); } //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() ); if (TJAPlayer3.Tx.SongLoading_Plate != null) { TJAPlayer3.Tx.SongLoading_Plate.bスクリーン合成 = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_Plate.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_XY[0], TJAPlayer3.Skin.SongLoading_Plate_XY[1] - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_XY[0] - TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width, TJAPlayer3.Skin.SongLoading_Plate_XY[1] - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_XY[0] - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), TJAPlayer3.Skin.SongLoading_Plate_XY[1] - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } } //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() ); int y = 720 - 45; if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strサブタイトル) ? 15 : 0; this.txタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Left) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_XY[0], TJAPlayer3.Skin.SongLoading_Title_XY[1] - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_XY[0] - (this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_Title_XY[1] - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_Title_XY[0] - ((this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_Title_XY[1] - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } } if (this.txサブタイトル != null) { this.txサブタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_XY[0], TJAPlayer3.Skin.SongLoading_SubTitle_XY[1] - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_XY[0] - (this.txサブタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_SubTitle_XY[1] - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_SubTitle_XY[0] - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_SubTitle_XY[1] - (this.txサブタイトル.sz画像サイズ.Height / 2)); } } //----------------------------- #endregion switch (base.eフェーズID) { case CStage.Eフェーズ.共通_フェードイン: //if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 // 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。 // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。 base.eフェーズID = CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む; return((int)E曲読込画面の戻り値.継続); case CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む: { timeBeginLoad = DateTime.Now; var str = TJAPlayer3.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス; CScoreIni ini = new CScoreIni(str + ".score.ini"); ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする(); if ((TJAPlayer3.DTX != null) && TJAPlayer3.DTX.b活性化してる) { TJAPlayer3.DTX.On非活性化(); } //if( CDTXMania.DTX == null ) { TJAPlayer3.DTX = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 0, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX_2P = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true); } if (File.Exists(TJAPlayer3.DTX.strフォルダ名 + @"\\set.def")) { TJAPlayer3.DTX = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX_2P = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true); } } Trace.TraceInformation("----曲情報-----------------"); Trace.TraceInformation("TITLE: {0}", TJAPlayer3.DTX.TITLE); Trace.TraceInformation("FILE: {0}", TJAPlayer3.DTX.strファイル名の絶対パス); Trace.TraceInformation("---------------------------"); var span = (TimeSpan)(DateTime.Now - timeBeginLoad); Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); // 段位認定モード用。 if (TJAPlayer3.stage選曲.n確定された曲の難易度 == (int)Difficulty.Dan && TJAPlayer3.DTX.List_DanSongs != null) { var fontFamily = FontUtilities.GetFontFamilyOrFallback(TJAPlayer3.ConfigIni.FontName); using (var pfTitle = new CPrivateFont(fontFamily, 30)) using (var pfSubTitle = new CPrivateFont(fontFamily, 22)) { var titleForeColor = TJAPlayer3.Skin.Game_DanC_Title_ForeColor; var titleBackColor = TJAPlayer3.Skin.Game_DanC_Title_BackColor; var subtitleForeColor = TJAPlayer3.Skin.Game_DanC_SubTitle_ForeColor; var subtitleBackColor = TJAPlayer3.Skin.Game_DanC_SubTitle_BackColor; foreach (var danSong in TJAPlayer3.DTX.List_DanSongs) { if (!string.IsNullOrEmpty(danSong.Title)) { using (var bmpSongTitle = pfTitle.DrawPrivateFont(danSong.Title, titleForeColor, titleBackColor)) { danSong.TitleTex = TJAPlayer3.tテクスチャの生成(bmpSongTitle, false); danSong.TitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref danSong.TitleTex, 710); } } if (!string.IsNullOrEmpty(danSong.SubTitle)) { using (var bmpSongSubTitle = pfSubTitle.DrawPrivateFont(danSong.SubTitle, subtitleForeColor, subtitleBackColor)) { danSong.SubTitleTex = TJAPlayer3.tテクスチャの生成(bmpSongSubTitle, false); danSong.SubTitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref danSong.SubTitleTex, 710); } } } } } } //2017.01.28 DD Config.iniに反映しないように変更 /* * switch( CDTXMania.DTX.nScoreModeTmp ) * { * case 0: * CDTXMania.ConfigIni.nScoreMode = 0; * break; * case 1: * CDTXMania.ConfigIni.nScoreMode = 1; * break; * case 2: * CDTXMania.ConfigIni.nScoreMode = 2; * break; * case -1: * CDTXMania.ConfigIni.nScoreMode = 1; * break; * } */ base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAV読み込み待機; timeBeginLoadWAV = DateTime.Now; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAV読み込み待機: { if (this.ct待機.n現在の値 > 260) { base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む: { if (nWAVcount == 1 && TJAPlayer3.DTX.listWAV.Count > 0) // #28934 2012.7.7 yyagi (added checking Count) { ShowProgressByFilename(TJAPlayer3.DTX.listWAV[nWAVcount].strファイル名); } int looptime = (TJAPlayer3.ConfigIni.b垂直帰線待ちを行う) ? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする for (int i = 0; i < looptime && nWAVcount <= TJAPlayer3.DTX.listWAV.Count; i++) { if (TJAPlayer3.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi { TJAPlayer3.DTX.tWAVの読み込み(TJAPlayer3.DTX.listWAV[nWAVcount]); } nWAVcount++; } if (nWAVcount <= TJAPlayer3.DTX.listWAV.Count) { ShowProgressByFilename(TJAPlayer3.DTX.listWAV[nWAVcount].strファイル名); } if (nWAVcount > TJAPlayer3.DTX.listWAV.Count) { TimeSpan span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); Trace.TraceInformation("WAV読込所要時間({0,4}): {1}", TJAPlayer3.DTX.listWAV.Count, span.ToString()); timeBeginLoadWAV = DateTime.Now; if (TJAPlayer3.ConfigIni.bDynamicBassMixerManagement) { TJAPlayer3.DTX.PlanToAddMixerChannel(); } TJAPlayer3.DTX.t太鼓チップのランダム化(TJAPlayer3.ConfigIni.eRandom.Taiko); TJAPlayer3.stage演奏ドラム画面.On活性化(); span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む: { TimeSpan span; DateTime timeBeginLoadBMPAVI = DateTime.Now; if (TJAPlayer3.ConfigIni.bAVI有効) { TJAPlayer3.DTX.tAVIの読み込み(); } span = (TimeSpan)(DateTime.Now - timeBeginLoadBMPAVI); span = (TimeSpan)(DateTime.Now - timeBeginLoad); Trace.TraceInformation("総読込時間: {0}", span.ToString()); if (TJAPlayer3.ConfigIni.FastRender) { var fastRender = new FastRender(); fastRender.Render(); fastRender = null; } if (bitmapFilename != null) { bitmapFilename.Dispose(); bitmapFilename = null; } if (graphicsFilename != null) { graphicsFilename.Dispose(); graphicsFilename = null; } if (ftFilename != null) { ftFilename.Dispose(); ftFilename = null; } TJAPlayer3.Timer.t更新(); //CSound管理.rc演奏用タイマ.t更新(); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ: { long nCurrentTime = TJAPlayer3.Timer.n現在時刻; if (nCurrentTime < this.nBGM再生開始時刻) { this.nBGM再生開始時刻 = nCurrentTime; } // if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) ) if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間 { base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.共通_フェードアウト: if (this.ct待機.b終了値に達してない) { return((int)E曲読込画面の戻り値.継続); } if (txFilename != null) { txFilename.Dispose(); } if (this.sd読み込み音 != null) { this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込完了); } return((int)E曲読込画面の戻り値.継続); }
public override int On進行描画() { string str; if (base.b活性化してない) { return(0); } #region [ 初めての進行描画 ] //----------------------------- if (base.b初めての進行描画) { Cスコア cスコア1 = TJAPlayer3.stage選曲.r確定されたスコア; if (this.sd読み込み音 != null) { if (TJAPlayer3.Skin.sound曲読込開始音.b排他 && (CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド != null)) { CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド.t停止する(); } this.sd読み込み音.t再生を開始する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms; } else { TJAPlayer3.Skin.sound曲読込開始音.t再生する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = TJAPlayer3.Skin.sound曲読込開始音.n長さ_現在のサウンド; } //this.actFI.tフェードイン開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン; base.b初めての進行描画 = false; nWAVcount = 1; bitmapFilename = new Bitmap(640, 24); graphicsFilename = Graphics.FromImage(bitmapFilename); graphicsFilename.TextRenderingHint = TextRenderingHint.AntiAlias; ftFilename = new Font("MS UI Gothic", 24f, FontStyle.Bold, GraphicsUnit.Pixel); } //----------------------------- #endregion this.ct待機.t進行(); #region [ ESC押下時は選曲画面に戻る ] if (tキー入力()) { if (this.sd読み込み音 != null) { this.sd読み込み音.tサウンドを停止する(); this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込中止); } #endregion if (TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Dan) { #region [ 背景、音符+タイトル表示 ] //----------------------------- this.ct曲名表示.t進行(); if (TJAPlayer3.Tx.SongLoading_BgWait != null) { TJAPlayer3.Tx.SongLoading_BgWait.t2D描画(TJAPlayer3.app.Device, 0, 0); } if (TJAPlayer3.Tx.SongLoading_Chara != null) { TJAPlayer3.Tx.SongLoading_Chara.t2D描画(TJAPlayer3.app.Device, 0, 0); } //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() ); if (TJAPlayer3.Tx.SongLoading_Plate != null) { TJAPlayer3.Tx.SongLoading_Plate.bスクリーン合成 = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_Plate.Opacity = 255; if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } } //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() ); int y = 720 - 45; if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strサブタイトル) ? 15 : 0; this.txタイトル.Opacity = 255; if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Left) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X, TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X - (this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_Title_X - ((this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } } if (this.txサブタイトル != null) { this.txサブタイトル.Opacity = 255; if (TJAPlayer3.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X, TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X - (this.txサブタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_SubTitle_X - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } } //----------------------------- #endregion } else { #region [ 段位時の曲読み込み画面 ] TJAPlayer3.Tx.SongLoading_Bg_Dan.t2D描画(TJAPlayer3.app.Device, 0, 0 - (ct待機.n現在の値 <= 600 ? ct待機.n現在の値 / 10f : 60)); if (TJAPlayer3.stage段位選択.段位リスト.stバー情報[TJAPlayer3.stage段位選択.段位リスト.n現在の選択行].txDanPlate != null) { TJAPlayer3.stage段位選択.段位リスト.stバー情報[TJAPlayer3.stage段位選択.段位リスト.n現在の選択行].txDanPlate.Opacity = (int)(ct待機.n現在の値 <= 51 ? (ct待機.n現在の値 / 0.2f) : 255 - (this.ct待機.n現在の値 - 949) / 0.2); } TJAPlayer3.stage段位選択.段位リスト.stバー情報[TJAPlayer3.stage段位選択.段位リスト.n現在の選択行].txDanPlate?.t2D中心基準描画(TJAPlayer3.app.Device, 1121, 213); if (TJAPlayer3.Tx.Tile_Black != null) { TJAPlayer3.Tx.Tile_Black.Opacity = (int)(ct待機.n現在の値 <= 51 ? (255 - ct待機.n現在の値 / 0.2f) : (this.ct待機.n現在の値 - 949) / 0.2); for (int i = 0; i <= (SampleFramework.GameWindowSize.Width / 64); i++) // #23510 2010.10.31 yyagi: change "clientSize.Width" to "640" to fix FIFO drawing size { for (int j = 0; j <= (SampleFramework.GameWindowSize.Height / 64); j++) // #23510 2010.10.31 yyagi: change "clientSize.Height" to "480" to fix FIFO drawing size { TJAPlayer3.Tx.Tile_Black.t2D描画(TJAPlayer3.app.Device, i * 64, j * 64); } } } #endregion } switch (base.eフェーズID) { case CStage.Eフェーズ.共通_フェードイン: //if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 // 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。 // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。 base.eフェーズID = CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む; return((int)E曲読込画面の戻り値.継続); case CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む: { timeBeginLoad = DateTime.Now; TimeSpan span; str = null; if (!TJAPlayer3.bコンパクトモード) { str = TJAPlayer3.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス; } else { str = TJAPlayer3.strコンパクトモードファイル; } CScoreIni ini = new CScoreIni(str + ".score.ini"); ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする(); if ((TJAPlayer3.DTX != null) && TJAPlayer3.DTX.b活性化してる) { TJAPlayer3.DTX.On非活性化(); } //if( CDTXMania.DTX == null ) { TJAPlayer3.DTX = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 0, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX_2P = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true); } if (File.Exists(TJAPlayer3.DTX.strフォルダ名 + @"\\set.def")) { TJAPlayer3.DTX_2P = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX_2P = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, 1, true); } } Trace.TraceInformation("----曲情報-----------------"); Trace.TraceInformation("TITLE: {0}", TJAPlayer3.DTX.TITLE); Trace.TraceInformation("FILE: {0}", TJAPlayer3.DTX.strファイル名の絶対パス); Trace.TraceInformation("---------------------------"); span = (TimeSpan)(DateTime.Now - timeBeginLoad); Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); // 段位認定モード用。 if (TJAPlayer3.stage選曲.n確定された曲の難易度 == (int)Difficulty.Dan && TJAPlayer3.DTX.List_DanSongs != null) { var pfTitle = new CPrivateFont(); var pfSubTitle = new CPrivateFont(); if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName)) { pfTitle = new CPrivateFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 30); pfSubTitle = new CPrivateFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 22); } else { pfTitle = new CPrivateFont(new FontFamily("MS UI Gothic"), 30); pfSubTitle = new CPrivateFont(new FontFamily("MS UI Gothic"), 22); } var titleForeColor = TJAPlayer3.Skin.Game_DanC_Title_ForeColor; var titleBackColor = TJAPlayer3.Skin.Game_DanC_Title_BackColor; var subtitleForeColor = TJAPlayer3.Skin.Game_DanC_SubTitle_ForeColor; var subtitleBackColor = TJAPlayer3.Skin.Game_DanC_SubTitle_BackColor; for (int i = 0; i < TJAPlayer3.DTX.List_DanSongs.Count; i++) { if (!string.IsNullOrEmpty(TJAPlayer3.DTX.List_DanSongs[i].Title)) { using (var bmpSongTitle = pfTitle.DrawPrivateFont(TJAPlayer3.DTX.List_DanSongs[i].Title, titleForeColor, titleBackColor)) { TJAPlayer3.DTX.List_DanSongs[i].TitleTex = TJAPlayer3.tテクスチャの生成(bmpSongTitle, false); TJAPlayer3.DTX.List_DanSongs[i].TitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX.List_DanSongs[i].TitleTex, 710); } } if (!string.IsNullOrEmpty(TJAPlayer3.DTX.List_DanSongs[i].SubTitle)) { using (var bmpSongSubTitle = pfSubTitle.DrawPrivateFont(TJAPlayer3.DTX.List_DanSongs[i].SubTitle, subtitleForeColor, subtitleBackColor)) { TJAPlayer3.DTX.List_DanSongs[i].SubTitleTex = TJAPlayer3.tテクスチャの生成(bmpSongSubTitle, false); TJAPlayer3.DTX.List_DanSongs[i].SubTitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX.List_DanSongs[i].SubTitleTex, 710); } } } pfTitle?.Dispose(); pfSubTitle?.Dispose(); } } //2017.01.28 DD Config.iniに反映しないように変更 /* * switch( CDTXMania.DTX.nScoreModeTmp ) * { * case 0: * CDTXMania.ConfigIni.nScoreMode = 0; * break; * case 1: * CDTXMania.ConfigIni.nScoreMode = 1; * break; * case 2: * CDTXMania.ConfigIni.nScoreMode = 2; * break; * case -1: * CDTXMania.ConfigIni.nScoreMode = 1; * break; * } */ base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAV読み込み待機; timeBeginLoadWAV = DateTime.Now; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAV読み込み待機: { if (this.ct待機.n現在の値 > 260) { base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む: { if (nWAVcount == 1 && TJAPlayer3.DTX.listWAV.Count > 0) // #28934 2012.7.7 yyagi (added checking Count) { ShowProgressByFilename(TJAPlayer3.DTX.listWAV[nWAVcount].strファイル名); } int looptime = (TJAPlayer3.ConfigIni.b垂直帰線待ちを行う)? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする for (int i = 0; i < looptime && nWAVcount <= TJAPlayer3.DTX.listWAV.Count; i++) { if (TJAPlayer3.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi { TJAPlayer3.DTX.tWAVの読み込み(TJAPlayer3.DTX.listWAV[nWAVcount]); } nWAVcount++; } if (nWAVcount <= TJAPlayer3.DTX.listWAV.Count) { ShowProgressByFilename(TJAPlayer3.DTX.listWAV[nWAVcount].strファイル名); } if (nWAVcount > TJAPlayer3.DTX.listWAV.Count) { TimeSpan span = ( TimeSpan )(DateTime.Now - timeBeginLoadWAV); Trace.TraceInformation("WAV読込所要時間({0,4}): {1}", TJAPlayer3.DTX.listWAV.Count, span.ToString()); timeBeginLoadWAV = DateTime.Now; if (TJAPlayer3.ConfigIni.bDynamicBassMixerManagement) { TJAPlayer3.DTX.PlanToAddMixerChannel(); } TJAPlayer3.DTX.t太鼓チップのランダム化(TJAPlayer3.ConfigIni.eRandom.Taiko); TJAPlayer3.stage演奏ドラム画面.On活性化(); span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む: { TimeSpan span; DateTime timeBeginLoadBMPAVI = DateTime.Now; if (TJAPlayer3.ConfigIni.bAVI有効) { TJAPlayer3.DTX.tAVIの読み込み(); } span = ( TimeSpan )(DateTime.Now - timeBeginLoadBMPAVI); span = ( TimeSpan )(DateTime.Now - timeBeginLoad); Trace.TraceInformation("総読込時間: {0}", span.ToString()); if (TJAPlayer3.ConfigIni.FastRender) { var fastRender = new FastRender(); fastRender.Render(); fastRender = null; } if (bitmapFilename != null) { bitmapFilename.Dispose(); bitmapFilename = null; } if (graphicsFilename != null) { graphicsFilename.Dispose(); graphicsFilename = null; } if (ftFilename != null) { ftFilename.Dispose(); ftFilename = null; } TJAPlayer3.Timer.t更新(); //CSound管理.rc演奏用タイマ.t更新(); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ: { long nCurrentTime = TJAPlayer3.Timer.n現在時刻; if (nCurrentTime < this.nBGM再生開始時刻) { this.nBGM再生開始時刻 = nCurrentTime; } // if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) ) if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間 { if (!TJAPlayer3.DTXVmode.Enabled) { } base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.共通_フェードアウト: if (this.ct待機.b終了値に達してない) // DTXVモード時は、フェードアウト省略 { return((int)E曲読込画面の戻り値.継続); } if (txFilename != null) { txFilename.Dispose(); } if (this.sd読み込み音 != null) { this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込完了); } return((int)E曲読込画面の戻り値.継続); }
// CStage 実装 public override void On活性化() { Trace.TraceInformation("結果ステージを活性化します。"); Trace.Indent(); try { { #region [ 初期化 ] //--------------------- this.eフェードアウト完了時の戻り値 = E戻り値.継続; this.bアニメが完了 = false; this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false; // #24609 2011.3.14 yyagi this.n最後に再生したHHのWAV番号 = -1; this.n最後に再生したHHのチャンネル番号 = 0; for (int i = 0; i < 3; i++) { this.b新記録スキル[i] = false; this.b新記録スコア[i] = false; this.b新記録ランク[i] = false; } //--------------------- #endregion #region [ 結果の計算 ] //--------------------- for (int i = 0; i < 3; i++) { this.nランク値[i] = -1; this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f; // #28500 2011.5.24 yyagi if ((((i != 0) || (TJAPlayer3.DTX.bチップがある.Drums)))) { CScoreIni.C演奏記録 part = this.st演奏記録[i]; bool bIsAutoPlay = true; switch (i) { case 0: bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay; break; case 1: bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay; break; case 2: bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay; break; } this.fPerfect率[i] = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数)); this.fGreat率[i] = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数)); this.fGood率[i] = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数)); this.fPoor率[i] = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数)); this.fMiss率[i] = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数)); this.bオート[i] = bIsAutoPlay; // #23596 10.11.16 add ikanick そのパートがオートなら1 // 10.11.17 change (int to bool) ikanick this.nランク値[i] = CScoreIni.tランク値を計算して返す(part); } } this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass); //--------------------- #endregion #region [ .score.ini の作成と出力 ] //--------------------- string str = TJAPlayer3.DTX.strファイル名の絶対パス + ".score.ini"; CScoreIni ini = new CScoreIni(str); bool[] b今までにフルコンボしたことがある = new bool[] { false, false, false }; // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10) b今までにフルコンボしたことがある[0] = ini.stセクション[0].bフルコンボである | ini.stセクション[0].bフルコンボである; // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。 if (this.nランク値[0] >= 0 && ini.stファイル.BestRank[0] > this.nランク値[0]) // #24459 2011.3.1 yyagi update BestRank { this.b新記録ランク[0] = true; ini.stファイル.BestRank[0] = this.nランク値[0]; } // 新記録スコアチェック if ((this.st演奏記録[0].nスコア > ini.stセクション[0].nスコア) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay) { this.b新記録スコア[0] = true; ini.stセクション[0] = this.st演奏記録[0]; } if (TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Tower) { if (this.st演奏記録[0].nスコア > ini.stセクション[0].nスコア) { this.st演奏記録[0].nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度] = (int)st演奏記録[0].nスコア; } } // 新記録スキルチェック if (this.st演奏記録[0].db演奏型スキル値 > ini.stセクション[0].db演奏型スキル値) { this.b新記録スキル[0] = true; ini.stセクション[0] = this.st演奏記録[0]; } if (TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度 != (int)Difficulty.Tower && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay) { if (st演奏記録[0].fゲージ >= 80.0f) { if (st演奏記録[0].nMiss数 == 0 && st演奏記録[0].nPoor数 == 0 && st演奏記録[0].nGreat数 == 0 && st演奏記録[0].fゲージ >= 100.0f) { this.st演奏記録[0].bIsDondaFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = true; this.st演奏記録[0].bIsFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = true; this.st演奏記録[0].bIsClear[TJAPlayer3.stage選曲.n確定された曲の難易度] = true; } else if (st演奏記録[0].nMiss数 == 0 && st演奏記録[0].nPoor数 == 0 && st演奏記録[0].fゲージ >= 100.0f) { this.st演奏記録[0].bIsDondaFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = false; this.st演奏記録[0].bIsFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = true; this.st演奏記録[0].bIsClear[TJAPlayer3.stage選曲.n確定された曲の難易度] = true; } else { this.st演奏記録[0].bIsDondaFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = false; this.st演奏記録[0].bIsFullCombo[TJAPlayer3.stage選曲.n確定された曲の難易度] = false; this.st演奏記録[0].bIsClear[TJAPlayer3.stage選曲.n確定された曲の難易度] = true; } ini.stセクション[0] = this.st演奏記録[0]; } } // ラストプレイ #23595 2011.1.9 ikanick // オートじゃなければプレイ結果を書き込む if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == false) { ini.stセクション[0] = this.st演奏記録[0]; } // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす // 11.02.05 bオート to t更新条件を取得する use ikanick bool[] b更新が必要か否か = new bool[3]; CScoreIni.t更新条件を取得する(out b更新が必要か否か[0], out b更新が必要か否か[1], out b更新が必要か否か[2]); if (b更新が必要か否か[0]) { ini.stファイル.ClearCountDrums++; } //---------------------------------------------------------------------/ if (TJAPlayer3.ConfigIni.bScoreIniを出力する) { ini.t書き出し(str); } //--------------------- #endregion #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi] if (TJAPlayer3.ConfigIni.bScoreIniを出力する) { this.n演奏回数.Drums = ini.stファイル.PlayCountDrums; this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar; this.n演奏回数.Bass = ini.stファイル.PlayCountBass; } #endregion } #region [ 選曲画面の譜面情報の更新 ] //--------------------- if (!TJAPlayer3.bコンパクトモード) { Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア; } //--------------------- #endregion // Discord Presenseの更新 Discord.UpdatePresence(TJAPlayer3.DTX.TITLE + ".tja", Properties.Discord.Stage_Result + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == true ? " (" + Properties.Discord.Info_IsAuto + ")" : ""), TJAPlayer3.StartupTime); base.On活性化(); } finally { Trace.TraceInformation("結果ステージの活性化を完了しました。"); Trace.Unindent(); } }
// CStage 実装 public override void On活性化() { Trace.TraceInformation("結果ステージを活性化します。"); Trace.Indent(); var random = rng.Next(1, 99); if (random <= 24) { this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM.ogg", false, false, ESoundGroup.SongPlayback); } else if (random <= 50 && random >= 25) { this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM_1.ogg", false, false, ESoundGroup.SongPlayback); } else if (random <= 75 && random >= 51) { this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM_2.ogg", false, false, ESoundGroup.SongPlayback); } else if (random <= 99 && random >= 76) { this.bgm結果画面 = new CSkin.Cシステムサウンド(@"Sounds\Result BGM_3.ogg", false, false, ESoundGroup.SongPlayback); } try { #region [ 初期化 ] //--------------------- this.eフェードアウト完了時の戻り値 = E戻り値.継続; this.bアニメが完了 = false; this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false; // #24609 2011.3.14 yyagi this.b新記録スキル = false; this.b新記録ランク = false; //--------------------- #endregion #region [ 結果の計算 ] //--------------------- for (int i = 0; i < 1; i++) { this.nランク値 = -1; this.fPerfect率 = this.fGreat率 = this.fGood率 = this.fPoor率 = this.fMiss率 = 0.0f; // #28500 2011.5.24 yyagi if ((((i != 0) || (TJAPlayer3.DTX[0].bチップがある.Drums)))) { CScoreIni.C演奏記録 part = this.st演奏記録[0]; bool bIsAutoPlay = true; bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0]; this.fPerfect率 = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数)); this.fGreat率 = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数)); this.fGood率 = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数)); this.fPoor率 = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数)); this.fMiss率 = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数)); this.nランク値 = CScoreIni.tランク値を計算して返す(part); } } this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録[0]); //--------------------- #endregion #region [ .score.ini の作成と出力 ] //--------------------- string str = TJAPlayer3.DTX[0].strファイル名の絶対パス + ".score.ini"; CScoreIni ini = new CScoreIni(str); bool b今までにフルコンボしたことがある = false; for (int i = 0; i < 1; i++) { // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10) b今までにフルコンボしたことがある = ini.stセクション.HiScoreDrums.bフルコンボである | ini.stセクション.HiSkillDrums.bフルコンボである; // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。 if (this.nランク値 >= 0 && ini.stファイル.BestRank > this.nランク値) // #24459 2011.3.1 yyagi update BestRank { this.b新記録ランク = true; ini.stファイル.BestRank = this.nランク値; } // 新記録スコアチェック if ((this.st演奏記録[0].nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] > ini.stセクション.HiScoreDrums.nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]]) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0]) //2020.04.18 Mr-Ojii それぞれの難易度のハイスコアでハイスコアを変更するように修正 { ini.stセクション.HiScoreDrums = this.st演奏記録[0]; } // 新記録スキルチェック if (this.st演奏記録[0].db演奏型スキル値 > ini.stセクション.HiSkillDrums.db演奏型スキル値) { this.b新記録スキル = true; ini.stセクション.HiSkillDrums = this.st演奏記録[0]; } // ラストプレイ #23595 2011.1.9 ikanick // オートじゃなければプレイ結果を書き込む if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == false) { ini.stセクション.LastPlayDrums = this.st演奏記録[0]; } // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす // 11.02.05 bオート to t更新条件を取得する use ikanick bool b更新が必要か否か = false; CScoreIni.t更新条件を取得する(out b更新が必要か否か); if (b更新が必要か否か) { switch (i) { case 0: ini.stファイル.ClearCountDrums++; break; default: throw new Exception("クリア回数増加のk(0)が範囲外です。"); } } //---------------------------------------------------------------------/ } if (TJAPlayer3.ConfigIni.bScoreIniを出力する) { ini.t書き出し(str); } //--------------------- #endregion #region [ 選曲画面の譜面情報の更新 ] //--------------------- { Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア; bool b更新が必要か否か = false; CScoreIni.t更新条件を取得する(out b更新が必要か否か); for (int m = 0; m < 1; m++) { if (b更新が必要か否か) { // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。 // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11) cスコア.譜面情報.フルコンボ = this.st演奏記録[0].bフルコンボである | b今までにフルコンボしたことがある; if (this.b新記録スキル) { cスコア.譜面情報.最大スキル = this.st演奏記録[0].db演奏型スキル値; } if (this.b新記録ランク) { cスコア.譜面情報.最大ランク = this.nランク値; } cスコア.譜面情報.n王冠 = st演奏記録[0].n王冠; //2020.05.22 Mr-Ojii データが保存されない問題の解決策。 cスコア.譜面情報.nハイスコア = st演奏記録[0].nハイスコア; } } TJAPlayer3.stage選曲.r確定されたスコア = cスコア; } //--------------------- #endregion // Discord Presenseの更新 Discord.UpdatePresence(TJAPlayer3.DTX[0].TITLE + TJAPlayer3.DTX[0].EXTENSION, Properties.Discord.Stage_Result + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == true ? " (" + Properties.Discord.Info_IsAuto + ")" : ""), TJAPlayer3.StartupTime); base.On活性化(); } finally { Trace.TraceInformation("結果ステージの活性化を完了しました。"); Trace.Unindent(); } }
// CStage 実装 public override void On活性化() { Trace.TraceInformation("結果ステージを活性化します。"); Trace.Indent(); try { #region [ 初期化 ] //--------------------- this.eフェードアウト完了時の戻り値 = E戻り値.継続; this.bアニメが完了 = false; this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false; // #24609 2011.3.14 yyagi this.n最後に再生したHHのWAV番号 = -1; this.n最後に再生したHHのチャンネル番号 = 0; for (int i = 0; i < 3; i++) { this.b新記録スキル[i] = false; this.b新記録スコア[i] = false; this.b新記録ランク[i] = false; } //--------------------- #endregion #region [ 結果の計算 ] //--------------------- for (int i = 0; i < 3; i++) { this.nランク値[i] = -1; this.fPerfect率[i] = this.fGreat率[i] = this.fGood率[i] = this.fPoor率[i] = this.fMiss率[i] = 0.0f; // #28500 2011.5.24 yyagi if ((((i != 0) || (TJAPlayer3.DTX.bチップがある.Drums)))) { CScoreIni.C演奏記録 part = this.st演奏記録[i]; bool bIsAutoPlay = true; switch (i) { case 0: bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay; break; case 1: bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay; break; case 2: bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay; break; } this.fPerfect率[i] = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数)); this.fGreat率[i] = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数)); this.fGood率[i] = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数)); this.fPoor率[i] = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数)); this.fMiss率[i] = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数)); this.bオート[i] = bIsAutoPlay; // #23596 10.11.16 add ikanick そのパートがオートなら1 // 10.11.17 change (int to bool) ikanick this.nランク値[i] = CScoreIni.tランク値を計算して返す(part); } } this.n総合ランク値 = CScoreIni.t総合ランク値を計算して返す(this.st演奏記録.Drums, this.st演奏記録.Guitar, this.st演奏記録.Bass); //--------------------- #endregion #region [ .score.ini の作成と出力 ] //--------------------- string str = TJAPlayer3.DTX.strファイル名の絶対パス + ".score.ini"; CScoreIni ini = new CScoreIni(str); bool[] b今までにフルコンボしたことがある = new bool[] { false, false, false }; for (int i = 0; i < 3; i++) { // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10) b今までにフルコンボしたことがある[i] = ini.stセクション[i * 2].bフルコンボである | ini.stセクション[i * 2 + 1].bフルコンボである; #region [deleted by #24459] // if( this.nランク値[ i ] <= CScoreIni.tランク値を計算して返す( ini.stセクション[ ( i * 2 ) + 1 ] ) ) // { // this.b新記録ランク[ i ] = true; // } #endregion // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。 if (this.nランク値[i] >= 0 && ini.stファイル.BestRank[i] > this.nランク値[i]) // #24459 2011.3.1 yyagi update BestRank { this.b新記録ランク[i] = true; ini.stファイル.BestRank[i] = this.nランク値[i]; } // 新記録スコアチェック if ((this.st演奏記録[i].nスコア > ini.stセクション[i * 2].nスコア) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay) { this.b新記録スコア[i] = true; ini.stセクション[i * 2] = this.st演奏記録[i]; } // 新記録スキルチェック if (this.st演奏記録[i].db演奏型スキル値 > ini.stセクション[(i * 2) + 1].db演奏型スキル値) { this.b新記録スキル[i] = true; ini.stセクション[(i * 2) + 1] = this.st演奏記録[i]; } // ラストプレイ #23595 2011.1.9 ikanick // オートじゃなければプレイ結果を書き込む if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == false) { ini.stセクション[i + 6] = this.st演奏記録[i]; } // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす // 11.02.05 bオート to t更新条件を取得する use ikanick bool[] b更新が必要か否か = new bool[3]; CScoreIni.t更新条件を取得する(out b更新が必要か否か[0], out b更新が必要か否か[1], out b更新が必要か否か[2]); if (b更新が必要か否か[i]) { switch (i) { case 0: ini.stファイル.ClearCountDrums++; break; case 1: ini.stファイル.ClearCountGuitar++; break; case 2: ini.stファイル.ClearCountBass++; break; default: throw new Exception("クリア回数増加のk(0-2)が範囲外です。"); } } //---------------------------------------------------------------------/ } if (TJAPlayer3.ConfigIni.bScoreIniを出力する) { ini.t書き出し(str); } //--------------------- #endregion #region [ リザルト画面への演奏回数の更新 #24281 2011.1.30 yyagi] if (TJAPlayer3.ConfigIni.bScoreIniを出力する) { this.n演奏回数.Drums = ini.stファイル.PlayCountDrums; this.n演奏回数.Guitar = ini.stファイル.PlayCountGuitar; this.n演奏回数.Bass = ini.stファイル.PlayCountBass; } #endregion #region [ 選曲画面の譜面情報の更新 ] //--------------------- if (!TJAPlayer3.bコンパクトモード) { Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア; bool[] b更新が必要か否か = new bool[3]; CScoreIni.t更新条件を取得する(out b更新が必要か否か[0], out b更新が必要か否か[1], out b更新が必要か否か[2]); for (int m = 0; m < 3; m++) { if (b更新が必要か否か[m]) { // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。 // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11) cスコア.譜面情報.フルコンボ[m] = this.st演奏記録[m].bフルコンボである | b今までにフルコンボしたことがある[m]; if (this.b新記録スキル[m]) { cスコア.譜面情報.最大スキル[m] = this.st演奏記録[m].db演奏型スキル値; } if (this.b新記録ランク[m]) { cスコア.譜面情報.最大ランク[m] = this.nランク値[m]; } cスコア.譜面情報.n王冠 = st演奏記録[0].n王冠; } } } //--------------------- #endregion // Discord Presenseの更新 Discord.UpdatePresence(TJAPlayer3.DTX.TITLE + ".tja", Properties.Discord.Stage_Result + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay == true ? " (" + Properties.Discord.Info_IsAuto + ")" : ""), TJAPlayer3.StartupTime); base.On活性化(); } finally { Trace.TraceInformation("結果ステージの活性化を完了しました。"); Trace.Unindent(); } this.ctどんちゃん連番アニメーション = new CCounter(0, 60, 20, TJAPlayer3.Timer); }
// CStage 実装 public override void On活性化() { Trace.TraceInformation("結果ステージを活性化します。"); Trace.Indent(); try { #region [ 初期化 ] //--------------------- this.eフェードアウト完了時の戻り値 = E戻り値.継続; this.bアニメが完了 = false; this.bIsCheckedWhetherResultScreenShouldSaveOrNot = false; // #24609 2011.3.14 yyagi this.b新記録ランク = false; //--------------------- #endregion #region [ 結果の計算 ] //--------------------- for (int i = 0; i < 1; i++) { this.nランク値 = -1; this.fPerfect率 = this.fGreat率 = this.fGood率 = this.fPoor率 = this.fMiss率 = 0.0f; // #28500 2011.5.24 yyagi if ((i != 0)) { CScoreIni.C演奏記録 part = this.st演奏記録[0]; bool bIsAutoPlay = TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0]; this.fPerfect率 = bIsAutoPlay ? 0f : ((100f * part.nPerfect数) / ((float)part.n全チップ数)); this.fGreat率 = bIsAutoPlay ? 0f : ((100f * part.nGreat数) / ((float)part.n全チップ数)); this.fGood率 = bIsAutoPlay ? 0f : ((100f * part.nGood数) / ((float)part.n全チップ数)); this.fPoor率 = bIsAutoPlay ? 0f : ((100f * part.nPoor数) / ((float)part.n全チップ数)); this.fMiss率 = bIsAutoPlay ? 0f : ((100f * part.nMiss数) / ((float)part.n全チップ数)); this.nランク値 = CScoreIni.tランク値を計算して返す(part); } } //--------------------- #endregion #region [ .score.ini の作成と出力 ] //--------------------- string str = TJAPlayer3.DTX[0].strファイル名の絶対パス + ".score.ini"; CScoreIni ini = new CScoreIni(str); bool b今までにフルコンボしたことがある = false; for (int i = 0; i < 1; i++) { // フルコンボチェックならびに新記録ランクチェックは、ini.Record[] が、スコアチェックや演奏型スキルチェックの IF 内で書き直されてしまうよりも前に行う。(2010.9.10) b今までにフルコンボしたことがある = ini.stセクション.HiScore.bフルコンボである; // #24459 上記の条件だと[HiSkill.***]でのランクしかチェックしていないので、BestRankと比較するよう変更。 if (this.nランク値 >= 0 && ini.stファイル.BestRank > this.nランク値) // #24459 2011.3.1 yyagi update BestRank { this.b新記録ランク = true; ini.stファイル.BestRank = this.nランク値; } if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == false && this.st演奏記録[0].b途中でAutoを切り替えたか == false) { ini.stセクション.HiScore = this.st演奏記録[0]; } // ラストプレイ #23595 2011.1.9 ikanick // オートじゃなければプレイ結果を書き込む if (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == false) { ini.stセクション.LastPlay = this.st演奏記録[0]; } // #23596 10.11.16 add ikanick オートじゃないならクリア回数を1増やす // 11.02.05 bオート to t更新条件を取得する use ikanick CScoreIni.t更新条件を取得する(out bool b更新が必要か否か); if (b更新が必要か否か) { ini.stファイル.ClearCountDrums++; } //---------------------------------------------------------------------/ } if (TJAPlayer3.ConfigIni.bScoreIniを出力する) { ini.t書き出し(str); } //--------------------- #endregion #region [ 選曲画面の譜面情報の更新 ] //--------------------- { Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア; CScoreIni.t更新条件を取得する(out bool b更新が必要か否か); if (b更新が必要か否か) { // FullCombo した記録を FullCombo なしで超えた場合、FullCombo マークが消えてしまう。 // → FullCombo は、最新記録と関係なく、一度達成したらずっとつくようにする。(2010.9.11) cスコア.譜面情報.フルコンボ = this.st演奏記録[0].bフルコンボである | b今までにフルコンボしたことがある; cスコア.譜面情報.最大ランク = this.nランク値; cスコア.譜面情報.最大スキル = this.st演奏記録[0].db演奏型スキル値; cスコア.譜面情報.n王冠 = st演奏記録[0].n王冠; //2020.05.22 Mr-Ojii データが保存されない問題の解決策。 cスコア.譜面情報.nハイスコア = st演奏記録[0].nハイスコア; cスコア.譜面情報.nSecondScore = st演奏記録[0].nSecondScore; cスコア.譜面情報.nThirdScore = st演奏記録[0].nThirdScore; cスコア.譜面情報.strHiScorerName = st演奏記録[0].strHiScorerName; cスコア.譜面情報.strSecondScorerName = st演奏記録[0].strSecondScorerName; cスコア.譜面情報.strThirdScorerName = st演奏記録[0].strThirdScorerName; } TJAPlayer3.stage選曲.r確定されたスコア = cスコア; } //--------------------- #endregion // Discord Presenseの更新 Discord.UpdatePresence(TJAPlayer3.DTX[0].TITLE + TJAPlayer3.DTX[0].EXTENSION, "Result" + (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0] == true ? " (Auto)" : ""), TJAPlayer3.StartupTime); base.On活性化(); } finally { Trace.TraceInformation("結果ステージの活性化を完了しました。"); Trace.Unindent(); } }
//----------------- #endregion #region [ .score.ini を読み込んで Cスコア.譜面情報に設定する ] //----------------- public void tScoreIniを読み込んで譜面情報を設定する(string strScoreIniファイルパス, Cスコア score) { if (!File.Exists(strScoreIniファイルパス)) { return; } try { var ini = new CScoreIni(strScoreIniファイルパス); for (int n楽器番号 = 0; n楽器番号 < 1; n楽器番号++) { #region socre.譜面情報.最大ランク.Drums = ... //----------------- if (ini.stセクション.HiScore.b演奏にMIDIInputを使用した || ini.stセクション.HiScore.b演奏にKeyBoardを使用した || ini.stセクション.HiScore.b演奏にJoypadを使用した || ini.stセクション.HiScore.b演奏にMouseを使用した) { // (A) 全オートじゃないようなので、演奏結果情報を有効としてランクを算出する。 score.譜面情報.最大ランク = CScoreIni.tランク値を計算して返す( ini.stセクション.HiScore.n全チップ数, ini.stセクション.HiScore.nPerfect数, ini.stセクション.HiScore.nGreat数, ini.stセクション.HiScore.nGood数, ini.stセクション.HiScore.nPoor数, ini.stセクション.HiScore.nMiss数); } else { // (B) 全オートらしいので、ランクは無効とする。 score.譜面情報.最大ランク = (int)CScoreIni.ERANK.UNKNOWN; } //----------------- #endregion score.譜面情報.最大スキル = ini.stセクション.HiScore.db演奏型スキル値; score.譜面情報.フルコンボ = ini.stセクション.HiScore.bフルコンボである; for (int i = 0; i < (int)Difficulty.Total; i++) { score.譜面情報.nハイスコア[i] = (int)ini.stセクション.HiScore.nハイスコア[i]; score.譜面情報.nSecondScore[i] = (int)ini.stセクション.HiScore.nSecondScore[i]; score.譜面情報.nThirdScore[i] = (int)ini.stセクション.HiScore.nThirdScore[i]; score.譜面情報.strHiScorerName[i] = ini.stセクション.HiScore.strHiScorerName[i]; score.譜面情報.strSecondScorerName[i] = ini.stセクション.HiScore.strSecondScorerName[i]; score.譜面情報.strThirdScorerName[i] = ini.stセクション.HiScore.strThirdScorerName[i]; score.譜面情報.n王冠[i] = (int)ini.stセクション.HiScore.n王冠[i]; } } score.譜面情報.演奏回数 = ini.stファイル.PlayCountDrums; //for( int i = 0; i < (int)Difficulty.Total; i++ ) // score.譜面情報.演奏履歴[ i ] = ini.stファイル.History[ i ];//2020.04.18 Mr-Ojii ここで例外処理起こすしなぜこのコードが必要かがわからなかったので、コメントアウト化 } catch (Exception e) { Trace.TraceError("演奏記録ファイルの読み込みに失敗しました。[{0}]", strScoreIniファイルパス); Trace.TraceError(e.ToString()); Trace.TraceError("An exception has occurred, but processing continues. (801f823d-a952-4809-a1bb-cf6a56194f5c)"); } }
public override int On進行描画() { if (base.b活性化してない) { return(0); } #region [ 初めての進行描画 ] //----------------------------- if (base.b初めての進行描画) { if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { if (this.sd読み込み音 != null) { if (TJAPlayer3.Skin.sound曲読込開始音.b排他 && (CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド != null)) { CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド.t停止する(); } this.sd読み込み音.t再生を開始する(); this.nBGM再生開始時刻 = CSoundManager.rc演奏用タイマ.n現在時刻ms; this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms; } else { TJAPlayer3.Skin.sound曲読込開始音.t再生する(); this.nBGM再生開始時刻 = CSoundManager.rc演奏用タイマ.n現在時刻ms; this.nBGMの総再生時間ms = TJAPlayer3.Skin.sound曲読込開始音.n長さ_現在のサウンド; } } //this.actFI.tFadeIn開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のFadeInの省略 base.eフェーズID = CStage.Eフェーズ.共通_FadeIn; base.b初めての進行描画 = false; nWAVcount = 1; } //----------------------------- #endregion this.ct待機.t進行(); #region [ ESC押下時は選曲画面に戻る ] if (tキー入力()) { if (this.sd読み込み音 != null) { this.sd読み込み音.tサウンドを停止する(); this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込中止); } #endregion #region [ 背景、音符+タイトル表示 ] //----------------------------- this.ct曲名表示.t進行(); if (TJAPlayer3.ConfigIni.bEnableSkinV2) { if (TJAPlayer3.Tx.SongLoading_v2_BG != null) { TJAPlayer3.Tx.SongLoading_v2_BG.t2D描画(TJAPlayer3.app.Device, 0, 0); } } else { if (TJAPlayer3.Tx.SongLoading_BG != null) { TJAPlayer3.Tx.SongLoading_BG.t2D描画(TJAPlayer3.app.Device, CTexture.RefPnt.Center, GameWindowSize.Width / 2, GameWindowSize.Height / 2); } } if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { if (TJAPlayer3.ConfigIni.bEnableSkinV2) { if (TJAPlayer3.Tx.SongLoading_v2_Plate != null) { TJAPlayer3.Tx.SongLoading_v2_Plate.eBlendMode = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend ? CTexture.EBlendMode.Screen : CTexture.EBlendMode.Normal; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_v2_Plate.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_v2_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { TJAPlayer3.Tx.SongLoading_v2_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_Plate_X, TJAPlayer3.Skin.SongLoading_v2_Plate_Y - (TJAPlayer3.Tx.SongLoading_v2_Plate.szTextureSize.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right) { TJAPlayer3.Tx.SongLoading_v2_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_Plate_X - TJAPlayer3.Tx.SongLoading_v2_Plate.szTextureSize.Width, TJAPlayer3.Skin.SongLoading_v2_Plate_Y - (TJAPlayer3.Tx.SongLoading_v2_Plate.szTextureSize.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_v2_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_Plate_X - (TJAPlayer3.Tx.SongLoading_v2_Plate.szTextureSize.Width / 2), TJAPlayer3.Skin.SongLoading_v2_Plate_Y - (TJAPlayer3.Tx.SongLoading_v2_Plate.szTextureSize.Height / 2)); } } if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strSubTitle) ? 15 : 0; this.txタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_v2_Title_ReferencePoint == CSkin.ReferencePoint.Left) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_Title_X, TJAPlayer3.Skin.SongLoading_v2_Title_Y - (this.txタイトル.szTextureSize.Height / 2) + nサブタイトル補正); } else if (TJAPlayer3.Skin.SongLoading_v2_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_Title_X - (this.txタイトル.szTextureSize.Width * txタイトル.vcScaling.X), TJAPlayer3.Skin.SongLoading_v2_Title_Y - (this.txタイトル.szTextureSize.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_v2_Title_X - ((this.txタイトル.szTextureSize.Width * txタイトル.vcScaling.X) / 2)), TJAPlayer3.Skin.SongLoading_v2_Title_Y - (this.txタイトル.szTextureSize.Height / 2) + nサブタイトル補正); } } if (this.txサブタイトル != null) { this.txサブタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_v2_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_SubTitle_X, TJAPlayer3.Skin.SongLoading_v2_SubTitle_Y - (this.txサブタイトル.szTextureSize.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_v2_SubTitle_ReferencePoint == CSkin.ReferencePoint.Right) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_SubTitle_X - (this.txサブタイトル.szTextureSize.Width * txタイトル.vcScaling.X), TJAPlayer3.Skin.SongLoading_v2_SubTitle_Y - (this.txサブタイトル.szTextureSize.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_v2_SubTitle_X - ((this.txサブタイトル.szTextureSize.Width * txサブタイトル.vcScaling.X) / 2)), TJAPlayer3.Skin.SongLoading_v2_SubTitle_Y - (this.txサブタイトル.szTextureSize.Height / 2)); } } } else { if (TJAPlayer3.Tx.SongLoading_Plate != null) { TJAPlayer3.Tx.SongLoading_Plate.eBlendMode = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend ? CTexture.EBlendMode.Screen : CTexture.EBlendMode.Normal; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_Plate.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.szTextureSize.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - TJAPlayer3.Tx.SongLoading_Plate.szTextureSize.Width, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.szTextureSize.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - (TJAPlayer3.Tx.SongLoading_Plate.szTextureSize.Width / 2), TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.szTextureSize.Height / 2)); } } if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strSubTitle) ? 15 : 0; this.txタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Left) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X, TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.szTextureSize.Height / 2) + nサブタイトル補正); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X - (this.txタイトル.szTextureSize.Width * txタイトル.vcScaling.X), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.szTextureSize.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_Title_X - ((this.txタイトル.szTextureSize.Width * txタイトル.vcScaling.X) / 2)), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.szTextureSize.Height / 2) + nサブタイトル補正); } } if (this.txサブタイトル != null) { this.txサブタイトル.Opacity = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X, TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.szTextureSize.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Right) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X - (this.txサブタイトル.szTextureSize.Width * txタイトル.vcScaling.X), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.szTextureSize.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_SubTitle_X - ((this.txサブタイトル.szTextureSize.Width * txサブタイトル.vcScaling.X) / 2)), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.szTextureSize.Height / 2)); } } } } //----------------------------- #endregion switch (base.eフェーズID) { case CStage.Eフェーズ.共通_FadeIn: //if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のFadeInの省略 // 必ず一度「CStaeg.Eフェーズ.共通_FadeIn」フェーズを経由させること。 // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。 base.eフェーズID = CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む; return((int)E曲読込画面の戻り値.継続); case CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む: { timeBeginLoad = DateTime.Now; string str = TJAPlayer3.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス; CScoreIni ini = new CScoreIni(str + ".score.ini"); if ((TJAPlayer3.DTX[0] != null) && TJAPlayer3.DTX[0].b活性化してる) { TJAPlayer3.DTX[0].On非活性化(); } //if( CDTXMania.DTX == null ) { TJAPlayer3.DTX[0] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 0, TJAPlayer3.ConfigIni.nPlayerCount >= 2 && TJAPlayer3.stage選曲.n確定された曲の難易度[0] == TJAPlayer3.stage選曲.n確定された曲の難易度[1]); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX[1] = new CDTX(str, false, 1.0, ini.stファイル.BGMAdjust, 1, TJAPlayer3.ConfigIni.nPlayerCount >= 2 && TJAPlayer3.stage選曲.n確定された曲の難易度[0] == TJAPlayer3.stage選曲.n確定された曲の難易度[1]); } Trace.TraceInformation("----曲情報-----------------"); Trace.TraceInformation("TITLE: {0}", TJAPlayer3.DTX[0].TITLE); Trace.TraceInformation("FILE: {0}", TJAPlayer3.DTX[0].strファイル名の絶対パス); Trace.TraceInformation("---------------------------"); TimeSpan span = (TimeSpan)(DateTime.Now - timeBeginLoad); Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); // 段位認定モード用。 if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan && TJAPlayer3.DTX[0].List_DanSongs != null) { for (int i = 0; i < TJAPlayer3.DTX[0].List_DanSongs.Count; i++) { if (!string.IsNullOrEmpty(TJAPlayer3.DTX[0].List_DanSongs[i].Title)) { using (CPrivateFastFont pfTitle = new CPrivateFastFont(TJAPlayer3.ConfigIni.FontName, 32)) { using (var bmpSongTitle = pfTitle.DrawPrivateFont(TJAPlayer3.DTX[0].List_DanSongs[i].Title, TJAPlayer3.Skin.Game_DanC_Title_ForeColor, TJAPlayer3.Skin.Game_DanC_Title_BackColor, TJAPlayer3.Skin.Font_Edge_Ratio)) { TJAPlayer3.DTX[0].List_DanSongs[i].TitleTex = TJAPlayer3.tCreateTexture(bmpSongTitle); TJAPlayer3.DTX[0].List_DanSongs[i].TitleTex.vcScaling.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX[0].List_DanSongs[i].TitleTex, 710); } } } if (!string.IsNullOrEmpty(TJAPlayer3.DTX[0].List_DanSongs[i].SubTitle)) { using (CPrivateFastFont pfSubTitle = new CPrivateFastFont(TJAPlayer3.ConfigIni.FontName, 19)) { using (var bmpSongSubTitle = pfSubTitle.DrawPrivateFont(TJAPlayer3.DTX[0].List_DanSongs[i].SubTitle, TJAPlayer3.Skin.Game_DanC_SubTitle_ForeColor, TJAPlayer3.Skin.Game_DanC_SubTitle_BackColor, TJAPlayer3.Skin.Font_Edge_Ratio)) { TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex = TJAPlayer3.tCreateTexture(bmpSongSubTitle); TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex.vcScaling.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex, 710); } } } } } } base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAV読み込み待機; timeBeginLoadWAV = DateTime.Now; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAV読み込み待機: { if (this.ct待機.n現在の値 > 260) { base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む: { int looptime = (TJAPlayer3.ConfigIni.b垂直帰線待ちを行う)? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする for (int i = 0; i < looptime && nWAVcount <= TJAPlayer3.DTX[0].listWAV.Count; i++) { if (TJAPlayer3.DTX[0].listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi { TJAPlayer3.DTX[0].tWAVの読み込み(TJAPlayer3.DTX[0].listWAV[nWAVcount]); } nWAVcount++; } if (nWAVcount > TJAPlayer3.DTX[0].listWAV.Count) { TimeSpan span = ( TimeSpan )(DateTime.Now - timeBeginLoadWAV); Trace.TraceInformation("WAV読込所要時間({0,4}): {1}", TJAPlayer3.DTX[0].listWAV.Count, span.ToString()); timeBeginLoadWAV = DateTime.Now; if (TJAPlayer3.ConfigIni.bDynamicBassMixerManagement) { TJAPlayer3.DTX[0].PlanToAddMixerChannel(); } for (int nPlayer = 0; nPlayer < TJAPlayer3.ConfigIni.nPlayerCount; nPlayer++) { TJAPlayer3.DTX[nPlayer].t太鼓チップのランダム化(TJAPlayer3.ConfigIni.eRandom[nPlayer]); } TJAPlayer3.stage演奏ドラム画面.On活性化(); span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む: { TimeSpan span; DateTime timeBeginLoadBMPAVI = DateTime.Now; if (TJAPlayer3.ConfigIni.bAVI有効) { TJAPlayer3.DTX[0].tAVIの読み込み(); } span = ( TimeSpan )(DateTime.Now - timeBeginLoadBMPAVI); span = ( TimeSpan )(DateTime.Now - timeBeginLoad); Trace.TraceInformation("総読込時間: {0}", span.ToString()); if (TJAPlayer3.ConfigIni.FastRender) { FastRender.Render(); //staticに変更 インスタンス作成不要 } TJAPlayer3.Timer.t更新(); //CSoundManager.rc演奏用タイマ.t更新(); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ: { long nCurrentTime = TJAPlayer3.Timer.n現在時刻ms; if (nCurrentTime < this.nBGM再生開始時刻) { this.nBGM再生開始時刻 = nCurrentTime; } // if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) ) if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == FadeIn分の時間 { base.eフェーズID = CStage.Eフェーズ.共通_FadeOut; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.共通_FadeOut: if (this.ct待機.b終了値に達してない) { return((int)E曲読込画面の戻り値.継続); } if (this.sd読み込み音 != null) { this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込完了); } return((int)E曲読込画面の戻り値.継続); }
public override int On進行描画() { string str; if (base.b活性化してない) { return(0); } #region [ 初めての進行描画 ] //----------------------------- if (base.b初めての進行描画) { Cスコア cスコア1 = TJAPlayer3.stage選曲.r確定されたスコア; if (this.sd読み込み音 != null) { if (TJAPlayer3.Skin.sound曲読込開始音.b排他 && (CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド != null)) { CSkin.Cシステムサウンド.r最後に再生した排他システムサウンド.t停止する(); } this.sd読み込み音.t再生を開始する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms; } else { TJAPlayer3.Skin.sound曲読込開始音.t再生する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻; this.nBGMの総再生時間ms = TJAPlayer3.Skin.sound曲読込開始音.n長さ_現在のサウンド; } //this.actFI.tフェードイン開始(); // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン; base.b初めての進行描画 = false; nWAVcount = 1; bitmapFilename = new Bitmap(640, 24); graphicsFilename = Graphics.FromImage(bitmapFilename); graphicsFilename.TextRenderingHint = TextRenderingHint.AntiAlias; //ftFilename = new Font("MS UI Gothic", 24f, FontStyle.Bold, GraphicsUnit.Pixel ); } //----------------------------- #endregion this.ct待機.t進行(); #region [ ESC押下時は選曲画面に戻る ] if (tキー入力()) { if (this.sd読み込み音 != null) { this.sd読み込み音.tサウンドを停止する(); this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込中止); } #endregion #region [ 背景、音符+タイトル表示 ] //----------------------------- if (TJAPlayer3.stage選曲.n現在選択中の曲の難易度 == (int)Difficulty.Dan) { if (this.tx段位背景 != null) { this.tx段位背景.t2D描画(TJAPlayer3.app.Device, 0, 0); } } if (TJAPlayer3.stage選曲.n現在選択中の曲の難易度 != (int)Difficulty.Dan) { this.ct曲名表示.t進行(); if (this.tx背景 != null) { this.tx背景.t2D描画(TJAPlayer3.app.Device, 0, 0); } if (TJAPlayer3.Tx.SongLoading_Plate != null) { TJAPlayer3.Tx.SongLoading_Plate.bスクリーン合成 = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_Plate.n透明度 = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Left) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Plate_ReferencePoint == CSkin.ReferencePoint.Right) { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width, TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Plate_X - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Width / 2), TJAPlayer3.Skin.SongLoading_Plate_Y - (TJAPlayer3.Tx.SongLoading_Plate.sz画像サイズ.Height / 2)); } } int y = 720 - 45; if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strサブタイトル) ? 15 : 0; this.txタイトル.n透明度 = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Left) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X, TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_Title_X - (this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_Title_X - ((this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } } if (this.txサブタイトル != null) { this.txサブタイトル.n透明度 = C変換.nParsentTo255((this.ct曲名表示.n現在の値 / 30.0)); if (TJAPlayer3.Skin.SongLoading_SubTitle_ReferencePoint == CSkin.ReferencePoint.Left) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X, TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else if (TJAPlayer3.Skin.SongLoading_Title_ReferencePoint == CSkin.ReferencePoint.Right) { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_SubTitle_X - (this.txサブタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_SubTitle_X - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } } } //----------------------------- #endregion switch (base.eフェーズID) { case CStage.Eフェーズ.共通_フェードイン: //if( this.actFI.On進行描画() != 0 ) // #27787 2012.3.10 yyagi 曲読み込み画面のフェードインの省略 // 必ず一度「CStaeg.Eフェーズ.共通_フェードイン」フェーズを経由させること。 // さもないと、曲読み込みが完了するまで、曲読み込み画面が描画されない。 base.eフェーズID = CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む; return((int)E曲読込画面の戻り値.継続); case CStage.Eフェーズ.NOWLOADING_DTXファイルを読み込む: { timeBeginLoad = DateTime.Now; TimeSpan span; str = null; if (!TJAPlayer3.bコンパクトモード) { str = TJAPlayer3.stage選曲.r確定されたスコア.ファイル情報.ファイルの絶対パス; } else { str = TJAPlayer3.strコンパクトモードファイル; } CScoreIni ini = new CScoreIni(str + ".score.ini"); ini.t全演奏記録セクションの整合性をチェックし不整合があればリセットする(); if ((TJAPlayer3.DTX != null) && TJAPlayer3.DTX.b活性化してる) { TJAPlayer3.DTX.On非活性化(); } //if( CDTXMania.DTX == null ) { TJAPlayer3.DTX = new CDTX(str, false, ((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0, ini.stファイル.BGMAdjust, 0, 0, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX_2P = new CDTX(str, false, ((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0, ini.stファイル.BGMAdjust, 0, 1, true); } if (File.Exists(TJAPlayer3.DTX.strフォルダ名 + @"\\set.def")) { TJAPlayer3.DTX = new CDTX(str, false, ((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0, ini.stファイル.BGMAdjust, 0, 1, true); if (TJAPlayer3.ConfigIni.nPlayerCount == 2) { TJAPlayer3.DTX_2P = new CDTX(str, false, ((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0, ini.stファイル.BGMAdjust, 0, 1, true); } } Trace.TraceInformation("----曲情報-----------------"); Trace.TraceInformation("TITLE: {0}", TJAPlayer3.DTX.TITLE); Trace.TraceInformation("FILE: {0}", TJAPlayer3.DTX.strファイル名の絶対パス); Trace.TraceInformation("---------------------------"); span = (TimeSpan)(DateTime.Now - timeBeginLoad); Trace.TraceInformation("DTX読込所要時間: {0}", span.ToString()); } //2017.01.28 DD Config.iniに反映しないように変更 /* * switch( CDTXMania.DTX.nScoreModeTmp ) * { * case 0: * CDTXMania.ConfigIni.nScoreMode = 0; * break; * case 1: * CDTXMania.ConfigIni.nScoreMode = 1; * break; * case 2: * CDTXMania.ConfigIni.nScoreMode = 2; * break; * case -1: * CDTXMania.ConfigIni.nScoreMode = 1; * break; * } */ base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAV読み込み待機; timeBeginLoadWAV = DateTime.Now; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAV読み込み待機: { if (this.ct待機.n現在の値 > 260) { base.eフェーズID = CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_WAVファイルを読み込む: { if (nWAVcount == 1 && TJAPlayer3.DTX.listWAV.Count > 0) // #28934 2012.7.7 yyagi (added checking Count) { ShowProgressByFilename(TJAPlayer3.DTX.listWAV[nWAVcount].strファイル名); } int looptime = (TJAPlayer3.ConfigIni.b垂直帰線待ちを行う)? 3 : 1; // VSyncWait=ON時は1frame(1/60s)あたり3つ読むようにする for (int i = 0; i < looptime && nWAVcount <= TJAPlayer3.DTX.listWAV.Count; i++) { if (TJAPlayer3.DTX.listWAV[nWAVcount].listこのWAVを使用するチャンネル番号の集合.Count > 0) // #28674 2012.5.8 yyagi { TJAPlayer3.DTX.tWAVの読み込み(TJAPlayer3.DTX.listWAV[nWAVcount]); } nWAVcount++; } if (nWAVcount <= TJAPlayer3.DTX.listWAV.Count) { ShowProgressByFilename(TJAPlayer3.DTX.listWAV[nWAVcount].strファイル名); } if (nWAVcount > TJAPlayer3.DTX.listWAV.Count) { TimeSpan span = ( TimeSpan )(DateTime.Now - timeBeginLoadWAV); Trace.TraceInformation("WAV読込所要時間({0,4}): {1}", TJAPlayer3.DTX.listWAV.Count, span.ToString()); timeBeginLoadWAV = DateTime.Now; if (TJAPlayer3.ConfigIni.bDynamicBassMixerManagement) { TJAPlayer3.DTX.PlanToAddMixerChannel(); } TJAPlayer3.DTX.t太鼓チップのランダム化(TJAPlayer3.ConfigIni.eRandom.Taiko); TJAPlayer3.stage演奏ドラム画面.On活性化(); span = (TimeSpan)(DateTime.Now - timeBeginLoadWAV); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_BMPファイルを読み込む: { TimeSpan span; DateTime timeBeginLoadBMPAVI = DateTime.Now; if (TJAPlayer3.ConfigIni.bAVI有効) { TJAPlayer3.DTX.tAVIの読み込み(); } span = ( TimeSpan )(DateTime.Now - timeBeginLoadBMPAVI); span = ( TimeSpan )(DateTime.Now - timeBeginLoad); Trace.TraceInformation("総読込時間: {0}", span.ToString()); if (TJAPlayer3.ConfigIni.FastRender) { var fastRender = new FastRender(); fastRender.Render(); fastRender = null; } if (bitmapFilename != null) { bitmapFilename.Dispose(); bitmapFilename = null; } if (graphicsFilename != null) { graphicsFilename.Dispose(); graphicsFilename = null; } if (ftFilename != null) { ftFilename.Dispose(); ftFilename = null; } TJAPlayer3.Timer.t更新(); //CSound管理.rc演奏用タイマ.t更新(); base.eフェーズID = CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ; return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.NOWLOADING_システムサウンドBGMの完了を待つ: { long nCurrentTime = TJAPlayer3.Timer.n現在時刻; if (nCurrentTime < this.nBGM再生開始時刻) { this.nBGM再生開始時刻 = nCurrentTime; } // if ( ( nCurrentTime - this.nBGM再生開始時刻 ) > ( this.nBGMの総再生時間ms - 1000 ) ) if ((nCurrentTime - this.nBGM再生開始時刻) >= (this.nBGMの総再生時間ms)) // #27787 2012.3.10 yyagi 1000ms == フェードイン分の時間 { if (!TJAPlayer3.DTXVmode.Enabled) { } base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト; } return((int)E曲読込画面の戻り値.継続); } case CStage.Eフェーズ.共通_フェードアウト: if (this.ct待機.b終了値に達してない) // DTXVモード時は、フェードアウト省略 { return((int)E曲読込画面の戻り値.継続); } if (txFilename != null) { txFilename.Dispose(); } if (this.sd読み込み音 != null) { this.sd読み込み音.t解放する(); } return((int)E曲読込画面の戻り値.読込完了); } return((int)E曲読込画面の戻り値.継続); }