2 using System.Collections.Generic;
\r
4 using System.Globalization;
\r
5 using System.Runtime.InteropServices;
\r
6 using System.Drawing;
\r
7 using System.Diagnostics;
\r
12 internal class CStageコンフィグ : CStage
\r
16 //public CActDFPFont actFont { get; private set; }
\r
21 public CStageコンフィグ()
\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
38 public void tアサイン完了通知() // CONFIGにのみ存在
\r
40 this.eItemPanelモード = EItemPanelモード.パッド一覧; //
\r
42 public void tパッド選択通知( EKeyConfigPart part, EKeyConfigPad pad ) //
\r
44 this.actKeyAssign.t開始( part, pad, this.actList.ib現在の選択項目.str項目名 ); //
\r
45 this.eItemPanelモード = EItemPanelモード.キーコード一覧; //
\r
47 public void t項目変更通知() // OPTIONと共通
\r
49 this.t説明文パネルに現在選択されている項目の説明を描画する(); //
\r
55 public override void On活性化()
\r
57 Trace.TraceInformation( "コンフィグステージを活性化します。" );
\r
61 this.n現在のメニュー番号 = 0; //
\r
62 this.ftフォント = new Font( "MS PGothic", 26f / 2 * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel ); //
\r
63 for ( int i = 0; i < 4; i++ ) //
\r
65 this.ctキー反復用[ i ] = new CCounter( 0, 0, 0, CDTXMania.Timer ); //
\r
67 this.bメニューにフォーカス中 = true; // ここまでOPTIONと共通
\r
68 this.eItemPanelモード = EItemPanelモード.パッド一覧;
\r
70 fDisplayLagTimeBaseMs.Drums = (float) CDTXMania.ConfigIni.nJudgeLinePosOffset.Drums / ( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1 );
\r
71 fDisplayLagTimeBaseMs.Guitar = (float) CDTXMania.ConfigIni.nJudgeLinePosOffset.Guitar / ( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1 );
\r
72 fDisplayLagTimeBaseMs.Bass = (float) CDTXMania.ConfigIni.nJudgeLinePosOffset.Bass / ( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1 );
\r
76 Trace.TraceInformation( "コンフィグステージの活性化を完了しました。" );
\r
79 base.On活性化(); // 2011.3.14 yyagi: On活性化()をtryの中から外に移動
\r
81 public override void On非活性化()
\r
83 Trace.TraceInformation( "コンフィグステージを非活性化します。" );
\r
87 CDTXMania.ConfigIni.t書き出し( CDTXMania.strEXEのあるフォルダ + "Config.ini" ); // CONFIGだけ
\r
88 if( this.ftフォント != null ) // 以下OPTIONと共通
\r
90 this.ftフォント.Dispose();
\r
93 for( int i = 0; i < 4; i++ )
\r
95 this.ctキー反復用[ i ] = null;
\r
98 CDTXMania.ConfigIni.nJudgeLinePosOffset.Drums = (int) ( fDisplayLagTimeBaseMs.Drums * ( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1 ) );
\r
99 CDTXMania.ConfigIni.nJudgeLinePosOffset.Guitar = (int) ( fDisplayLagTimeBaseMs.Guitar * ( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1 ) );
\r
100 CDTXMania.ConfigIni.nJudgeLinePosOffset.Bass = (int) ( fDisplayLagTimeBaseMs.Bass * ( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1 ) );
\r
104 catch ( UnauthorizedAccessException e )
\r
106 Trace.TraceError( e.Message + "ファイルが読み取り専用になっていないか、管理者権限がないと書き込めなくなっていないか等を確認して下さい" );
\r
108 catch ( Exception e )
\r
110 Trace.TraceError( e.Message );
\r
114 Trace.TraceInformation( "コンフィグステージの非活性化を完了しました。" );
\r
118 public override void OnManagedリソースの作成() // OPTIONと画像以外共通
\r
120 if( !base.b活性化してない )
\r
122 this.tx背景 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig background.jpg" ), false );
\r
123 this.tx上部パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenConfig header panel.png" ), true );
\r
124 this.tx下部パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenConfig footer panel.png" ), true );
\r
125 this.txMenuカーソル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig menu cursor.png" ), false );
\r
127 prvFont = new CPrivateFastFont( CSkin.Path( @"Graphics\fonts\mplus-1p-heavy.ttf" ), (int) ( 18 * Scale.Y ) );
\r
128 string[] strMenuItem = { "System", "Drums", "Guitar", "Bass", "Exit" };
\r
129 txMenuItemLeft = new CTexture[ strMenuItem.Length, 2 ];
\r
130 for ( int i = 0; i < strMenuItem.Length; i++ )
\r
133 bmpStr = prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );
\r
134 txMenuItemLeft[ i, 0 ] = CDTXMania.tテクスチャの生成( bmpStr, false );
\r
136 bmpStr = prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed );
\r
137 txMenuItemLeft[ i, 1 ] = CDTXMania.tテクスチャの生成( bmpStr, false );
\r
140 if( this.bメニューにフォーカス中 )
\r
142 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
146 this.t説明文パネルに現在選択されている項目の説明を描画する();
\r
148 base.OnManagedリソースの作成();
\r
151 public override void OnManagedリソースの解放() // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)
\r
153 if( !base.b活性化してない )
\r
155 CDTXMania.tテクスチャの解放( ref this.tx背景 );
\r
156 CDTXMania.tテクスチャの解放( ref this.tx上部パネル );
\r
157 CDTXMania.tテクスチャの解放( ref this.tx下部パネル );
\r
158 CDTXMania.tテクスチャの解放( ref this.txMenuカーソル );
\r
159 CDTXMania.tテクスチャの解放( ref this.tx説明文パネル );
\r
161 for ( int i = 0; i < txMenuItemLeft.GetLength( 0 ); i++ )
\r
163 txMenuItemLeft[ i, 0 ].Dispose();
\r
164 txMenuItemLeft[ i, 0 ] = null;
\r
165 txMenuItemLeft[ i, 1 ].Dispose();
\r
166 txMenuItemLeft[ i, 1 ] = null;
\r
168 txMenuItemLeft = null;
\r
169 base.OnManagedリソースの解放();
\r
172 public override int On進行描画()
\r
174 if( base.b活性化してない )
\r
177 if( base.b初めての進行描画 )
\r
179 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
\r
180 this.actFIFO.tフェードイン開始();
\r
181 base.b初めての進行描画 = false;
\r
187 //---------------------
\r
188 if( this.tx背景 != null )
\r
189 this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );
\r
190 //---------------------
\r
192 #region [ メニューカーソル ]
\r
193 //---------------------
\r
194 if ( this.txMenuカーソル != null )
\r
196 Rectangle rectangle;
\r
197 this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;
\r
198 int x = (int) ( 0x37 * Scale.X );
\r
199 int y = (int) ( ( 0x61 + ( this.n現在のメニュー番号 * 0x19 ) ) * Scale.Y );
\r
200 int num3 = (int) ( 170 * Scale.X );
\r
201 this.txMenuカーソル.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, (int) ( 0x10 * Scale.X ), (int) ( 0x20 * Scale.Y ) ) );
\r
202 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
203 x += (int) ( 0x10 * Scale.X );
\r
204 for ( num3 -= (int) ( 0x20 * Scale.X ); num3 > 0; num3 -= rectangle.Width )
\r
206 rectangle = new Rectangle( (int) ( 8 * Scale.X ), 0, (int) ( 0x10 * Scale.X ), (int) ( 0x20 * Scale.Y ) );
\r
207 if ( num3 < (int) ( 0x10 * Scale.X ) )
\r
209 rectangle.Width -= (int) ( 0x10 * Scale.X ) - num3;
\r
211 this.txMenuカーソル.t2D描画( CDTXMania.app.Device, x, y, rectangle );
\r
212 x += rectangle.Width;
\r
215 //---------------------
\r
218 //---------------------
\r
219 int menuY = (int) ( 100 * Scale.Y ) - 20;
\r
220 int stepY = (int) ( 25 * Scale.Y );
\r
221 for ( int i = 0; i < txMenuItemLeft.GetLength( 0 ); i++ )
\r
223 //Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?
\r
224 // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :
\r
225 // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );
\r
226 //txMenuItemLeft = CDTXMania.tテクスチャの生成( bmpStr, false );
\r
227 int flag = ( this.n現在のメニュー番号 == i ) ? 1 : 0;
\r
228 int num4 = txMenuItemLeft[ i, flag ].sz画像サイズ.Width;
\r
229 txMenuItemLeft[ i, flag ].t2D描画( CDTXMania.app.Device, 0x8a * Scale.X - ( num4 / 2 ), menuY ); //55
\r
230 //txMenuItem.Dispose();
\r
233 //---------------------
\r
236 //---------------------
\r
237 if ( this.tx説明文パネル != null )
\r
238 this.tx説明文パネル.t2D描画( CDTXMania.app.Device, 0x1d * Scale.X, 0xf8 * Scale.Y );
\r
239 //---------------------
\r
242 //---------------------
\r
243 switch( this.eItemPanelモード )
\r
245 case EItemPanelモード.パッド一覧:
\r
246 this.actList.t進行描画( !this.bメニューにフォーカス中 );
\r
249 case EItemPanelモード.キーコード一覧:
\r
250 this.actKeyAssign.On進行描画();
\r
253 //---------------------
\r
256 //---------------------
\r
257 if( this.tx上部パネル != null )
\r
258 this.tx上部パネル.t2D描画( CDTXMania.app.Device, 0, 0 );
\r
259 //---------------------
\r
262 //---------------------
\r
263 if( this.tx下部パネル != null )
\r
264 this.tx下部パネル.t2D描画( CDTXMania.app.Device, 0, SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height );
\r
265 //---------------------
\r
267 #region [ オプションパネル ]
\r
268 //---------------------
\r
269 this.actオプションパネル.On進行描画();
\r
270 //---------------------
\r
272 #region [ フェードイン・アウト ]
\r
273 //---------------------
\r
274 switch( base.eフェーズID )
\r
276 case CStage.Eフェーズ.共通_フェードイン:
\r
277 if( this.actFIFO.On進行描画() != 0 )
\r
279 CDTXMania.Skin.bgmコンフィグ画面.t再生する();
\r
280 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
284 case CStage.Eフェーズ.共通_フェードアウト:
\r
285 if( this.actFIFO.On進行描画() == 0 )
\r
291 //---------------------
\r
294 #region [ Enumerating Songs ]
\r
295 // CActEnumSongs側で表示する
\r
300 if ( ( base.eフェーズID != CStage.Eフェーズ.共通_通常状態 )
\r
301 || this.actKeyAssign.bキー入力待ちの最中である
\r
302 || CDTXMania.act現在入力を占有中のプラグイン != null )
\r
305 // 曲データの一覧取得中は、キー入力を無効化する
\r
306 if ( !CDTXMania.EnumSongs.IsEnumerating || CDTXMania.actEnumSongs.bコマンドでの曲データ取得 != true )
\r
308 if ( ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.FT ) ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) )
\r
310 CDTXMania.Skin.sound取消音.t再生する();
\r
311 if ( !this.bメニューにフォーカス中 )
\r
313 if ( this.eItemPanelモード == EItemPanelモード.キーコード一覧 )
\r
315 CDTXMania.stageコンフィグ.tアサイン完了通知();
\r
318 if ( !this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter ) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi
\r
320 this.bメニューにフォーカス中 = true;
\r
322 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
323 this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用
\r
327 this.actFIFO.tフェードアウト開始();
\r
328 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
332 else if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.LeftArrow ) ) // 左カーソルキー
\r
334 if ( !this.bメニューにフォーカス中 )
\r
336 if ( this.eItemPanelモード == EItemPanelモード.キーコード一覧 )
\r
338 //キーコンフィグ画面中は、[←]押下に反応させない
\r
341 if ( this.actList.bIsFocusingParameter )
\r
343 // パラメータを増減している最中も、[←]押下に反応させない
\r
346 if ( !this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter ) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi
\r
348 this.bメニューにフォーカス中 = true;
\r
350 CDTXMania.Skin.sound取消音.t再生する();
\r
351 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
352 this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用
\r
356 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
359 if ( this.n現在のメニュー番号 == 4 )
\r
361 CDTXMania.Skin.sound決定音.t再生する();
\r
362 this.actFIFO.tフェードアウト開始();
\r
363 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
366 else if ( this.bメニューにフォーカス中 )
\r
368 CDTXMania.Skin.sound決定音.t再生する();
\r
369 this.bメニューにフォーカス中 = false;
\r
370 this.t説明文パネルに現在選択されている項目の説明を描画する();
\r
374 switch ( this.eItemPanelモード )
\r
376 case EItemPanelモード.パッド一覧:
\r
377 bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected; // #24525 2011.3.15 yyagi
\r
378 this.actList.tEnter押下();
\r
379 if ( this.actList.b現在選択されている項目はReturnToMenuである )
\r
381 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
382 if ( bIsKeyAssignSelectedBeforeHitEnter == false ) // #24525 2011.3.15 yyagi
\r
384 this.bメニューにフォーカス中 = true;
\r
389 case EItemPanelモード.キーコード一覧:
\r
390 this.actKeyAssign.tEnter押下();
\r
396 else if ( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) ) // 右カーソルキー
\r
399 if ( this.n現在のメニュー番号 == 4 )
\r
404 else if ( this.bメニューにフォーカス中 )
\r
406 CDTXMania.Skin.sound決定音.t再生する();
\r
407 this.bメニューにフォーカス中 = false;
\r
408 this.t説明文パネルに現在選択されている項目の説明を描画する();
\r
412 this.ctキー反復用.Up.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.UpArrow ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );
\r
413 this.ctキー反復用.R.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.HH ), new CCounter.DGキー処理( this.tカーソルを上へ移動する ) );
\r
414 if ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.SD ) )
\r
416 this.tカーソルを上へ移動する();
\r
418 this.ctキー反復用.Down.tキー反復( CDTXMania.Input管理.Keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.DownArrow ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );
\r
419 this.ctキー反復用.B.tキー反復( CDTXMania.Pad.b押されているGB( Eパッド.BD ), new CCounter.DGキー処理( this.tカーソルを下へ移動する ) );
\r
420 if ( CDTXMania.Pad.b押された( E楽器パート.DRUMS, Eパッド.LT ) )
\r
422 this.tカーソルを下へ移動する();
\r
432 #region [ private ]
\r
433 //-----------------
\r
434 private enum EItemPanelモード
\r
440 [StructLayout( LayoutKind.Sequential )]
\r
441 private struct STキー反復用カウンタ
\r
443 public CCounter Up;
\r
444 public CCounter Down;
\r
447 public CCounter this[ int index ]
\r
465 throw new IndexOutOfRangeException();
\r
487 throw new IndexOutOfRangeException();
\r
492 private CActFIFOWhite actFIFO;
\r
493 private CActConfigKeyAssign actKeyAssign;
\r
494 private CActConfigList actList;
\r
495 private CActオプションパネル actオプションパネル;
\r
496 private bool bメニューにフォーカス中;
\r
497 private STキー反復用カウンタ ctキー反復用;
\r
498 private const int DESC_H = 0x80;
\r
499 private const int DESC_W = 220;
\r
500 private EItemPanelモード eItemPanelモード;
\r
501 private Font ftフォント;
\r
502 private int n現在のメニュー番号;
\r
503 private CTexture txMenuカーソル;
\r
504 private CTextureAf tx下部パネル;
\r
505 private CTextureAf tx上部パネル;
\r
506 private CTexture tx説明文パネル;
\r
507 private CTexture tx背景;
\r
508 private CPrivateFastFont prvFont;
\r
509 private CTexture[ , ] txMenuItemLeft;
\r
510 private STDGBVALUE<float> fDisplayLagTimeBaseMs;
\r
512 private void tカーソルを下へ移動する()
\r
514 if( !this.bメニューにフォーカス中 )
\r
516 switch( this.eItemPanelモード )
\r
518 case EItemPanelモード.パッド一覧:
\r
519 this.actList.t次に移動();
\r
522 case EItemPanelモード.キーコード一覧:
\r
523 this.actKeyAssign.t次に移動();
\r
529 CDTXMania.Skin.soundカーソル移動音.t再生する();
\r
530 this.n現在のメニュー番号 = ( this.n現在のメニュー番号 + 1 ) % 5;
\r
531 switch( this.n現在のメニュー番号 )
\r
534 this.actList.t項目リストの設定_System();
\r
538 // this.actList.t項目リストの設定・KeyAssignDrums();
\r
542 // this.actList.t項目リストの設定・KeyAssignGuitar();
\r
546 // this.actList.t項目リストの設定・KeyAssignBass();
\r
550 this.actList.t項目リストの設定_Drums();
\r
554 this.actList.t項目リストの設定_Guitar();
\r
558 this.actList.t項目リストの設定_Bass();
\r
562 this.actList.t項目リストの設定_Exit();
\r
565 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
568 private void tカーソルを上へ移動する()
\r
570 if( !this.bメニューにフォーカス中 )
\r
572 switch( this.eItemPanelモード )
\r
574 case EItemPanelモード.パッド一覧:
\r
575 this.actList.t前に移動();
\r
578 case EItemPanelモード.キーコード一覧:
\r
579 this.actKeyAssign.t前に移動();
\r
585 CDTXMania.Skin.soundカーソル移動音.t再生する();
\r
586 this.n現在のメニュー番号 = ( ( this.n現在のメニュー番号 - 1 ) + 5 ) % 5;
\r
587 switch( this.n現在のメニュー番号 )
\r
590 this.actList.t項目リストの設定_System();
\r
594 // this.actList.t項目リストの設定・KeyAssignDrums();
\r
598 // this.actList.t項目リストの設定・KeyAssignGuitar();
\r
602 // this.actList.t項目リストの設定・KeyAssignBass();
\r
605 this.actList.t項目リストの設定_Drums();
\r
609 this.actList.t項目リストの設定_Guitar();
\r
613 this.actList.t項目リストの設定_Bass();
\r
617 this.actList.t項目リストの設定_Exit();
\r
620 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
623 private void t説明文パネルに現在選択されているメニューの説明を描画する()
\r
627 var image = new Bitmap( (int) ( 220 * 2 * Scale.X ), (int) ( 192 * 2 * Scale.Y ) ); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)
\r
628 var graphics = Graphics.FromImage( image );
\r
629 graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
\r
631 string[,] str = new string[ 2, 2 ];
\r
632 switch( this.n現在のメニュー番号 )
\r
635 str[ 0, 0 ] = "システムに関係する項目を設定します。";
\r
637 str[ 1, 0 ] = "Settings for an overall systems.";
\r
641 // str[0, 0] = "ドラムのキー入力に関する項目を設";
\r
642 // str[0, 1] = "定します。";
\r
643 // str[1, 0] = "Settings for the drums key/pad inputs.";
\r
648 // str[0, 0] = "ギターのキー入力に関する項目を設";
\r
649 // str[0, 1] = "定します。";
\r
650 // str[1, 0] = "Settings for the guitar key/pad inputs.";
\r
655 // str[0, 0] = "ベースのキー入力に関する項目を設";
\r
656 // str[0, 1] = "定します。";
\r
657 // str[1, 0] = "Settings for the bass key/pad inputs.";
\r
661 str[ 0, 0 ] = "ドラムの演奏に関する項目を設定します。";
\r
663 str[ 1, 0 ] = "Settings to play the drums.";
\r
668 str[ 0, 0 ] = "ギターの演奏に関する項目を設定します。";
\r
670 str[ 1, 0 ] = "Settings to play the guitar.";
\r
675 str[ 0, 0 ] = "ベースの演奏に関する項目を設定します。";
\r
677 str[ 1, 0 ] = "Settings to play the bass.";
\r
682 str[ 0, 0 ] = "設定を保存し、コンフィグ画面を終了します。";
\r
684 str[ 1, 0 ] = "Save the settings and exit from\nCONFIGURATION menu.";
\r
689 int c = ( CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja" ) ? 0 : 1;
\r
690 for ( int i = 0; i < 2; i++ )
\r
692 graphics.DrawString( str[ c, i ], this.ftフォント, Brushes.White, new PointF( 4f * Scale.X, ( i * 30 ) * Scale.Y ) );
\r
694 graphics.Dispose();
\r
695 if ( this.tx説明文パネル != null )
\r
697 this.tx説明文パネル.Dispose();
\r
699 this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
\r
700 // this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;
\r
701 // this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;
\r
704 catch ( CTextureCreateFailedException )
\r
706 Trace.TraceError( "説明文テクスチャの作成に失敗しました。" );
\r
707 this.tx説明文パネル = null;
\r
710 private void t説明文パネルに現在選択されている項目の説明を描画する()
\r
714 var image = new Bitmap( (int) ( 220 * Scale.X ), (int) ( 192 * Scale.Y ) ); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する・・・のは中止。処理速度向上のため。)
\r
715 var graphics = Graphics.FromImage( image );
\r
716 graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
\r
718 CItemBase item = this.actList.ib現在の選択項目;
\r
719 if ( ( item.str説明文 != null ) && ( item.str説明文.Length > 0 ) )
\r
722 //foreach( string str in item.str説明文.Split( new char[] { '\n' } ) )
\r
724 // graphics.DrawString( str, this.ftフォント, Brushes.White, new PointF( 4f * Scale.X, (float) num * Scale.Y ) );
\r
727 graphics.DrawString( item.str説明文, this.ftフォント, Brushes.White, new RectangleF( 4f * Scale.X, (float) 0 * Scale.Y, 630, 430 ) );
\r
729 graphics.Dispose();
\r
730 if( this.tx説明文パネル != null )
\r
732 this.tx説明文パネル.Dispose();
\r
734 this.tx説明文パネル = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
\r
735 //this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;
\r
736 //this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;
\r
739 catch( CTextureCreateFailedException )
\r
741 Trace.TraceError( "説明文パネルテクスチャの作成に失敗しました。" );
\r
742 this.tx説明文パネル = null;
\r
745 //-----------------
\r