OSDN Git Service

ab864bd55c31575bcad08f304eded849ea08a492
[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アサイン完了通知()\r
39                 {\r
40                         this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
41                 }\r
42                 public void tパッド選択通知( E楽器パート part, Eパッド 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項目変更通知()\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;\r
68                                 this.eItemPanelモード = EItemPanelモード.パッド一覧;\r
69                                 base.On活性化();\r
70                         }\r
71                         finally\r
72                         {\r
73                                 Trace.TraceInformation( "コンフィグステージの活性化を完了しました。" );\r
74                                 Trace.Unindent();\r
75                         }\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" );\r
84                                 if( this.ftフォント != null )\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リソースの作成()\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リソースの解放()\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                         //---------------------\r
200                         #endregion\r
201                         #region [ 説明文パネル ]\r
202                         //---------------------\r
203                         if( this.tx説明文パネル != null )\r
204                                 this.tx説明文パネル.t2D描画( CDTXMania.app.Device, 0x1d, 0xf8 );\r
205                         //---------------------\r
206                         #endregion\r
207                         #region [ アイテム ]\r
208                         //---------------------\r
209                         switch( this.eItemPanelモード )\r
210                         {\r
211                                 case EItemPanelモード.パッド一覧:\r
212                                         this.actList.t進行描画( !this.bメニューにフォーカス中 );\r
213                                         break;\r
214 \r
215                                 case EItemPanelモード.キーコード一覧:\r
216                                         this.actKeyAssign.On進行描画();\r
217                                         break;\r
218                         }\r
219                         //---------------------\r
220                         #endregion\r
221                         #region [ 上部パネル ]\r
222                         //---------------------\r
223                         if( this.tx上部パネル != null )\r
224                                 this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, 0 );\r
225                         //---------------------\r
226                         #endregion\r
227                         #region [ 下部パネル ]\r
228                         //---------------------\r
229                         if( this.tx下部パネル != null )\r
230                                 this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, 480 - this.tx下部パネル.szテクスチャサイズ.Height );\r
231                         //---------------------\r
232                         #endregion\r
233                         #region [ オプションパネル ]\r
234                         //---------------------\r
235                         this.actオプションパネル.On進行描画();\r
236                         //---------------------\r
237                         #endregion\r
238                         #region [ フェードイン・アウト ]\r
239                         //---------------------\r
240                         switch( base.eフェーズID )\r
241                         {\r
242                                 case CStage.Eフェーズ.共通_フェードイン:\r
243                                         if( this.actFIFO.On進行描画() != 0 )\r
244                                         {\r
245                                                 CDTXMania.Skin.bgmコンフィグ画面.t再生する();\r
246                                                 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
247                                         }\r
248                                         break;\r
249 \r
250                                 case CStage.Eフェーズ.共通_フェードアウト:\r
251                                         if( this.actFIFO.On進行描画() == 0 )\r
252                                         {\r
253                                                 break;\r
254                                         }\r
255                                         return 1;\r
256                         }\r
257                         //---------------------\r
258                         #endregion\r
259 \r
260                         // キー入力\r
261 \r
262                         if( ( base.eフェーズID != CStage.Eフェーズ.共通_通常状態 )\r
263                                 || this.actKeyAssign.bキー入力待ちの最中である\r
264                                 || CDTXMania.act現在入力を占有中のプラグイン != null )\r
265                                 return 0;\r
266 \r
267                         if( ( CDTXMania.Input管理.Keyboard.bキーが押された( 0x35 ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) )\r
268                         {\r
269                                 CDTXMania.Skin.sound取消音.t再生する();\r
270                                 if( !this.bメニューにフォーカス中 )\r
271                                 {\r
272                                         if( this.eItemPanelモード == EItemPanelモード.キーコード一覧 )\r
273                                         {\r
274                                                 CDTXMania.stageコンフィグ.tアサイン完了通知();\r
275                                                 return 0;\r
276                                         }\r
277                                         this.bメニューにフォーカス中 = true;\r
278                                         this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
279                                 }\r
280                                 else\r
281                                 {\r
282                                         this.actFIFO.tフェードアウト開始();\r
283                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
284                                 }\r
285                         }\r
286                         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キーが押された( 0x75 ) ) ) )\r
287                         {\r
288                                 if( this.n現在のメニュー番号 == 4 )\r
289                                 {\r
290                                         CDTXMania.Skin.sound決定音.t再生する();\r
291                                         this.actFIFO.tフェードアウト開始();\r
292                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
293                                 }\r
294                                 else if( this.bメニューにフォーカス中 )\r
295                                 {\r
296                                         CDTXMania.Skin.sound決定音.t再生する();\r
297                                         this.bメニューにフォーカス中 = false;\r
298                                         this.t説明文パネルに現在選択されている項目の説明を描画する();\r
299                                 }\r
300                                 else\r
301                                 {\r
302                                         switch( this.eItemPanelモード )\r
303                                         {\r
304                                                 case EItemPanelモード.パッド一覧:\r
305                                                         this.actList.tEnter押下();\r
306                                                         if( this.actList.b現在選択されている項目はReturnToMenuである )\r
307                                                         {\r
308                                                                 this.bメニューにフォーカス中 = true;\r
309                                                                 this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
310                                                         }\r
311                                                         goto Label_0505;\r
312 \r
313                                                 case EItemPanelモード.キーコード一覧:\r
314                                                         this.actKeyAssign.tEnter押下();\r
315                                                         goto Label_0505;\r
316                                         }\r
317                                 }\r
318                         }\r
319                 Label_0505:\r
320                         this.ctキー反復用.Up.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( 0x84 ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
321                         this.ctキー反復用.R.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.HH ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );\r
322                         if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.SD ) )\r
323                         {\r
324                                 this.tカーソルを上へ移動する();\r
325                         }\r
326                         this.ctキー反復用.Down.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( 50 ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
327                         this.ctキー反復用.B.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.BD ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );\r
328                         if( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LT ) )\r
329                         {\r
330                                 this.tカーソルを下へ移動する();\r
331                         }\r
332                         return 0;\r
333                 }\r
334 \r
335 \r
336                 // その他\r
337 \r
338                 #region [ private ]\r
339                 //-----------------\r
340                 private enum EItemPanelモード\r
341                 {\r
342                         パッド一覧,\r
343                         キーコード一覧\r
344                 }\r
345 \r
346                 [StructLayout( LayoutKind.Sequential )]\r
347                 private struct STキー反復用カウンタ\r
348                 {\r
349                         public CCounter Up;\r
350                         public CCounter Down;\r
351                         public CCounter R;\r
352                         public CCounter B;\r
353                         public CCounter this[ int index ]\r
354                         {\r
355                                 get\r
356                                 {\r
357                                         switch( index )\r
358                                         {\r
359                                                 case 0:\r
360                                                         return this.Up;\r
361 \r
362                                                 case 1:\r
363                                                         return this.Down;\r
364 \r
365                                                 case 2:\r
366                                                         return this.R;\r
367 \r
368                                                 case 3:\r
369                                                         return this.B;\r
370                                         }\r
371                                         throw new IndexOutOfRangeException();\r
372                                 }\r
373                                 set\r
374                                 {\r
375                                         switch( index )\r
376                                         {\r
377                                                 case 0:\r
378                                                         this.Up = value;\r
379                                                         return;\r
380 \r
381                                                 case 1:\r
382                                                         this.Down = value;\r
383                                                         return;\r
384 \r
385                                                 case 2:\r
386                                                         this.R = value;\r
387                                                         return;\r
388 \r
389                                                 case 3:\r
390                                                         this.B = value;\r
391                                                         return;\r
392                                         }\r
393                                         throw new IndexOutOfRangeException();\r
394                                 }\r
395                         }\r
396                 }\r
397 \r
398                 private CActFIFOWhite actFIFO;\r
399                 private CActConfigKeyAssign actKeyAssign;\r
400                 private CActConfigList actList;\r
401                 private CActオプションパネル actオプションパネル;\r
402                 private bool bメニューにフォーカス中;\r
403                 private STキー反復用カウンタ ctキー反復用;\r
404                 private const int DESC_H = 0x80;\r
405                 private const int DESC_W = 220;\r
406                 private EItemPanelモード eItemPanelモード;\r
407                 private Font ftフォント;\r
408                 private int n現在のメニュー番号;\r
409                 private CTexture txMenuカーソル;\r
410                 private CTexture tx下部パネル;\r
411                 private CTexture tx上部パネル;\r
412                 private CTexture tx説明文パネル;\r
413                 private CTexture tx背景;\r
414 \r
415                 private void tカーソルを下へ移動する()\r
416                 {\r
417                         if( !this.bメニューにフォーカス中 )\r
418                         {\r
419                                 switch( this.eItemPanelモード )\r
420                                 {\r
421                                         case EItemPanelモード.パッド一覧:\r
422                                                 this.actList.t次に移動();\r
423                                                 return;\r
424 \r
425                                         case EItemPanelモード.キーコード一覧:\r
426                                                 this.actKeyAssign.t次に移動();\r
427                                                 return;\r
428                                 }\r
429                         }\r
430                         else\r
431                         {\r
432                                 CDTXMania.Skin.soundカーソル移動音.t再生する();\r
433                                 this.n現在のメニュー番号 = ( this.n現在のメニュー番号 + 1 ) % 5;\r
434                                 switch( this.n現在のメニュー番号 )\r
435                                 {\r
436                                         case 0:\r
437                                                 this.actList.t項目リストの設定・System();\r
438                                                 break;\r
439 \r
440                                         case 1:\r
441                                                 this.actList.t項目リストの設定・KeyAssignDrums();\r
442                                                 break;\r
443 \r
444                                         case 2:\r
445                                                 this.actList.t項目リストの設定・KeyAssignGuitar();\r
446                                                 break;\r
447 \r
448                                         case 3:\r
449                                                 this.actList.t項目リストの設定・KeyAssignBass();\r
450                                                 break;\r
451 \r
452                                         case 4:\r
453                                                 this.actList.t項目リストの設定・Exit();\r
454                                                 break;\r
455                                 }\r
456                                 this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
457                         }\r
458                 }\r
459                 private void tカーソルを上へ移動する()\r
460                 {\r
461                         if( !this.bメニューにフォーカス中 )\r
462                         {\r
463                                 switch( this.eItemPanelモード )\r
464                                 {\r
465                                         case EItemPanelモード.パッド一覧:\r
466                                                 this.actList.t前に移動();\r
467                                                 return;\r
468 \r
469                                         case EItemPanelモード.キーコード一覧:\r
470                                                 this.actKeyAssign.t前に移動();\r
471                                                 return;\r
472                                 }\r
473                         }\r
474                         else\r
475                         {\r
476                                 CDTXMania.Skin.soundカーソル移動音.t再生する();\r
477                                 this.n現在のメニュー番号 = ( ( this.n現在のメニュー番号 - 1 ) + 5 ) % 5;\r
478                                 switch( this.n現在のメニュー番号 )\r
479                                 {\r
480                                         case 0:\r
481                                                 this.actList.t項目リストの設定・System();\r
482                                                 break;\r
483 \r
484                                         case 1:\r
485                                                 this.actList.t項目リストの設定・KeyAssignDrums();\r
486                                                 break;\r
487 \r
488                                         case 2:\r
489                                                 this.actList.t項目リストの設定・KeyAssignGuitar();\r
490                                                 break;\r
491 \r
492                                         case 3:\r
493                                                 this.actList.t項目リストの設定・KeyAssignBass();\r
494                                                 break;\r
495 \r
496                                         case 4:\r
497                                                 this.actList.t項目リストの設定・Exit();\r
498                                                 break;\r
499                                 }\r
500                                 this.t説明文パネルに現在選択されているメニューの説明を描画する();\r
501                         }\r
502                 }\r
503                 private void t説明文パネルに現在選択されているメニューの説明を描画する()\r
504                 {\r
505                         try\r
506                         {\r
507                                 Bitmap image = new Bitmap( 440, 0x100 );\r
508                                 Graphics graphics = Graphics.FromImage( image );\r
509                                 string[,] str = new string[2, 2];\r
510                                 switch( this.n現在のメニュー番号 )\r
511                                 {\r
512                                         case 0:\r
513                                                 str[0, 0] = "システムに関係する項目を設定しま";\r
514                                                 str[0, 1] = "す。";\r
515                                                 str[1, 0] = "Settings for an overall systems.";\r
516                                                 break;\r
517 \r
518                                         case 1:\r
519                                                 str[0, 0] = "ドラムのキー入力に関する項目を設";\r
520                                                 str[0, 1] = "定します。";\r
521                                                 str[1, 0] = "Settings for the drums key/pad inputs.";\r
522                                                 str[1, 1] = "";\r
523                                                 break;\r
524 \r
525                                         case 2:\r
526                                                 str[0, 0] = "ギターのキー入力に関する項目を設";\r
527                                                 str[0, 1] = "定します。";\r
528                                                 str[1, 0] = "Settings for the guitar key/pad inputs.";\r
529                                                 str[1, 1] = "";\r
530                                                 break;\r
531 \r
532                                         case 3:\r
533                                                 str[0, 0] = "ベースのキー入力に関する項目を設";\r
534                                                 str[0, 1] = "定します。";\r
535                                                 str[1, 0] = "Settings for the bass key/pad inputs.";\r
536                                                 str[1, 1] = "";\r
537                                                 break;\r
538 \r
539                                         case 4:\r
540                                                 str[0, 0] = "設定を保存し、コンフィグ画面を終了";\r
541                                                 str[0, 1] = "します。";\r
542                                                 str[1, 0] = "Save the settings and exit from";\r
543                                                 str[1, 1] = "CONFIGURATION menu.";\r
544                                                 break;\r
545                                 }\r
546                                 int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
547                                 for (int i = 0; i < 2; i++)\r
548                                 {\r
549                                         graphics.DrawString(str[c, i], this.ftフォント, Brushes.White, new PointF(4f, (i * 30)));\r
550                                 }\r
551                                 graphics.Dispose();\r
552                                 if( this.tx説明文パネル != null )\r
553                                 {\r
554                                         this.tx説明文パネル.Dispose();\r
555                                 }\r
556                                 this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
557                                 this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
558                                 this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
559                                 image.Dispose();\r
560                         }\r
561                         catch( CTextureCreateFailedException )\r
562                         {\r
563                                 Trace.TraceError( "説明文テクスチャの作成に失敗しました。" );\r
564                                 this.tx説明文パネル = null;\r
565                         }\r
566                 }\r
567                 private void t説明文パネルに現在選択されている項目の説明を描画する()\r
568                 {\r
569                         try\r
570                         {\r
571                                 Bitmap image = new Bitmap( 440, 0x100 );\r
572                                 Graphics graphics = Graphics.FromImage( image );\r
573                                 CItemBase base2 = this.actList.ib現在の選択項目;\r
574                                 if( ( base2.str説明文 != null ) && ( base2.str説明文.Length > 0 ) )\r
575                                 {\r
576                                         int num = 0;\r
577                                         foreach( string str in base2.str説明文.Split( new char[] { '\n' } ) )\r
578                                         {\r
579                                                 graphics.DrawString( str, this.ftフォント, Brushes.White, new PointF( 4f, (float) num ) );\r
580                                                 num += 30;\r
581                                         }\r
582                                 }\r
583                                 graphics.Dispose();\r
584                                 if( this.tx説明文パネル != null )\r
585                                 {\r
586                                         this.tx説明文パネル.Dispose();\r
587                                 }\r
588                                 this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
589                                 this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;\r
590                                 this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;\r
591                                 image.Dispose();\r
592                         }\r
593                         catch( CTextureCreateFailedException )\r
594                         {\r
595                                 Trace.TraceError( "説明文パネルテクスチャの作成に失敗しました。" );\r
596                                 this.tx説明文パネル = null;\r
597                         }\r
598                 }\r
599                 //-----------------\r
600                 #endregion\r
601         }\r
602 }\r