OSDN Git Service

#27029 BD Group に関わる簡単な各種警告・備考を、コンフィグの説明文に追加。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CStageコンフィグ.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Globalization;\r
5 using System.Runtime.InteropServices;\r
6 using System.Drawing;\r
7 using System.Diagnostics;\r
8 using FDK;\r
9 \r
10 namespace DTXMania\r
11 {\r
12         internal class CStageコンフィグ : CStage\r
13         {\r
14                 // プロパティ\r
15 \r
16                 public CActDFPFont actFont { get; private set; }\r
17 \r
18 \r
19                 // コンストラクタ\r
20 \r
21                 public CStageコンフィグ()\r
22                 {\r
23                         CActDFPFont font;\r
24                         base.eステージID = CStage.Eステージ.コンフィグ;\r
25                         base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
26                         this.actFont = font = new CActDFPFont();\r
27                         base.list子Activities.Add( font );\r
28                         base.list子Activities.Add( this.actFIFO = new CActFIFOWhite() );\r
29                         base.list子Activities.Add( this.actList = new CActConfigList() );\r
30                         base.list子Activities.Add( this.actKeyAssign = new CActConfigKeyAssign() );\r
31                         base.list子Activities.Add( this.actオプションパネル = new CActオプションパネル() );\r
32                         base.b活性化してない = true;\r
33                 }\r
34                 \r
35                 \r
36                 // メソッド\r
37 \r
38                 public void tアサイン完了通知()                                                                                                                 // CONFIGにのみ存在\r
39                 {                                                                                                                                                                               //\r
40                         this.eItemPanelモード = EItemPanelモード.パッド一覧;                                                         //\r
41                 }                                                                                                                                                                               //\r
42                 public void tパッド選択通知( EKeyConfigPart part, EKeyConfigPad pad )                                                    //\r
43                 {                                                                                                                                                                               //\r
44                         this.actKeyAssign.t開始( part, pad, this.actList.ib現在の選択項目.str項目名 );              //\r
45                         this.eItemPanelモード = EItemPanelモード.キーコード一覧;                                                   //\r
46                 }                                                                                                                                                                               //\r
47                 public void t項目変更通知()                                                                                                                               // OPTIONと共通\r
48                 {                                                                                                                                                                               //\r
49                         this.t説明文パネルに現在選択されている項目の説明を描画する();                                         //\r
50                 }                                                                                                                                                                               //\r
51 \r
52                 \r
53                 // CStage 実装\r
54 \r
55                 public override void On活性化()\r
56                 {\r
57                         Trace.TraceInformation( "コンフィグステージを活性化します。" );\r
58                         Trace.Indent();\r
59                         try\r
60                         {\r
61                                 this.n現在のメニュー番号 = 0;                                                                                                  //\r
62                                 this.ftフォント = new Font( "MS PGothic", 26f, GraphicsUnit.Pixel );                        //\r
63                                 for( int i = 0; i < 4; i++ )                                                                                                    //\r
64                                 {                                                                                                                                                               //\r
65                                         this.ctキー反復用[ i ] = new CCounter( 0, 0, 0, CDTXMania.Timer );                 //\r
66                                 }                                                                                                                                                               //\r
67                                 this.bメニューにフォーカス中 = true;                                                                                 // ここまでOPTIONと共通\r
68                                 this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
69                         }\r
70                         finally\r
71                         {\r
72                                 Trace.TraceInformation( "コンフィグステージの活性化を完了しました。" );\r
73                                 Trace.Unindent();\r
74                         }\r
75                         base.On活性化();             // 2011.3.14 yyagi: On活性化()をtryの中から外に移動\r
76                 }\r
77                 public override void On非活性化()\r
78                 {\r
79                         Trace.TraceInformation( "コンフィグステージを非活性化します。" );\r
80                         Trace.Indent();\r
81                         try\r
82                         {\r
83                                 CDTXMania.ConfigIni.t書き出し( CDTXMania.strEXEのあるフォルダ + "Config.ini" );      // CONFIGだけ\r
84                                 if( this.ftフォント != null )                                                                                                       // 以下OPTIONと共通\r
85                                 {\r
86                                         this.ftフォント.Dispose();\r
87                                         this.ftフォント = null;\r
88                                 }\r
89                                 for( int i = 0; i < 4; i++ )\r
90                                 {\r
91                                         this.ctキー反復用[ i ] = null;\r
92                                 }\r
93                                 base.On非活性化();\r
94                         }\r
95                         finally\r
96                         {\r
97                                 Trace.TraceInformation( "コンフィグステージの非活性化を完了しました。" );\r
98                                 Trace.Unindent();\r
99                         }\r
100                 }\r
101                 public override void OnManagedリソースの作成()                                                                                   // OPTIONと画像以外共通\r
102                 {\r
103                         if( !base.b活性化してない )\r
104                         {\r
105                                 this.tx背景 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig background.jpg" ), false );\r
106                                 this.tx上部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig header panel.png" ), true );\r
107                                 this.tx下部パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig footer panel.png" ), true );\r
108                                 this.txMenuカーソル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig menu cursor.png" ), false );\r
109                                 if( this.bメニューにフォーカス中 )\r
110                                 {\r
111                                         this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
112                                 }\r
113                                 else\r
114                                 {\r
115                                         this.t説明文パネルに現在選択されている項目の説明を描画する();\r
116                                 }\r
117                                 base.OnManagedリソースの作成();\r
118                         }\r
119                 }\r
120                 public override void OnManagedリソースの解放()                                                                                   // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)\r
121                 {\r
122                         if( !base.b活性化してない )\r
123                         {\r
124                                 CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
125                                 CDTXMania.tテクスチャの解放( ref this.tx上部パネル );\r
126                                 CDTXMania.tテクスチャの解放( ref this.tx下部パネル );\r
127                                 CDTXMania.tテクスチャの解放( ref this.txMenuカーソル );\r
128                                 CDTXMania.tテクスチャの解放( ref this.tx説明文パネル );\r
129                                 base.OnManagedリソースの解放();\r
130                         }\r
131                 }\r
132                 public override int On進行描画()\r
133                 {\r
134                         if( base.b活性化してない )\r
135                                 return 0;\r
136 \r
137                         if( base.b初めての進行描画 )\r
138                         {\r
139                                 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
140                                 this.actFIFO.tフェードイン開始();\r
141                                 base.b初めての進行描画 = false;\r
142                         }\r
143 \r
144                         // 描画\r
145 \r
146                         #region [ 背景 ]\r
147                         //---------------------\r
148                         if( this.tx背景 != null )\r
149                                 this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
150                         //---------------------\r
151                         #endregion\r
152                         #region [ メニューカーソル ]\r
153                         //---------------------\r
154                         if( this.txMenuカーソル != null )\r
155                         {\r
156                                 Rectangle rectangle;\r
157                                 this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;\r
158                                 int x = 0x37;\r
159                                 int y = 0x61 + ( this.n現在のメニュー番号 * 0x19 );\r
160                                 int num3 = 170;\r
161                                 this.txMenuカーソル.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, 0x10, 0x20 ) );\r
162                                 this.txMenuカーソル.t2D描画( CDTXMania.app.Device, ( x + num3 ) - 0x10, y, new Rectangle( 10, 0, 0x10, 0x20 ) );\r
163                                 x += 0x10;\r
164                                 for( num3 -= 0x20; num3 > 0; num3 -= rectangle.Width )\r
165                                 {\r
166                                         rectangle = new Rectangle( 8, 0, 0x10, 0x20 );\r
167                                         if( num3 < 0x10 )\r
168                                         {\r
169                                                 rectangle.Width -= 0x10 - num3;\r
170                                         }\r
171                                         this.txMenuカーソル.t2D描画( CDTXMania.app.Device, x, y, rectangle );\r
172                                         x += rectangle.Width;\r
173                                 }\r
174                         }\r
175                         //---------------------\r
176                         #endregion\r
177                         #region [ メニュー ]\r
178                         //---------------------\r
179                         string str = "System";\r
180                         int num4 = this.actFont.n文字列長dot( str );\r
181                         bool flag = this.n現在のメニュー番号 == 0;\r
182                         this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 100, str, flag );\r
183                         //str = "Drums Keys";\r
184                         //num4 = this.actFont.n文字列長dot( str );\r
185                         //flag = this.n現在のメニュー番号 == 1;\r
186                         //this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 0x7d, str, flag );\r
187                         //str = "Guitar Keys";\r
188                         //num4 = this.actFont.n文字列長dot( str );\r
189                         //flag = this.n現在のメニュー番号 == 2;\r
190                         //this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 150, str, flag );\r
191                         //str = "Bass Keys";\r
192                         //num4 = this.actFont.n文字列長dot( str );\r
193                         //flag = this.n現在のメニュー番号 == 3;\r
194                         //this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 0xaf, str, flag );\r
195                         //str = "Exit";\r
196                         //num4 = this.actFont.n文字列長dot( str );\r
197                         //flag = this.n現在のメニュー番号 == 4;\r
198                         //this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 200, str, flag );\r
199                         str = "Drums";\r
200                         num4 = this.actFont.n文字列長dot( str );\r
201                         flag = this.n現在のメニュー番号 == 1;\r
202                         this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 0x7d, str, flag );\r
203                         str = "Guitar";\r
204                         num4 = this.actFont.n文字列長dot( str );\r
205                         flag = this.n現在のメニュー番号 == 2;\r
206                         this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 150, str, flag );\r
207                         str = "Bass";\r
208                         num4 = this.actFont.n文字列長dot( str );\r
209                         flag = this.n現在のメニュー番号 == 3;\r
210                         this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 0xaf, str, flag );\r
211                         str = "Exit";\r
212                         num4 = this.actFont.n文字列長dot( str );\r
213                         flag = this.n現在のメニュー番号 == 4;\r
214                         this.actFont.t文字列描画( 0x8a - ( num4 / 2 ), 200, str, flag );\r
215 \r
216                         //---------------------\r
217                         #endregion\r
218                         #region [ 説明文パネル ]\r
219                         //---------------------\r
220                         if( this.tx説明文パネル != null )\r
221                                 this.tx説明文パネル.t2D描画( CDTXMania.app.Device, 0x1d, 0xf8 );\r
222                         //---------------------\r
223                         #endregion\r
224                         #region [ アイテム ]\r
225                         //---------------------\r
226                         switch( this.eItemPanelモード )\r
227                         {\r
228                                 case EItemPanelモード.パッド一覧:\r
229                                         this.actList.t進行描画( !this.bメニューにフォーカス中 );\r
230                                         break;\r
231 \r
232                                 case EItemPanelモード.キーコード一覧:\r
233                                         this.actKeyAssign.On進行描画();\r
234                                         break;\r
235                         }\r
236                         //---------------------\r
237                         #endregion\r
238                         #region [ 上部パネル ]\r
239                         //---------------------\r
240                         if( this.tx上部パネル != null )\r
241                                 this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, 0 );\r
242                         //---------------------\r
243                         #endregion\r
244                         #region [ 下部パネル ]\r
245                         //---------------------\r
246                         if( this.tx下部パネル != null )\r
247                                 this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, 480 - this.tx下部パネル.szテクスチャサイズ.Height );\r
248                         //---------------------\r
249                         #endregion\r
250                         #region [ オプションパネル ]\r
251                         //---------------------\r
252                         this.actオプションパネル.On進行描画();\r
253                         //---------------------\r
254                         #endregion\r
255                         #region [ フェードイン・アウト ]\r
256                         //---------------------\r
257                         switch( base.eフェーズID )\r
258                         {\r
259                                 case CStage.Eフェーズ.共通_フェードイン:\r
260                                         if( this.actFIFO.On進行描画() != 0 )\r
261                                         {\r
262                                                 CDTXMania.Skin.bgmコンフィグ画面.t再生する();\r
263                                                 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
264                                         }\r
265                                         break;\r
266 \r
267                                 case CStage.Eフェーズ.共通_フェードアウト:\r
268                                         if( this.actFIFO.On進行描画() == 0 )\r
269                                         {\r
270                                                 break;\r
271                                         }\r
272                                         return 1;\r
273                         }\r
274                         //---------------------\r
275                         #endregion\r
276 \r
277                         // キー入力\r
278 \r
279                         if( ( base.eフェーズID != CStage.Eフェーズ.共通_通常状態 )\r
280                                 || this.actKeyAssign.bキー入力待ちの最中である\r
281                                 || CDTXMania.act現在入力を占有中のプラグイン != null )\r
282                                 return 0;\r
283 \r
284                         if( ( CDTXMania.Input管理.Keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) )\r
285                         {\r
286                                 CDTXMania.Skin.sound取消音.t再生する();\r
287                                 if( !this.bメニューにフォーカス中 )\r
288                                 {\r
289                                         if( this.eItemPanelモード == EItemPanelモード.キーコード一覧 )\r
290                                         {\r
291                                                 CDTXMania.stageコンフィグ.tアサイン完了通知();\r
292                                                 return 0;\r
293                                         }\r
294                                         if ( this.actList.bIsKeyAssignSelected == false )               // #24525 2011.3.15 yyagi\r
295                                         {\r
296                                                 this.bメニューにフォーカス中 = true;\r
297                                         }\r
298                                         this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
299                                         this.actList.tEsc押下();                                                              // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用\r
300                                 }\r
301                                 else\r
302                                 {\r
303                                         this.actFIFO.tフェードアウト開始();\r
304                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
305                                 }\r
306                         }\r
307                         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
308                         {\r
309                                 if( this.n現在のメニュー番号 == 4 )\r
310                                 {\r
311                                         CDTXMania.Skin.sound決定音.t再生する();\r
312                                         this.actFIFO.tフェードアウト開始();\r
313                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
314                                 }\r
315                                 else if( this.bメニューにフォーカス中 )\r
316                                 {\r
317                                         CDTXMania.Skin.sound決定音.t再生する();\r
318                                         this.bメニューにフォーカス中 = false;\r
319                                         this.t説明文パネルに現在選択されている項目の説明を描画する();\r
320                                 }\r
321                                 else\r
322                                 {\r
323                                         switch( this.eItemPanelモード )\r
324                                         {\r
325                                                 case EItemPanelモード.パッド一覧:\r
326                                                         bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected;    // #24525 2011.3.15 yyagi\r
327                                                         this.actList.tEnter押下();\r
328                                                         if( this.actList.b現在選択されている項目はReturnToMenuである )\r
329                                                         {\r
330                                                                 this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
331                                                                 if ( bIsKeyAssignSelectedBeforeHitEnter == false )                                                      // #24525 2011.3.15 yyagi\r
332                                                                 {\r
333                                                                         this.bメニューにフォーカス中 = true;\r
334                                                                 }\r
335                                                         }\r
336                                                         break;\r
337 \r
338                                                 case EItemPanelモード.キーコード一覧:\r
339                                                         this.actKeyAssign.tEnter押下();\r
340                                                         break;\r
341                                         }\r
342                                 }\r
343                         }\r
344                         this.ctキー反復用.Up.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.UpArrow ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
345                         this.ctキー反復用.R.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.HH ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
346                         if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.SD ) )\r
347                         {\r
348                                 this.tカーソルを上へ移動する();\r
349                         }\r
350                         this.ctキー反復用.Down.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.DownArrow ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
351                         this.ctキー反復用.B.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.BD ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
352                         if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LT ) )\r
353                         {\r
354                                 this.tカーソルを下へ移動する();\r
355                         }\r
356                         return 0;\r
357                 }\r
358 \r
359 \r
360                 // その他\r
361 \r
362                 #region [ private ]\r
363                 //-----------------\r
364                 private enum EItemPanelモード\r
365                 {\r
366                         パッド一覧,\r
367                         キーコード一覧\r
368                 }\r
369 \r
370                 [StructLayout( LayoutKind.Sequential )]\r
371                 private struct STキー反復用カウンタ\r
372                 {\r
373                         public CCounter Up;\r
374                         public CCounter Down;\r
375                         public CCounter R;\r
376                         public CCounter B;\r
377                         public CCounter this[ int index ]\r
378                         {\r
379                                 get\r
380                                 {\r
381                                         switch( index )\r
382                                         {\r
383                                                 case 0:\r
384                                                         return this.Up;\r
385 \r
386                                                 case 1:\r
387                                                         return this.Down;\r
388 \r
389                                                 case 2:\r
390                                                         return this.R;\r
391 \r
392                                                 case 3:\r
393                                                         return this.B;\r
394                                         }\r
395                                         throw new IndexOutOfRangeException();\r
396                                 }\r
397                                 set\r
398                                 {\r
399                                         switch( index )\r
400                                         {\r
401                                                 case 0:\r
402                                                         this.Up = value;\r
403                                                         return;\r
404 \r
405                                                 case 1:\r
406                                                         this.Down = value;\r
407                                                         return;\r
408 \r
409                                                 case 2:\r
410                                                         this.R = value;\r
411                                                         return;\r
412 \r
413                                                 case 3:\r
414                                                         this.B = value;\r
415                                                         return;\r
416                                         }\r
417                                         throw new IndexOutOfRangeException();\r
418                                 }\r
419                         }\r
420                 }\r
421 \r
422                 private CActFIFOWhite actFIFO;\r
423                 private CActConfigKeyAssign actKeyAssign;\r
424                 private CActConfigList actList;\r
425                 private CActオプションパネル actオプションパネル;\r
426                 private bool bメニューにフォーカス中;\r
427                 private STキー反復用カウンタ ctキー反復用;\r
428                 private const int DESC_H = 0x80;\r
429                 private const int DESC_W = 220;\r
430                 private EItemPanelモード eItemPanelモード;\r
431                 private Font ftフォント;\r
432                 private int n現在のメニュー番号;\r
433                 private CTexture txMenuカーソル;\r
434                 private CTexture tx下部パネル;\r
435                 private CTexture tx上部パネル;\r
436                 private CTexture tx説明文パネル;\r
437                 private CTexture tx背景;\r
438 \r
439                 private void tカーソルを下へ移動する()\r
440                 {\r
441                         if( !this.bメニューにフォーカス中 )\r
442                         {\r
443                                 switch( this.eItemPanelモード )\r
444                                 {\r
445                                         case EItemPanelモード.パッド一覧:\r
446                                                 this.actList.t次に移動();\r
447                                                 return;\r
448 \r
449                                         case EItemPanelモード.キーコード一覧:\r
450                                                 this.actKeyAssign.t次に移動();\r
451                                                 return;\r
452                                 }\r
453                         }\r
454                         else\r
455                         {\r
456                                 CDTXMania.Skin.soundカーソル移動音.t再生する();\r
457                                 this.n現在のメニュー番号 = ( this.n現在のメニュー番号 + 1 ) % 5;\r
458                                 switch( this.n現在のメニュー番号 )\r
459                                 {\r
460                                         case 0:\r
461                                                 this.actList.t項目リストの設定・System();\r
462                                                 break;\r
463 \r
464                                         //case 1:\r
465                                         //    this.actList.t項目リストの設定・KeyAssignDrums();\r
466                                         //    break;\r
467 \r
468                                         //case 2:\r
469                                         //    this.actList.t項目リストの設定・KeyAssignGuitar();\r
470                                         //    break;\r
471 \r
472                                         //case 3:\r
473                                         //    this.actList.t項目リストの設定・KeyAssignBass();\r
474                                         //    break;\r
475 \r
476                                         case 1:\r
477                                                 this.actList.t項目リストの設定・Drums();\r
478                                                 break;\r
479 \r
480                                         case 2:\r
481                                                 this.actList.t項目リストの設定・Guitar();\r
482                                                 break;\r
483 \r
484                                         case 3:\r
485                                                 this.actList.t項目リストの設定・Bass();\r
486                                                 break;\r
487 \r
488                                         case 4:\r
489                                                 this.actList.t項目リストの設定・Exit();\r
490                                                 break;\r
491                                 }\r
492                                 this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
493                         }\r
494                 }\r
495                 private void tカーソルを上へ移動する()\r
496                 {\r
497                         if( !this.bメニューにフォーカス中 )\r
498                         {\r
499                                 switch( this.eItemPanelモード )\r
500                                 {\r
501                                         case EItemPanelモード.パッド一覧:\r
502                                                 this.actList.t前に移動();\r
503                                                 return;\r
504 \r
505                                         case EItemPanelモード.キーコード一覧:\r
506                                                 this.actKeyAssign.t前に移動();\r
507                                                 return;\r
508                                 }\r
509                         }\r
510                         else\r
511                         {\r
512                                 CDTXMania.Skin.soundカーソル移動音.t再生する();\r
513                                 this.n現在のメニュー番号 = ( ( this.n現在のメニュー番号 - 1 ) + 5 ) % 5;\r
514                                 switch( this.n現在のメニュー番号 )\r
515                                 {\r
516                                         case 0:\r
517                                                 this.actList.t項目リストの設定・System();\r
518                                                 break;\r
519 \r
520                                         //case 1:\r
521                                         //    this.actList.t項目リストの設定・KeyAssignDrums();\r
522                                         //    break;\r
523 \r
524                                         //case 2:\r
525                                         //    this.actList.t項目リストの設定・KeyAssignGuitar();\r
526                                         //    break;\r
527 \r
528                                         //case 3:\r
529                                         //    this.actList.t項目リストの設定・KeyAssignBass();\r
530                                         //    break;\r
531                                         case 1:\r
532                                                 this.actList.t項目リストの設定・Drums();\r
533                                                 break;\r
534 \r
535                                         case 2:\r
536                                                 this.actList.t項目リストの設定・Guitar();\r
537                                                 break;\r
538 \r
539                                         case 3:\r
540                                                 this.actList.t項目リストの設定・Bass();\r
541                                                 break;\r
542 \r
543                                         case 4:\r
544                                                 this.actList.t項目リストの設定・Exit();\r
545                                                 break;\r
546                                 }\r
547                                 this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
548                         }\r
549                 }\r
550                 private void t説明文パネルに現在選択されているメニューの説明を描画する()\r
551                 {\r
552                         try\r
553                         {\r
554                                 var image = new Bitmap( 220 * 2, 192 * 2 );             // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)\r
555                                 var graphics = Graphics.FromImage( image );\r
556                                 \r
557                                 string[,] str = new string[ 2, 2 ];\r
558                                 switch( this.n現在のメニュー番号 )\r
559                                 {\r
560                                         case 0:\r
561                                                 str[ 0, 0 ] = "システムに関係する項目を設定しま";\r
562                                                 str[ 0, 1 ] = "す。";\r
563                                                 str[ 1, 0 ] = "Settings for an overall systems.";\r
564                                                 break;\r
565 \r
566                                         //case 1:\r
567                                         //    str[0, 0] = "ドラムのキー入力に関する項目を設";\r
568                                         //    str[0, 1] = "定します。";\r
569                                         //    str[1, 0] = "Settings for the drums key/pad inputs.";\r
570                                         //    str[1, 1] = "";\r
571                                         //    break;\r
572 \r
573                                         //case 2:\r
574                                         //    str[0, 0] = "ギターのキー入力に関する項目を設";\r
575                                         //    str[0, 1] = "定します。";\r
576                                         //    str[1, 0] = "Settings for the guitar key/pad inputs.";\r
577                                         //    str[1, 1] = "";\r
578                                         //    break;\r
579 \r
580                                         //case 3:\r
581                                         //    str[0, 0] = "ベースのキー入力に関する項目を設";\r
582                                         //    str[0, 1] = "定します。";\r
583                                         //    str[1, 0] = "Settings for the bass key/pad inputs.";\r
584                                         //    str[1, 1] = "";\r
585                                         //    break;\r
586                                         case 1:\r
587                                                 str[ 0, 0 ] = "ドラムの演奏に関する項目を設定し";\r
588                                                 str[ 0, 1 ] = "ます。";\r
589                                                 str[ 1, 0 ] = "Settings to play the drums.";\r
590                                                 str[ 1, 1 ] = "";\r
591                                                 break;\r
592 \r
593                                         case 2:\r
594                                                 str[ 0, 0 ] = "ギターの演奏に関する項目を設定し";\r
595                                                 str[ 0, 1 ] = "ます。";\r
596                                                 str[ 1, 0 ] = "Settings to play the guitar.";\r
597                                                 str[ 1, 1 ] = "";\r
598                                                 break;\r
599 \r
600                                         case 3:\r
601                                                 str[ 0, 0 ] = "ベースの演奏に関する項目を設定し";\r
602                                                 str[ 0, 1 ] = "ます。";\r
603                                                 str[ 1, 0 ] = "Settings to play the bass.";\r
604                                                 str[ 1, 1 ] = "";\r
605                                                 break;\r
606 \r
607                                         case 4:\r
608                                                 str[ 0, 0 ] = "設定を保存し、コンフィグ画面を終了";\r
609                                                 str[ 0, 1 ] = "します。";\r
610                                                 str[ 1, 0 ] = "Save the settings and exit from";\r
611                                                 str[ 1, 1 ] = "CONFIGURATION menu.";\r
612                                                 break;\r
613                                 }\r
614                                 \r
615                                 int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
616                                 for (int i = 0; i < 2; i++)\r
617                                 {\r
618                                         graphics.DrawString(str[c, i], this.ftフォント, Brushes.White, new PointF(4f, (i * 30)));\r
619                                 }\r
620                                 graphics.Dispose();\r
621                                 if( this.tx説明文パネル != null )\r
622                                 {\r
623                                         this.tx説明文パネル.Dispose();\r
624                                 }\r
625                                 this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
626                                 this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
627                                 this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
628                                 image.Dispose();\r
629                         }\r
630                         catch( CTextureCreateFailedException )\r
631                         {\r
632                                 Trace.TraceError( "説明文テクスチャの作成に失敗しました。" );\r
633                                 this.tx説明文パネル = null;\r
634                         }\r
635                 }\r
636                 private void t説明文パネルに現在選択されている項目の説明を描画する()\r
637                 {\r
638                         try\r
639                         {\r
640                                 var image = new Bitmap( 220 * 2, 192 * 2 );             // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)\r
641                                 var graphics = Graphics.FromImage( image );\r
642 \r
643                                 CItemBase item = this.actList.ib現在の選択項目;\r
644                                 if( ( item.str説明文 != null ) && ( item.str説明文.Length > 0 ) )\r
645                                 {\r
646                                         int num = 0;\r
647                                         foreach( string str in item.str説明文.Split( new char[] { '\n' } ) )\r
648                                         {\r
649                                                 graphics.DrawString( str, this.ftフォント, Brushes.White, new PointF( 4f, (float) num ) );\r
650                                                 num += 30;\r
651                                         }\r
652                                 }\r
653                                 graphics.Dispose();\r
654                                 if( this.tx説明文パネル != null )\r
655                                 {\r
656                                         this.tx説明文パネル.Dispose();\r
657                                 }\r
658                                 this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
659                                 this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
660                                 this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
661                                 image.Dispose();\r
662                         }\r
663                         catch( CTextureCreateFailedException )\r
664                         {\r
665                                 Trace.TraceError( "説明文パネルテクスチャの作成に失敗しました。" );\r
666                                 this.tx説明文パネル = null;\r
667                         }\r
668                 }\r
669                 //-----------------\r
670                 #endregion\r
671         }\r
672 }\r