using System.Drawing;\r
using System.Diagnostics;\r
using FDK;\r
+using System.Runtime.Serialization;\r
+using System.Threading;\r
\r
namespace DTXMania\r
{\r
+\r
internal class CStageコンフィグ : CStage\r
{\r
- // プロパティ\r
+ CActFIFOWhite actFIFO;\r
+ CActConfigKeyAssign actKeyAssign;\r
+ CActConfigList actList;\r
+ CActオプションパネル actオプションパネル;\r
+ bool bメニューにフォーカス中;\r
+ STキー反復用カウンタ ctキー反復用;\r
+ const int DESC_H = 0x80;\r
+ const int DESC_W = 220;\r
+ EItemPanelモード eItemPanelモード;\r
+ Font ftフォント;\r
+ int n現在のメニュー番号;\r
+ CTexture txMenuカーソル;\r
+ CTextureAf tx下部パネル;\r
+ CTextureAf tx上部パネル;\r
+ CTexture tx説明文パネル;\r
+ CTexture tx背景;\r
+ CPrivateFastFont prvFont;\r
+ CTexture[,] txMenuItemLeft;\r
+ STDGBSValue<float> fDisplayLagTimeBaseMs;\r
+\r
+ enum EItemPanelモード\r
+ {\r
+ パッド一覧,\r
+ キーコード一覧\r
+ }\r
+\r
+ [StructLayout(LayoutKind.Sequential)]\r
+ struct STキー反復用カウンタ\r
+ {\r
+ public CCounter Up;\r
+ public CCounter Down;\r
+ public CCounter R;\r
+ public CCounter B;\r
+ public CCounter this[int index]\r
+ {\r
+ get\r
+ {\r
+ switch (index)\r
+ {\r
+ case 0:\r
+ return this.Up;\r
+\r
+ case 1:\r
+ return this.Down;\r
+\r
+ case 2:\r
+ return this.R;\r
+\r
+ case 3:\r
+ return this.B;\r
+ }\r
+ throw new IndexOutOfRangeException();\r
+ }\r
+ set\r
+ {\r
+ switch (index)\r
+ {\r
+ case 0:\r
+ this.Up = value;\r
+ return;\r
\r
- //public CActDFPFont actFont { get; private set; }\r
+ case 1:\r
+ this.Down = value;\r
+ return;\r
\r
+ case 2:\r
+ this.R = value;\r
+ return;\r
\r
- // コンストラクタ\r
+ case 3:\r
+ this.B = value;\r
+ return;\r
+ }\r
+ throw new IndexOutOfRangeException();\r
+ }\r
+ }\r
+ }\r
\r
public CStageコンフィグ()\r
{\r
- //CActDFPFont font;\r
- base.eステージID = CStage.Eステージ.コンフィグ;\r
- base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
- //this.actFont = font = new CActDFPFont();\r
- //base.list子Activities.Add( font );\r
- base.list子Activities.Add( this.actFIFO = new CActFIFOWhite() );\r
- base.list子Activities.Add( this.actList = new CActConfigList() );\r
- base.list子Activities.Add( this.actKeyAssign = new CActConfigKeyAssign() );\r
- base.list子Activities.Add( this.actオプションパネル = new CActオプションパネル() );\r
- base.b活性化してない = true;\r
+ eステージID = CStage.Eステージ.コンフィグ;\r
+ eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+ list子Activities.Add(actFIFO = new CActFIFOWhite());\r
+ list子Activities.Add(actList = new CActConfigList());\r
+ list子Activities.Add(actKeyAssign = new CActConfigKeyAssign());\r
+ list子Activities.Add(actオプションパネル =\r
+ new CActオプションパネル(EOptionPanelDirection.Horizontal));\r
+ b活性化してない = true;\r
+ }\r
+\r
+ public void tアサイン完了通知()\r
+ {\r
+ this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
+ }\r
+\r
+ public void tパッド選択通知(EPad pad)\r
+ {\r
+ this.actKeyAssign.t開始(pad, this.actList.ib現在の選択項目.label);\r
+ this.eItemPanelモード = EItemPanelモード.キーコード一覧;\r
}\r
- \r
- \r
- // メソッド\r
-\r
- public void tアサイン完了通知() // CONFIGにのみ存在\r
- { //\r
- this.eItemPanelモード = EItemPanelモード.パッド一覧; //\r
- } //\r
- public void tパッド選択通知( EKeyConfigPart part, EKeyConfigPad pad ) //\r
- { //\r
- this.actKeyAssign.t開始( part, pad, this.actList.ib現在の選択項目.str項目名 ); //\r
- this.eItemPanelモード = EItemPanelモード.キーコード一覧; //\r
- } //\r
- public void t項目変更通知() // OPTIONと共通\r
- { //\r
- this.t説明文パネルに現在選択されている項目の説明を描画する(); //\r
- } //\r
-\r
- \r
- // CStage 実装\r
+\r
+ public void t項目変更通知()\r
+ {\r
+ this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+ }\r
+\r
\r
public override void On活性化()\r
{\r
- Trace.TraceInformation( "コンフィグステージを活性化します。" );\r
- Trace.Indent();\r
- try\r
+ if (base.b活性化してない)\r
{\r
- this.n現在のメニュー番号 = 0; //\r
- this.ftフォント = new Font( "MS PGothic", 26f / 2 * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel ); //\r
- for ( int i = 0; i < 4; i++ ) //\r
- { //\r
- this.ctキー反復用[ i ] = new CCounter( 0, 0, 0, CDTXMania.Timer ); //\r
- } //\r
- this.bメニューにフォーカス中 = true; // ここまでOPTIONと共通\r
- this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
- }\r
- finally\r
- {\r
- Trace.TraceInformation( "コンフィグステージの活性化を完了しました。" );\r
- Trace.Unindent();\r
+ Trace.TraceInformation("コンフィグステージを活性化します。");\r
+ Trace.Indent();\r
+ try\r
+ {\r
+ this.n現在のメニュー番号 = 0;\r
+ this.ftフォント = new Font("MS PGothic", 26f / 2 * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel); //\r
+ for (int i = 0; i < 4; i++)\r
+ {\r
+ this.ctキー反復用[i] = new CCounter(0, 0, 0, CDTXMania.Instance.Timer);\r
+ }\r
+ this.bメニューにフォーカス中 = true;\r
+ // ここまでOPTIONと共通\r
+ this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
+\r
+ fDisplayLagTimeBaseMs = new STDGBSValue<float>();\r
+ for (EPart i = EPart.Drums; i <= EPart.Bass; ++i)\r
+ {\r
+ fDisplayLagTimeBaseMs[i] = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[i] /\r
+ (CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1);\r
+ }\r
+ actオプションパネル.Pos = CDTXMania.Instance.Coordinates.OptionPanelSelect;\r
+ }\r
+ finally\r
+ {\r
+ Trace.TraceInformation("コンフィグステージの活性化を完了しました。");\r
+ Trace.Unindent();\r
+ }\r
+ base.On活性化();\r
}\r
- base.On活性化(); // 2011.3.14 yyagi: On活性化()をtryの中から外に移動\r
}\r
+\r
public override void On非活性化()\r
{\r
- Trace.TraceInformation( "コンフィグステージを非活性化します。" );\r
- Trace.Indent();\r
- try\r
+ if (base.b活性化してる)\r
{\r
- CDTXMania.ConfigIni.t書き出し( CDTXMania.strEXEのあるフォルダ + "Config.ini" ); // CONFIGだけ\r
- if( this.ftフォント != null ) // 以下OPTIONと共通\r
+ Trace.TraceInformation("コンフィグステージを非活性化します。");\r
+ Trace.Indent();\r
+ try\r
{\r
- this.ftフォント.Dispose();\r
- this.ftフォント = null;\r
+ CDTXMania.Instance.SaveConfig();\r
+ TextureFactory.t安全にDisposeする(ref this.ftフォント);\r
+ for (int i = 0; i < 4; i++)\r
+ {\r
+ this.ctキー反復用[i] = null;\r
+ }\r
+\r
+ CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value = (int)(fDisplayLagTimeBaseMs.Drums * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums + 1));\r
+ CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar.Value = (int)(fDisplayLagTimeBaseMs.Guitar * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Guitar + 1));\r
+ CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass.Value = (int)(fDisplayLagTimeBaseMs.Bass * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Bass + 1));\r
+\r
+ base.On非活性化();\r
}\r
- for( int i = 0; i < 4; i++ )\r
+ catch (UnauthorizedAccessException e)\r
{\r
- this.ctキー反復用[ i ] = null;\r
+ Trace.TraceError(e.Message + "ファイルが読み取り専用になっていないか、管理者権限がないと書き込めなくなっていないか等を確認して下さい");\r
+ }\r
+ catch (Exception e)\r
+ {\r
+ Trace.TraceError(e.Message);\r
+ }\r
+ finally\r
+ {\r
+ Trace.TraceInformation("コンフィグステージの非活性化を完了しました。");\r
+ Trace.Unindent();\r
}\r
- base.On非活性化();\r
- }\r
- catch ( UnauthorizedAccessException e )\r
- {\r
- Trace.TraceError( e.Message + "ファイルが読み取り専用になっていないか、管理者権限がないと書き込めなくなっていないか等を確認して下さい" );\r
- }\r
- catch ( Exception e )\r
- {\r
- Trace.TraceError( e.Message );\r
- }\r
- finally\r
- {\r
- Trace.TraceInformation( "コンフィグステージの非活性化を完了しました。" );\r
- Trace.Unindent();\r
}\r
}\r
- public override void OnManagedリソースの作成() // OPTIONと画像以外共通\r
+\r
+ public override void OnManagedリソースの作成()\r
{\r
- if( !base.b活性化してない )\r
+ if (base.b活性化してる)\r
{\r
- this.tx背景 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig background.jpg" ), false );\r
- this.tx上部パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenConfig header panel.png" ), true );\r
- this.tx下部パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenConfig footer panel.png" ), true );\r
- this.txMenuカーソル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig menu cursor.png" ), false );\r
-\r
- prvFont = new CPrivateFastFont( CSkin.Path( @"Graphics\fonts\mplus-1p-heavy.ttf" ), (int) ( 18 * Scale.Y ) );\r
- string[] strMenuItem = { "System", "Drums", "Guitar", "Bass", "Exit" };\r
- txMenuItemLeft = new CTexture[ strMenuItem.Length, 2 ];\r
- for ( int i = 0; i < strMenuItem.Length; i++ )\r
+ this.tx背景 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig background.jpg"), false);\r
+ this.tx上部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig header panel.png"), true);\r
+ this.tx下部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig footer panel.png"), true);\r
+ this.txMenuカーソル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig menu cursor.png"), false);\r
+\r
+ prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));\r
+ string[] strMenuItem = { \r
+ "strCfgSysMenuItem",\r
+ "strCfgDrMenuItem",\r
+ "strCfgGtMenuItem",\r
+ "strCfgBsMenuItem",\r
+ "strCfgExitMenuItem"\r
+ };\r
+ txMenuItemLeft = new CTexture[strMenuItem.Length, 2];\r
+ for (int i = 0; i < strMenuItem.Length; i++)\r
{\r
Bitmap bmpStr;\r
- bmpStr = prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );\r
- txMenuItemLeft[ i, 0 ] = CDTXMania.tテクスチャの生成( bmpStr, false );\r
+ string s = CDTXMania.Instance.Resources.Label( strMenuItem[ i ] );\r
+ bmpStr = prvFont.DrawPrivateFont(s, Color.White, Color.Black);\r
+ txMenuItemLeft[i, 0] = TextureFactory.tテクスチャの生成(bmpStr, false);\r
bmpStr.Dispose();\r
- bmpStr = prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed );\r
- txMenuItemLeft[ i, 1 ] = CDTXMania.tテクスチャの生成( bmpStr, false );\r
+ bmpStr = prvFont.DrawPrivateFont(s, Color.White, Color.Black, Color.Yellow, Color.OrangeRed);\r
+ txMenuItemLeft[i, 1] = TextureFactory.tテクスチャの生成(bmpStr, false);\r
bmpStr.Dispose();\r
}\r
- if( this.bメニューにフォーカス中 )\r
+ if (this.bメニューにフォーカス中)\r
{\r
this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
}\r
base.OnManagedリソースの作成();\r
}\r
}\r
- public override void OnManagedリソースの解放() // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)\r
+\r
+ public override void OnManagedリソースの解放()\r
{\r
- if( !base.b活性化してない )\r
+ if (base.b活性化してる)\r
{\r
- CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
- CDTXMania.tテクスチャの解放( ref this.tx上部パネル );\r
- CDTXMania.tテクスチャの解放( ref this.tx下部パネル );\r
- CDTXMania.tテクスチャの解放( ref this.txMenuカーソル );\r
- CDTXMania.tテクスチャの解放( ref this.tx説明文パネル );\r
+ TextureFactory.tテクスチャの解放(ref this.tx背景);\r
+ TextureFactory.tテクスチャの解放(ref this.tx上部パネル);\r
+ TextureFactory.tテクスチャの解放(ref this.tx下部パネル);\r
+ TextureFactory.tテクスチャの解放(ref this.txMenuカーソル);\r
+ TextureFactory.tテクスチャの解放(ref this.tx説明文パネル);\r
prvFont.Dispose();\r
- for ( int i = 0; i < txMenuItemLeft.GetLength( 0 ); i++ )\r
+ for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)\r
{\r
- txMenuItemLeft[ i, 0 ].Dispose();\r
- txMenuItemLeft[ i, 0 ] = null;\r
- txMenuItemLeft[ i, 1 ].Dispose();\r
- txMenuItemLeft[ i, 1 ] = null;\r
+ TextureFactory.tテクスチャの解放(ref txMenuItemLeft[i, 0]);\r
+ TextureFactory.tテクスチャの解放(ref txMenuItemLeft[i, 1]);\r
}\r
txMenuItemLeft = null;\r
base.OnManagedリソースの解放();\r
}\r
}\r
+\r
public override int On進行描画()\r
{\r
- if( base.b活性化してない )\r
- return 0;\r
-\r
- if( base.b初めての進行描画 )\r
+ if (base.b活性化してる)\r
{\r
- base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
- this.actFIFO.tフェードイン開始();\r
- base.b初めての進行描画 = false;\r
- }\r
+ if (base.b初めての進行描画)\r
+ {\r
+ base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
+ this.actFIFO.tフェードイン開始();\r
+ base.b初めての進行描画 = false;\r
+ }\r
\r
- // 描画\r
-\r
- #region [ 背景 ]\r
- //---------------------\r
- if( this.tx背景 != null )\r
- this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
- //---------------------\r
- #endregion\r
- #region [ メニューカーソル ]\r
- //---------------------\r
- if ( this.txMenuカーソル != null )\r
- {\r
- Rectangle rectangle;\r
- this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;\r
- int x = (int) ( 0x37 * Scale.X );\r
- int y = (int) ( ( 0x61 + ( this.n現在のメニュー番号 * 0x19 ) ) * Scale.Y );\r
- int num3 = (int) ( 170 * Scale.X );\r
- this.txMenuカーソル.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, (int) ( 0x10 * Scale.X ), (int) ( 0x20 * Scale.Y ) ) );\r
- this.txMenuカーソル.t2D描画( CDTXMania.app.Device, ( x + num3 ) - 0x10 * Scale.X, y, new Rectangle( (int) ( 0x10 * Scale.X ), 0, (int) ( 0x10 * Scale.X ), (int) ( 0x20 * Scale.Y ) ) );\r
- x += (int) ( 0x10 * Scale.X );\r
- for ( num3 -= (int) ( 0x20 * Scale.X ); num3 > 0; num3 -= rectangle.Width )\r
+ // 描画\r
+ if (this.tx背景 != null)\r
{\r
- rectangle = new Rectangle( (int) ( 8 * Scale.X ), 0, (int) ( 0x10 * Scale.X ), (int) ( 0x20 * Scale.Y ) );\r
- if ( num3 < (int) ( 0x10 * Scale.X ) )\r
- {\r
- rectangle.Width -= (int) ( 0x10 * Scale.X ) - num3;\r
- }\r
- this.txMenuカーソル.t2D描画( CDTXMania.app.Device, x, y, rectangle );\r
- x += rectangle.Width;\r
+ this.tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
}\r
- }\r
- //---------------------\r
- #endregion\r
- #region [ メニュー ]\r
- //---------------------\r
- int menuY = (int) ( 100 * Scale.Y ) - 20;\r
- int stepY = (int) ( 25 * Scale.Y );\r
- for ( int i = 0; i < txMenuItemLeft.GetLength( 0 ); i++ )\r
- {\r
- //Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?\r
- // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :\r
- // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );\r
- //txMenuItemLeft = CDTXMania.tテクスチャの生成( bmpStr, false );\r
- int flag = ( this.n現在のメニュー番号 == i ) ? 1 : 0;\r
- int num4 = txMenuItemLeft[ i, flag ].sz画像サイズ.Width;\r
- txMenuItemLeft[ i, flag ].t2D描画( CDTXMania.app.Device, 0x8a * Scale.X - ( num4 / 2 ), menuY ); //55\r
- //txMenuItem.Dispose();\r
- menuY += stepY;\r
- }\r
- //---------------------\r
- #endregion\r
- #region [ 説明文パネル ]\r
- //---------------------\r
- if ( this.tx説明文パネル != null )\r
- this.tx説明文パネル.t2D描画( CDTXMania.app.Device, 0x1d * Scale.X, 0xf8 * Scale.Y );\r
- //---------------------\r
- #endregion\r
- #region [ アイテム ]\r
- //---------------------\r
- switch( this.eItemPanelモード )\r
- {\r
- case EItemPanelモード.パッド一覧:\r
- this.actList.t進行描画( !this.bメニューにフォーカス中 );\r
- break;\r
\r
- case EItemPanelモード.キーコード一覧:\r
- this.actKeyAssign.On進行描画();\r
- break;\r
- }\r
- //---------------------\r
- #endregion\r
- #region [ 上部パネル ]\r
- //---------------------\r
- if( this.tx上部パネル != null )\r
- this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, 0 );\r
- //---------------------\r
- #endregion\r
- #region [ 下部パネル ]\r
- //---------------------\r
- if( this.tx下部パネル != null )\r
- this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height );\r
- //---------------------\r
- #endregion\r
- #region [ オプションパネル ]\r
- //---------------------\r
- this.actオプションパネル.On進行描画();\r
- //---------------------\r
- #endregion\r
- #region [ フェードイン・アウト ]\r
- //---------------------\r
- switch( base.eフェーズID )\r
- {\r
- case CStage.Eフェーズ.共通_フェードイン:\r
- if( this.actFIFO.On進行描画() != 0 )\r
+ #region [ メニューカーソル ]\r
+ if (this.txMenuカーソル != null)\r
+ {\r
+ Rectangle rectangle;\r
+ this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;\r
+ int x = (int)(0x37 * Scale.X);\r
+ int y = (int)((0x61 + (this.n現在のメニュー番号 * 0x19)) * Scale.Y);\r
+ int num3 = (int)(170 * Scale.X);\r
+ this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
+ this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, (x + num3) - 0x10 * Scale.X, y, new Rectangle((int)(0x10 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));\r
+ x += (int)(0x10 * Scale.X);\r
+ for (num3 -= (int)(0x20 * Scale.X); num3 > 0; num3 -= rectangle.Width)\r
{\r
- CDTXMania.Skin.bgmコンフィグ画面.t再生する();\r
- base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+ rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));\r
+ if (num3 < (int)(0x10 * Scale.X))\r
+ {\r
+ rectangle.Width -= (int)(0x10 * Scale.X) - num3;\r
+ }\r
+ this.txMenuカーソル.t2D描画(CDTXMania.Instance.Device, x, y, rectangle);\r
+ x += rectangle.Width;\r
}\r
- break;\r
+ }\r
+ #endregion\r
\r
- case CStage.Eフェーズ.共通_フェードアウト:\r
- if( this.actFIFO.On進行描画() == 0 )\r
- {\r
+ #region [ メニュー ]\r
+ int menuY = (int)(100 * Scale.Y) - 20;\r
+ int stepY = (int)(25 * Scale.Y);\r
+ for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)\r
+ {\r
+ //Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?\r
+ // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :\r
+ // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );\r
+ //txMenuItemLeft = TextureFactory.tテクスチャの生成( bmpStr, false );\r
+ int flag = (this.n現在のメニュー番号 == i) ? 1 : 0;\r
+ int num4 = txMenuItemLeft[i, flag].sz画像サイズ.Width;\r
+ txMenuItemLeft[i, flag].t2D描画(CDTXMania.Instance.Device, 0x8a * Scale.X - (num4 / 2), menuY); //55\r
+ //txMenuItem.Dispose();\r
+ menuY += stepY;\r
+ }\r
+ #endregion\r
+\r
+ #region [ 説明文パネル ]\r
+ if (this.tx説明文パネル != null)\r
+ {\r
+ this.tx説明文パネル.t2D描画(CDTXMania.Instance.Device, 0x1d * Scale.X, 0xf8 * Scale.Y);\r
+ }\r
+ #endregion\r
+\r
+ #region [ アイテム ]\r
+ switch (this.eItemPanelモード)\r
+ {\r
+ case EItemPanelモード.パッド一覧:\r
+ this.actList.t進行描画(!this.bメニューにフォーカス中);\r
break;\r
- }\r
- return 1;\r
- }\r
- //---------------------\r
- #endregion\r
-\r
- #region [ Enumerating Songs ]\r
- // CActEnumSongs側で表示する\r
- #endregion\r
-\r
- // キー入力\r
- #region [ キー入力 ]\r
- if ( ( base.eフェーズID != CStage.Eフェーズ.共通_通常状態 )\r
- || this.actKeyAssign.bキー入力待ちの最中である\r
- || CDTXMania.act現在入力を占有中のプラグイン != null )\r
- return 0;\r
-\r
- // 曲データの一覧取得中は、キー入力を無効化する\r
- if ( !CDTXMania.EnumSongs.IsEnumerating || CDTXMania.actEnumSongs.bコマンドでの曲データ取得 != true )\r
- {\r
- if ( ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) )\r
+\r
+ case EItemPanelモード.キーコード一覧:\r
+ this.actKeyAssign.On進行描画();\r
+ break;\r
+ }\r
+ #endregion\r
+\r
+ #region [ 上部パネル ]\r
+ if (this.tx上部パネル != null)\r
{\r
- CDTXMania.Skin.sound取消音.t再生する();\r
- if ( !this.bメニューにフォーカス中 )\r
- {\r
- if ( this.eItemPanelモード == EItemPanelモード.キーコード一覧 )\r
+ this.tx上部パネル.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
+ }\r
+ #endregion\r
+\r
+ #region [ 下部パネル ]\r
+ if (this.tx下部パネル != null)\r
+ {\r
+ this.tx下部パネル.t2D描画(CDTXMania.Instance.Device, 0, SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height);\r
+ }\r
+ #endregion\r
+\r
+ #region [ オプションパネル ]\r
+ this.actオプションパネル.On進行描画();\r
+ #endregion\r
+\r
+ #region [ フェードイン・アウト ]\r
+ switch (base.eフェーズID)\r
+ {\r
+ case CStage.Eフェーズ.共通_フェードイン:\r
+ if (this.actFIFO.On進行描画() != 0)\r
{\r
- CDTXMania.stageコンフィグ.tアサイン完了通知();\r
- return 0;\r
+ CDTXMania.Instance.Skin.bgmコンフィグ画面.t再生する();\r
+ base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
}\r
- if ( !this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter ) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+ break;\r
+\r
+ case CStage.Eフェーズ.共通_フェードアウト:\r
+ if (this.actFIFO.On進行描画() == 0)\r
{\r
- this.bメニューにフォーカス中 = true;\r
+ break;\r
}\r
- this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
- this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
- }\r
- else\r
- {\r
- this.actFIFO.tフェードアウト開始();\r
- base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
- }\r
+ return 1;\r
}\r
- else if ( ( CDTXMania.Pad.b押されたDGB( Eパッド.CY ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.RD ) ) || ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LC ) || ( CDTXMania.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Return ) ) ) )\r
+ #endregion\r
+\r
+ // キー入力\r
+ #region [ キー入力 ]\r
+ if ((base.eフェーズID != CStage.Eフェーズ.共通_通常状態)\r
+ || this.actKeyAssign.bキー入力待ちの最中である\r
+ || CDTXMania.Instance.act現在入力を占有中のプラグイン != null)\r
+ {\r
+ return 0;\r
+ }\r
+\r
+ // 曲データの一覧取得中は、キー入力を無効化する\r
+ if (!CDTXMania.Instance.EnumSongs.IsEnumerating || !CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得)\r
{\r
- #region [ EXIT ]\r
- if ( this.n現在のメニュー番号 == 4 )\r
+ if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || CDTXMania.Instance.Pad.bCancelPadIsPressedDGB())\r
{\r
- CDTXMania.Skin.sound決定音.t再生する();\r
- this.actFIFO.tフェードアウト開始();\r
- base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
+ CDTXMania.Instance.Skin.sound取消音.t再生する();\r
+ if (!this.bメニューにフォーカス中)\r
+ {\r
+ if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)\r
+ {\r
+ CDTXMania.Instance.stageコンフィグ.tアサイン完了通知();\r
+ return 0;\r
+ }\r
+ if (this.actList.b楽器またはシステム用メニューである && !this.actList.bIsFocusingParameter) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+ {\r
+ this.bメニューにフォーカス中 = true;\r
+ }\r
+ this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
+ this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
+ }\r
+ else\r
+ {\r
+ this.actFIFO.tフェードアウト開始();\r
+ base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
+ }\r
}\r
- #endregion\r
- else if ( this.bメニューにフォーカス中 )\r
+ #region [ ← ]\r
+ else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow)) // 左カーソルキー\r
{\r
- CDTXMania.Skin.sound決定音.t再生する();\r
- this.bメニューにフォーカス中 = false;\r
- this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+ if (!this.bメニューにフォーカス中)\r
+ {\r
+ if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)\r
+ {\r
+ // キーコンフィグ画面中は、[←]押下に反応させない\r
+ return 0;\r
+ }\r
+ if (this.actList.bIsFocusingParameter)\r
+ {\r
+ // パラメータを増減している最中も、[←]押下に反応させない\r
+ return 0;\r
+ }\r
+ // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi\r
+ if (this.actList.b楽器またはシステム用メニューである && !this.actList.bIsFocusingParameter)\r
+ {\r
+ this.bメニューにフォーカス中 = true;\r
+ }\r
+ CDTXMania.Instance.Skin.sound取消音.t再生する();\r
+ this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
+ // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
+ this.actList.tEsc押下();\r
+ }\r
}\r
- else\r
+ #endregion\r
+ else if (\r
+ (CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
+ (CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
+ CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))\r
{\r
- switch ( this.eItemPanelモード )\r
+ #region [ EXIT ]\r
+ if (this.n現在のメニュー番号 == 4)\r
{\r
- case EItemPanelモード.パッド一覧:\r
- bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected; // #24525 2011.3.15 yyagi\r
- this.actList.tEnter押下();\r
- if ( this.actList.b現在選択されている項目はReturnToMenuである )\r
- {\r
- this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
- if ( bIsKeyAssignSelectedBeforeHitEnter == false ) // #24525 2011.3.15 yyagi\r
+ CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+ this.actFIFO.tフェードアウト開始();\r
+ base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
+ }\r
+ #endregion\r
+ else if (this.bメニューにフォーカス中)\r
+ {\r
+ CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+ this.bメニューにフォーカス中 = false;\r
+ this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+ }\r
+ else\r
+ {\r
+ switch (this.eItemPanelモード)\r
+ {\r
+ case EItemPanelモード.パッド一覧:\r
+ if (this.actList.tEnter押下())\r
{\r
- this.bメニューにフォーカス中 = true;\r
+ bメニューにフォーカス中 = true;\r
}\r
- }\r
- break;\r
+ break;\r
\r
- case EItemPanelモード.キーコード一覧:\r
- this.actKeyAssign.tEnter押下();\r
- break;\r
+ case EItemPanelモード.キーコード一覧:\r
+ this.actKeyAssign.tEnter押下();\r
+ break;\r
+ }\r
}\r
}\r
- }\r
- this.ctキー反復用.Up.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.UpArrow ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
- this.ctキー反復用.R.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.HH ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
- if ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.SD ) )\r
- {\r
- this.tカーソルを上へ移動する();\r
- }\r
- this.ctキー反復用.Down.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.DownArrow ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
- this.ctキー反復用.B.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.BD ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
- if ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LT ) )\r
- {\r
- this.tカーソルを下へ移動する();\r
- }\r
- }\r
- #endregion\r
- return 0;\r
- }\r
-\r
-\r
- // その他\r
-\r
- #region [ private ]\r
- //-----------------\r
- private enum EItemPanelモード\r
- {\r
- パッド一覧,\r
- キーコード一覧\r
- }\r
-\r
- [StructLayout( LayoutKind.Sequential )]\r
- private struct STキー反復用カウンタ\r
- {\r
- public CCounter Up;\r
- public CCounter Down;\r
- public CCounter R;\r
- public CCounter B;\r
- public CCounter this[ int index ]\r
- {\r
- get\r
- {\r
- switch( index )\r
+ #region [ → ]\r
+ else if (CDTXMania.Instance.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow)) // 右カーソルキー\r
{\r
- case 0:\r
- return this.Up;\r
-\r
- case 1:\r
- return this.Down;\r
-\r
- case 2:\r
- return this.R;\r
-\r
- case 3:\r
- return this.B;\r
+ #region [ EXIT ]\r
+ if (this.n現在のメニュー番号 == 4)\r
+ {\r
+ // 何もしない\r
+ }\r
+ #endregion\r
+ else if (this.bメニューにフォーカス中)\r
+ {\r
+ CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+ this.bメニューにフォーカス中 = false;\r
+ this.t説明文パネルに現在選択されている項目の説明を描画する();\r
+ }\r
}\r
- throw new IndexOutOfRangeException();\r
- }\r
- set\r
- {\r
- switch( index )\r
+ #endregion\r
+ this.ctキー反復用.Up.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
+ this.ctキー反復用.R.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtR) || CDTXMania.Instance.Pad.b押されている(EPad.BsR), new CCounter.DGキー処理(this.tカーソルを上へ移動する));\r
+ if (CDTXMania.Instance.Pad.b押された(EPad.SD))\r
{\r
- case 0:\r
- this.Up = value;\r
- return;\r
-\r
- case 1:\r
- this.Down = value;\r
- return;\r
-\r
- case 2:\r
- this.R = value;\r
- return;\r
-\r
- case 3:\r
- this.B = value;\r
- return;\r
+ this.tカーソルを上へ移動する();\r
+ }\r
+ this.ctキー反復用.Down.tキー反復(CDTXMania.Instance.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
+ this.ctキー反復用.B.tキー反復(CDTXMania.Instance.Pad.b押されている(EPad.GtB) || CDTXMania.Instance.Pad.b押されている(EPad.BsB), new CCounter.DGキー処理(this.tカーソルを下へ移動する));\r
+ if (CDTXMania.Instance.Pad.b押された(EPad.LT))\r
+ {\r
+ this.tカーソルを下へ移動する();\r
}\r
- throw new IndexOutOfRangeException();\r
}\r
+ #endregion\r
}\r
+ return 0;\r
}\r
\r
- private CActFIFOWhite actFIFO;\r
- private CActConfigKeyAssign actKeyAssign;\r
- private CActConfigList actList;\r
- private CActオプションパネル actオプションパネル;\r
- private bool bメニューにフォーカス中;\r
- private STキー反復用カウンタ ctキー反復用;\r
- private const int DESC_H = 0x80;\r
- private const int DESC_W = 220;\r
- private EItemPanelモード eItemPanelモード;\r
- private Font ftフォント;\r
- private int n現在のメニュー番号;\r
- private CTexture txMenuカーソル;\r
- private CTextureAf tx下部パネル;\r
- private CTextureAf tx上部パネル;\r
- private CTexture tx説明文パネル;\r
- private CTexture tx背景;\r
- private CPrivateFastFont prvFont;\r
- private CTexture[ , ] txMenuItemLeft;\r
\r
private void tカーソルを下へ移動する()\r
{\r
- if( !this.bメニューにフォーカス中 )\r
+ if (!this.bメニューにフォーカス中)\r
{\r
- switch( this.eItemPanelモード )\r
+ switch (this.eItemPanelモード)\r
{\r
case EItemPanelモード.パッド一覧:\r
- this.actList.t次に移動();\r
+ this.actList.OnNext();\r
return;\r
\r
case EItemPanelモード.キーコード一覧:\r
- this.actKeyAssign.t次に移動();\r
+ this.actKeyAssign.OnNext();\r
return;\r
}\r
}\r
else\r
{\r
- CDTXMania.Skin.soundカーソル移動音.t再生する();\r
- this.n現在のメニュー番号 = ( this.n現在のメニュー番号 + 1 ) % 5;\r
- switch( this.n現在のメニュー番号 )\r
+ CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+ this.n現在のメニュー番号 = (this.n現在のメニュー番号 + 1) % 5;\r
+ switch (this.n現在のメニュー番号)\r
{\r
case 0:\r
- this.actList.t項目リストの設定・System();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.System);\r
break;\r
\r
- //case 1:\r
- // this.actList.t項目リストの設定・KeyAssignDrums();\r
- // break;\r
-\r
- //case 2:\r
- // this.actList.t項目リストの設定・KeyAssignGuitar();\r
- // break;\r
-\r
- //case 3:\r
- // this.actList.t項目リストの設定・KeyAssignBass();\r
- // break;\r
-\r
case 1:\r
- this.actList.t項目リストの設定・Drums();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Drums);\r
break;\r
\r
case 2:\r
- this.actList.t項目リストの設定・Guitar();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Guitar);\r
break;\r
\r
case 3:\r
- this.actList.t項目リストの設定・Bass();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Bass);\r
break;\r
\r
case 4:\r
- this.actList.t項目リストの設定・Exit();\r
+ this.actList.t項目リストの設定_Exit();\r
break;\r
}\r
this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
}\r
}\r
+\r
private void tカーソルを上へ移動する()\r
{\r
- if( !this.bメニューにフォーカス中 )\r
+ if (!this.bメニューにフォーカス中)\r
{\r
- switch( this.eItemPanelモード )\r
+ switch (this.eItemPanelモード)\r
{\r
case EItemPanelモード.パッド一覧:\r
- this.actList.t前に移動();\r
+ this.actList.OnPrevious();\r
return;\r
\r
case EItemPanelモード.キーコード一覧:\r
- this.actKeyAssign.t前に移動();\r
+ this.actKeyAssign.OnPrevious();\r
return;\r
}\r
}\r
else\r
{\r
- CDTXMania.Skin.soundカーソル移動音.t再生する();\r
- this.n現在のメニュー番号 = ( ( this.n現在のメニュー番号 - 1 ) + 5 ) % 5;\r
- switch( this.n現在のメニュー番号 )\r
+ CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+ this.n現在のメニュー番号 = ((this.n現在のメニュー番号 - 1) + 5) % 5;\r
+ switch (this.n現在のメニュー番号)\r
{\r
case 0:\r
- this.actList.t項目リストの設定・System();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.System);\r
break;\r
\r
- //case 1:\r
- // this.actList.t項目リストの設定・KeyAssignDrums();\r
- // break;\r
-\r
- //case 2:\r
- // this.actList.t項目リストの設定・KeyAssignGuitar();\r
- // break;\r
-\r
- //case 3:\r
- // this.actList.t項目リストの設定・KeyAssignBass();\r
- // break;\r
case 1:\r
- this.actList.t項目リストの設定・Drums();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Drums);\r
break;\r
\r
case 2:\r
- this.actList.t項目リストの設定・Guitar();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Guitar);\r
break;\r
\r
case 3:\r
- this.actList.t項目リストの設定・Bass();\r
+ this.actList.t項目リストの設定(CActConfigList.Eメニュー種別.Bass);\r
break;\r
\r
case 4:\r
- this.actList.t項目リストの設定・Exit();\r
+ this.actList.t項目リストの設定_Exit();\r
break;\r
}\r
this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
}\r
}\r
+\r
private void t説明文パネルに現在選択されているメニューの説明を描画する()\r
{\r
- try\r
+ using (Bitmap image = new Bitmap((int)(220 * 2 * Scale.X), (int)(192 * 2 * Scale.Y)))\r
{\r
- var image = new Bitmap( (int) ( 220 * 2 * Scale.X ), (int) ( 192 * 2 * Scale.Y ) ); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)\r
- var graphics = Graphics.FromImage( image );\r
- graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
- \r
- string[,] str = new string[ 2, 2 ];\r
- switch( this.n現在のメニュー番号 )\r
- {\r
- case 0:\r
- str[ 0, 0 ] = "システムに関係する項目を設定します。";\r
- str[ 0, 1 ] = "";\r
- str[ 1, 0 ] = "Settings for an overall systems.";\r
- break;\r
-\r
- //case 1:\r
- // str[0, 0] = "ドラムのキー入力に関する項目を設";\r
- // str[0, 1] = "定します。";\r
- // str[1, 0] = "Settings for the drums key/pad inputs.";\r
- // str[1, 1] = "";\r
- // break;\r
-\r
- //case 2:\r
- // str[0, 0] = "ギターのキー入力に関する項目を設";\r
- // str[0, 1] = "定します。";\r
- // str[1, 0] = "Settings for the guitar key/pad inputs.";\r
- // str[1, 1] = "";\r
- // break;\r
-\r
- //case 3:\r
- // str[0, 0] = "ベースのキー入力に関する項目を設";\r
- // str[0, 1] = "定します。";\r
- // str[1, 0] = "Settings for the bass key/pad inputs.";\r
- // str[1, 1] = "";\r
- // break;\r
- case 1:\r
- str[ 0, 0 ] = "ドラムの演奏に関する項目を設定します。";\r
- str[ 0, 1 ] = "";\r
- str[ 1, 0 ] = "Settings to play the drums.";\r
- str[ 1, 1 ] = "";\r
- break;\r
-\r
- case 2:\r
- str[ 0, 0 ] = "ギターの演奏に関する項目を設定します。";\r
- str[ 0, 1 ] = "";\r
- str[ 1, 0 ] = "Settings to play the guitar.";\r
- str[ 1, 1 ] = "";\r
- break;\r
-\r
- case 3:\r
- str[ 0, 0 ] = "ベースの演奏に関する項目を設定します。";\r
- str[ 0, 1 ] = "";\r
- str[ 1, 0 ] = "Settings to play the bass.";\r
- str[ 1, 1 ] = "";\r
- break;\r
-\r
- case 4:\r
- str[ 0, 0 ] = "設定を保存し、コンフィグ画面を終了します。";\r
- str[ 0, 1 ] = "";\r
- str[ 1, 0 ] = "Save the settings and exit from\nCONFIGURATION menu.";\r
- str[ 1, 1 ] = "";\r
- break;\r
- }\r
-\r
- int c = ( CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja" ) ? 0 : 1;\r
- for ( int i = 0; i < 2; i++ )\r
+ // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)\r
+ using (Graphics graphics = Graphics.FromImage(image))\r
{\r
- graphics.DrawString( str[ c, i ], this.ftフォント, Brushes.White, new PointF( 4f * Scale.X, ( i * 30 ) * Scale.Y ) );\r
+ graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
+\r
+ string[] desc = {\r
+ "strCfgSysMenuDesc",\r
+ "strCfgDrMenuDesc",\r
+ "strCfgGtMenuDesc",\r
+ "strCfgBsMenuDesc",\r
+ "strCfgExitMenuDesc"\r
+ };\r
+ string str = CDTXMania.Instance.Resources.Explanation( desc[ this.n現在のメニュー番号 ] );\r
+\r
+ //int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
+ graphics.DrawString(str, this.ftフォント, Brushes.White, new PointF(4f * Scale.X, 0));\r
}\r
- graphics.Dispose();\r
- if ( this.tx説明文パネル != null )\r
+ if (this.tx説明文パネル != null)\r
{\r
this.tx説明文パネル.Dispose();\r
}\r
- this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
+ this.tx説明文パネル = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
// this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
// this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
- image.Dispose();\r
- }\r
- catch ( CTextureCreateFailedException )\r
- {\r
- Trace.TraceError( "説明文テクスチャの作成に失敗しました。" );\r
- this.tx説明文パネル = null;\r
}\r
}\r
+\r
private void t説明文パネルに現在選択されている項目の説明を描画する()\r
{\r
- try\r
+ using (Bitmap image = new Bitmap((int)(220 * Scale.X), (int)(192 * Scale.Y)))\r
{\r
- var image = new Bitmap( (int) ( 220 * Scale.X ), (int) ( 192 * Scale.Y ) ); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する・・・のは中止。処理速度向上のため。)\r
- var graphics = Graphics.FromImage( image );\r
- graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
-\r
- CItemBase item = this.actList.ib現在の選択項目;\r
- if ( ( item.str説明文 != null ) && ( item.str説明文.Length > 0 ) )\r
+ // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する・・・のは中止。処理速度向上のため。)\r
+ using (Graphics graphics = Graphics.FromImage(image))\r
{\r
- //int num = 0;\r
- //foreach( string str in item.str説明文.Split( new char[] { '\n' } ) )\r
- //{\r
- // graphics.DrawString( str, this.ftフォント, Brushes.White, new PointF( 4f * Scale.X, (float) num * Scale.Y ) );\r
- // num += 30;\r
- //}\r
- graphics.DrawString( item.str説明文, this.ftフォント, Brushes.White, new RectangleF( 4f * Scale.X, (float) 0 * Scale.Y, 630, 430 ) );\r
+ graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;\r
+ COptionBase item = this.actList.ib現在の選択項目;\r
+ if (!string.IsNullOrEmpty(item.explanation))\r
+ {\r
+ graphics.DrawString(item.explanation, this.ftフォント, Brushes.White, new RectangleF(4f * Scale.X, (float)0 * Scale.Y, 630, 430));\r
+ }\r
}\r
- graphics.Dispose();\r
- if( this.tx説明文パネル != null )\r
+ if (this.tx説明文パネル != null)\r
{\r
this.tx説明文パネル.Dispose();\r
}\r
- this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
+ this.tx説明文パネル = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
//this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
//this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
- image.Dispose();\r
- }\r
- catch( CTextureCreateFailedException )\r
- {\r
- Trace.TraceError( "説明文パネルテクスチャの作成に失敗しました。" );\r
- this.tx説明文パネル = null;\r
}\r
}\r
- //-----------------\r
- #endregion\r
}\r
}\r