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
15 //public CActDFPFont actFont { get; private set; }
\r
17 public CStageコンフィグ()
\r
20 base.eステージID = CStage.Eステージ.コンフィグ;
\r
21 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
22 //this.actFont = font = new CActDFPFont();
\r
23 //base.list子Activities.Add( font );
\r
24 base.list子Activities.Add(this.actFIFO = new CActFIFOWhite());
\r
25 base.list子Activities.Add(this.actList = new CActConfigList());
\r
26 base.list子Activities.Add(this.actKeyAssign = new CActConfigKeyAssign());
\r
27 base.list子Activities.Add(this.actオプションパネル = new CActオプションパネル());
\r
28 base.b活性化してない = true;
\r
34 public void tアサイン完了通知() // CONFIGにのみ存在
\r
36 this.eItemPanelモード = EItemPanelモード.パッド一覧; //
\r
38 public void tパッド選択通知(EKeyConfigPart part, EKeyConfigPad pad) //
\r
40 this.actKeyAssign.t開始(part, pad, this.actList.ib現在の選択項目.str項目名); //
\r
41 this.eItemPanelモード = EItemPanelモード.キーコード一覧; //
\r
43 public void t項目変更通知() // OPTIONと共通
\r
45 this.t説明文パネルに現在選択されている項目の説明を描画する(); //
\r
51 public override void On活性化()
\r
53 Trace.TraceInformation("コンフィグステージを活性化します。");
\r
57 this.n現在のメニュー番号 = 0; //
\r
58 this.ftフォント = new Font("MS PGothic", 26f / 2 * Scale.Y, FontStyle.Bold, GraphicsUnit.Pixel); //
\r
59 for (int i = 0; i < 4; i++) //
\r
61 this.ctキー反復用[i] = new CCounter(0, 0, 0, CDTXMania.app.Timer); //
\r
63 this.bメニューにフォーカス中 = true; // ここまでOPTIONと共通
\r
64 this.eItemPanelモード = EItemPanelモード.パッド一覧;
\r
66 fDisplayLagTimeBaseMs.Drums = (float)CDTXMania.app.ConfigIni.nJudgeLinePosOffset.Drums / (CDTXMania.app.ConfigIni.n譜面スクロール速度.Drums + 1);
\r
67 fDisplayLagTimeBaseMs.Guitar = (float)CDTXMania.app.ConfigIni.nJudgeLinePosOffset.Guitar / (CDTXMania.app.ConfigIni.n譜面スクロール速度.Guitar + 1);
\r
68 fDisplayLagTimeBaseMs.Bass = (float)CDTXMania.app.ConfigIni.nJudgeLinePosOffset.Bass / (CDTXMania.app.ConfigIni.n譜面スクロール速度.Bass + 1);
\r
72 Trace.TraceInformation("コンフィグステージの活性化を完了しました。");
\r
75 base.On活性化(); // 2011.3.14 yyagi: On活性化()をtryの中から外に移動
\r
77 public override void On非活性化()
\r
79 Trace.TraceInformation("コンフィグステージを非活性化します。");
\r
83 CDTXMania.app.ConfigIni.t書き出し(CDTXMania.app.strEXEのあるフォルダ + "Config.ini"); // CONFIGだけ
\r
84 if (this.ftフォント != null) // 以下OPTIONと共通
\r
86 this.ftフォント.Dispose();
\r
89 for (int i = 0; i < 4; i++)
\r
91 this.ctキー反復用[i] = null;
\r
94 CDTXMania.app.ConfigIni.nJudgeLinePosOffset.Drums = (int)(fDisplayLagTimeBaseMs.Drums * (CDTXMania.app.ConfigIni.n譜面スクロール速度.Drums + 1));
\r
95 CDTXMania.app.ConfigIni.nJudgeLinePosOffset.Guitar = (int)(fDisplayLagTimeBaseMs.Guitar * (CDTXMania.app.ConfigIni.n譜面スクロール速度.Guitar + 1));
\r
96 CDTXMania.app.ConfigIni.nJudgeLinePosOffset.Bass = (int)(fDisplayLagTimeBaseMs.Bass * (CDTXMania.app.ConfigIni.n譜面スクロール速度.Bass + 1));
\r
100 catch (UnauthorizedAccessException e)
\r
102 Trace.TraceError(e.Message + "ファイルが読み取り専用になっていないか、管理者権限がないと書き込めなくなっていないか等を確認して下さい");
\r
104 catch (Exception e)
\r
106 Trace.TraceError(e.Message);
\r
110 Trace.TraceInformation("コンフィグステージの非活性化を完了しました。");
\r
114 public override void OnManagedリソースの作成() // OPTIONと画像以外共通
\r
116 if (!base.b活性化してない)
\r
118 this.tx背景 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig background.jpg"), false);
\r
119 this.tx上部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig header panel.png"), true);
\r
120 this.tx下部パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig footer panel.png"), true);
\r
121 this.txMenuカーソル = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig menu cursor.png"), false);
\r
123 prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));
\r
124 string[] strMenuItem = { "System", "Drums", "Guitar", "Bass", "Exit" };
\r
125 txMenuItemLeft = new CTexture[strMenuItem.Length, 2];
\r
126 for (int i = 0; i < strMenuItem.Length; i++)
\r
129 bmpStr = prvFont.DrawPrivateFont(strMenuItem[i], Color.White, Color.Black);
\r
130 txMenuItemLeft[i, 0] = TextureFactory.tテクスチャの生成(bmpStr, false);
\r
132 bmpStr = prvFont.DrawPrivateFont(strMenuItem[i], Color.White, Color.Black, Color.Yellow, Color.OrangeRed);
\r
133 txMenuItemLeft[i, 1] = TextureFactory.tテクスチャの生成(bmpStr, false);
\r
136 if (this.bメニューにフォーカス中)
\r
138 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
142 this.t説明文パネルに現在選択されている項目の説明を描画する();
\r
144 base.OnManagedリソースの作成();
\r
147 public override void OnManagedリソースの解放() // OPTIONと同じ(COnfig.iniの書き出しタイミングのみ異なるが、無視して良い)
\r
149 if (!base.b活性化してない)
\r
151 TextureFactory.tテクスチャの解放(ref this.tx背景);
\r
152 TextureFactory.tテクスチャの解放(ref this.tx上部パネル);
\r
153 TextureFactory.tテクスチャの解放(ref this.tx下部パネル);
\r
154 TextureFactory.tテクスチャの解放(ref this.txMenuカーソル);
\r
155 TextureFactory.tテクスチャの解放(ref this.tx説明文パネル);
\r
157 for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)
\r
159 txMenuItemLeft[i, 0].Dispose();
\r
160 txMenuItemLeft[i, 0] = null;
\r
161 txMenuItemLeft[i, 1].Dispose();
\r
162 txMenuItemLeft[i, 1] = null;
\r
164 txMenuItemLeft = null;
\r
165 base.OnManagedリソースの解放();
\r
168 public override int On進行描画()
\r
173 if (base.b初めての進行描画)
\r
175 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
\r
176 this.actFIFO.tフェードイン開始();
\r
177 base.b初めての進行描画 = false;
\r
183 //---------------------
\r
184 if (this.tx背景 != null)
\r
185 this.tx背景.t2D描画(CDTXMania.app.Device, 0, 0);
\r
186 //---------------------
\r
188 #region [ メニューカーソル ]
\r
189 //---------------------
\r
190 if (this.txMenuカーソル != null)
\r
192 Rectangle rectangle;
\r
193 this.txMenuカーソル.n透明度 = this.bメニューにフォーカス中 ? 0xff : 0x80;
\r
194 int x = (int)(0x37 * Scale.X);
\r
195 int y = (int)((0x61 + (this.n現在のメニュー番号 * 0x19)) * Scale.Y);
\r
196 int num3 = (int)(170 * Scale.X);
\r
197 this.txMenuカーソル.t2D描画(CDTXMania.app.Device, x, y, new Rectangle(0, 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y)));
\r
198 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
199 x += (int)(0x10 * Scale.X);
\r
200 for (num3 -= (int)(0x20 * Scale.X); num3 > 0; num3 -= rectangle.Width)
\r
202 rectangle = new Rectangle((int)(8 * Scale.X), 0, (int)(0x10 * Scale.X), (int)(0x20 * Scale.Y));
\r
203 if (num3 < (int)(0x10 * Scale.X))
\r
205 rectangle.Width -= (int)(0x10 * Scale.X) - num3;
\r
207 this.txMenuカーソル.t2D描画(CDTXMania.app.Device, x, y, rectangle);
\r
208 x += rectangle.Width;
\r
211 //---------------------
\r
214 //---------------------
\r
215 int menuY = (int)(100 * Scale.Y) - 20;
\r
216 int stepY = (int)(25 * Scale.Y);
\r
217 for (int i = 0; i < txMenuItemLeft.GetLength(0); i++)
\r
219 //Bitmap bmpStr = (this.n現在のメニュー番号 == i) ?
\r
220 // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :
\r
221 // prvFont.DrawPrivateFont( strMenuItem[ i ], Color.White, Color.Black );
\r
222 //txMenuItemLeft = TextureFactory.tテクスチャの生成( bmpStr, false );
\r
223 int flag = (this.n現在のメニュー番号 == i) ? 1 : 0;
\r
224 int num4 = txMenuItemLeft[i, flag].sz画像サイズ.Width;
\r
225 txMenuItemLeft[i, flag].t2D描画(CDTXMania.app.Device, 0x8a * Scale.X - (num4 / 2), menuY); //55
\r
226 //txMenuItem.Dispose();
\r
229 //---------------------
\r
232 //---------------------
\r
233 if (this.tx説明文パネル != null)
\r
234 this.tx説明文パネル.t2D描画(CDTXMania.app.Device, 0x1d * Scale.X, 0xf8 * Scale.Y);
\r
235 //---------------------
\r
238 //---------------------
\r
239 switch (this.eItemPanelモード)
\r
241 case EItemPanelモード.パッド一覧:
\r
242 this.actList.t進行描画(!this.bメニューにフォーカス中);
\r
245 case EItemPanelモード.キーコード一覧:
\r
246 this.actKeyAssign.On進行描画();
\r
249 //---------------------
\r
252 //---------------------
\r
253 if (this.tx上部パネル != null)
\r
254 this.tx上部パネル.t2D描画(CDTXMania.app.Device, 0, 0);
\r
255 //---------------------
\r
258 //---------------------
\r
259 if (this.tx下部パネル != null)
\r
260 this.tx下部パネル.t2D描画(CDTXMania.app.Device, 0, SampleFramework.GameWindowSize.Height - this.tx下部パネル.sz画像サイズ.Height);
\r
261 //---------------------
\r
263 #region [ オプションパネル ]
\r
264 //---------------------
\r
265 this.actオプションパネル.On進行描画();
\r
266 //---------------------
\r
268 #region [ フェードイン・アウト ]
\r
269 //---------------------
\r
270 switch (base.eフェーズID)
\r
272 case CStage.Eフェーズ.共通_フェードイン:
\r
273 if (this.actFIFO.On進行描画() != 0)
\r
275 CDTXMania.app.Skin.bgmコンフィグ画面.t再生する();
\r
276 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
280 case CStage.Eフェーズ.共通_フェードアウト:
\r
281 if (this.actFIFO.On進行描画() == 0)
\r
287 //---------------------
\r
290 #region [ Enumerating Songs ]
\r
291 // CActEnumSongs側で表示する
\r
296 if ((base.eフェーズID != CStage.Eフェーズ.共通_通常状態)
\r
297 || this.actKeyAssign.bキー入力待ちの最中である
\r
298 || CDTXMania.app.act現在入力を占有中のプラグイン != null)
\r
301 // 曲データの一覧取得中は、キー入力を無効化する
\r
302 if (!CDTXMania.app.EnumSongs.IsEnumerating || CDTXMania.app.actEnumSongs.bコマンドでの曲データ取得 != true)
\r
304 if ((CDTXMania.app.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || CDTXMania.app.Pad.b押された(E楽器パート.DRUMS, Eパッド.FT)) || CDTXMania.app.Pad.b押されたGB(Eパッド.FT))
\r
306 CDTXMania.app.Skin.sound取消音.t再生する();
\r
307 if (!this.bメニューにフォーカス中)
\r
309 if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)
\r
314 if (!this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi
\r
316 this.bメニューにフォーカス中 = true;
\r
318 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
319 this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用
\r
323 this.actFIFO.tフェードアウト開始();
\r
324 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
328 else if (CDTXMania.app.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow)) // 左カーソルキー
\r
330 if (!this.bメニューにフォーカス中)
\r
332 if (this.eItemPanelモード == EItemPanelモード.キーコード一覧)
\r
334 //キーコンフィグ画面中は、[←]押下に反応させない
\r
337 if (this.actList.bIsFocusingParameter)
\r
339 // パラメータを増減している最中も、[←]押下に反応させない
\r
342 if (!this.actList.bIsKeyAssignSelected && !this.actList.bIsFocusingParameter) // #24525 2011.3.15 yyagi, #32059 2013.9.17 yyagi
\r
344 this.bメニューにフォーカス中 = true;
\r
346 CDTXMania.app.Skin.sound取消音.t再生する();
\r
347 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
348 this.actList.tEsc押下(); // #24525 2011.3.15 yyagi ESC押下時の右メニュー描画用
\r
352 else if ((CDTXMania.app.Pad.b押されたDGB(Eパッド.CY) || CDTXMania.app.Pad.b押された(E楽器パート.DRUMS, Eパッド.RD)) || (CDTXMania.app.Pad.b押された(E楽器パート.DRUMS, Eパッド.LC) || (CDTXMania.app.ConfigIni.bEnterがキー割り当てのどこにも使用されていない && CDTXMania.app.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Return))))
\r
355 if (this.n現在のメニュー番号 == 4)
\r
357 CDTXMania.app.Skin.sound決定音.t再生する();
\r
358 this.actFIFO.tフェードアウト開始();
\r
359 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
362 else if (this.bメニューにフォーカス中)
\r
364 CDTXMania.app.Skin.sound決定音.t再生する();
\r
365 this.bメニューにフォーカス中 = false;
\r
366 this.t説明文パネルに現在選択されている項目の説明を描画する();
\r
370 switch (this.eItemPanelモード)
\r
372 case EItemPanelモード.パッド一覧:
\r
373 bool bIsKeyAssignSelectedBeforeHitEnter = this.actList.bIsKeyAssignSelected; // #24525 2011.3.15 yyagi
\r
374 this.actList.tEnter押下();
\r
375 if (this.actList.b現在選択されている項目はReturnToMenuである)
\r
377 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
378 if (bIsKeyAssignSelectedBeforeHitEnter == false) // #24525 2011.3.15 yyagi
\r
380 this.bメニューにフォーカス中 = true;
\r
385 case EItemPanelモード.キーコード一覧:
\r
386 this.actKeyAssign.tEnter押下();
\r
392 else if (CDTXMania.app.Input管理.Keyboard.bキーが押された((int)SlimDX.DirectInput.Key.RightArrow)) // 右カーソルキー
\r
395 if (this.n現在のメニュー番号 == 4)
\r
400 else if (this.bメニューにフォーカス中)
\r
402 CDTXMania.app.Skin.sound決定音.t再生する();
\r
403 this.bメニューにフォーカス中 = false;
\r
404 this.t説明文パネルに現在選択されている項目の説明を描画する();
\r
408 this.ctキー反復用.Up.tキー反復(CDTXMania.app.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.UpArrow), new CCounter.DGキー処理(this.tカーソルを上へ移動する));
\r
409 this.ctキー反復用.R.tキー反復(CDTXMania.app.Pad.b押されているGB(Eパッド.HH), new CCounter.DGキー処理(this.tカーソルを上へ移動する));
\r
410 if (CDTXMania.app.Pad.b押された(E楽器パート.DRUMS, Eパッド.SD))
\r
412 this.tカーソルを上へ移動する();
\r
414 this.ctキー反復用.Down.tキー反復(CDTXMania.app.Input管理.Keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.DownArrow), new CCounter.DGキー処理(this.tカーソルを下へ移動する));
\r
415 this.ctキー反復用.B.tキー反復(CDTXMania.app.Pad.b押されているGB(Eパッド.BD), new CCounter.DGキー処理(this.tカーソルを下へ移動する));
\r
416 if (CDTXMania.app.Pad.b押された(E楽器パート.DRUMS, Eパッド.LT))
\r
418 this.tカーソルを下へ移動する();
\r
428 #region [ private ]
\r
429 //-----------------
\r
430 private enum EItemPanelモード
\r
436 [StructLayout(LayoutKind.Sequential)]
\r
437 private struct STキー反復用カウンタ
\r
439 public CCounter Up;
\r
440 public CCounter Down;
\r
443 public CCounter this[int index]
\r
461 throw new IndexOutOfRangeException();
\r
483 throw new IndexOutOfRangeException();
\r
488 private CActFIFOWhite actFIFO;
\r
489 private CActConfigKeyAssign actKeyAssign;
\r
490 private CActConfigList actList;
\r
491 private CActオプションパネル actオプションパネル;
\r
492 private bool bメニューにフォーカス中;
\r
493 private STキー反復用カウンタ ctキー反復用;
\r
494 private const int DESC_H = 0x80;
\r
495 private const int DESC_W = 220;
\r
496 private EItemPanelモード eItemPanelモード;
\r
497 private Font ftフォント;
\r
498 private int n現在のメニュー番号;
\r
499 private CTexture txMenuカーソル;
\r
500 private CTextureAf tx下部パネル;
\r
501 private CTextureAf tx上部パネル;
\r
502 private CTexture tx説明文パネル;
\r
503 private CTexture tx背景;
\r
504 private CPrivateFastFont prvFont;
\r
505 private CTexture[,] txMenuItemLeft;
\r
506 private STDGBVALUE<float> fDisplayLagTimeBaseMs;
\r
508 private void tカーソルを下へ移動する()
\r
510 if (!this.bメニューにフォーカス中)
\r
512 switch (this.eItemPanelモード)
\r
514 case EItemPanelモード.パッド一覧:
\r
515 this.actList.t次に移動();
\r
518 case EItemPanelモード.キーコード一覧:
\r
519 this.actKeyAssign.t次に移動();
\r
525 CDTXMania.app.Skin.soundカーソル移動音.t再生する();
\r
526 this.n現在のメニュー番号 = (this.n現在のメニュー番号 + 1) % 5;
\r
527 switch (this.n現在のメニュー番号)
\r
530 this.actList.t項目リストの設定_System();
\r
534 // this.actList.t項目リストの設定・KeyAssignDrums();
\r
538 // this.actList.t項目リストの設定・KeyAssignGuitar();
\r
542 // this.actList.t項目リストの設定・KeyAssignBass();
\r
546 this.actList.t項目リストの設定_Drums();
\r
550 this.actList.t項目リストの設定_Guitar();
\r
554 this.actList.t項目リストの設定_Bass();
\r
558 this.actList.t項目リストの設定_Exit();
\r
561 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
564 private void tカーソルを上へ移動する()
\r
566 if (!this.bメニューにフォーカス中)
\r
568 switch (this.eItemPanelモード)
\r
570 case EItemPanelモード.パッド一覧:
\r
571 this.actList.t前に移動();
\r
574 case EItemPanelモード.キーコード一覧:
\r
575 this.actKeyAssign.t前に移動();
\r
581 CDTXMania.app.Skin.soundカーソル移動音.t再生する();
\r
582 this.n現在のメニュー番号 = ((this.n現在のメニュー番号 - 1) + 5) % 5;
\r
583 switch (this.n現在のメニュー番号)
\r
586 this.actList.t項目リストの設定_System();
\r
590 // this.actList.t項目リストの設定・KeyAssignDrums();
\r
594 // this.actList.t項目リストの設定・KeyAssignGuitar();
\r
598 // this.actList.t項目リストの設定・KeyAssignBass();
\r
601 this.actList.t項目リストの設定_Drums();
\r
605 this.actList.t項目リストの設定_Guitar();
\r
609 this.actList.t項目リストの設定_Bass();
\r
613 this.actList.t項目リストの設定_Exit();
\r
616 this.t説明文パネルに現在選択されているメニューの説明を描画する();
\r
619 private void t説明文パネルに現在選択されているメニューの説明を描画する()
\r
623 var image = new Bitmap((int)(220 * 2 * Scale.X), (int)(192 * 2 * Scale.Y)); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する。)
\r
624 var graphics = Graphics.FromImage(image);
\r
625 graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
\r
627 string[,] str = new string[2, 2];
\r
628 switch (this.n現在のメニュー番号)
\r
631 str[0, 0] = "システムに関係する項目を設定します。";
\r
633 str[1, 0] = "Settings for an overall systems.";
\r
637 // str[0, 0] = "ドラムのキー入力に関する項目を設";
\r
638 // str[0, 1] = "定します。";
\r
639 // str[1, 0] = "Settings for the drums key/pad inputs.";
\r
644 // str[0, 0] = "ギターのキー入力に関する項目を設";
\r
645 // str[0, 1] = "定します。";
\r
646 // str[1, 0] = "Settings for the guitar key/pad inputs.";
\r
651 // str[0, 0] = "ベースのキー入力に関する項目を設";
\r
652 // str[0, 1] = "定します。";
\r
653 // str[1, 0] = "Settings for the bass key/pad inputs.";
\r
657 str[0, 0] = "ドラムの演奏に関する項目を設定します。";
\r
659 str[1, 0] = "Settings to play the drums.";
\r
664 str[0, 0] = "ギターの演奏に関する項目を設定します。";
\r
666 str[1, 0] = "Settings to play the guitar.";
\r
671 str[0, 0] = "ベースの演奏に関する項目を設定します。";
\r
673 str[1, 0] = "Settings to play the bass.";
\r
678 str[0, 0] = "設定を保存し、コンフィグ画面を終了します。";
\r
680 str[1, 0] = "Save the settings and exit from\nCONFIGURATION menu.";
\r
685 int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;
\r
686 for (int i = 0; i < 2; i++)
\r
688 graphics.DrawString(str[c, i], this.ftフォント, Brushes.White, new PointF(4f * Scale.X, (i * 30) * Scale.Y));
\r
690 graphics.Dispose();
\r
691 if (this.tx説明文パネル != null)
\r
693 this.tx説明文パネル.Dispose();
\r
695 this.tx説明文パネル = new CTexture(CDTXMania.app.Device, image, CDTXMania.app.TextureFormat);
\r
696 // this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;
\r
697 // this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;
\r
700 catch (CTextureCreateFailedException)
\r
702 Trace.TraceError("説明文テクスチャの作成に失敗しました。");
\r
703 this.tx説明文パネル = null;
\r
706 private void t説明文パネルに現在選択されている項目の説明を描画する()
\r
710 var image = new Bitmap((int)(220 * Scale.X), (int)(192 * Scale.Y)); // 説明文領域サイズの縦横 2 倍。(描画時に 0.5 倍で表示する・・・のは中止。処理速度向上のため。)
\r
711 var graphics = Graphics.FromImage(image);
\r
712 graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
\r
714 CItemBase item = this.actList.ib現在の選択項目;
\r
715 if ((item.str説明文 != null) && (item.str説明文.Length > 0))
\r
718 //foreach( string str in item.str説明文.Split( new char[] { '\n' } ) )
\r
720 // graphics.DrawString( str, this.ftフォント, Brushes.White, new PointF( 4f * Scale.X, (float) num * Scale.Y ) );
\r
723 graphics.DrawString(item.str説明文, this.ftフォント, Brushes.White, new RectangleF(4f * Scale.X, (float)0 * Scale.Y, 630, 430));
\r
725 graphics.Dispose();
\r
726 if (this.tx説明文パネル != null)
\r
728 this.tx説明文パネル.Dispose();
\r
730 this.tx説明文パネル = new CTexture(CDTXMania.app.Device, image, CDTXMania.app.TextureFormat);
\r
731 //this.tx説明文パネル.vc拡大縮小倍率.X = 0.5f;
\r
732 //this.tx説明文パネル.vc拡大縮小倍率.Y = 0.5f;
\r
735 catch (CTextureCreateFailedException)
\r
737 Trace.TraceError("説明文パネルテクスチャの作成に失敗しました。");
\r
738 this.tx説明文パネル = null;
\r
741 //-----------------
\r