private static void Main() { mutex二重起動防止用 = new Mutex(false, "DTXManiaMutex"); if (mutex二重起動防止用.WaitOne(0, false)) { string newLine = Environment.NewLine; bool bDLLnotfound = false; Trace.WriteLine("Current Directory: " + Environment.CurrentDirectory); Trace.WriteLine("EXEのあるフォルダ: " + Path.GetDirectoryName(Application.ExecutablePath)); Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; if (!bDLLnotfound) { #if DEBUG && TEST_ENGLISH Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); #endif //DWM.EnableComposition( false ); // Disable AeroGrass temporally // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。 #if !DEBUG try #endif { using (var mania = new TJAPlayer3()) mania.Run(); Trace.WriteLine(""); Trace.WriteLine("遊んでくれてありがとう!"); } #if !DEBUG catch (Exception e) { Trace.WriteLine(""); Trace.Write(e.ToString()); Trace.WriteLine(""); Trace.WriteLine("エラーだゴメン!(涙"); AssemblyName asmApp = Assembly.GetExecutingAssembly().GetName(); MessageBox.Show("エラーが発生しました。\n" + "原因がわからない場合は、以下のエラー文を添えて、エラー送信フォームに送信してください。\n" + e.ToString(), asmApp.Name + " Ver." + asmApp.Version.ToString().Substring(0, asmApp.Version.ToString().Length - 2) + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // #23670 2011.2.28 yyagi to show error dialog DialogResult result = MessageBox.Show("エラー送信フォームを開きますか?(ブラウザが起動します)", asmApp.Name + " Ver." + asmApp.Version.ToString().Substring(0, asmApp.Version.ToString().Length - 2), MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (result == DialogResult.Yes) { Process.Start("https://docs.google.com/forms/d/e/1FAIpQLScr_Oqs9WKnonQyxpEVt7gZYPcjjIfN3SjgqWPvxfw95nAQ6g/viewform?usp=pp_url&entry.60593436=" + System.Web.HttpUtility.UrlEncode(e.ToString())); } } #endif // END #24606 2011.03.08 from // END #23670 2010.11.13 from if (Trace.Listeners.Count > 1) { Trace.Listeners.RemoveAt(1); } } // BEGIN #24615 2011.03.09 from: Mutex.WaitOne() が true を返した場合は、Mutex のリリースが必要である。 mutex二重起動防止用.ReleaseMutex(); mutex二重起動防止用 = null; // END #24615 2011.03.09 from } else // DTXManiaが既に起動中 { Environment.Exit(0); } }
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進行描画() { 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現在時刻ms; this.nBGMの総再生時間ms = this.sd読み込み音.n総演奏時間ms; } else { TJAPlayer3.Skin.sound曲読込開始音.t再生する(); this.nBGM再生開始時刻 = CSound管理.rc演奏用タイマ.n現在時刻ms; 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 (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, 0, 0); } } if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan) { if (TJAPlayer3.ConfigIni.bEnableSkinV2) { if (TJAPlayer3.Tx.SongLoading_v2_Plate != null) { TJAPlayer3.Tx.SongLoading_v2_Plate.bスクリーン合成 = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い 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.sz画像サイズ.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.sz画像サイズ.Width, TJAPlayer3.Skin.SongLoading_v2_Plate_Y - (TJAPlayer3.Tx.SongLoading_v2_Plate.sz画像サイズ.Height / 2)); } else { TJAPlayer3.Tx.SongLoading_v2_Plate.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Skin.SongLoading_v2_Plate_X - (TJAPlayer3.Tx.SongLoading_v2_Plate.sz画像サイズ.Width / 2), TJAPlayer3.Skin.SongLoading_v2_Plate_Y - (TJAPlayer3.Tx.SongLoading_v2_Plate.sz画像サイズ.Height / 2)); } } 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_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タイトル.sz画像サイズ.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タイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_v2_Title_Y - (this.txタイトル.sz画像サイズ.Height / 2) + nサブタイトル補正); } else { this.txタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_v2_Title_X - ((this.txタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_v2_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_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サブタイトル.sz画像サイズ.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サブタイトル.sz画像サイズ.Width * txタイトル.vc拡大縮小倍率.X), TJAPlayer3.Skin.SongLoading_v2_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } else { this.txサブタイトル.t2D描画(TJAPlayer3.app.Device, (TJAPlayer3.Skin.SongLoading_v2_SubTitle_X - ((this.txサブタイトル.sz画像サイズ.Width * txサブタイトル.vc拡大縮小倍率.X) / 2)), TJAPlayer3.Skin.SongLoading_v2_SubTitle_Y - (this.txサブタイトル.sz画像サイズ.Height / 2)); } } } else { 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)); } } 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_SubTitle_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"); 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) { 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(new FontFamily(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.DTX[0].List_DanSongs[i].TitleTex = TJAPlayer3.tテクスチャの生成(bmpSongTitle); 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 (CPrivateFastFont pfSubTitle = new CPrivateFastFont(new FontFamily(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.DTX[0].List_DanSongs[i].SubTitleTex = TJAPlayer3.tテクスチャの生成(bmpSongSubTitle); TJAPlayer3.DTX[0].List_DanSongs[i].SubTitleTex.vc拡大縮小倍率.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ファイルを読み込む: { 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) { FastRender.Render(); //staticに変更 インスタンス作成不要 } 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現在時刻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 == フェードイン分の時間 { 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曲読込画面の戻り値.継続); }
internal CTextureAf TxCAf(string FileName) { return(TJAPlayer3.tテクスチャの生成Af(CSkin.Path(BASE + FileName))); }
public void LoadTexture() { #region 共通 Tile_Black = TxC(@"Tile_Black.png"); Tile_White = TxC(@"Tile_White.png"); Menu_Title = TxC(@"Menu_Title.png"); Menu_Highlight = TxC(@"Menu_Highlight.png"); Enum_Song = TxC(@"Enum_Song.png"); Scanning_Loudness = TxC(@"Scanning_Loudness.png"); Overlay = TxC(@"Overlay.png"); NamePlate = new CTexture[2]; NamePlate[0] = TxC(@"1P_NamePlate.png"); NamePlate[1] = TxC(@"2P_NamePlate.png"); #endregion #region 1_タイトル画面 Title_Background = TxC(TITLE + @"Background.png"); Title_Menu = TxC(TITLE + @"Menu.png"); #endregion #region 2_コンフィグ画面 Config_Background = TxC(CONFIG + @"Background.png"); Config_Cursor = TxC(CONFIG + @"Cursor.png"); Config_ItemBox = TxC(CONFIG + @"ItemBox.png"); Config_Arrow = TxC(CONFIG + @"Arrow.png"); Config_KeyAssign = TxC(CONFIG + @"KeyAssign.png"); Config_Font = TxC(CONFIG + @"Font.png"); Config_Font_Bold = TxC(CONFIG + @"Font_Bold.png"); Config_Enum_Song = TxC(CONFIG + @"Enum_Song.png"); #endregion #region 3_選曲画面 SongSelect_Background = TxC(SONGSELECT + @"Background.png"); SongSelect_Auto = TxC(SONGSELECT + @"Auto.png"); SongSelect_Level = TxC(SONGSELECT + @"Level.png"); SongSelect_Branch = TxC(SONGSELECT + @"Branch.png"); SongSelect_Branch_Text = TxC(SONGSELECT + @"Branch_Text.png"); SongSelect_Frame_Score = TxC(SONGSELECT + @"Frame_Score.png"); SongSelect_Frame_Box = TxC(SONGSELECT + @"Frame_Box.png"); SongSelect_Frame_BackBox = TxC(SONGSELECT + @"Frame_BackBox.png"); SongSelect_Frame_Random = TxC(SONGSELECT + @"Frame_Random.png"); SongSelect_Score_Select = TxC(SONGSELECT + @"Score_Select.png"); SongSelect_Level_Number = TxC(SONGSELECT + @"Level_Number.png"); SongSelect_Bar_Select = TxC(SONGSELECT + @"Bar_Select.png"); SongSelect_Crown = TxC(SONGSELECT + @"SongSelect_Crown.png"); SongSelect_Bar_Genre_Back = TxC(SONGSELECT + @"Bar_Genre\Bar_Genre_Back.png"); for (int i = 0; i < SongSelect_Bar_Genre.Length; i++) { SongSelect_Bar_Genre[i] = TxC(SONGSELECT + @"Bar_Genre\Bar_Genre_" + i.ToString() + ".png"); SongSelect_Bar_Box[i] = TxC(SONGSELECT + @"Bar_Box\Bar_Box_" + i.ToString() + ".png"); } for (int i = 0; i < (int)Difficulty.Total; i++) { SongSelect_ScoreWindow[i] = TxC(SONGSELECT + @"ScoreWindow_" + i.ToString() + ".png"); } for (int i = 0; i < SongSelect_GenreBack.Length; i++) { SongSelect_GenreBack[i] = TxC(SONGSELECT + @"GenreBackground_" + i.ToString() + ".png"); } for (int i = 0; i < SongSelect_Donchan_Normal.Length; i++) { SongSelect_Donchan_Normal[i] = TxC(SONGSELECT + @"Donchan_Normal\" + i.ToString() + ".png"); } SongSelect_ScoreWindow_Text = TxC(SONGSELECT + @"ScoreWindow_Text.png"); for (int i = 0; i < Diffculty_Back.Length; i++) { Diffculty_Back[i] = TxC(SONGSELECT + @"Difficulty Select\Difficulty_Back_" + i.ToString() + ".png"); } Difficulty_Bar = TxC(SONGSELECT + @"Difficulty Select\Difficulty_Bar.png"); Difficulty_SelectBar = TxC(SONGSELECT + @"Difficulty Select\Difficulty_SelectBar.png"); #endregion #region 4_読み込み画面 SongLoading_Plate = TxC(SONGLOADING + @"Plate.png"); SongLoading_FadeIn = TxC(SONGLOADING + @"FadeIn.png"); SongLoading_FadeOut = TxC(SONGLOADING + @"FadeOut.png"); #endregion #region 5_演奏画面 #region 共通 Notes = TxC(GAME + @"Notes.png"); Judge_Frame = TxC(GAME + @"Notes.png"); SENotes = TxC(GAME + @"SENotes.png"); Notes_Arm = TxC(GAME + @"Notes_Arm.png"); Judge = TxC(GAME + @"Judge.png"); Judge_Meter = TxC(GAME + @"Judge_Meter.png"); Bar = TxC(GAME + @"Bar.png"); Bar_Branch = TxC(GAME + @"Bar_Branch.png"); #endregion #region キャラクター TJAPlayer3.Skin.Game_Chara_Ptn_Normal = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"Normal\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_Normal != 0) { Chara_Normal = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_Normal]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Normal; i++) { Chara_Normal[i] = TxC(GAME + CHARA + @"Normal\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_Clear = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"Clear\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_Clear != 0) { Chara_Normal_Cleared = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_Clear]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Clear; i++) { Chara_Normal_Cleared[i] = TxC(GAME + CHARA + @"Clear\" + i.ToString() + ".png"); } } if (TJAPlayer3.Skin.Game_Chara_Ptn_Clear != 0) { Chara_Normal_Maxed = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_Clear]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Clear; i++) { Chara_Normal_Maxed[i] = TxC(GAME + CHARA + @"Clear_Max\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_GoGo = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"GoGo\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_GoGo != 0) { Chara_GoGoTime = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_GoGo]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGo; i++) { Chara_GoGoTime[i] = TxC(GAME + CHARA + @"GoGo\" + i.ToString() + ".png"); } } if (TJAPlayer3.Skin.Game_Chara_Ptn_GoGo != 0) { Chara_GoGoTime_Maxed = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_GoGo]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGo; i++) { Chara_GoGoTime_Maxed[i] = TxC(GAME + CHARA + @"GoGo_Max\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_10combo = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"10combo\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_10combo != 0) { Chara_10Combo = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_10combo]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_10combo; i++) { Chara_10Combo[i] = TxC(GAME + CHARA + @"10combo\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_10combo_Max = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"10combo_Max\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_10combo_Max != 0) { Chara_10Combo_Maxed = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_10combo_Max]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_10combo_Max; i++) { Chara_10Combo_Maxed[i] = TxC(GAME + CHARA + @"10combo_Max\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"GoGoStart\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart != 0) { Chara_GoGoStart = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart; i++) { Chara_GoGoStart[i] = TxC(GAME + CHARA + @"GoGoStart\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"GoGoStart_Max\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max != 0) { Chara_GoGoStart_Maxed = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max; i++) { Chara_GoGoStart_Maxed[i] = TxC(GAME + CHARA + @"GoGoStart_Max\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"ClearIn\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn != 0) { Chara_Become_Cleared = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn; i++) { Chara_Become_Cleared[i] = TxC(GAME + CHARA + @"ClearIn\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"SoulIn\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn != 0) { Chara_Become_Maxed = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn; i++) { Chara_Become_Maxed[i] = TxC(GAME + CHARA + @"SoulIn\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Breaking = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"Balloon_Breaking\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Breaking != 0) { Chara_Balloon_Breaking = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Breaking]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Breaking; i++) { Chara_Balloon_Breaking[i] = TxC(GAME + CHARA + @"Balloon_Breaking\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Broke = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"Balloon_Broke\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Broke != 0) { Chara_Balloon_Broke = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Broke]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Broke; i++) { Chara_Balloon_Broke[i] = TxC(GAME + CHARA + @"Balloon_Broke\" + i.ToString() + ".png"); } } TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Miss = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + CHARA + @"Balloon_Miss\")); if (TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Miss != 0) { Chara_Balloon_Miss = new CTexture[TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Miss]; for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Miss; i++) { Chara_Balloon_Miss[i] = TxC(GAME + CHARA + @"Balloon_Miss\" + i.ToString() + ".png"); } } #endregion #region り子 TJAPlayer3.Skin.Game_Dancer_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + DANCER + @"1\")); if (TJAPlayer3.Skin.Game_Dancer_Ptn != 0) { Dancer = new CTexture[5][]; for (int i = 0; i < 5; i++) { Dancer[i] = new CTexture[TJAPlayer3.Skin.Game_Dancer_Ptn]; for (int p = 0; p < TJAPlayer3.Skin.Game_Dancer_Ptn; p++) { Dancer[i][p] = TxC(GAME + DANCER + (i + 1) + @"\" + p.ToString() + ".png"); } } } #endregion #region モブ TJAPlayer3.Skin.Game_Mob_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + MOB)); Mob = new CTexture[TJAPlayer3.Skin.Game_Mob_Ptn]; for (int i = 0; i < TJAPlayer3.Skin.Game_Mob_Ptn; i++) { Mob[i] = TxC(GAME + MOB + i.ToString() + ".png"); } #endregion #region フッター Mob_Footer = TxC(GAME + FOOTER + @"0.png"); #endregion #region 背景 Background = TxC(GAME + Background + @"0\" + @"Background.png"); Background_Up_1st = new CTexture[3]; Background_Up_1st[0] = TxC(GAME + BACKGROUND + @"0\" + @"1P_Up_1st.png"); Background_Up_1st[1] = TxC(GAME + BACKGROUND + @"0\" + @"2P_Up_1st.png"); Background_Up_1st[2] = TxC(GAME + BACKGROUND + @"0\" + @"Clear_Up_1st.png"); Background_Up_2nd = new CTexture[3]; Background_Up_2nd[0] = TxC(GAME + BACKGROUND + @"0\" + @"1P_Up_2nd.png"); Background_Up_2nd[1] = TxC(GAME + BACKGROUND + @"0\" + @"2P_Up_2nd.png"); Background_Up_2nd[2] = TxC(GAME + BACKGROUND + @"0\" + @"Clear_Up_2nd.png"); Background_Up_3rd = new CTexture[3]; Background_Up_3rd[0] = TxC(GAME + BACKGROUND + @"0\" + @"1P_Up_3rd.png"); Background_Up_3rd[1] = TxC(GAME + BACKGROUND + @"0\" + @"2P_Up_3rd.png"); Background_Up_3rd[2] = TxC(GAME + BACKGROUND + @"0\" + @"Clear_Up_3rd.png"); Background_Down = TxC(GAME + BACKGROUND + @"0\" + @"Down.png"); Background_Down_Clear = TxC(GAME + BACKGROUND + @"0\" + @"Down_Clear.png"); Background_Down_Scroll = TxC(GAME + BACKGROUND + @"0\" + @"Down_Scroll.png"); #endregion #region 太鼓 Taiko_Background = new CTexture[2]; Taiko_Background[0] = TxC(GAME + TAIKO + @"1P_Background.png"); Taiko_Background[1] = TxC(GAME + TAIKO + @"2P_Background.png"); Taiko_Frame = new CTexture[2]; Taiko_Frame[0] = TxC(GAME + TAIKO + @"1P_Frame.png"); Taiko_Frame[1] = TxC(GAME + TAIKO + @"2P_Frame.png"); Taiko_PlayerNumber = new CTexture[2]; Taiko_PlayerNumber[0] = TxC(GAME + TAIKO + @"1P_PlayerNumber.png"); Taiko_PlayerNumber[1] = TxC(GAME + TAIKO + @"2P_PlayerNumber.png"); Taiko_NamePlate = new CTexture[2]; Taiko_NamePlate[0] = TxC(GAME + TAIKO + @"1P_NamePlate.png"); Taiko_NamePlate[1] = TxC(GAME + TAIKO + @"2P_NamePlate.png"); Taiko_Base = TxC(GAME + TAIKO + @"Base.png"); Taiko_Don_Left = TxC(GAME + TAIKO + @"Don.png"); Taiko_Don_Right = TxC(GAME + TAIKO + @"Don.png"); Taiko_Ka_Left = TxC(GAME + TAIKO + @"Ka.png"); Taiko_Ka_Right = TxC(GAME + TAIKO + @"Ka.png"); Taiko_LevelUp = TxC(GAME + TAIKO + @"LevelUp.png"); Taiko_LevelDown = TxC(GAME + TAIKO + @"LevelDown.png"); Couse_Symbol = new CTexture[(int)Difficulty.Total + 1]; // +1は真打ちモードの分 string[] Couse_Symbols = new string[(int)Difficulty.Total + 1] { "Easy", "Normal", "Hard", "Oni", "Edit", "Tower", "Dan", "Shin" }; for (int i = 0; i < (int)Difficulty.Total + 1; i++) { Couse_Symbol[i] = TxC(GAME + COURSESYMBOL + Couse_Symbols[i] + ".png"); } Taiko_Score = new CTexture[3]; Taiko_Score[0] = TxC(GAME + TAIKO + @"Score.png"); Taiko_Score[1] = TxC(GAME + TAIKO + @"Score_1P.png"); Taiko_Score[2] = TxC(GAME + TAIKO + @"Score_2P.png"); Taiko_Combo = new CTexture[3]; Taiko_Combo[0] = TxC(GAME + TAIKO + @"Combo.png"); Taiko_Combo[1] = TxC(GAME + TAIKO + @"Combo_Big.png"); Taiko_Combo[2] = TxC(GAME + TAIKO + @"Combo_Midium.png"); Taiko_Combo_Effect = TxC(GAME + TAIKO + @"Combo_Effect.png"); Taiko_Combo_Text = TxC(GAME + TAIKO + @"Combo_Text.png"); #endregion #region ゲージ Gauge = new CTexture[2]; Gauge[0] = TxC(GAME + GAUGE + @"1P.png"); Gauge[1] = TxC(GAME + GAUGE + @"2P.png"); Gauge_Base = new CTexture[2]; Gauge_Base[0] = TxC(GAME + GAUGE + @"1P_Base.png"); Gauge_Base[1] = TxC(GAME + GAUGE + @"2P_Base.png"); Gauge_Line = new CTexture[2]; Gauge_Line[0] = TxC(GAME + GAUGE + @"1P_Line.png"); Gauge_Line[1] = TxC(GAME + GAUGE + @"2P_Line.png"); TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + GAUGE + @"Rainbow\")); if (TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn != 0) { Gauge_Rainbow = new CTexture[TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn]; for (int i = 0; i < TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn; i++) { Gauge_Rainbow[i] = TxC(GAME + GAUGE + @"Rainbow\" + i.ToString() + ".png"); } } Gauge_Soul = TxC(GAME + GAUGE + @"Soul.png"); Gauge_Soul_Fire = TxC(GAME + GAUGE + @"Fire.png"); Gauge_Soul_Explosion = new CTexture[2]; Gauge_Soul_Explosion[0] = TxC(GAME + GAUGE + @"1P_Explosion.png"); Gauge_Soul_Explosion[1] = TxC(GAME + GAUGE + @"2P_Explosion.png"); #endregion #region 吹き出し Balloon_Combo = new CTexture[2]; Balloon_Combo[0] = TxC(GAME + BALLOON + @"Combo_1P.png"); Balloon_Combo[1] = TxC(GAME + BALLOON + @"Combo_2P.png"); Balloon_Roll = TxC(GAME + BALLOON + @"Roll.png"); Balloon_Balloon = TxC(GAME + BALLOON + @"Balloon.png"); Balloon_Number_Roll = TxC(GAME + BALLOON + @"Number_Roll.png"); Balloon_Number_Combo = TxC(GAME + BALLOON + @"Number_Combo.png"); Balloon_Breaking = new CTexture[6]; for (int i = 0; i < 6; i++) { Balloon_Breaking[i] = TxC(GAME + BALLOON + @"Breaking_" + i.ToString() + ".png"); } #endregion #region エフェクト Effects_Hit_Explosion = TxCAf(GAME + EFFECTS + @"Hit\Explosion.png"); if (Effects_Hit_Explosion != null) { Effects_Hit_Explosion.b加算合成 = TJAPlayer3.Skin.Game_Effect_HitExplosion_AddBlend; } Effects_Hit_Explosion_Big = TxC(GAME + EFFECTS + @"Hit\Explosion_Big.png"); if (Effects_Hit_Explosion_Big != null) { Effects_Hit_Explosion_Big.b加算合成 = TJAPlayer3.Skin.Game_Effect_HitExplosionBig_AddBlend; } Effects_Hit_FireWorks = TxC(GAME + EFFECTS + @"Hit\FireWorks.png"); if (Effects_Hit_FireWorks != null) { Effects_Hit_FireWorks.b加算合成 = TJAPlayer3.Skin.Game_Effect_FireWorks_AddBlend; } Effects_Fire = TxC(GAME + EFFECTS + @"Fire.png"); if (Effects_Fire != null) { Effects_Fire.b加算合成 = TJAPlayer3.Skin.Game_Effect_Fire_AddBlend; } Effects_Rainbow = TxC(GAME + EFFECTS + @"Rainbow.png"); Effects_GoGoSplash = TxC(GAME + EFFECTS + @"GoGoSplash.png"); if (Effects_GoGoSplash != null) { Effects_GoGoSplash.b加算合成 = TJAPlayer3.Skin.Game_Effect_GoGoSplash_AddBlend; } Effects_Hit_Great = new CTexture[15]; Effects_Hit_Great_Big = new CTexture[15]; Effects_Hit_Good = new CTexture[15]; Effects_Hit_Good_Big = new CTexture[15]; for (int i = 0; i < 15; i++) { Effects_Hit_Great[i] = TxC(GAME + EFFECTS + @"Hit\" + @"Great\" + i.ToString() + ".png"); Effects_Hit_Great_Big[i] = TxC(GAME + EFFECTS + @"Hit\" + @"Great_Big\" + i.ToString() + ".png"); Effects_Hit_Good[i] = TxC(GAME + EFFECTS + @"Hit\" + @"Good\" + i.ToString() + ".png"); Effects_Hit_Good_Big[i] = TxC(GAME + EFFECTS + @"Hit\" + @"Good_Big\" + i.ToString() + ".png"); } TJAPlayer3.Skin.Game_Effect_Roll_Ptn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path(BASE + GAME + EFFECTS + @"Roll\")); Effects_Roll = new CTexture[TJAPlayer3.Skin.Game_Effect_Roll_Ptn]; for (int i = 0; i < TJAPlayer3.Skin.Game_Effect_Roll_Ptn; i++) { Effects_Roll[i] = TxC(GAME + EFFECTS + @"Roll\" + i.ToString() + ".png"); } #endregion #region レーン Lane_Base = new CTexture[3]; Lane_Text = new CTexture[3]; string[] Lanes = new string[3] { "Normal", "Expert", "Master" }; for (int i = 0; i < 3; i++) { Lane_Base[i] = TxC(GAME + LANE + "Base_" + Lanes[i] + ".png"); Lane_Text[i] = TxC(GAME + LANE + "Text_" + Lanes[i] + ".png"); } Lane_Red = TxC(GAME + LANE + @"Red.png"); Lane_Blue = TxC(GAME + LANE + @"Blue.png"); Lane_Yellow = TxC(GAME + LANE + @"Yellow.png"); Lane_Background_Main = TxC(GAME + LANE + @"Background_Main.png"); Lane_Background_Sub = TxC(GAME + LANE + @"Background_Sub.png"); Lane_Background_GoGo = TxC(GAME + LANE + @"Background_GoGo.png"); #endregion #region 終了演出 End_Clear_L = new CTexture[5]; End_Clear_R = new CTexture[5]; for (int i = 0; i < 5; i++) { End_Clear_L[i] = TxC(GAME + END + @"Clear_L_" + i.ToString() + ".png"); End_Clear_R[i] = TxC(GAME + END + @"Clear_R_" + i.ToString() + ".png"); } End_Clear_Text = TxC(GAME + END + @"Clear_Text.png"); End_Clear_Text_Effect = TxC(GAME + END + @"Clear_Text_Effect.png"); if (End_Clear_Text_Effect != null) { End_Clear_Text_Effect.b加算合成 = true; } #endregion #region ゲームモード GameMode_Timer_Tick = TxC(GAME + GAMEMODE + @"Timer_Tick.png"); GameMode_Timer_Frame = TxC(GAME + GAMEMODE + @"Timer_Frame.png"); #endregion #region ステージ失敗 Failed_Game = TxC(GAME + FAILED + @"Game.png"); Failed_Stage = TxC(GAME + FAILED + @"Stage.png"); #endregion #region ランナー Runner = TxC(GAME + RUNNER + @"0.png"); #endregion #region DanC DanC_Background = TxC(GAME + DANC + @"Background.png"); DanC_Gauge = new CTexture[4]; var type = new string[] { "Normal", "Reach", "Clear", "Flush" }; for (int i = 0; i < 4; i++) { DanC_Gauge[i] = TxC(GAME + DANC + @"Gauge_" + type[i] + ".png"); } DanC_Base = TxC(GAME + DANC + @"Base.png"); DanC_Failed = TxC(GAME + DANC + @"Failed.png"); DanC_Number = TxC(GAME + DANC + @"Number.png"); DanC_ExamType = TxC(GAME + DANC + @"ExamType.png"); DanC_ExamRange = TxC(GAME + DANC + @"ExamRange.png"); DanC_ExamUnit = TxC(GAME + DANC + @"ExamUnit.png"); DanC_Screen = TxC(GAME + DANC + @"Screen.png"); #endregion #region PuichiChara PuchiChara = TxC(GAME + PUCHICHARA + @"0.png"); #endregion #endregion #region 6_結果発表 Result_Background = TxC(RESULT + @"Background.png"); Result_FadeIn = TxC(RESULT + @"FadeIn.png"); Result_Gauge = TxC(RESULT + @"Gauge.png"); Result_Gauge_Base = TxC(RESULT + @"Gauge_Base.png"); Result_Judge = TxC(RESULT + @"Judge.png"); Result_Header = TxC(RESULT + @"Header.png"); Result_Number = TxC(RESULT + @"Number.png"); Result_Panel = TxC(RESULT + @"Panel.png"); Result_Score_Text = TxC(RESULT + @"Score_Text.png"); Result_Score_Number = TxC(RESULT + @"Score_Number.png"); Result_Dan = TxC(RESULT + @"Dan.png"); #endregion #region 7_終了画面 Exit_Background = TxC(EXIT + @"Background.png"); #endregion }
public override void OnManagedリソースの作成() { if (!base.b活性化してない) { this.tx背景 = TJAPlayer3.tテクスチャの生成(this.strSTAGEFILE, false); this.tx段位背景 = TJAPlayer3.tテクスチャの生成(this.strDANSTAGEFILE, false); //this.txSongnamePlate = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\6_SongnamePlate.png" ) ); this.ct待機 = new CCounter(0, 600, 5, TJAPlayer3.Timer); this.ct曲名表示 = new CCounter(1, 30, 30, TJAPlayer3.Timer); try { // When performing calibration, inform the player that // calibration is about to begin, rather than // displaying the song title and subtitle as usual. var タイトル = TJAPlayer3.IsPerformingCalibration ? "Input calibration is about to begin." : this.str曲タイトル; var サブタイトル = TJAPlayer3.IsPerformingCalibration ? "Please play as accurately as possible." : this.strサブタイトル; if (!string.IsNullOrEmpty(タイトル)) { //this.txタイトル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat ); //this.txタイトル.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f ); using (var bmpSongTitle = this.pfTITLE.DrawPrivateFont(タイトル, TJAPlayer3.Skin.SongLoading_Title_ForeColor, TJAPlayer3.Skin.SongLoading_Title_BackColor)) { this.txタイトル = new CTexture(TJAPlayer3.app.Device, bmpSongTitle, TJAPlayer3.TextureFormat, false); txタイトル.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref txタイトル, 710); } using (var bmpSongSubTitle = this.pfSUBTITLE.DrawPrivateFont(サブタイトル, TJAPlayer3.Skin.SongLoading_SubTitle_ForeColor, TJAPlayer3.Skin.SongLoading_SubTitle_BackColor)) { this.txサブタイトル = new CTexture(TJAPlayer3.app.Device, bmpSongSubTitle, TJAPlayer3.TextureFormat, false); } } else { this.txサブタイトル2 = null; this.txタイトル = null; this.txサブタイトル = null; } } catch (CTextureCreateFailedException e) { Trace.TraceError(e.ToString()); Trace.TraceError("テクスチャの生成に失敗しました。({0})", new object[] { this.strSTAGEFILE }); this.txタイトル = null; this.txサブタイトル = null; this.txサブタイトル2 = null; this.tx背景 = null; this.tx段位背景 = null; } base.OnManagedリソースの作成(); } }
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 [ 背景、音符+タイトル表示 ] //----------------------------- ctどんちゃんIn.t進行(); this.ct曲名表示.t進行(); if (ctどんちゃんIn.n現在の値 >= 95) { if (!ct曲名表示.b進行中) { ct曲名表示.t開始(0, 255, 1, TJAPlayer3.Timer); } } if (TJAPlayer3.Tx.SongLoading_Background != null) { TJAPlayer3.Tx.SongLoading_Background.t2D描画(TJAPlayer3.app.Device, 0, 0); } //CDTXMania.act文字コンソール.tPrint( 0, 0, C文字コンソール.Eフォント種別.灰, this.ct曲名表示.n現在の値.ToString() ); if (TJAPlayer3.Tx.SongLoading_Plate != null) { if (this.ct曲名表示.b進行中) { TJAPlayer3.Tx.SongLoading_Plate.bスクリーン合成 = TJAPlayer3.Skin.SongLoading_Plate_ScreenBlend; //あまりにも出番が無い TJAPlayer3.Tx.SongLoading_Plate.Opacity = ct曲名表示.n現在の値; 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)); } } } if (TJAPlayer3.Tx.SongLoading_Chara != null) { //TJAPlayer3.Tx.SongLoading_Chara.t2D描画(TJAPlayer3.app.Device, -180 + ctどんちゃんIn.n現在の値, 0 + (float)Math.Sin(ctどんちゃんIn.n現在の値 * (Math.PI * 180)) * 50, new Rectangle(0, 0, 640, 360)); TJAPlayer3.Tx.SongLoading_Chara.Opacity = (ctどんちゃんIn.n現在の値 / 180.0f) * 255.0f; TJAPlayer3.Tx.SongLoading_Chara.t2D描画(TJAPlayer3.app.Device, -360 + ctどんちゃんIn.n現在の値 * 2, 0 - (float)Math.Sin((float)ctどんちゃんIn.n現在の値 * (Math.PI / 180)) * 100.0f, new Rectangle(0, 0, 640, 720)); TJAPlayer3.Tx.SongLoading_Chara.t2D描画(TJAPlayer3.app.Device, 1000 - ctどんちゃんIn.n現在の値 * 2, 0 - (float)Math.Sin((float)ctどんちゃんIn.n現在の値 * (Math.PI / 180)) * 100.0f, new Rectangle(640, 0, 640, 720)); } //CDTXMania.act文字コンソール.tPrint( 0, 16, C文字コンソール.Eフォント種別.灰, C変換.nParsentTo255( ( this.ct曲名表示.n現在の値 / 30.0 ) ).ToString() ); int y = 720 - 45; if (this.ct曲名表示.n現在の値 == 255) { if (this.txタイトル != null) { int nサブタイトル補正 = string.IsNullOrEmpty(TJAPlayer3.stage選曲.r確定されたスコア.譜面情報.strサブタイトル) ? 15 : 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) { 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, 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("---------------------------"); 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曲読込画面の戻り値.継続); }
public override void On非活性化() { TJAPlayer3.t安全にDisposeする(ref this.ct分岐アニメ進行); base.On非活性化(); }
public int t進行描画() { if (!base.b活性化してない && this.bIsActivePopupMenu) { if (this.bキー入力待ち) { #region [ キー入力: キャンセル ] if ((TJAPlayer3.InputManager.Keyboard.bキーが押された((int)SlimDXKeys.Key.Escape)) && this.bEsc有効) { // キャンセル TJAPlayer3.Skin.sound取消音.t再生する(); tCancel(); this.bIsActivePopupMenu = false; } #endregion #region [ キー入力: 決定 ] ESortAction eAction = ESortAction.END; if ( TJAPlayer3.Pad.b押された(EPad.LRed) || TJAPlayer3.Pad.b押された(EPad.RRed) || (TJAPlayer3.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && TJAPlayer3.InputManager.Keyboard.bキーが押された((int)SlimDXKeys.Key.Return))) { eAction = ESortAction.Decide; } if (eAction == ESortAction.Decide) // 決定 { this.tPushedEnter(); } #endregion #region [ キー入力: 前に移動 ] this.ctキー反復用.Up.tキー反復(TJAPlayer3.InputManager.Keyboard.bキーが押されている((int)SlimDXKeys.Key.UpArrow), new CCounter.DGキー処理(this.t前に移動)); if (TJAPlayer3.Pad.b押された(EPad.LBlue)) { this.t前に移動(); } #endregion #region [ キー入力: 次に移動 ] this.ctキー反復用.Down.tキー反復(TJAPlayer3.InputManager.Keyboard.bキーが押されている((int)SlimDXKeys.Key.DownArrow), new CCounter.DGキー処理(this.t次に移動)); if (TJAPlayer3.Pad.b押された(EPad.RBlue)) { this.t次に移動(); } #endregion } #region [ ポップアップメニュー 背景描画 ] if (TJAPlayer3.Tx.Menu_Title != null) { TJAPlayer3.Tx.Menu_Title.t2D描画(TJAPlayer3.app.Device, 160, 40); } #endregion #region [ ソートメニュータイトル描画 ] int x = 210, y = 44; stqMenuTitle.txName.t2D描画(TJAPlayer3.app.Device, x, y); #endregion #region [ カーソル描画 ] if (TJAPlayer3.Tx.Menu_Highlight != null) { int height = 32; int curX = 180; int curY = 46 + (height * (this.n現在の選択行 + 1)); TJAPlayer3.Tx.Menu_Highlight.t2D描画(TJAPlayer3.app.Device, curX, curY, new Rectangle(0, 0, 16, 32)); curX += 0x10; Rectangle rectangle = new Rectangle(8, 0, 0x10, 0x20); for (int j = 0; j < 16; j++) { TJAPlayer3.Tx.Menu_Highlight.t2D描画(TJAPlayer3.app.Device, curX, curY, rectangle); curX += 16; } TJAPlayer3.Tx.Menu_Highlight.t2D描画(TJAPlayer3.app.Device, curX, curY, new Rectangle(0x10, 0, 16, 32)); } #endregion #region [ ソート候補文字列描画 ] for (int i = 0; i < lciMenuItems.Length; i++) { bool bItemBold = (i == nItemSelecting && !bShowAllItems) ? true : false; //font.t文字列描画( 190, 80 + i * 32, lciMenuItems[ i ].cItem.strName, bItemBold, 1.0f ); if (lciMenuItems[i].txName != null) { int height = lciMenuItems[i].rectName.Height; lciMenuItems[i].txName.t2D描画(TJAPlayer3.app.Device, 180, 77 + i * 32); } bool bValueBold = (bItemBold || (i == nItemSelecting && bIsSelectingIntItem)) ? true : false; if (bItemBold || bShowAllItems) { string s; switch (lciMenuItems[i].cItem.strName) { case "演奏速度": { double d = (double)((int)lciMenuItems[i].cItem.objValue() / 20.0); s = "x" + d.ToString("0.000"); } break; case "ばいそく": { double d = (double)((((int)lciMenuItems[i].cItem.objValue()) + 1) / 10.0); s = "x" + d.ToString("0.0"); } break; default: s = lciMenuItems[i].cItem.objValue().ToString(); break; } using (var bmpStr = bValueBold ? prvFont.DrawPrivateFont(s, Color.White, Color.Black, Color.Yellow, Color.OrangeRed, TJAPlayer3.Skin.Font_Edge_Ratio) : prvFont.DrawPrivateFont(s, Color.White, Color.Black, TJAPlayer3.Skin.Font_Edge_Ratio)) { using (var ctStr = TJAPlayer3.tCreateTexture(bmpStr)) { ctStr.t2D描画(TJAPlayer3.app.Device, 330, 77 + i * 32); } } } } #endregion t進行描画sub(); } return(0); }
private bool t背景画像があればその一部からプレビュー画像を構築する() { Cスコア cスコア = TJAPlayer3.stage選曲.r現在選択中のスコア; if ((cスコア == null) || string.IsNullOrEmpty(cスコア.譜面情報.Backgound)) { return(false); } string path = cスコア.ファイル情報.フォルダの絶対パス + cスコア.譜面情報.Backgound; if (!path.Equals(this.str現在のファイル名)) { if (!File.Exists(path)) { Trace.TraceWarning("ファイルが存在しません。({0})", new object[] { path }); return(false); } TJAPlayer3.t安全にDisposeする(ref this.txプレビュー画像); this.str現在のファイル名 = path; Bitmap image = null; Bitmap bitmap2 = null; Bitmap bitmap3 = null; try { image = new Bitmap(this.str現在のファイル名); bitmap2 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height); Graphics graphics = Graphics.FromImage(bitmap2); int x = 0; for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += image.Height) { for (x = 0; x < SampleFramework.GameWindowSize.Width; x += image.Width) { graphics.DrawImage(image, x, i, image.Width, image.Height); } } graphics.Dispose(); bitmap3 = new Bitmap(0xcc, 0x10d); graphics = Graphics.FromImage(bitmap3); graphics.DrawImage(bitmap2, 5, 5, new Rectangle(0x157, 0x6d, 0xcc, 0x10d), GraphicsUnit.Pixel); graphics.Dispose(); this.txプレビュー画像 = new CTexture(TJAPlayer3.app.Device, bitmap3, TJAPlayer3.TextureFormat); this.r表示するプレビュー画像 = this.txプレビュー画像; } catch (Exception e) { Trace.TraceError(e.ToString()); Trace.TraceError("背景画像の読み込みに失敗しました。({0})", new object[] { this.str現在のファイル名 }); this.r表示するプレビュー画像 = this.txプレビュー画像がないときの画像; return(false); } finally { if (image != null) { image.Dispose(); } if (bitmap2 != null) { bitmap2.Dispose(); } if (bitmap3 != null) { bitmap3.Dispose(); } } } return(true); }
internal CTexture TxCUntracked(string FileName) { return(TJAPlayer3.tテクスチャの生成(CSkin.Path(BASE + FileName))); }
public void Load() { #region 共通 Tile_Black = TxC("Tile_Black.png"); Tile_White = TxC("Tile_White.png"); Menu_Title = TxC("Menu_Title.png"); Menu_Highlight = TxC("Menu_Highlight.png"); Enum_Song = TxC("Enum_Song.png"); Scanning_Loudness = TxC("Scanning_Loudness.png"); Overlay = TxC("Overlay.png"); NamePlate = TxC(2, "{0}P_NamePlate.png", 1); #endregion #region 1_タイトル画面 Title_Background = TxC($"{TITLE}Background.png"); Title_Menu = TxC($"{TITLE}Menu.png"); #endregion #region 2_コンフィグ画面 Config_Background = TxC($"{CONFIG}Background.png"); Config_Cursor = TxC($"{CONFIG}Cursor.png"); Config_ItemBox = TxC($"{CONFIG}ItemBox.png"); Config_Arrow = TxC($"{CONFIG}Arrow.png"); Config_KeyAssign = TxC($"{CONFIG}KeyAssign.png"); Config_Font = TxC($"{CONFIG}Font.png"); Config_Font_Bold = TxC($"{CONFIG}Font_Bold.png"); Config_Enum_Song = TxC($"{CONFIG}Enum_Song.png"); #endregion #region 3_選曲画面 SongSelect_Background = TxC($"{SONGSELECT}Background.png"); SongSelect_Header = TxC($"{SONGSELECT}Header.png"); SongSelect_Footer = TxC($"{SONGSELECT}Footer.png"); SongSelect_Difficulty = TxC($"{SONGSELECT}Difficulty.png"); SongSelect_Auto = TxC($"{SONGSELECT}Auto.png"); SongSelect_Level = TxC($"{SONGSELECT}Level.png"); SongSelect_Branch = TxC($"{SONGSELECT}Branch.png"); SongSelect_Branch_Text = TxC($"{SONGSELECT}Branch_Text.png"); SongSelect_Bar_Center = TxC($"{SONGSELECT}Bar_Center.png"); SongSelect_Frame_Score = TxC($"{SONGSELECT}Frame_Score.png"); SongSelect_Frame_BackBox = TxC($"{SONGSELECT}Frame_BackBox.png"); SongSelect_Frame_Random = TxC($"{SONGSELECT}Frame_Random.png"); SongSelect_Score_Select = TxC($"{SONGSELECT}Score_Select.png"); // SongSelect_Frame_Dani = TxC($"{SONGSELECT}Frame_Dani.png"); SongSelect_GenreText = TxC($"{SONGSELECT}GenreText.png"); SongSelect_Cursor_Left = TxC($"{SONGSELECT}Cursor_Left.png"); SongSelect_Cursor_Right = TxC($"{SONGSELECT}Cursor_Right.png"); SongSelect_Bar_Genre = TxC(9, $"{SONGSELECT}Bar_Genre_{{0}}.png"); SongSelect_Frame_Box = TxC(9, $"{SONGSELECT}Frame_Box_{{0}}.png"); SongSelect_ScoreWindow = TxC((int)Difficulty.Total, $"{SONGSELECT}ScoreWindow_{{0}}.png"); SongSelect_GenreBack = TxC(9, $"{SONGSELECT}GenreBackground_{{0}}.png"); SongSelect_ScoreWindow_Text = TxC($"{SONGSELECT}ScoreWindow_Text.png"); SongSelect_Rating = TxC($"{SONGSELECT}Rating.png"); #endregion #region 4_読み込み画面 SongLoading_Plate = TxC($"{SONGLOADING}Plate.png"); SongLoading_FadeIn = TxC($"{SONGLOADING}FadeIn.png"); SongLoading_FadeOut = TxC($"{SONGLOADING}FadeOut.png"); #endregion #region 5_演奏画面 #region 共通 Notes = TxC($"{GAME}Notes.png"); Judge_Frame = TxC($"{GAME}Notes.png"); SENotes = TxC($"{GAME}SENotes.png"); Notes_Arm = TxC($"{GAME}Notes_Arm.png"); Judge = TxC($"{GAME}Judge.png"); Judge_Meter = TxC($"{GAME}Judge_Meter.png"); Bar = TxC($"{GAME}Bar.png"); Bar_Branch = TxC($"{GAME}Bar_Branch.png"); #endregion #region キャラクター (TJAPlayer3.Skin.Game_Chara_Ptn_Normal, Chara_Normal) = TxCFolder($@"{GAME}{CHARA}Normal\"); (TJAPlayer3.Skin.Game_Chara_Ptn_Clear, Chara_Normal_Cleared) = TxCFolder($@"{GAME}{CHARA}Clear\"); (_, Chara_Normal_Maxed) = TxCFolder($@"{GAME}{CHARA}Clear_Max\"); (TJAPlayer3.Skin.Game_Chara_Ptn_GoGo, Chara_GoGoTime) = TxCFolder($@"{GAME}{CHARA}GoGo\"); (_, Chara_GoGoTime_Maxed) = TxCFolder($@"{GAME}{CHARA}GoGo_Max\"); (TJAPlayer3.Skin.Game_Chara_Ptn_10combo, Chara_10Combo) = TxCFolder($@"{GAME}{CHARA}10combo\"); (TJAPlayer3.Skin.Game_Chara_Ptn_10combo_Max, Chara_10Combo_Maxed) = TxCFolder($@"{GAME}{CHARA}10combo_Max\"); (TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart, Chara_GoGoStart) = TxCFolder($@"{GAME}{CHARA}GoGoStart\"); (TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max, Chara_GoGoStart_Maxed) = TxCFolder($@"{GAME}{CHARA}GoGoStart_Max\"); (TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn, Chara_Become_Cleared) = TxCFolder($@"{GAME}{CHARA}ClearIn\"); (TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn, Chara_Become_Maxed) = TxCFolder($@"{GAME}{CHARA}SoulIn\"); (TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Breaking, Chara_Balloon_Breaking) = TxCFolder($@"{GAME}{CHARA}Balloon_Breaking\"); (TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Broke, Chara_Balloon_Broke) = TxCFolder($@"{GAME}{CHARA}Balloon_Broke\"); (TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Miss, Chara_Balloon_Miss) = TxCFolder($@"{GAME}{CHARA}Balloon_Miss\"); #endregion #region り子 var skinGameDancerPtn = TJAPlayer3.t連番画像の枚数を数える(CSkin.Path($@"{BASE}{GAME}{DANCER}1\")); if (skinGameDancerPtn != 0) { Dancer = new CTexture[5][]; for (int i = 0; i < Dancer.Length; i++) { Dancer[i] = new CTexture[skinGameDancerPtn]; for (int p = 0; p < skinGameDancerPtn; p++) { Dancer[i][p] = TxC($@"{GAME}{DANCER}{(i + 1)}\{p}.png"); } } } TJAPlayer3.Skin.Game_Dancer_Ptn = skinGameDancerPtn; #endregion #region モブ (TJAPlayer3.Skin.Game_Mob_Ptn, Mob) = TxCFolder($"{GAME}{MOB}"); #endregion #region フッター Mob_Footer = TxC($"{GAME}{FOOTER}0.png"); #endregion #region 背景 Background = TxC($@"{GAME}{BACKGROUND}0\Background.png"); Background_Up = TxC(2, $@"{GAME}{BACKGROUND}0\{{0}}P_Up.png", 1); Background_Up_Clear = TxC(2, $@"{GAME}{BACKGROUND}0\{{0}}P_Up_Clear.png", 1); Background_Down = TxC($@"{GAME}{BACKGROUND}0\Down.png"); Background_Down_Clear = TxC($@"{GAME}{BACKGROUND}0\Down_Clear.png"); Background_Down_Scroll = TxC($@"{GAME}{BACKGROUND}0\Down_Scroll.png"); #endregion #region 太鼓 Taiko_Background = TxC(2, $"{GAME}{TAIKO}{{0}}P_Background.png", 1); Taiko_Frame = TxC(2, $"{GAME}{TAIKO}{{0}}P_Frame.png", 1); Taiko_PlayerNumber = TxC(2, $"{GAME}{TAIKO}{{0}}P_PlayerNumber.png", 1); Taiko_NamePlate = TxC(2, $"{GAME}{TAIKO}{{0}}P_NamePlate.png", 1); Taiko_Base = TxC($"{GAME}{TAIKO}Base.png"); Taiko_Don_Left = TxC($"{GAME}{TAIKO}Don.png"); Taiko_Don_Right = TxC($"{GAME}{TAIKO}Don.png"); Taiko_Ka_Left = TxC($"{GAME}{TAIKO}Ka.png"); Taiko_Ka_Right = TxC($"{GAME}{TAIKO}Ka.png"); Taiko_LevelUp = TxC($"{GAME}{TAIKO}LevelUp.png"); Taiko_LevelDown = TxC($"{GAME}{TAIKO}LevelDown.png"); Course_Symbol = TxC($"{GAME}{COURSESYMBOL}{{0}}.png", "Easy", "Normal", "Hard", "Oni", "Edit", "Tower", "Dan", "Shin"); Taiko_Score = TxC($"{GAME}{TAIKO}Score{{0}}.png", "", "_1P", "_2P"); Taiko_Combo = TxC($"{GAME}{TAIKO}Combo{{0}}.png", "", "_Big"); Taiko_Combo_Effect = TxC($"{GAME}{TAIKO}Combo_Effect.png"); Taiko_Combo_Text = TxC($"{GAME}{TAIKO}Combo_Text.png"); #endregion #region ゲージ Gauge = TxC(2, $"{GAME}{GAUGE}{{0}}P.png", 1); Gauge_Hard = TxC(2, $"{GAME}{GAUGE}{{0}}P_Hard.png", 1); Gauge_ExHard = TxC(2, $"{GAME}{GAUGE}{{0}}P_ExHard.png", 1); Gauge_Base = TxC(2, $"{GAME}{GAUGE}{{0}}P_Base.png", 1); Gauge_Base_Hard = TxC(2, $"{GAME}{GAUGE}{{0}}P_Base_Hard.png", 1); Gauge_Base_ExHard = TxC(2, $"{GAME}{GAUGE}{{0}}P_Base_ExHard.png", 1); Gauge_Line = TxC(2, $"{GAME}{GAUGE}{{0}}P_Line.png", 1); Gauge_Line_Hard = TxC(2, $"{GAME}{GAUGE}{{0}}P_Line_Hard.png", 1); (TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn, Gauge_Rainbow) = TxCFolder($@"{GAME}{GAUGE}Rainbow\"); Gauge_Soul = TxC($"{GAME}{GAUGE}Soul.png"); Gauge_Soul_Fire = TxC($"{GAME}{GAUGE}Fire.png"); Gauge_Soul_Explosion = TxC(2, $"{GAME}{GAUGE}{{0}}P_Explosion.png", 1); #endregion #region 吹き出し Balloon_Combo = TxC(2, $"{GAME}{BALLOON}Combo_{{0}}P.png", 1); Balloon_Roll = TxC($"{GAME}{BALLOON}Roll.png"); Balloon_Balloon = TxC($"{GAME}{BALLOON}Balloon.png"); Balloon_Number_Roll = TxC($"{GAME}{BALLOON}Number_Roll.png"); Balloon_Number_Combo = TxC($"{GAME}{BALLOON}Number_Combo.png"); Balloon_Breaking = TxC(6, $"{GAME}{BALLOON}Breaking_{{0}}.png"); #endregion #region エフェクト Effects_Hit_Explosion = TxCAf($@"{GAME}{EFFECTS}Hit\Explosion.png"); if (Effects_Hit_Explosion != null) { Effects_Hit_Explosion.b加算合成 = TJAPlayer3.Skin.Game_Effect_HitExplosion_AddBlend; } Effects_Hit_Explosion_Big = TxC($@"{GAME}{EFFECTS}Hit\Explosion_Big.png"); if (Effects_Hit_Explosion_Big != null) { Effects_Hit_Explosion_Big.b加算合成 = TJAPlayer3.Skin.Game_Effect_HitExplosionBig_AddBlend; } Effects_Hit_FireWorks = TxC($@"{GAME}{EFFECTS}Hit\FireWorks.png"); if (Effects_Hit_FireWorks != null) { Effects_Hit_FireWorks.b加算合成 = TJAPlayer3.Skin.Game_Effect_FireWorks_AddBlend; } Effects_Fire = TxC($"{GAME}{EFFECTS}Fire.png"); if (Effects_Fire != null) { Effects_Fire.b加算合成 = TJAPlayer3.Skin.Game_Effect_Fire_AddBlend; } Effects_Rainbow = TxC($"{GAME}{EFFECTS}Rainbow.png"); Effects_GoGoSplash = TxC($"{GAME}{EFFECTS}GoGoSplash.png"); if (Effects_GoGoSplash != null) { Effects_GoGoSplash.b加算合成 = TJAPlayer3.Skin.Game_Effect_GoGoSplash_AddBlend; } Effects_Hit_Good = TxC(15, $@"{GAME}{EFFECTS}Hit\Good\{{0}}.png"); Effects_Hit_Good_Big = TxC(15, $@"{GAME}{EFFECTS}Hit\Good_Big\{{0}}.png"); Effects_Hit_Great = TxC(15, $@"{GAME}{EFFECTS}Hit\Great\{{0}}.png"); Effects_Hit_Great_Big = TxC(15, $@"{GAME}{EFFECTS}Hit\Great_Big\{{0}}.png"); (TJAPlayer3.Skin.Game_Effect_Roll_Ptn, Effects_Roll) = TxCFolder($@"{GAME}{EFFECTS}Roll\"); #endregion #region レーン var lanes = new[] { "Normal", "Expert", "Master" }; Lane_Base = TxC($"{GAME}{LANE}Base_{{0}}.png", lanes); Lane_Text = TxC($"{GAME}{LANE}Text_{{0}}.png", lanes); Lane_Red = TxC($"{GAME}{LANE}Red.png"); Lane_Blue = TxC($"{GAME}{LANE}Blue.png"); Lane_Yellow = TxC($"{GAME}{LANE}Yellow.png"); Lane_Background_Main = TxC($"{GAME}{LANE}Background_Main.png"); Lane_Background_Sub = TxC($"{GAME}{LANE}Background_Sub.png"); Lane_Background_GoGo = TxC($"{GAME}{LANE}Background_GoGo.png"); #endregion #region 終了演出 End_Clear_L = TxC(5, $"{GAME}{END}Clear_L_{{0}}.png"); End_Clear_R = TxC(5, $"{GAME}{END}Clear_R_{{0}}.png"); End_Clear_Text = TxC($"{GAME}{END}Clear_Text.png"); End_Clear_Text_Effect = TxC($"{GAME}{END}Clear_Text_Effect.png"); if (End_Clear_Text_Effect != null) { End_Clear_Text_Effect.b加算合成 = true; } #endregion #region ゲームモード GameMode_Timer_Tick = TxC($"{GAME}{GAMEMODE}Timer_Tick.png"); GameMode_Timer_Frame = TxC($"{GAME}{GAMEMODE}Timer_Frame.png"); #endregion #region ステージ失敗 Failed_Game = TxC($"{GAME}{FAILED}Game.png"); Failed_Stage = TxC($"{GAME}{FAILED}Stage.png"); #endregion #region ランナー Runner = TxC($"{GAME}{RUNNER}0.png"); #endregion #region DanC DanC_Background = TxC($"{GAME}{DANC}Background.png"); DanC_Gauge = TxC($"{GAME}{DANC}Gauge_{{0}}.png", "Normal", "Reach", "Clear", "Flush"); DanC_Base = TxC($"{GAME}{DANC}Base.png"); DanC_Failed = TxC($"{GAME}{DANC}Failed.png"); DanC_Number = TxC($"{GAME}{DANC}Number.png"); DanC_ExamType = TxC($"{GAME}{DANC}ExamType.png"); DanC_ExamRange = TxC($"{GAME}{DANC}ExamRange.png"); DanC_ExamUnit = TxC($"{GAME}{DANC}ExamUnit.png"); DanC_Screen = TxC($"{GAME}{DANC}Screen.png"); #endregion #region PuichiChara PuchiChara = TxC($"{GAME}{PUCHICHARA}0.png"); #endregion #endregion #region 6_結果発表 Result_Background = TxC($"{RESULT}Background.png"); Result_FadeIn = TxC($"{RESULT}FadeIn.png"); Result_Gauge = TxC($"{RESULT}Gauge.png"); Result_Gauge_Base = TxC($"{RESULT}Gauge_Base.png"); Result_Gauge_Hard = TxC($"{RESULT}Gauge_Hard.png"); Result_Gauge_ExHard = TxC($"{RESULT}Gauge_ExHard.png"); Result_Gauge_Base_Hard = TxC($"{RESULT}Gauge_Base_Hard.png"); Result_Gauge_Base_ExHard = TxC($"{RESULT}Gauge_Base_ExHard.png"); Result_Judge = TxC($"{RESULT}Judge.png"); Result_Header = TxC($"{RESULT}Header.png"); Result_Number = TxC($"{RESULT}Number.png"); Result_Panel = TxC($"{RESULT}Panel.png"); Result_Score_Text = TxC($"{RESULT}Score_Text.png"); Result_Score_Number = TxC($"{RESULT}Score_Number.png"); Result_Dan = TxC($"{RESULT}Dan.png"); #endregion #region 7_終了画面 Exit_Background = TxC($"{EXIT}Background.png"); #endregion }
private CTextureAf TxCAfUntracked(string path) { return(TJAPlayer3.tテクスチャの生成Af(CSkin.Path(BASE + path))); }
internal CTexture TxCUntracked(string path) { return(TJAPlayer3.tテクスチャの生成(CSkin.Path(BASE + path))); }
private static void Main() { mutex二重起動防止用 = new Mutex(false, "TJAPlayer3-f"); bool mutexbool = mutex二重起動防止用.WaitOne(0, false); kidou: if (mutexbool) { Trace.WriteLine("Current Directory: " + Environment.CurrentDirectory); Trace.WriteLine("EXEのあるフォルダ: " + Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。 //2020.04.15 Mr-Ojii DEBUG 時も例外をキャッチするようにした。 try { using (var mania = new TJAPlayer3()) mania.Run(); Trace.WriteLine(""); Trace.WriteLine("遊んでくれてありがとう!"); } catch (Exception e) { Trace.WriteLine(""); Trace.Write(e.ToString()); Trace.WriteLine(""); Trace.WriteLine("エラーだゴメン!(涙"); AssemblyName asmApp = Assembly.GetExecutingAssembly().GetName(); MessageBox.Show("エラーが発生しました。\n" + "原因がわからない場合は、以下のエラー文を添えて、エラー送信フォームに送信してください。\n" + e.ToString(), asmApp.Name + " Ver." + asmApp.Version.ToString().Substring(0, asmApp.Version.ToString().Length - 2) + " Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // #23670 2011.2.28 yyagi to show error dialog DialogResult result = MessageBox.Show("エラー送信フォームを開きますか?(ブラウザが起動します)\n", asmApp.Name + " Ver." + asmApp.Version.ToString().Substring(0, asmApp.Version.ToString().Length - 2), MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (result == DialogResult.Yes) { DialogResult result2 = MessageBox.Show("GitHubのエラー送信フォームを開きますか?※GitHubアカウントが必要です。\n\nGoogleのエラー送信フォームを開きますか?※アカウントの必要なし\n\nGitHubのからのエラー報告のほうが「Mr.おじい」が早くエラーの存在に気づけます。\n(Y:GitHub / N:Google)", asmApp.Name + " Ver." + asmApp.Version.ToString().Substring(0, asmApp.Version.ToString().Length - 2), MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (result2 == DialogResult.Yes) { CWebOpen.Open("https://github.com/Mr-Ojii/TJAPlayer3-f/issues/new?body=エラー文(TJAPlayer3-fから開いた場合は自動入力されます)%0D%0A" + System.Web.HttpUtility.UrlEncode(e.ToString()) + "%0D%0A" + "%0D%0A" + "使用しているスキン名・バージョン%0D%0A" + "%0D%0A" + "%0D%0A" + "バグを引き起こすまでの手順を書いてください%0D%0A" + "%0D%0A" + "%0D%0A" + "再生していた譜面(.tja)または画面%0D%0A" + "%0D%0A" + "%0D%0A" + "使用しているOS%0D%0A" + "%0D%0A" + "%0D%0A" + "不具合の内容%0D%0A" + "%0D%0A" + "%0D%0A" + "(追加情報を自由に書いてください(任意))%0D%0A"); } else { CWebOpen.Open("https://docs.google.com/forms/d/e/1FAIpQLSffkhp-3kDJIZH23xMoweik5sAgy2UyaIkEQd1khn9DuR_RWg/viewform?entry.1025217940=" + System.Web.HttpUtility.UrlEncode(e.ToString())); } } } // END #24606 2011.03.08 from // END #23670 2010.11.13 from if (Trace.Listeners.Count > 1) { Trace.Listeners.RemoveAt(1); } // BEGIN #24615 2011.03.09 from: Mutex.WaitOne() が true を返した場合は、Mutex のリリースが必要である。 mutex二重起動防止用.ReleaseMutex(); mutex二重起動防止用 = null; // END #24615 2011.03.09 from } else // DTXManiaが既に起動中 { DialogResult dr = MessageBox.Show("すでにTJAPlayer3-fが起動していますが、起動しますか?", "注意", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (dr == DialogResult.Yes) { mutexbool = true; goto kidou; } else { Environment.Exit(0); } } }
public void t歌詞テクスチャを生成する(Bitmap bmplyric) { TJAPlayer3.t安全にDisposeする(ref this.tx歌詞テクスチャ); this.tx歌詞テクスチャ = TJAPlayer3.tテクスチャの生成(bmplyric); }
public int t進行描画() { if (!base.b活性化してない && this.bIsActivePopupMenu) { if (this.bキー入力待ち) { #region [ Shift-F1: CONFIG画面 ] if ((TJAPlayer3.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift) || TJAPlayer3.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift)) && TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F1)) { // [SHIFT] + [F1] CONFIG TJAPlayer3.Skin.sound取消音.t再生する(); tCancel(); this.bGotoDetailConfig = true; } #endregion #region [ キー入力: キャンセル ] else if ((TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT) || TJAPlayer3.Pad.b押されたGB(Eパッド.Cancel)) && this.bEsc有効) { // キャンセル TJAPlayer3.Skin.sound取消音.t再生する(); tCancel(); this.bIsActivePopupMenu = false; } #endregion #region [ キー入力: 決定 ] // E楽器パート eInst = E楽器パート.UNKNOWN; ESortAction eAction = ESortAction.END; if (TJAPlayer3.Pad.b押された(E楽器パート.GUITAR, Eパッド.Decide)) { eInst = E楽器パート.GUITAR; eAction = ESortAction.Decide; } else if (TJAPlayer3.Pad.b押された(E楽器パート.BASS, Eパッド.Decide)) { eInst = E楽器パート.BASS; eAction = ESortAction.Decide; } else if ( TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.Decide) || // #24756 2011.4.1 yyagi: Add condition "Drum-Decide" to enable CY in Sort Menu. TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD) || TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || (TJAPlayer3.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && TJAPlayer3.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))) { eInst = E楽器パート.DRUMS; eAction = ESortAction.Decide; } if (eAction == ESortAction.Decide) // 決定 { this.tEnter押下(); } #endregion #region [ キー入力: 前に移動 ] this.ctキー反復用.Up.tキー反復(TJAPlayer3.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.t前に移動)); this.ctキー反復用.R.tキー反復(TJAPlayer3.Pad.b押されているGB(Eパッド.R), new CCounter.DGキー処理(this.t前に移動)); if (TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD)) { this.t前に移動(); } #endregion #region [ キー入力: 次に移動 ] this.ctキー反復用.Down.tキー反復(TJAPlayer3.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.t次に移動)); this.ctキー反復用.B.tキー反復(TJAPlayer3.Pad.b押されているGB(Eパッド.B), new CCounter.DGキー処理(this.t次に移動)); if (TJAPlayer3.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT)) { this.t次に移動(); } #endregion } #region [ ポップアップメニュー 背景描画 ] if (TJAPlayer3.Tx.Menu_Title != null) { TJAPlayer3.Tx.Menu_Title.t2D描画(TJAPlayer3.app.Device, 160, 40); } #endregion #region [ ソートメニュータイトル描画 ] int x = 240, y = 44; stqMenuTitle.txName.t2D描画(TJAPlayer3.app.Device, x, y); #endregion #region [ カーソル描画 ] if (TJAPlayer3.Tx.Menu_Highlight != null) { int height = 32; int curX = 180; int curY = 46 + (height * (this.n現在の選択行 + 1)); TJAPlayer3.Tx.Menu_Highlight.t2D描画(TJAPlayer3.app.Device, curX, curY, new Rectangle(0, 0, 16, 32)); curX += 0x10; Rectangle rectangle = new Rectangle(8, 0, 0x10, 0x20); for (int j = 0; j < 16; j++) { TJAPlayer3.Tx.Menu_Highlight.t2D描画(TJAPlayer3.app.Device, curX, curY, rectangle); curX += 16; } TJAPlayer3.Tx.Menu_Highlight.t2D描画(TJAPlayer3.app.Device, curX, curY, new Rectangle(0x10, 0, 16, 32)); } #endregion #region [ ソート候補文字列描画 ] for (int i = 0; i < lciMenuItems.Length; i++) { bool bItemBold = (i == nItemSelecting && !bShowAllItems) ? true : false; //font.t文字列描画( 190, 80 + i * 32, lciMenuItems[ i ].cItem.str項目名, bItemBold, 1.0f ); if (lciMenuItems[i].txName != null) { int height = lciMenuItems[i].rectName.Height; lciMenuItems[i].txName.t2D描画(TJAPlayer3.app.Device, 180, 77 + i * 32); } bool bValueBold = (bItemBold || (i == nItemSelecting && bIsSelectingIntItem)) ? true : false; if (bItemBold || bShowAllItems) { string s; switch (lciMenuItems[i].cItem.str項目名) { case "演奏速度": { double d = (double)((int)lciMenuItems[i].cItem.obj現在値() / 20.0); s = "x" + d.ToString("0.000"); } break; case "ばいそく": { double d = (double)((((int)lciMenuItems[i].cItem.obj現在値()) + 1) / 2.0); s = "x" + d.ToString("0.0"); } break; default: s = lciMenuItems[i].cItem.obj現在値().ToString(); break; } //font.t文字列描画( (int)(340 * Scale.X), (int)(80 + i * 32), s, bValueBold, 1.0f * Scale.Y); using (var bmpStr = bValueBold ? prvFont.DrawPrivateFont(s, Color.White, Color.Black, Color.Yellow, Color.OrangeRed) : prvFont.DrawPrivateFont(s, Color.White, Color.Black)) { using (var ctStr = TJAPlayer3.tテクスチャの生成(bmpStr, false)) { ctStr.t2D描画(TJAPlayer3.app.Device, 330, 77 + i * 32); } } } } #endregion t進行描画sub(); } return(0); }
public void t歌詞テクスチャを削除する() { TJAPlayer3.t安全にDisposeする(ref this.tx歌詞テクスチャ); }
public override void OnManagedリソースの作成() { if (this.b活性化してない) { return; } //string pathNowEnumeratingSongs = CSkin.Path( @"Graphics\ScreenTitle NowEnumeratingSongs.png" ); //if ( File.Exists( pathNowEnumeratingSongs ) ) //{ // this.txNowEnumeratingSongs = CDTXMania.tテクスチャの生成( pathNowEnumeratingSongs, false ); //} //else //{ // this.txNowEnumeratingSongs = null; //} //string pathDialogNowEnumeratingSongs = CSkin.Path( @"Graphics\ScreenConfig NowEnumeratingSongs.png" ); //if ( File.Exists( pathDialogNowEnumeratingSongs ) ) //{ // this.txDialogNowEnumeratingSongs = CDTXMania.tテクスチャの生成( pathDialogNowEnumeratingSongs, false ); //} //else //{ // this.txDialogNowEnumeratingSongs = null; //} try { System.Drawing.Font ftMessage = new System.Drawing.Font("MS UI Gothic", 40f, FontStyle.Bold, GraphicsUnit.Pixel); string[] strMessage = { " 曲データの一覧を\n 取得しています。\n しばらくお待ちください。", " Now enumerating songs.\n Please wait..." }; int ci = (CultureInfo.CurrentUICulture.TwoLetterISOLanguageName == "ja") ? 0 : 1; if ((strMessage != null) && (strMessage.Length > 0)) { Bitmap image = new Bitmap(1, 1); Graphics graphics = Graphics.FromImage(image); SizeF ef = graphics.MeasureString(strMessage[ci], ftMessage); Size size = new Size((int)Math.Ceiling((double)ef.Width), (int)Math.Ceiling((double)ef.Height)); graphics.Dispose(); image.Dispose(); image = new Bitmap(size.Width, size.Height); graphics = Graphics.FromImage(image); graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; graphics.DrawString(strMessage[ci], ftMessage, Brushes.White, (float)0f, (float)0f); graphics.Dispose(); this.txMessage = new CTexture(TJAPlayer3.app.Device, image, TJAPlayer3.TextureFormat); this.txMessage.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); image.Dispose(); TJAPlayer3.t安全にDisposeする(ref ftMessage); } else { this.txMessage = null; } } catch (CTextureCreateFailedException e) { Trace.TraceError("テクスチャの生成に失敗しました。(txMessage)"); Trace.TraceError(e.ToString()); Trace.TraceError("例外が発生しましたが処理を継続します。 (761b726d-d27c-470d-be0b-a702971601b5)"); this.txMessage = null; } base.OnManagedリソースの作成(); }
public void t選択曲が変更された() { Cスコア cスコア = TJAPlayer3.stage選曲.act曲リスト.r現在選択中のスコア; if (cスコア != null) { Bitmap image = new Bitmap(1, 1); TJAPlayer3.tテクスチャの解放(ref this.txArtist); this.strArtist = cスコア.譜面情報.アーティスト名; if ((this.strArtist != null) && (this.strArtist.Length > 0)) { Graphics graphics = Graphics.FromImage(image); graphics.PageUnit = GraphicsUnit.Pixel; SizeF ef = graphics.MeasureString(this.strArtist, this.ft描画用フォント); graphics.Dispose(); if (ef.Width > SampleFramework.GameWindowSize.Width) { ef.Width = SampleFramework.GameWindowSize.Width; } try { Bitmap bitmap2 = new Bitmap((int)Math.Ceiling((double)ef.Width), (int)Math.Ceiling((double)this.ft描画用フォント.Size)); graphics = Graphics.FromImage(bitmap2); graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; graphics.DrawString(this.strArtist, this.ft描画用フォント, Brushes.White, ( float )0f, ( float )0f); graphics.Dispose(); this.txArtist = new CTexture(TJAPlayer3.app.Device, bitmap2, TJAPlayer3.TextureFormat); this.txArtist.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); bitmap2.Dispose(); } catch (CTextureCreateFailedException e) { Trace.TraceError(e.ToString()); Trace.TraceError("ARTISTテクスチャの生成に失敗しました。"); this.txArtist = null; } } TJAPlayer3.tテクスチャの解放(ref this.txComment); //this.strComment = cスコア.譜面情報.コメント; this.strComment = cスコア.譜面情報.ジャンル; if ((this.strComment != null) && (this.strComment.Length > 0)) { Graphics graphics2 = Graphics.FromImage(image); graphics2.PageUnit = GraphicsUnit.Pixel; SizeF ef2 = graphics2.MeasureString(this.strComment, this.ft描画用フォント); Size size = new Size((int)Math.Ceiling((double)ef2.Width), (int)Math.Ceiling((double)ef2.Height)); graphics2.Dispose(); this.nテクスチャの最大幅 = TJAPlayer3.app.Device.Capabilities.MaxTextureWidth; int maxTextureHeight = TJAPlayer3.app.Device.Capabilities.MaxTextureHeight; Bitmap bitmap3 = new Bitmap(size.Width, (int)Math.Ceiling((double)this.ft描画用フォント.Size)); graphics2 = Graphics.FromImage(bitmap3); graphics2.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; graphics2.DrawString(this.strComment, this.ft描画用フォント, Brushes.White, ( float )0f, ( float )0f); graphics2.Dispose(); this.nComment行数 = 1; this.nComment最終行の幅 = size.Width; while (this.nComment最終行の幅 > this.nテクスチャの最大幅) { this.nComment行数++; this.nComment最終行の幅 -= this.nテクスチャの最大幅; } while ((this.nComment行数 * ((int)Math.Ceiling((double)this.ft描画用フォント.Size))) > maxTextureHeight) { this.nComment行数--; this.nComment最終行の幅 = this.nテクスチャの最大幅; } Bitmap bitmap4 = new Bitmap((this.nComment行数 > 1) ? this.nテクスチャの最大幅 : this.nComment最終行の幅, this.nComment行数 * ((int)Math.Ceiling((double)this.ft描画用フォント.Size))); graphics2 = Graphics.FromImage(bitmap4); Rectangle srcRect = new Rectangle(); Rectangle destRect = new Rectangle(); for (int i = 0; i < this.nComment行数; i++) { srcRect.X = i * this.nテクスチャの最大幅; srcRect.Y = 0; srcRect.Width = ((i + 1) == this.nComment行数) ? this.nComment最終行の幅 : this.nテクスチャの最大幅; srcRect.Height = bitmap3.Height; destRect.X = 0; destRect.Y = i * bitmap3.Height; destRect.Width = srcRect.Width; destRect.Height = srcRect.Height; graphics2.DrawImage(bitmap3, destRect, srcRect, GraphicsUnit.Pixel); } graphics2.Dispose(); try { this.txComment = new CTexture(TJAPlayer3.app.Device, bitmap4, TJAPlayer3.TextureFormat); this.txComment.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); } catch (CTextureCreateFailedException e) { Trace.TraceError(e.ToString()); Trace.TraceError("COMMENTテクスチャの生成に失敗しました。"); this.txComment = null; } bitmap4.Dispose(); bitmap3.Dispose(); } image.Dispose(); if (this.txComment != null) { this.ctComment = new CCounter(-740, (int)((((this.nComment行数 - 1) * this.nテクスチャの最大幅) + this.nComment最終行の幅) * this.txComment.vc拡大縮小倍率.X), 10, TJAPlayer3.Timer); } } }
public void DisposeTexture() { TJAPlayer3.tテクスチャの解放(ref Title_Background); TJAPlayer3.tテクスチャの解放(ref Title_Menu); #region 共通 TJAPlayer3.tテクスチャの解放(ref Tile_Black); TJAPlayer3.tテクスチャの解放(ref Tile_White); TJAPlayer3.tテクスチャの解放(ref Menu_Title); TJAPlayer3.tテクスチャの解放(ref Menu_Highlight); TJAPlayer3.tテクスチャの解放(ref Enum_Song); TJAPlayer3.tテクスチャの解放(ref Scanning_Loudness); TJAPlayer3.tテクスチャの解放(ref Overlay); for (int i = 0; i < 2; i++) { TJAPlayer3.tテクスチャの解放(ref NamePlate[i]); } #endregion #region 1_タイトル画面 TJAPlayer3.tテクスチャの解放(ref Title_Background); TJAPlayer3.tテクスチャの解放(ref Title_Menu); #endregion #region 2_コンフィグ画面 TJAPlayer3.tテクスチャの解放(ref Config_Background); TJAPlayer3.tテクスチャの解放(ref Config_Cursor); TJAPlayer3.tテクスチャの解放(ref Config_ItemBox); TJAPlayer3.tテクスチャの解放(ref Config_Arrow); TJAPlayer3.tテクスチャの解放(ref Config_KeyAssign); TJAPlayer3.tテクスチャの解放(ref Config_Font); TJAPlayer3.tテクスチャの解放(ref Config_Font_Bold); TJAPlayer3.tテクスチャの解放(ref Config_Enum_Song); #endregion #region 3_選曲画面 TJAPlayer3.tテクスチャの解放(ref SongSelect_Background); TJAPlayer3.tテクスチャの解放(ref SongSelect_Auto); TJAPlayer3.tテクスチャの解放(ref SongSelect_Level); TJAPlayer3.tテクスチャの解放(ref SongSelect_Branch); TJAPlayer3.tテクスチャの解放(ref SongSelect_Branch_Text); TJAPlayer3.tテクスチャの解放(ref SongSelect_Frame_Score); TJAPlayer3.tテクスチャの解放(ref SongSelect_Frame_Box); TJAPlayer3.tテクスチャの解放(ref SongSelect_Frame_BackBox); TJAPlayer3.tテクスチャの解放(ref SongSelect_Frame_Random); TJAPlayer3.tテクスチャの解放(ref SongSelect_Score_Select); TJAPlayer3.tテクスチャの解放(ref SongSelect_Bar_Genre_Back); TJAPlayer3.tテクスチャの解放(ref SongSelect_Bar_Select); TJAPlayer3.tテクスチャの解放(ref SongSelect_Level_Number); TJAPlayer3.tテクスチャの解放(ref SongSelect_Crown); for (int i = 0; i < SongSelect_Bar_Genre.Length; i++) { TJAPlayer3.tテクスチャの解放(ref SongSelect_Bar_Genre[i]); TJAPlayer3.tテクスチャの解放(ref SongSelect_Bar_Box[i]); } for (int i = 0; i < (int)Difficulty.Total; i++) { TJAPlayer3.tテクスチャの解放(ref SongSelect_ScoreWindow[i]); } for (int i = 0; i < SongSelect_GenreBack.Length; i++) { TJAPlayer3.tテクスチャの解放(ref SongSelect_GenreBack[i]); } for (int i = 0; i < SongSelect_Donchan_Normal.Length; i++) { TJAPlayer3.tテクスチャの解放(ref SongSelect_Donchan_Normal[i]); } TJAPlayer3.tテクスチャの解放(ref SongSelect_ScoreWindow_Text); for (int i = 0; i < Diffculty_Back.Length; i++) { TJAPlayer3.tテクスチャの解放(ref Diffculty_Back[i]); } TJAPlayer3.tテクスチャの解放(ref Difficulty_Bar); TJAPlayer3.tテクスチャの解放(ref Difficulty_SelectBar); #endregion #region 4_読み込み画面 TJAPlayer3.tテクスチャの解放(ref SongLoading_Plate); TJAPlayer3.tテクスチャの解放(ref SongLoading_FadeIn); TJAPlayer3.tテクスチャの解放(ref SongLoading_FadeOut); #endregion #region 5_演奏画面 #region 共通 TJAPlayer3.tテクスチャの解放(ref Notes); TJAPlayer3.tテクスチャの解放(ref Judge_Frame); TJAPlayer3.tテクスチャの解放(ref SENotes); TJAPlayer3.tテクスチャの解放(ref Notes_Arm); TJAPlayer3.tテクスチャの解放(ref Judge); TJAPlayer3.tテクスチャの解放(ref Judge_Meter); TJAPlayer3.tテクスチャの解放(ref Bar); TJAPlayer3.tテクスチャの解放(ref Bar_Branch); #endregion #region キャラクター for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Normal; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Normal[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Clear; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Normal_Cleared[i]); TJAPlayer3.tテクスチャの解放(ref Chara_Normal_Maxed[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGo; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_GoGoTime[i]); TJAPlayer3.tテクスチャの解放(ref Chara_GoGoTime_Maxed[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_10combo; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_10Combo[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_10combo_Max; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_10Combo_Maxed[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_GoGoStart[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_GoGoStart_Max; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_GoGoStart_Maxed[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_ClearIn; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Become_Cleared[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_SoulIn; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Become_Maxed[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Breaking; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Balloon_Breaking[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Broke; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Balloon_Broke[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Chara_Ptn_Balloon_Miss; i++) { TJAPlayer3.tテクスチャの解放(ref Chara_Balloon_Miss[i]); } #endregion #region り子 for (int i = 0; i < 5; i++) { for (int p = 0; p < TJAPlayer3.Skin.Game_Dancer_Ptn; p++) { TJAPlayer3.tテクスチャの解放(ref Dancer[i][p]); } } #endregion #region モブ for (int i = 0; i < TJAPlayer3.Skin.Game_Mob_Ptn; i++) { TJAPlayer3.tテクスチャの解放(ref Mob[i]); } #endregion #region フッター TJAPlayer3.tテクスチャの解放(ref Mob_Footer); #endregion #region 背景 TJAPlayer3.tテクスチャの解放(ref Background); TJAPlayer3.tテクスチャの解放(ref Background_Up_1st[0]); TJAPlayer3.tテクスチャの解放(ref Background_Up_1st[1]); TJAPlayer3.tテクスチャの解放(ref Background_Up_1st[2]); TJAPlayer3.tテクスチャの解放(ref Background_Up_2nd[0]); TJAPlayer3.tテクスチャの解放(ref Background_Up_2nd[1]); TJAPlayer3.tテクスチャの解放(ref Background_Up_2nd[2]); TJAPlayer3.tテクスチャの解放(ref Background_Up_3rd[0]); TJAPlayer3.tテクスチャの解放(ref Background_Up_3rd[1]); TJAPlayer3.tテクスチャの解放(ref Background_Up_3rd[2]); TJAPlayer3.tテクスチャの解放(ref Background_Down); TJAPlayer3.tテクスチャの解放(ref Background_Down_Clear); TJAPlayer3.tテクスチャの解放(ref Background_Down_Scroll); #endregion #region 太鼓 TJAPlayer3.tテクスチャの解放(ref Taiko_Background[0]); TJAPlayer3.tテクスチャの解放(ref Taiko_Background[1]); TJAPlayer3.tテクスチャの解放(ref Taiko_Frame[0]); TJAPlayer3.tテクスチャの解放(ref Taiko_Frame[1]); TJAPlayer3.tテクスチャの解放(ref Taiko_PlayerNumber[0]); TJAPlayer3.tテクスチャの解放(ref Taiko_PlayerNumber[1]); TJAPlayer3.tテクスチャの解放(ref Taiko_NamePlate[0]); TJAPlayer3.tテクスチャの解放(ref Taiko_NamePlate[1]); TJAPlayer3.tテクスチャの解放(ref Taiko_Base); TJAPlayer3.tテクスチャの解放(ref Taiko_Don_Left); TJAPlayer3.tテクスチャの解放(ref Taiko_Don_Right); TJAPlayer3.tテクスチャの解放(ref Taiko_Ka_Left); TJAPlayer3.tテクスチャの解放(ref Taiko_Ka_Right); TJAPlayer3.tテクスチャの解放(ref Taiko_LevelUp); TJAPlayer3.tテクスチャの解放(ref Taiko_LevelDown); for (int i = 0; i < 6; i++) { TJAPlayer3.tテクスチャの解放(ref Couse_Symbol[i]); } TJAPlayer3.tテクスチャの解放(ref Taiko_Score[0]); TJAPlayer3.tテクスチャの解放(ref Taiko_Score[1]); TJAPlayer3.tテクスチャの解放(ref Taiko_Score[2]); TJAPlayer3.tテクスチャの解放(ref Taiko_Combo[0]); TJAPlayer3.tテクスチャの解放(ref Taiko_Combo[1]); TJAPlayer3.tテクスチャの解放(ref Taiko_Combo[2]); TJAPlayer3.tテクスチャの解放(ref Taiko_Combo_Effect); TJAPlayer3.tテクスチャの解放(ref Taiko_Combo_Text); #endregion #region ゲージ TJAPlayer3.tテクスチャの解放(ref Gauge[0]); TJAPlayer3.tテクスチャの解放(ref Gauge[1]); TJAPlayer3.tテクスチャの解放(ref Gauge_Base[0]); TJAPlayer3.tテクスチャの解放(ref Gauge_Base[1]); TJAPlayer3.tテクスチャの解放(ref Gauge_Line[0]); TJAPlayer3.tテクスチャの解放(ref Gauge_Line[1]); for (int i = 0; i < TJAPlayer3.Skin.Game_Gauge_Rainbow_Ptn; i++) { TJAPlayer3.tテクスチャの解放(ref Gauge_Rainbow[i]); } TJAPlayer3.tテクスチャの解放(ref Gauge_Soul); TJAPlayer3.tテクスチャの解放(ref Gauge_Soul_Fire); TJAPlayer3.tテクスチャの解放(ref Gauge_Soul_Explosion[0]); TJAPlayer3.tテクスチャの解放(ref Gauge_Soul_Explosion[1]); #endregion #region 吹き出し TJAPlayer3.tテクスチャの解放(ref Balloon_Combo[0]); TJAPlayer3.tテクスチャの解放(ref Balloon_Combo[1]); TJAPlayer3.tテクスチャの解放(ref Balloon_Roll); TJAPlayer3.tテクスチャの解放(ref Balloon_Balloon); TJAPlayer3.tテクスチャの解放(ref Balloon_Number_Roll); TJAPlayer3.tテクスチャの解放(ref Balloon_Number_Combo); for (int i = 0; i < 6; i++) { TJAPlayer3.tテクスチャの解放(ref Balloon_Breaking[i]); } #endregion #region エフェクト TJAPlayer3.tテクスチャの解放(ref Effects_Hit_Explosion); TJAPlayer3.tテクスチャの解放(ref Effects_Hit_Explosion_Big); TJAPlayer3.tテクスチャの解放(ref Effects_Hit_FireWorks); TJAPlayer3.tテクスチャの解放(ref Effects_Fire); TJAPlayer3.tテクスチャの解放(ref Effects_Rainbow); TJAPlayer3.tテクスチャの解放(ref Effects_GoGoSplash); for (int i = 0; i < 15; i++) { TJAPlayer3.tテクスチャの解放(ref Effects_Hit_Great[i]); TJAPlayer3.tテクスチャの解放(ref Effects_Hit_Great_Big[i]); TJAPlayer3.tテクスチャの解放(ref Effects_Hit_Good[i]); TJAPlayer3.tテクスチャの解放(ref Effects_Hit_Good_Big[i]); } for (int i = 0; i < TJAPlayer3.Skin.Game_Effect_Roll_Ptn; i++) { TJAPlayer3.tテクスチャの解放(ref Effects_Roll[i]); } #endregion #region レーン for (int i = 0; i < 3; i++) { TJAPlayer3.tテクスチャの解放(ref Lane_Base[i]); TJAPlayer3.tテクスチャの解放(ref Lane_Text[i]); } TJAPlayer3.tテクスチャの解放(ref Lane_Red); TJAPlayer3.tテクスチャの解放(ref Lane_Blue); TJAPlayer3.tテクスチャの解放(ref Lane_Yellow); TJAPlayer3.tテクスチャの解放(ref Lane_Background_Main); TJAPlayer3.tテクスチャの解放(ref Lane_Background_Sub); TJAPlayer3.tテクスチャの解放(ref Lane_Background_GoGo); #endregion #region 終了演出 for (int i = 0; i < 5; i++) { TJAPlayer3.tテクスチャの解放(ref End_Clear_L[i]); TJAPlayer3.tテクスチャの解放(ref End_Clear_R[i]); } TJAPlayer3.tテクスチャの解放(ref End_Clear_Text); TJAPlayer3.tテクスチャの解放(ref End_Clear_Text_Effect); #endregion #region ゲームモード TJAPlayer3.tテクスチャの解放(ref GameMode_Timer_Tick); TJAPlayer3.tテクスチャの解放(ref GameMode_Timer_Frame); #endregion #region ステージ失敗 TJAPlayer3.tテクスチャの解放(ref Failed_Game); TJAPlayer3.tテクスチャの解放(ref Failed_Stage); #endregion #region ランナー TJAPlayer3.tテクスチャの解放(ref Runner); #endregion #region DanC DanC_Background?.Dispose(); for (int i = 0; i < 4; i++) { DanC_Gauge[i]?.Dispose(); } DanC_Base?.Dispose(); DanC_Failed?.Dispose(); DanC_Number?.Dispose(); DanC_ExamRange?.Dispose(); DanC_ExamUnit?.Dispose(); DanC_ExamType?.Dispose(); DanC_Screen?.Dispose(); #endregion #region PuchiChara TJAPlayer3.tテクスチャの解放(ref PuchiChara); #endregion #endregion #region 6_結果発表 TJAPlayer3.tテクスチャの解放(ref Result_Background); TJAPlayer3.tテクスチャの解放(ref Result_FadeIn); TJAPlayer3.tテクスチャの解放(ref Result_Gauge); TJAPlayer3.tテクスチャの解放(ref Result_Gauge_Base); TJAPlayer3.tテクスチャの解放(ref Result_Judge); TJAPlayer3.tテクスチャの解放(ref Result_Header); TJAPlayer3.tテクスチャの解放(ref Result_Number); TJAPlayer3.tテクスチャの解放(ref Result_Panel); TJAPlayer3.tテクスチャの解放(ref Result_Score_Text); TJAPlayer3.tテクスチャの解放(ref Result_Score_Number); TJAPlayer3.tテクスチャの解放(ref Result_Dan); #endregion #region 7_終了画面 TJAPlayer3.tテクスチャの解放(ref Exit_Background); #endregion }
private CTexture 文字テクスチャを生成する(string str文字, Color forecolor, Color backcolor) { using (var bmp = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 28).DrawPrivateFont(str文字, forecolor, backcolor, true)) { return(TJAPlayer3.tテクスチャの生成(bmp)); } }
internal CTexture TxCGen(string FileName) { return(TJAPlayer3.tテクスチャの生成(CSkin.Path(BASE + GAME + GENRE + FileName + ".png"))); }
// メソッド /// <summary> /// 右上の曲名、曲数表示の更新を行います。 /// </summary> /// <param name="songName">曲名</param> /// <param name="genreName">ジャンル名</param> /// <param name="stageText">曲数</param> public void SetPanelString(string songName, string genreName, string stageText = null) { if (base.b活性化してる) { TJAPlayer3.t安全にDisposeする(ref this.txPanel); if ((songName != null) && (songName.Length > 0)) { try { using (var bmpSongTitle = pfMusicName.DrawPrivateFont(songName, TJAPlayer3.Skin.Game_MusicName_ForeColor, TJAPlayer3.Skin.Game_MusicName_BackColor)) { this.txMusicName = TJAPlayer3.tテクスチャの生成(bmpSongTitle, false); } if (txMusicName != null) { this.txMusicName.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref txMusicName); } Bitmap bmpDiff; string strDiff = ""; if (TJAPlayer3.Skin.eDiffDispMode == E難易度表示タイプ.n曲目に表示) { switch (TJAPlayer3.stage選曲.n確定された曲の難易度) { case 0: strDiff = "かんたん "; break; case 1: strDiff = "ふつう "; break; case 2: strDiff = "むずかしい "; break; case 3: strDiff = "おに "; break; case 4: strDiff = "えでぃと "; break; default: strDiff = "おに "; break; } bmpDiff = pfMusicName.DrawPrivateFont(strDiff + stageText, TJAPlayer3.Skin.Game_StageText_ForeColor, TJAPlayer3.Skin.Game_StageText_BackColor); } else { bmpDiff = pfMusicName.DrawPrivateFont(stageText, TJAPlayer3.Skin.Game_StageText_ForeColor, TJAPlayer3.Skin.Game_StageText_BackColor); } using (bmpDiff) { TJAPlayer3.t安全にDisposeする(ref tx難易度とステージ数); tx難易度とステージ数 = TJAPlayer3.tテクスチャの生成(bmpDiff, false); } } catch (CTextureCreateFailedException e) { Trace.TraceError(e.ToString()); Trace.TraceError("パネル文字列テクスチャの生成に失敗しました。"); this.txPanel = null; } } var genreTextureFileName = CStrジャンルtoStr.ForTextureFileName(genreName); this.txGENRE = genreTextureFileName == null ? null : TJAPlayer3.Tx.TxCGenre(genreTextureFileName); this.ct進行用 = new CCounter(0, 2000, 2, TJAPlayer3.Timer); } }
public CNamePlate() { for (int player = 0; player < 2; player++) { if (TJAPlayer3.NamePlateConfig.data.DanType[player] < 0) { TJAPlayer3.NamePlateConfig.data.DanType[player] = 0; } else if (TJAPlayer3.NamePlateConfig.data.DanType[player] > 2) { TJAPlayer3.NamePlateConfig.data.DanType[player] = 2; } if (TJAPlayer3.NamePlateConfig.data.TitleType[player] < 0) { TJAPlayer3.NamePlateConfig.data.TitleType[player] = 0; } else if (TJAPlayer3.NamePlateConfig.data.TitleType[player] > 2) { TJAPlayer3.NamePlateConfig.data.TitleType[player] = 2; } if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName)) { if (TJAPlayer3.NamePlateConfig.data.Title[player] == "" || TJAPlayer3.NamePlateConfig.data.Title[player] == null) { this.pfName = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 15); } else { this.pfName = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 12); } this.pfTitle = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 11); this.pfdan = new CPrivateFastFont(new FontFamily(TJAPlayer3.ConfigIni.FontName), 12); } else { if (TJAPlayer3.NamePlateConfig.data.Title[player] == "" || TJAPlayer3.NamePlateConfig.data.Title[player] == null) { this.pfName = new CPrivateFastFont(new FontFamily("MS UI Gothic"), 15); } else { this.pfName = new CPrivateFastFont(new FontFamily("MS UI Gothic"), 12); } this.pfTitle = new CPrivateFastFont(new FontFamily("MS UI Gothic"), 11); this.pfdan = new CPrivateFastFont(new FontFamily("MS UI Gothic"), 12); } using (var tex = pfName.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Name[player], Color.White, Color.Black, 25)) txName[player] = TJAPlayer3.tテクスチャの生成(tex); using (var tex = pfTitle.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Title[player], Color.Black, Color.Empty)) txTitle[player] = TJAPlayer3.tテクスチャの生成(tex); using (var tex = pfdan.DrawPrivateFont(TJAPlayer3.NamePlateConfig.data.Dan[player], Color.White, Color.Black, 22)) txdan[player] = TJAPlayer3.tテクスチャの生成(tex); } ctNamePlateEffect = new CCounter(0, 120, 16.6f, TJAPlayer3.Timer); }
// public void Start(int number) { NowShowingNumber = number; Counter_In = new CCounter(0, 999, 1, TJAPlayer3.Timer); ScreenPoint = new double[] { TJAPlayer3.Skin.nScrollFieldBGX[0] - TJAPlayer3.Tx.DanC_Screen.szテクスチャサイズ.Width / 2, 1280 }; TJAPlayer3.stage演奏ドラム画面.ReSetScore(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].ScoreInit, TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].ScoreDiff); IsAnimating = true; TJAPlayer3.stage演奏ドラム画面.actPanel.SetPanelString(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].Title, TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].Genre, 1 + NowShowingNumber + "曲目"); 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); } if (!string.IsNullOrEmpty(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].Title)) { using (var bmpSongTitle = pfTitle.DrawPrivateFont(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].Title, Color.White, Color.Black)) { TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].TitleTex = TJAPlayer3.tテクスチャの生成(bmpSongTitle, false); TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].TitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].TitleTex, 710); } } if (!string.IsNullOrEmpty(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].SubTitle)) { using (var bmpSongSubTitle = pfSubTitle.DrawPrivateFont(TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].SubTitle, Color.White, Color.Black)) { TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].SubTitleTex = TJAPlayer3.tテクスチャの生成(bmpSongSubTitle, false); TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].SubTitleTex.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref TJAPlayer3.DTX.List_DanSongs[NowShowingNumber].SubTitleTex, 710); } } pfTitle?.Dispose(); pfSubTitle?.Dispose(); Sound_Section?.tサウンドを先頭から再生する(); }
private static void Main() { UpdateChecker.CheckForAndOfferUpdate(); mutex二重起動防止用 = new Mutex(false, "DTXManiaMutex"); if (mutex二重起動防止用.WaitOne(0, false)) { string newLine = Environment.NewLine; bool bDLLnotfound = false; Trace.WriteLine("Current Directory: " + Environment.CurrentDirectory); Trace.WriteLine("EXEのあるフォルダ: " + Path.GetDirectoryName(Application.ExecutablePath)); Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; #region [DLLの存在チェック] if (!tDLLの存在チェック(TJAPlayer3.D3DXDLL, TJAPlayer3.D3DXDLL + " が存在しません。" + newLine + "DirectX Redist フォルダの DXSETUP.exe を実行し、" + newLine + "必要な DirectX ランタイムをインストールしてください。", TJAPlayer3.D3DXDLL + " is not found." + newLine + "Please execute DXSETUP.exe in \"DirectX Redist\" folder, to install DirectX runtimes required for DTXMania.", true )) { bDLLnotfound = true; } #endregion if (!bDLLnotfound) { #if DEBUG && TEST_ENGLISH Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); #endif DWM.EnableComposition(false); // Disable AeroGrass temporally // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。 #if !DEBUG try #endif { using (var mania = new TJAPlayer3()) mania.Run(); Trace.WriteLine(""); Trace.WriteLine("遊んでくれてありがとう!"); } #if !DEBUG catch (Exception e) { Trace.WriteLine(""); Trace.Write(e.ToString()); Trace.WriteLine(""); Trace.WriteLine("エラーだゴメン!(涙"); var messageBoxText = "An error has occurred.\n" + "Would you like the error details copied to the clipboard and your browser opened to our GitHub Issues page?\n\n" + e; var dialogResult = MessageBox.Show( messageBoxText, $"{TJAPlayer3.AppDisplayNameWithThreePartVersion} Error", MessageBoxButtons.YesNo, MessageBoxIcon.Error); if (dialogResult == DialogResult.Yes) { Clipboard.SetText(e.ToString()); Process.Start("https://github.com/twopointzero/TJAPlayer3/issues"); } } #endif // END #24606 2011.03.08 from // END #23670 2010.11.13 from if (Trace.Listeners.Count > 1) { Trace.Listeners.RemoveAt(1); } } // BEGIN #24615 2011.03.09 from: Mutex.WaitOne() が true を返した場合は、Mutex のリリースが必要である。 mutex二重起動防止用.ReleaseMutex(); mutex二重起動防止用 = null; // END #24615 2011.03.09 from } else // DTXManiaが既に起動中 { // → 引数が0個の時はそのまま終了 // 1個( コンパクトモード or DTXV -S) か2個 (DTXV -Nxxx ファイル名)のときは、そのプロセスにコマンドラインを丸々投げて終了する for (int i = 0; i < 5; i++) // 検索結果のハンドルがZeroになることがあるので、200ms間隔で5回リトライする { #region [ 既に起動中のDTXManiaプロセスを検索する。] // このやり方だと、ShowInTaskbar=falseでタスクバーに表示されないパターンの時に検索に失敗するようだが // DTXManiaでそのパターンはない?のでこのままいく。 // FindWindowを使えばこのパターンにも対応できるが、C#でビルドするアプリはウインドウクラス名を自前指定できないので、これは使わない。 Process current = Process.GetCurrentProcess(); Process[] running = Process.GetProcessesByName(current.ProcessName); Process target = null; //IntPtr hWnd = FindWindow( null, "DTXMania .NET style release " + CDTXMania.VERSION ); foreach (Process p in running) { if (p.Id != current.Id) // プロセス名は同じでかつ、プロセスIDが自分自身とは異なるものを探す { if (p.MainModule.FileName == current.MainModule.FileName && p.MainWindowHandle != IntPtr.Zero) { target = p; break; } } } #endregion #region [ 起動中のDTXManiaがいれば、そのプロセスにコマンドラインを投げる ] if (target != null) { string[] commandLineArgs = Environment.GetCommandLineArgs(); if (commandLineArgs != null && commandLineArgs.Length > 1) { string arg = null; for (int j = 1; j < commandLineArgs.Length; j++) { if (j == 1) { arg += commandLineArgs[j]; } else { arg += " " + "\"" + commandLineArgs[j] + "\""; } } //Trace.TraceInformation( "Message=" + arg + ", len(w/o null)=" + arg.Length ); if (arg != null) { FDK.CSendMessage.sendmessage(target.MainWindowHandle, current.MainWindowHandle, arg); } } break; } #endregion else { Trace.TraceInformation("メッセージ送信先のプロセスが見つからず。5回リトライします。"); Thread.Sleep(200); } } } }
// メソッド /// <summary> /// 右上の曲名、曲数表示の更新を行います。 /// </summary> /// <param name="songName">曲名</param> /// <param name="genreName">ジャンル名</param> /// <param name="stageText">曲数</param> public void SetPanelString(string songName, string genreName, string stageText = null) { if (base.b活性化してる) { TJAPlayer3.t安全にDisposeする(ref this.txPanel); if ((songName != null) && (songName.Length > 0)) { try { using (var bmpSongTitle = pfMusicName.DrawPrivateFont(songName, TJAPlayer3.Skin.Game_MusicName_ForeColor, TJAPlayer3.Skin.Game_MusicName_BackColor)) { this.txMusicName = TJAPlayer3.tテクスチャの生成(bmpSongTitle, false); } if (txMusicName != null) { this.txMusicName.vc拡大縮小倍率.X = TJAPlayer3.GetSongNameXScaling(ref txMusicName); } Bitmap bmpDiff; string strDiff = ""; if (TJAPlayer3.Skin.eDiffDispMode == E難易度表示タイプ.n曲目に表示) { switch (TJAPlayer3.stage選曲.n確定された曲の難易度) { case 0: strDiff = "かんたん "; break; case 1: strDiff = "ふつう "; break; case 2: strDiff = "むずかしい "; break; case 3: strDiff = "おに "; break; case 4: strDiff = "えでぃと "; break; default: strDiff = "おに "; break; } bmpDiff = pfMusicName.DrawPrivateFont(strDiff + stageText, TJAPlayer3.Skin.Game_StageText_ForeColor, TJAPlayer3.Skin.Game_StageText_BackColor); } else { bmpDiff = pfMusicName.DrawPrivateFont(stageText, TJAPlayer3.Skin.Game_StageText_ForeColor, TJAPlayer3.Skin.Game_StageText_BackColor); } } catch (CTextureCreateFailedException e) { Trace.TraceError(e.ToString()); Trace.TraceError("パネル文字列テクスチャの生成に失敗しました。"); this.txPanel = null; } } this.txSONGS = TJAPlayer3.Tx.TxCGen("Songs"); if (!string.IsNullOrEmpty(genreName)) { if (genreName.Equals("アニメ")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Anime"); } else if (genreName.Equals("ポップス")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Pops"); } else if (genreName.Equals("ゲームミュージック")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Game"); } else if (genreName.Equals("ナムコオリジナル")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Namco"); } else if (genreName.Equals("クラシック")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Classic"); } else if (genreName.Equals("キッズ")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Child"); } else if (genreName.Equals("バラエティ")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Variety"); } else if (genreName.Equals("ボーカロイド") || genreName.Equals("VOCALOID")) { this.txGENRE = TJAPlayer3.Tx.TxCGen("Vocaloid"); } else { using (var bmpDummy = new Bitmap(1, 1)) { this.txGENRE = TJAPlayer3.tテクスチャの生成(bmpDummy, true); } } } this.ct進行用 = new CCounter(0, 2000, 2, TJAPlayer3.Timer); this.Start(); } }
private static void Main() { Trace.WriteLine("Current Directory: " + Environment.CurrentDirectory); Trace.WriteLine("EXEのあるフォルダ: " + Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; // BEGIN #23670 2010.11.13 from: キャッチされない例外は放出せずに、ログに詳細を出力する。 // BEGIM #24606 2011.03.08 from: DEBUG 時は例外発生箇所を直接デバッグできるようにするため、例外をキャッチしないようにする。 //2020.04.15 Mr-Ojii DEBUG 時も例外をキャッチするようにした。 try { using (var mania = new TJAPlayer3()) mania.Run(); Trace.WriteLine(""); Trace.WriteLine("Thank You For Playing!!!"); } catch (Exception e) { Trace.WriteLine(""); Trace.Write(e.ToString()); Trace.WriteLine(""); Trace.WriteLine("An error has occurred. Sorry."); AssemblyName asmApp = Assembly.GetExecutingAssembly().GetName(); //エラーが発生したことをユーザーに知らせるため、HTMLを作成する。 using (StreamWriter writer = new StreamWriter(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "/Error.html", false, Encoding.UTF8)) { writer.WriteLine("<html>"); writer.WriteLine("<head>"); writer.WriteLine("<meta http-equiv=\"content-type\" content=\"text/html\" charset=\"utf-8\">"); writer.WriteLine("<style>"); writer.WriteLine("<!--"); writer.WriteLine("table{ border-collapse: collapse; } td,th { border: 2px solid; }"); writer.WriteLine("-->"); writer.WriteLine("</style>"); writer.WriteLine("</head>"); writer.WriteLine("<body>"); writer.WriteLine("<h1>An error has occurred.(エラーが発生しました。)</h1>"); #if DEBUG writer.WriteLine("<p>It is a debug build, so it did not send any error information.(Debugビルドのため、エラー情報を送信しませんでした。)</p>"); #else writer.WriteLine("<p>Error information has been sent.(エラー情報を送信しました。)</p>"); #endif writer.WriteLine("<table>"); writer.WriteLine("<tbody>"); writer.WriteLine("<tr><th>Name</th><th>Version</th><th>Exception</th><th>DateTime</th><th>SkinName</th><th>SkinVersion</th><th>SkinCreator</th><th>OS</th></tr>"); writer.WriteLine($"<tr><td>{asmApp.Name}</td><td>{asmApp.Version.ToString()}</td><td>{e.ToString()}</td><td>{DateTime.UtcNow.ToString()}</td><td>{SkinName}</td><td>{SkinVersion}</td><td>{SkinCreator}</td><td>{Environment.OSVersion.ToString()}</td></tr>"); writer.WriteLine("</tbody>"); writer.WriteLine("</table>"); writer.WriteLine("</body>"); writer.WriteLine("</html>"); } CWebOpen.Open(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "/Error.html"); #if !DEBUG //エラーの送信 JObject errorjsonobject = new JObject( new JProperty("name", asmApp.Name), new JProperty("version", asmApp.Version.ToString()), new JProperty("exception", e.ToString()), new JProperty("datetime", DateTime.UtcNow.ToString()), new JProperty("skinname", SkinName), new JProperty("skinversion", SkinVersion), new JProperty("skincreator", SkinCreator), new JProperty("operatingsystem", Environment.OSVersion.ToString()) ); using (var client = new HttpClient()) { var content = new StringContent(JsonConvert.SerializeObject(errorjsonobject, Formatting.None), Encoding.UTF8, "application/json"); var resString = client.PostAsync("https://script.google.com/macros/s/AKfycbw6QWCXEEbciDV7tA5zV72EyLkynlJUCiM0cRz5TR4nDQeRUiA/exec", content).Result; } #endif } // END #24606 2011.03.08 from // END #23670 2010.11.13 from if (Trace.Listeners.Count > 1) { Trace.Listeners.RemoveAt(1); } // END #24615 2011.03.09 from }
public void DisposeTexture() { TJAPlayer3.t安全にDisposeする(ref Title_Background); TJAPlayer3.t安全にDisposeする(ref Title_Menu); #region 共通 TJAPlayer3.t安全にDisposeする(ref Tile_Black); TJAPlayer3.t安全にDisposeする(ref Tile_White); TJAPlayer3.t安全にDisposeする(ref Menu_Title); TJAPlayer3.t安全にDisposeする(ref Menu_Highlight); TJAPlayer3.t安全にDisposeする(ref Enum_Song); TJAPlayer3.t安全にDisposeする(ref Scanning_Loudness); TJAPlayer3.t安全にDisposeする(ref Overlay); TJAPlayer3.t安全にDisposeする(NamePlate); #endregion #region 1_タイトル画面 TJAPlayer3.t安全にDisposeする(ref Title_Background); TJAPlayer3.t安全にDisposeする(ref Title_Menu); #endregion #region 2_コンフィグ画面 TJAPlayer3.t安全にDisposeする(ref Config_Background); TJAPlayer3.t安全にDisposeする(ref Config_Cursor); TJAPlayer3.t安全にDisposeする(ref Config_ItemBox); TJAPlayer3.t安全にDisposeする(ref Config_Arrow); TJAPlayer3.t安全にDisposeする(ref Config_KeyAssign); TJAPlayer3.t安全にDisposeする(ref Config_Font); TJAPlayer3.t安全にDisposeする(ref Config_Font_Bold); TJAPlayer3.t安全にDisposeする(ref Config_Enum_Song); #endregion #region 3_選曲画面 TJAPlayer3.t安全にDisposeする(ref SongSelect_Background); TJAPlayer3.t安全にDisposeする(ref SongSelect_Header); TJAPlayer3.t安全にDisposeする(ref SongSelect_Footer); TJAPlayer3.t安全にDisposeする(ref SongSelect_Difficulty); TJAPlayer3.t安全にDisposeする(ref SongSelect_Auto); TJAPlayer3.t安全にDisposeする(ref SongSelect_Level); TJAPlayer3.t安全にDisposeする(ref SongSelect_Level2); TJAPlayer3.t安全にDisposeする(ref SongSelect_Branch); TJAPlayer3.t安全にDisposeする(ref SongSelect_Branch_Text); TJAPlayer3.t安全にDisposeする(ref SongSelect_Bar_Center); TJAPlayer3.t安全にDisposeする(ref SongSelect_Frame_Score); TJAPlayer3.t安全にDisposeする(ref SongSelect_Frame_Score2); TJAPlayer3.t安全にDisposeする(ref SongSelect_Frame_Score3); TJAPlayer3.t安全にDisposeする(ref SongSelect_Frame_BackBox); TJAPlayer3.t安全にDisposeする(ref SongSelect_Frame_Random); TJAPlayer3.t安全にDisposeする(ref SongSelect_Score_Select); TJAPlayer3.t安全にDisposeする(ref SongSelect_Cursor_Left); TJAPlayer3.t安全にDisposeする(ref SongSelect_Bar_white); TJAPlayer3.t安全にDisposeする(ref SongSelect_Cursor_Right); TJAPlayer3.t安全にDisposeする(SongSelect_Bar_Genre); TJAPlayer3.t安全にDisposeする(SongSelect_ND_Genre); TJAPlayer3.t安全にDisposeする(SongSelect_Frame_Box); TJAPlayer3.t安全にDisposeする(SongSelect_ScoreWindow); TJAPlayer3.t安全にDisposeする(SongSelect_GenreBack); TJAPlayer3.t安全にDisposeする(ref SongSelect_ScoreWindow_Text); TJAPlayer3.t安全にDisposeする(ref SongSelect_Rating); #endregion #region 4_読み込み画面 TJAPlayer3.t安全にDisposeする(ref SongLoading_Plate); TJAPlayer3.t安全にDisposeする(ref SongLoading_FadeIn); TJAPlayer3.t安全にDisposeする(ref SongLoading_FadeOut); #endregion #region 5_演奏画面 #region 共通 TJAPlayer3.t安全にDisposeする(ref Notes); TJAPlayer3.t安全にDisposeする(ref Judge_Frame); TJAPlayer3.t安全にDisposeする(ref SENotes); TJAPlayer3.t安全にDisposeする(ref Notes_Arm); TJAPlayer3.t安全にDisposeする(ref Judge); TJAPlayer3.t安全にDisposeする(ref Judge_Meter); TJAPlayer3.t安全にDisposeする(ref Bar); TJAPlayer3.t安全にDisposeする(ref Bar_Branch); #endregion #region キャラクター TJAPlayer3.t安全にDisposeする(Chara_Normal); TJAPlayer3.t安全にDisposeする(Chara_Normal_Cleared); TJAPlayer3.t安全にDisposeする(Chara_Normal_Maxed); TJAPlayer3.t安全にDisposeする(Chara_GoGoTime); TJAPlayer3.t安全にDisposeする(Chara_GoGoTime_Maxed); TJAPlayer3.t安全にDisposeする(Chara_10Combo); TJAPlayer3.t安全にDisposeする(Chara_10Combo_Maxed); TJAPlayer3.t安全にDisposeする(Chara_GoGoStart); TJAPlayer3.t安全にDisposeする(Chara_GoGoStart_Maxed); TJAPlayer3.t安全にDisposeする(Chara_Become_Cleared); TJAPlayer3.t安全にDisposeする(Chara_Become_Maxed); TJAPlayer3.t安全にDisposeする(Chara_Balloon_Breaking); TJAPlayer3.t安全にDisposeする(Chara_Balloon_Broke); TJAPlayer3.t安全にDisposeする(Chara_Balloon_Miss); #endregion #region り子 for (int i = 0; i < Dancer.Length; i++) { TJAPlayer3.t安全にDisposeする(Dancer[i]); } #endregion #region モブ TJAPlayer3.t安全にDisposeする(Mob); #endregion #region フッター TJAPlayer3.t安全にDisposeする(ref Mob_Footer); #endregion #region 背景 TJAPlayer3.t安全にDisposeする(ref Background); TJAPlayer3.t安全にDisposeする(Background_Up); TJAPlayer3.t安全にDisposeする(Background_Up_Clear); TJAPlayer3.t安全にDisposeする(Background_Down); TJAPlayer3.t安全にDisposeする(ref Background_Down_Clear); TJAPlayer3.t安全にDisposeする(ref Background_Down_Scroll); #endregion #region 太鼓 TJAPlayer3.t安全にDisposeする(Taiko_Background); TJAPlayer3.t安全にDisposeする(Taiko_Frame); TJAPlayer3.t安全にDisposeする(Taiko_PlayerNumber); TJAPlayer3.t安全にDisposeする(Taiko_NamePlate); TJAPlayer3.t安全にDisposeする(ref Taiko_Base); TJAPlayer3.t安全にDisposeする(ref Taiko_Don_Left); TJAPlayer3.t安全にDisposeする(ref Taiko_Don_Right); TJAPlayer3.t安全にDisposeする(ref Taiko_Ka_Left); TJAPlayer3.t安全にDisposeする(ref Taiko_Ka_Right); TJAPlayer3.t安全にDisposeする(ref Taiko_LevelUp); TJAPlayer3.t安全にDisposeする(ref Taiko_LevelDown); TJAPlayer3.t安全にDisposeする(Course_Symbol); TJAPlayer3.t安全にDisposeする(Taiko_Score); TJAPlayer3.t安全にDisposeする(Taiko_Combo); TJAPlayer3.t安全にDisposeする(ref Taiko_Combo_Effect); TJAPlayer3.t安全にDisposeする(ref Taiko_Combo_Text); #endregion #region ゲージ TJAPlayer3.t安全にDisposeする(Gauge); TJAPlayer3.t安全にDisposeする(Gauge_Hard); TJAPlayer3.t安全にDisposeする(Gauge_Base); TJAPlayer3.t安全にDisposeする(Gauge_Base_Hard); TJAPlayer3.t安全にDisposeする(Gauge_Base_ExHard); TJAPlayer3.t安全にDisposeする(Gauge_Line); TJAPlayer3.t安全にDisposeする(Gauge_Line_Hard); TJAPlayer3.t安全にDisposeする(Gauge_Rainbow); TJAPlayer3.t安全にDisposeする(ref Gauge_Soul); TJAPlayer3.t安全にDisposeする(ref Gauge_Soul_Fire); TJAPlayer3.t安全にDisposeする(Gauge_Soul_Explosion); #endregion #region 吹き出し TJAPlayer3.t安全にDisposeする(Balloon_Combo); TJAPlayer3.t安全にDisposeする(ref Balloon_Roll); TJAPlayer3.t安全にDisposeする(ref Balloon_Balloon); TJAPlayer3.t安全にDisposeする(ref Balloon_Number_Roll); TJAPlayer3.t安全にDisposeする(ref Balloon_Number_Combo); TJAPlayer3.t安全にDisposeする(Balloon_Breaking); #endregion #region エフェクト TJAPlayer3.t安全にDisposeする(ref Effects_Hit_Explosion); TJAPlayer3.t安全にDisposeする(ref Effects_Hit_Explosion_Big); TJAPlayer3.t安全にDisposeする(ref Effects_Hit_FireWorks); TJAPlayer3.t安全にDisposeする(ref Effects_Fire); TJAPlayer3.t安全にDisposeする(ref Effects_Rainbow); TJAPlayer3.t安全にDisposeする(ref Effects_GoGoSplash); TJAPlayer3.t安全にDisposeする(Effects_Hit_Good); TJAPlayer3.t安全にDisposeする(Effects_Hit_Good_Big); TJAPlayer3.t安全にDisposeする(Effects_Hit_Great); TJAPlayer3.t安全にDisposeする(Effects_Hit_Great_Big); TJAPlayer3.t安全にDisposeする(Effects_Roll); #endregion #region レーン TJAPlayer3.t安全にDisposeする(Lane_Base); TJAPlayer3.t安全にDisposeする(Lane_Text); TJAPlayer3.t安全にDisposeする(ref Lane_Red); TJAPlayer3.t安全にDisposeする(ref Lane_Blue); TJAPlayer3.t安全にDisposeする(ref Lane_Yellow); TJAPlayer3.t安全にDisposeする(ref Lane_Background_Main); TJAPlayer3.t安全にDisposeする(ref Lane_Background_Sub); TJAPlayer3.t安全にDisposeする(ref Lane_Background_GoGo); #endregion #region 終了演出 TJAPlayer3.t安全にDisposeする(End_Clear_L); TJAPlayer3.t安全にDisposeする(End_Clear_R); TJAPlayer3.t安全にDisposeする(ref End_Clear_Text); TJAPlayer3.t安全にDisposeする(ref End_Clear_Text_Effect); #endregion #region ゲームモード TJAPlayer3.t安全にDisposeする(ref GameMode_Timer_Tick); TJAPlayer3.t安全にDisposeする(ref GameMode_Timer_Frame); #endregion #region ステージ失敗 TJAPlayer3.t安全にDisposeする(ref Failed_Game); TJAPlayer3.t安全にDisposeする(ref Failed_Stage); #endregion #region ランナー TJAPlayer3.t安全にDisposeする(ref Runner); #endregion #region DanC TJAPlayer3.t安全にDisposeする(ref DanC_Background); TJAPlayer3.t安全にDisposeする(DanC_Gauge); TJAPlayer3.t安全にDisposeする(ref DanC_Base); TJAPlayer3.t安全にDisposeする(ref DanC_Failed); TJAPlayer3.t安全にDisposeする(ref DanC_Number); TJAPlayer3.t安全にDisposeする(ref DanC_ExamRange); TJAPlayer3.t安全にDisposeする(ref DanC_ExamUnit); TJAPlayer3.t安全にDisposeする(ref DanC_ExamType); TJAPlayer3.t安全にDisposeする(ref DanC_Screen); #endregion #region PuchiChara TJAPlayer3.t安全にDisposeする(ref PuchiChara); #endregion #endregion #region 6_結果発表 TJAPlayer3.t安全にDisposeする(ref Result_Background); TJAPlayer3.t安全にDisposeする(ref Result_FadeIn); TJAPlayer3.t安全にDisposeする(ref Result_Gauge); TJAPlayer3.t安全にDisposeする(ref Result_Gauge_Base); TJAPlayer3.t安全にDisposeする(ref Result_Gauge_Hard); TJAPlayer3.t安全にDisposeする(ref Result_Gauge_ExHard); TJAPlayer3.t安全にDisposeする(ref Result_Gauge_Base_Hard); TJAPlayer3.t安全にDisposeする(ref Result_Gauge_Base_ExHard); TJAPlayer3.t安全にDisposeする(ref Result_Judge); TJAPlayer3.t安全にDisposeする(ref Result_Header); TJAPlayer3.t安全にDisposeする(ref Result_Number); TJAPlayer3.t安全にDisposeする(ref Result_Panel); TJAPlayer3.t安全にDisposeする(ref Result_Score_Text); TJAPlayer3.t安全にDisposeする(ref Result_Score_Number); TJAPlayer3.t安全にDisposeする(ref Result_Dan); #endregion #region 7_終了画面 TJAPlayer3.t安全にDisposeする(ref Exit_Background); #endregion }