2 using System.Collections.Generic;
\r
3 using System.Diagnostics;
\r
5 using System.Drawing;
\r
6 using System.Threading;
\r
12 internal class CActConfigList : CActivity
\r
14 STDGBSValue<COptionLabel> ReturnToMenu;
\r
15 STDGBSValue<COptionLabel> KeyAssignMenu;
\r
16 STDGBSValue<COptionLabel> DisplayMenu;
\r
17 COptionStringList skins;
\r
19 bool b項目リスト側にフォーカスがある;
\r
23 // #33689 2014.6.17 yyagi
\r
24 bool InitialUseOSTimer;
\r
25 bool InitialWASAPIEventDriven;
\r
26 ESoundDeviceTypeForConfig InitialSystemSoundType;
\r
27 int InitialWASAPIBufferSizeMs;
\r
28 int InitialASIODevice;
\r
29 bool InitialForceHighPower;
\r
30 List<COptionBase> list項目リスト;
\r
34 Point[] ptパネルの基本座標 = new Point[]
\r
36 new Point(0x12d, 3), new Point(0x12d, 0x35), new Point(0x12d, 0x67),
\r
37 new Point(0x12d, 0x99), new Point(0x114, 0xcb), new Point(0x12d, 0xfd),
\r
38 new Point(0x12d, 0x12f), new Point(0x12d, 0x161), new Point(0x12d, 0x193),
\r
39 new Point(0x12d, 0x1c5)
\r
41 CTextureAf txその他項目行パネル;
\r
43 CTextureAf tx通常項目行パネル;
\r
44 // #28195 2012.5.2 yyagi
\r
45 CTexture txSkinSample;
\r
46 string[] skinSubFolders;
\r
49 CPrivateFastFont prvFont;
\r
50 private struct stMenuItemRight
\r
52 public CTexture txMenuItemRight;
\r
54 public string strParam;
\r
55 public CTexture txParam;
\r
56 public CTexture txParamColored;
\r
58 stMenuItemRight[] listMenu;
\r
61 /// #32059 2013.9.17 yyagi
\r
63 public bool bIsFocusingParameter
\r
71 public bool b現在選択されている項目はReturnToMenuである
\r
75 COptionBase sel = this.list項目リスト[this.n現在の選択項目];
\r
77 for (EPart i = EPart.Drums; i <= EPart.System; ++i)
\r
79 if (sel == ReturnToMenu[i])
\r
88 public bool b楽器またはシステム用メニューである
\r
92 return eメニュー種別 == Eメニュー種別.Bass || eメニュー種別 == Eメニュー種別.Drums || eメニュー種別 == Eメニュー種別.Guitar || eメニュー種別 == Eメニュー種別.System;
\r
96 public COptionBase ib現在の選択項目
\r
100 return this.list項目リスト[this.n現在の選択項目];
\r
104 public int n現在の選択項目;
\r
109 public void tEsc押下()
\r
111 if (this.b要素値にフォーカス中)
\r
113 // #32059 2013.9.17 add yyagi
\r
114 this.b要素値にフォーカス中 = false;
\r
117 if (this.eメニュー種別 == Eメニュー種別.KeyAssignSystem)
\r
119 t項目リストの設定(Eメニュー種別.System);
\r
121 else if (this.eメニュー種別 == Eメニュー種別.KeyAssignDrums)
\r
123 t項目リストの設定(Eメニュー種別.Drums);
\r
125 else if (this.eメニュー種別 == Eメニュー種別.KeyAssignGuitar)
\r
127 t項目リストの設定(Eメニュー種別.Guitar);
\r
129 else if (this.eメニュー種別 == Eメニュー種別.KeyAssignBass)
\r
131 t項目リストの設定(Eメニュー種別.Bass);
\r
133 if (this.eメニュー種別 == Eメニュー種別.DisplaySystem)
\r
135 t項目リストの設定(Eメニュー種別.System);
\r
137 else if (this.eメニュー種別 == Eメニュー種別.DisplayDrums)
\r
139 t項目リストの設定(Eメニュー種別.Drums);
\r
141 else if (this.eメニュー種別 == Eメニュー種別.DisplayGuitar)
\r
143 t項目リストの設定(Eメニュー種別.Guitar);
\r
145 else if (this.eメニュー種別 == Eメニュー種別.DisplayBass)
\r
147 t項目リストの設定(Eメニュー種別.Bass);
\r
151 public bool tEnter押下()
\r
154 CDTXMania.Instance.Skin.sound決定音.t再生する();
\r
156 if (this.b要素値にフォーカス中)
\r
158 this.b要素値にフォーカス中 = false;
\r
160 else if (this.list項目リスト[this.n現在の選択項目] is COptionInteger)
\r
162 this.b要素値にフォーカス中 = true;
\r
164 else if (this.list項目リスト[this.n現在の選択項目] is IOptionList || this.list項目リスト[this.n現在の選択項目] is COptionBool)
\r
166 this.list項目リスト[this.n現在の選択項目].OnNext();
\r
169 // #27029 2012.1.5 from
\r
171 CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.Group &&
\r
173 (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHHGroup ||
\r
174 this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH)))
\r
180 if (b現在選択されている項目はReturnToMenuである && b楽器またはシステム用メニューである)
\r
184 this.list項目リスト[this.n現在の選択項目].OnEnter();
\r
189 private void tGenerateSkinSample()
\r
191 string path = skinSubFolders[skins.Index];
\r
192 path = System.IO.Path.Combine(path, @"Graphics\ScreenTitle background.jpg");
\r
193 using (Bitmap bmSrc = new Bitmap(path))
\r
195 using (Bitmap bmDest = new Bitmap(bmSrc.Width / 4, bmSrc.Height / 4))
\r
197 using (Graphics g = Graphics.FromImage(bmDest))
\r
199 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
\r
200 g.DrawImage(bmSrc, new Rectangle(0, 0, bmSrc.Width / 4, bmSrc.Height / 4),
\r
201 0, 0, bmSrc.Width, bmSrc.Height, GraphicsUnit.Pixel);
\r
202 TextureFactory.tテクスチャの解放(ref txSkinSample);
\r
203 txSkinSample = TextureFactory.tテクスチャの生成(bmDest, false);
\r
209 // #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]
\r
210 public void t項目リストの設定_Exit()
\r
212 CDTXMania.Instance.SaveConfig();
\r
213 this.eメニュー種別 = Eメニュー種別.Unknown;
\r
216 public void t項目リストの設定(Eメニュー種別 eMenu)
\r
218 this.list項目リスト.Clear();
\r
220 Func<EPad, string, string, COptionString> PadNotifier = (pad, lbl, expl) =>
\r
222 COptionString opt = new COptionString("");
\r
223 opt.Initialize(lbl, expl);
\r
224 opt.OnEnterDelegate = () =>
\r
226 CDTXMania.Instance.stageコンフィグ.tパッド選択通知(pad);
\r
231 if (eMenu == Eメニュー種別.DisplaySystem)
\r
233 list項目リスト.Add(ReturnToMenu.System);
\r
234 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullScreen);
\r
235 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBGA);
\r
236 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAVI);
\r
237 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullAVI);
\r
238 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bVSyncWait);
\r
239 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.Both);
\r
240 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.Both);
\r
241 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.DrOnly);
\r
242 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.DrOnly);
\r
243 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.GBOnly);
\r
244 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.GBOnly);
\r
245 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.Both);
\r
246 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.Both);
\r
247 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.DrOnly);
\r
248 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.DrOnly);
\r
249 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.GBOnly);
\r
250 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.GBOnly);
\r
251 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nBGAlpha);
\r
252 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nShowLagType);
\r
253 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eJudgePriority);
\r
254 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDebugInfo);
\r
256 else if (eMenu == Eメニュー種別.DisplayDrums)
\r
258 list項目リスト.Add(ReturnToMenu.Drums);
\r
259 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.Both);
\r
260 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.DrOnly);
\r
261 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.Both);
\r
262 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.DrOnly);
\r
263 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Drums);
\r
264 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Drums);
\r
265 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LC);
\r
266 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HH);
\r
267 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.SD);
\r
268 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BD);
\r
269 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HT);
\r
270 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LT);
\r
271 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.FT);
\r
272 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.CY);
\r
273 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Drums);
\r
274 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Drums);
\r
275 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Drums);
\r
276 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Drums);
\r
278 else if (eMenu == Eメニュー種別.DisplayGuitar)
\r
280 list項目リスト.Add(ReturnToMenu.Guitar);
\r
281 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.Both);
\r
282 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.GBOnly);
\r
283 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.Both);
\r
284 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.GBOnly);
\r
285 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Guitar);
\r
286 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Guitar);
\r
287 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtR);
\r
288 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtG);
\r
289 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtB);
\r
290 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Guitar);
\r
291 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Guitar);
\r
292 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Guitar);
\r
293 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Guitar);
\r
295 else if (eMenu == Eメニュー種別.DisplayBass)
\r
297 list項目リスト.Add(ReturnToMenu.Bass);
\r
298 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.Both);
\r
299 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.GBOnly);
\r
300 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.Both);
\r
301 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.GBOnly);
\r
302 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Bass);
\r
303 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Bass);
\r
304 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsR);
\r
305 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsG);
\r
306 list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsB);
\r
307 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Bass);
\r
308 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Bass);
\r
309 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Bass);
\r
310 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Bass);
\r
312 else if (eMenu == Eメニュー種別.KeyAssignSystem)
\r
314 list項目リスト.Add(ReturnToMenu.System);
\r
315 list項目リスト.Add(PadNotifier(EPad.Capture, "Capture", Properties.Resources.strCfgKeyAssignキャプチャ説明));
\r
317 else if (eMenu == Eメニュー種別.KeyAssignDrums)
\r
319 list項目リスト.Add(ReturnToMenu.Drums);
\r
320 list項目リスト.Add(PadNotifier(EPad.LC, "LeftCymbal", Properties.Resources.strCfgKeyAssignLC));
\r
321 list項目リスト.Add(PadNotifier(EPad.HH, "HiHat(Close)", Properties.Resources.strCfgKeyAssignHH));
\r
322 list項目リスト.Add(PadNotifier(EPad.HHO, "HiHat(Open)", Properties.Resources.strCfgKeyAssignHHO));
\r
323 list項目リスト.Add(PadNotifier(EPad.SD, "Snare", Properties.Resources.strCfgKeyAssignSD));
\r
324 list項目リスト.Add(PadNotifier(EPad.BD, "Kick", Properties.Resources.strCfgKeyAssignBD));
\r
325 list項目リスト.Add(PadNotifier(EPad.HT, "HighTom", Properties.Resources.strCfgKeyAssignHT));
\r
326 list項目リスト.Add(PadNotifier(EPad.LT, "LowTom", Properties.Resources.strCfgKeyAssignLT));
\r
327 list項目リスト.Add(PadNotifier(EPad.FT, "FloorTom", Properties.Resources.strCfgKeyAssignFT));
\r
328 list項目リスト.Add(PadNotifier(EPad.CY, "Cymbal", Properties.Resources.strCfgKeyAssignCY));
\r
329 list項目リスト.Add(PadNotifier(EPad.RD, "RideCymbal", Properties.Resources.strCfgKeyAssignRD));
\r
330 list項目リスト.Add(PadNotifier(EPad.HP, "HiHatPedal", Properties.Resources.strCfgKeyAssignHP));
\r
331 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHHGroup);
\r
332 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eFTGroup);
\r
333 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eCYGroup);
\r
334 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eBDGroup);
\r
335 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bCymbalFree);
\r
336 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums);
\r
338 else if (eMenu == Eメニュー種別.KeyAssignGuitar)
\r
340 list項目リスト.Add(ReturnToMenu.Guitar);
\r
341 list項目リスト.Add(PadNotifier(EPad.GtR, "R", Properties.Resources.strCfgKeyAssignGtR));
\r
342 list項目リスト.Add(PadNotifier(EPad.GtG, "G", Properties.Resources.strCfgKeyAssignGtG));
\r
343 list項目リスト.Add(PadNotifier(EPad.GtB, "B", Properties.Resources.strCfgKeyAssignGtB));
\r
344 list項目リスト.Add(PadNotifier(EPad.GtPick, "Pick", Properties.Resources.strCfgKeyAssignGtPick));
\r
345 list項目リスト.Add(PadNotifier(EPad.GtWail, "Wailing", Properties.Resources.strCfgKeyAssignGtWailing));
\r
346 list項目リスト.Add(PadNotifier(EPad.GtDecide, "Decide", Properties.Resources.strCfgKeyAssignGtDecide));
\r
347 list項目リスト.Add(PadNotifier(EPad.GtCancel, "Cancel", Properties.Resources.strCfgKeyAssignGtCancel));
\r
348 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar);
\r
350 else if (eMenu == Eメニュー種別.KeyAssignBass)
\r
352 list項目リスト.Add(ReturnToMenu.Bass);
\r
353 list項目リスト.Add(PadNotifier(EPad.BsR, "R", Properties.Resources.strCfgKeyAssignBsR));
\r
354 list項目リスト.Add(PadNotifier(EPad.BsG, "G", Properties.Resources.strCfgKeyAssignBsG));
\r
355 list項目リスト.Add(PadNotifier(EPad.BsB, "B", Properties.Resources.strCfgKeyAssignBsB));
\r
356 list項目リスト.Add(PadNotifier(EPad.BsPick, "Pick", Properties.Resources.strCfgKeyAssignBsPick));
\r
357 list項目リスト.Add(PadNotifier(EPad.BsWail, "Wailing", Properties.Resources.strCfgKeyAssignBsWailing));
\r
358 list項目リスト.Add(PadNotifier(EPad.BsDecide, "Decide", Properties.Resources.strCfgKeyAssignBsDecide));
\r
359 list項目リスト.Add(PadNotifier(EPad.BsCancel, "Cancel", Properties.Resources.strCfgKeyAssignBsCancel));
\r
360 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass);
\r
362 else if (eMenu == Eメニュー種別.System)
\r
364 list項目リスト.Add(ReturnToMenu.System);
\r
365 COptionString enumsongs = new COptionString("");
\r
366 enumsongs.Initialize("EnumerateSongs", Properties.Resources.strCfgSysEnumSongs);
\r
367 list項目リスト.Add(enumsongs);
\r
368 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDark);
\r
369 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nRisky);
\r
370 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eActiveInst);
\r
371 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPlaySpeed);
\r
372 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bTimeStretch);
\r
373 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bForceHighPowerPlan);
\r
374 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStageFailed);
\r
375 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bRandSubBox);
\r
376 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bWaveAdjust);
\r
377 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreSoundWeightMs);
\r
378 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreImageWeightMs);
\r
379 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBGMPlay);
\r
380 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAudience);
\r
381 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDamageLevel);
\r
382 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bScoreIni);
\r
383 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nChipVolume);
\r
384 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nAutoVolume);
\r
385 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStoicMode);
\r
386 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bIsAutoResultCapture);
\r
387 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBufferedInput);
\r
388 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLog);
\r
389 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLoadSoundSpeed);
\r
390 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nSoundDeviceType);
\r
391 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs);
\r
392 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI);
\r
393 list項目リスト.Add(CDTXMania.Instance.ConfigIni.strASIODevice );
\r
394 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bUseOSTimer);
\r
395 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMasterVolume);
\r
396 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bUseBoxDefSkin);
\r
397 list項目リスト.Add(skins);
\r
398 list項目リスト.Add(DisplayMenu.System);
\r
399 list項目リスト.Add(KeyAssignMenu.System);
\r
400 enumsongs.OnEnterDelegate = () =>
\r
402 if (CDTXMania.Instance.EnumSongs.IsEnumerating)
\r
404 // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );
\r
405 CDTXMania.Instance.EnumSongs.Abort();
\r
406 CDTXMania.Instance.actEnumSongs.On非活性化();
\r
409 CDTXMania.Instance.EnumSongs.StartEnumFromDisk();
\r
410 CDTXMania.Instance.EnumSongs.ChangeEnumeratePriority(ThreadPriority.Normal);
\r
411 CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得 = true;
\r
412 CDTXMania.Instance.actEnumSongs.On活性化();
\r
415 else if (eMenu == Eメニュー種別.Drums)
\r
417 list項目リスト.Add(ReturnToMenu.Drums);
\r
418 COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);
\r
419 AllAuto.Initialize("AllAuto", Properties.Resources.strCfgDrAllAuto, typeof(EThreeState));
\r
420 AllAuto.OnEnterDelegate = () =>
\r
422 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Drums, AllAuto);
\r
424 list項目リスト.Add(AllAuto);
\r
425 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LC);
\r
426 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HH);
\r
427 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HHO);
\r
428 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.SD);
\r
429 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BD);
\r
430 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HT);
\r
431 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LT);
\r
432 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.FT);
\r
433 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.CY);
\r
434 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.RD);
\r
435 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums);
\r
436 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH);
\r
437 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT);
\r
438 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY);
\r
439 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bTight);
\r
440 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFillin);
\r
441 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDrumsHitSound);
\r
442 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);
\r
443 list項目リスト.Add(DisplayMenu.Drums);
\r
444 list項目リスト.Add(KeyAssignMenu.Drums);
\r
446 else if (eMenu == Eメニュー種別.Guitar)
\r
448 list項目リスト.Add(ReturnToMenu.Guitar);
\r
449 COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);
\r
450 AllAuto.Initialize("AllAuto", Properties.Resources.strCfgDrAllAuto, typeof(EThreeState));
\r
451 AllAuto.OnEnterDelegate = () =>
\r
453 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Guitar, AllAuto);
\r
455 list項目リスト.Add(AllAuto);
\r
456 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtR);
\r
457 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtG);
\r
458 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtB);
\r
459 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick);
\r
460 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail);
\r
461 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Guitar);
\r
462 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Guitar);
\r
463 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Guitar);
\r
464 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Guitar);
\r
465 list項目リスト.Add(DisplayMenu.Guitar);
\r
466 list項目リスト.Add(KeyAssignMenu.Guitar);
\r
468 else if (eMenu == Eメニュー種別.Bass)
\r
470 list項目リスト.Add(ReturnToMenu.Bass);
\r
471 COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);
\r
472 AllAuto.Initialize("AllAuto", Properties.Resources.strCfgDrAllAuto, typeof(EThreeState));
\r
473 AllAuto.OnEnterDelegate = () =>
\r
475 CDTXMania.Instance.ConfigIni.bAutoPlay.Set(EPart.Bass, AllAuto);
\r
477 list項目リスト.Add(AllAuto);
\r
478 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsR);
\r
479 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsG);
\r
480 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsB);
\r
481 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick);
\r
482 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail);
\r
483 list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Bass);
\r
484 list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Bass);
\r
485 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Bass);
\r
486 list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Bass);
\r
487 list項目リスト.Add(DisplayMenu.Bass);
\r
488 list項目リスト.Add(KeyAssignMenu.Bass);
\r
495 public void OnNext()
\r
497 CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();
\r
500 list項目リスト[n現在の選択項目].OnPrevious();
\r
505 n目標のスクロールカウンタ += 100;
\r
509 public void OnPrevious()
\r
511 CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();
\r
514 list項目リスト[n現在の選択項目].OnNext();
\r
519 n目標のスクロールカウンタ -= 100;
\r
523 private void t要素値を上下に変更中の処理()
\r
525 if (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.nMasterVolume)
\r
527 // #33700 2014.4.26 yyagi
\r
528 CDTXMania.Instance.Sound管理.nMasterVolume = CDTXMania.Instance.ConfigIni.nMasterVolume;
\r
532 public override void On活性化()
\r
536 this.list項目リスト = new List<COptionBase>();
\r
537 this.eメニュー種別 = Eメニュー種別.Unknown;
\r
538 this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));
\r
539 this.b要素値にフォーカス中 = false;
\r
540 this.n目標のスクロールカウンタ = 0;
\r
541 this.n現在のスクロールカウンタ = 0;
\r
542 this.nスクロール用タイマ値 = -1;
\r
543 this.ct三角矢印アニメ = new CCounter();
\r
545 DisplayMenu = new STDGBSValue<COptionLabel>();
\r
546 KeyAssignMenu = new STDGBSValue<COptionLabel>();
\r
547 ReturnToMenu = new STDGBSValue<COptionLabel>();
\r
548 for (EPart i = EPart.Drums; i <= EPart.System; ++i)
\r
550 DisplayMenu[i] = new COptionLabel("Display Options", "");
\r
551 KeyAssignMenu[i] = new COptionLabel("Input Options", "");
\r
552 ReturnToMenu[i] = new COptionLabel("<< Return to Menu", "");
\r
555 DisplayMenu.Drums.OnEnterDelegate = () =>
\r
557 t項目リストの設定(Eメニュー種別.DisplayDrums);
\r
559 DisplayMenu.Guitar.OnEnterDelegate = () =>
\r
561 t項目リストの設定(Eメニュー種別.DisplayGuitar);
\r
563 DisplayMenu.Bass.OnEnterDelegate = () =>
\r
565 t項目リストの設定(Eメニュー種別.DisplayBass);
\r
567 DisplayMenu.System.OnEnterDelegate = () =>
\r
569 t項目リストの設定(Eメニュー種別.DisplaySystem);
\r
572 KeyAssignMenu.Drums.OnEnterDelegate = () =>
\r
574 t項目リストの設定(Eメニュー種別.KeyAssignDrums);
\r
576 KeyAssignMenu.Guitar.OnEnterDelegate = () =>
\r
578 t項目リストの設定(Eメニュー種別.KeyAssignGuitar);
\r
580 KeyAssignMenu.Bass.OnEnterDelegate = () =>
\r
582 t項目リストの設定(Eメニュー種別.KeyAssignBass);
\r
584 KeyAssignMenu.System.OnEnterDelegate = () =>
\r
586 t項目リストの設定(Eメニュー種別.KeyAssignSystem);
\r
589 ReturnToMenu.Drums.OnEnterDelegate = () =>
\r
591 t項目リストの設定(Eメニュー種別.Drums);
\r
593 ReturnToMenu.Guitar.OnEnterDelegate = () =>
\r
595 t項目リストの設定(Eメニュー種別.Guitar);
\r
597 ReturnToMenu.Bass.OnEnterDelegate = () =>
\r
599 t項目リストの設定(Eメニュー種別.Bass);
\r
601 ReturnToMenu.System.OnEnterDelegate = () =>
\r
603 t項目リストの設定(Eメニュー種別.System);
\r
606 #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]
\r
607 int ns = (CDTXMania.Instance.Skin.strSystemSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strSystemSkinSubfolders.Length;
\r
608 int nb = (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strBoxDefSkinSubfolders.Length;
\r
610 skinSubFolders = new string[ns + nb];
\r
611 skinInitial = CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true);
\r
613 for (int i = 0; i < ns; i++)
\r
615 skinSubFolders[i] = CDTXMania.Instance.Skin.strSystemSkinSubfolders[i];
\r
617 for (int i = 0; i < nb; i++)
\r
619 skinSubFolders[ns + i] = CDTXMania.Instance.Skin.strBoxDefSkinSubfolders[i];
\r
621 Array.Sort(skinSubFolders);
\r
622 skinNames = CSkin.GetSkinName(skinSubFolders);
\r
623 initIdx = Array.BinarySearch(skinSubFolders, skinInitial);
\r
628 skins = new COptionStringList(skinNames[initIdx]);
\r
629 skins.Initialize("Skin", Properties.Resources.strCfgSysSkin, skinNames);
\r
631 skins.OnEnterDelegate = () =>
\r
633 CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(skinSubFolders[skins.Index], true);
\r
634 CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderPath.Value = skinSubFolders[skins.Index];
\r
635 tGenerateSkinSample();
\r
639 // CONFIG脱出時にこの値から変更されているようなら
\r
641 this.InitialSystemSoundType = CDTXMania.Instance.ConfigIni.nSoundDeviceType;
\r
642 this.InitialWASAPIBufferSizeMs = CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs;
\r
643 this.InitialASIODevice = CDTXMania.Instance.ConfigIni.strASIODevice.Index;
\r
644 this.InitialUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;
\r
645 this.InitialWASAPIEventDriven = CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI;
\r
647 this.InitialForceHighPower = CDTXMania.Instance.ConfigIni.bForceHighPowerPlan;
\r
649 // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、
\r
650 this.t項目リストの設定(Eメニュー種別.Bass);
\r
651 // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。
\r
652 this.t項目リストの設定(Eメニュー種別.Guitar);
\r
653 this.t項目リストの設定(Eメニュー種別.Drums);
\r
654 // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。
\r
655 this.t項目リストの設定(Eメニュー種別.System);
\r
661 public override void On非活性化()
\r
665 CDTXMania.Instance.SaveConfig();
\r
666 this.list項目リスト.Clear();
\r
667 this.ct三角矢印アニメ = null;
\r
674 if (CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true) != this.skinInitial)
\r
676 CDTXMania.Instance.stageChangeSkin.tChangeSkinMain(); // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新
\r
680 // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。
\r
681 // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。
\r
682 #region [ サウンドデバイス変更 ]
\r
683 if (InitialSystemSoundType != CDTXMania.Instance.ConfigIni.nSoundDeviceType ||
\r
684 InitialWASAPIBufferSizeMs != CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs ||
\r
685 InitialASIODevice != CDTXMania.Instance.ConfigIni.strASIODevice.Index ||
\r
686 InitialUseOSTimer != CDTXMania.Instance.ConfigIni.bUseOSTimer ||
\r
687 InitialWASAPIEventDriven != CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI )
\r
689 ESoundDeviceType soundDeviceType;
\r
690 switch (CDTXMania.Instance.ConfigIni.nSoundDeviceType.Value)
\r
692 case ESoundDeviceTypeForConfig.DSound:
\r
693 soundDeviceType = ESoundDeviceType.DirectSound;
\r
695 case ESoundDeviceTypeForConfig.ASIO:
\r
696 soundDeviceType = ESoundDeviceType.ASIO;
\r
698 case ESoundDeviceTypeForConfig.WASAPI:
\r
699 soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;
\r
702 soundDeviceType = ESoundDeviceType.Unknown;
\r
706 CDTXMania.Instance.Sound管理.t初期化(
\r
708 CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,
\r
709 CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI,
\r
711 CDTXMania.Instance.ConfigIni.strASIODevice.Index,
\r
712 CDTXMania.Instance.ConfigIni.bUseOSTimer);
\r
713 CDTXMania.Instance.ShowWindowTitleWithSoundType();
\r
717 #region [ サウンドのタイムストレッチモード変更 ]
\r
719 FDK.CSound管理.bIsTimeStretch = CDTXMania.Instance.ConfigIni.bUseOSTimer;
\r
722 #region [ 電源プラン変更 ]
\r
723 if ( CDTXMania.Instance.ConfigIni.bForceHighPowerPlan )
\r
725 CPowerPlan.ChangeHighPerformance();
\r
729 CPowerPlan.RestoreCurrentPowerPlan();
\r
735 public override void OnManagedリソースの作成()
\r
739 this.tx通常項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox.png"), false);
\r
740 this.txその他項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox other.png"), false);
\r
741 this.tx三角矢印 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig triangle arrow.png"), false);
\r
742 // スキン選択時に動的に設定するため、ここでは初期化しない
\r
743 this.txSkinSample = null;
\r
744 base.OnManagedリソースの作成();
\r
748 public override void OnManagedリソースの解放()
\r
752 TextureFactory.tテクスチャの解放(ref this.txSkinSample);
\r
753 TextureFactory.tテクスチャの解放(ref this.tx通常項目行パネル);
\r
754 TextureFactory.tテクスチャの解放(ref this.txその他項目行パネル);
\r
755 TextureFactory.tテクスチャの解放(ref this.tx三角矢印);
\r
757 base.OnManagedリソースの解放();
\r
761 private void OnListMenuの初期化()
\r
764 this.listMenu = new stMenuItemRight[this.list項目リスト.Count];
\r
768 /// 事前にレンダリングしておいたテクスチャを解放する。
\r
770 private void OnListMenuの解放()
\r
772 if (listMenu != null)
\r
774 for (int i = 0; i < listMenu.Length; i++)
\r
776 TextureFactory.tテクスチャの解放(ref listMenu[i].txParam);
\r
777 TextureFactory.tテクスチャの解放(ref listMenu[i].txParamColored);
\r
778 TextureFactory.tテクスチャの解放(ref listMenu[i].txMenuItemRight);
\r
780 this.listMenu = null;
\r
784 public override int On進行描画()
\r
786 throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");
\r
789 public int t進行描画(bool b項目リスト側にフォーカスがある)
\r
793 #region [ 初めての進行描画 ]
\r
794 //-----------------
\r
795 if (base.b初めての進行描画)
\r
797 this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;
\r
798 this.ct三角矢印アニメ.t開始(0, 9, 50, CDTXMania.Instance.Timer);
\r
800 base.b初めての進行描画 = false;
\r
802 //-----------------
\r
805 this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある; // 記憶
\r
807 #region [ 項目スクロールの進行 ]
\r
808 //-----------------
\r
809 long n現在時刻 = CDTXMania.Instance.Timer.n現在時刻;
\r
810 if (n現在時刻 < this.nスクロール用タイマ値) this.nスクロール用タイマ値 = n現在時刻;
\r
812 const int INTERVAL = 2; // [ms]
\r
813 while ((n現在時刻 - this.nスクロール用タイマ値) >= INTERVAL)
\r
815 int n目標項目までのスクロール量 = Math.Abs((int)(this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ));
\r
818 #region [ n加速度の決定;目標まで遠いほど加速する。]
\r
819 //-----------------
\r
820 if (n目標項目までのスクロール量 <= 100)
\r
824 else if (n目標項目までのスクロール量 <= 300)
\r
828 else if (n目標項目までのスクロール量 <= 500)
\r
836 //-----------------
\r
838 #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]
\r
839 //-----------------
\r
840 if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)
\r
842 this.n現在のスクロールカウンタ += n加速度;
\r
843 if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)
\r
846 this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
\r
849 else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)
\r
851 this.n現在のスクロールカウンタ -= n加速度;
\r
852 if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)
\r
855 this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
\r
858 //-----------------
\r
860 #region [ 行超え処理、ならびに目標位置に到達したらスクロールを停止して項目変更通知を発行。]
\r
861 //-----------------
\r
862 if (this.n現在のスクロールカウンタ >= 100)
\r
864 this.n現在の選択項目 = this.t次の項目(this.n現在の選択項目);
\r
865 this.n現在のスクロールカウンタ -= 100;
\r
866 this.n目標のスクロールカウンタ -= 100;
\r
867 if (this.n目標のスクロールカウンタ == 0)
\r
869 CDTXMania.Instance.stageコンフィグ.t項目変更通知();
\r
872 else if (this.n現在のスクロールカウンタ <= -100)
\r
874 this.n現在の選択項目 = this.t前の項目(this.n現在の選択項目);
\r
875 this.n現在のスクロールカウンタ += 100;
\r
876 this.n目標のスクロールカウンタ += 100;
\r
877 if (this.n目標のスクロールカウンタ == 0)
\r
879 CDTXMania.Instance.stageコンフィグ.t項目変更通知();
\r
882 //-----------------
\r
885 this.nスクロール用タイマ値 += INTERVAL;
\r
887 //-----------------
\r
890 #region [ ▲印アニメの進行 ]
\r
891 if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))
\r
893 this.ct三角矢印アニメ.t進行Loop();
\r
900 // メニューにフォーカスがあるなら、項目リストの中央は頭を出さない。
\r
901 this.ptパネルの基本座標[4].X = this.b項目リスト側にフォーカスがある ? 276 : 301;
\r
903 #region [ 計11個の項目パネルを描画する。]
\r
904 //-----------------
\r
905 int nItem = this.n現在の選択項目;
\r
906 for (int i = 0; i < 4; i++)
\r
908 nItem = this.t前の項目(nItem);
\r
911 for (int n行番号 = -4; n行番号 < 6; n行番号++)
\r
913 // n行番号 == 0 がフォーカスされている項目パネル。
\r
914 #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]
\r
915 if (((n行番号 == -4) && (this.n現在のスクロールカウンタ > 0)) ||
\r
916 ((n行番号 == +5) && (this.n現在のスクロールカウンタ < 0)))
\r
918 nItem = this.t次の項目(nItem);
\r
923 int n移動元の行の基本位置 = n行番号 + 4;
\r
924 int n移動先の行の基本位置 = (this.n現在のスクロールカウンタ <= 0) ? ((n移動元の行の基本位置 + 1) % 10) : (((n移動元の行の基本位置 - 1) + 10) % 10);
\r
925 int x = this.ptパネルの基本座標[n移動元の行の基本位置].X + ((int)((this.ptパネルの基本座標[n移動先の行の基本位置].X - this.ptパネルの基本座標[n移動元の行の基本位置].X) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));
\r
926 int y = this.ptパネルの基本座標[n移動元の行の基本位置].Y + ((int)((this.ptパネルの基本座標[n移動先の行の基本位置].Y - this.ptパネルの基本座標[n移動元の行の基本位置].Y) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));
\r
928 #region [ 現在の行の項目パネル枠を描画。]
\r
929 if (this.list項目リスト[nItem].type == EOptionType.Normal)
\r
931 if (this.tx通常項目行パネル != null)
\r
933 this.tx通常項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);
\r
936 else if (this.list項目リスト[nItem].type == EOptionType.Other)
\r
938 if (this.txその他項目行パネル != null)
\r
940 this.txその他項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);
\r
945 #region [ 現在の行の項目名を描画。]
\r
946 if (listMenu[nItem].txMenuItemRight != null)
\r
948 // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用
\r
949 listMenu[nItem].txMenuItemRight.t2D描画(CDTXMania.Instance.Device, (x + 0x12) * Scale.X, (y + 12) * Scale.Y - 20);
\r
953 using (Bitmap bmpItem = prvFont.DrawPrivateFont(this.list項目リスト[nItem].label, Color.White, Color.Black))
\r
955 TextureFactory.tテクスチャの解放(ref listMenu[nItem].txMenuItemRight);
\r
956 listMenu[nItem].txMenuItemRight = TextureFactory.tテクスチャの生成(bmpItem);
\r
961 #region [ 現在の行の項目の要素を描画。]
\r
962 string strParam = this.list項目リスト[nItem].ToString();
\r
963 //bool b強調 = false;
\r
965 #region [ 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。 #28195 2012.5.2 yyagi ]
\r
966 if (this.list項目リスト[this.n現在の選択項目] == skins)
\r
968 if (txSkinSample == null)
\r
970 tGenerateSkinSample();
\r
972 if (txSkinSample != null)
\r
974 txSkinSample.t2D描画(CDTXMania.Instance.Device, 56 * Scale.X, 300 * Scale.Y);
\r
980 int nIndex = this.list項目リスト[nItem].Index;
\r
981 bool bColored = list項目リスト[nItem] is COptionInteger && n行番号 == 0 && b要素値にフォーカス中;
\r
982 if (listMenu[nItem].nParam != nIndex ||
\r
983 (listMenu[nItem].txParam == null) ||
\r
984 (bColored && listMenu[nItem].txParamColored == null))
\r
986 listMenu[nItem].nParam = nIndex;
\r
987 listMenu[nItem].strParam = this.list項目リスト[nItem].ToString();
\r
988 using (Bitmap bmpStr = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))
\r
990 TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParam);
\r
991 listMenu[nItem].txParam = TextureFactory.tテクスチャの生成(bmpStr, false);
\r
994 using (Bitmap bmpStrColored = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed))
\r
996 TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParamColored);
\r
997 listMenu[nItem].txParamColored = TextureFactory.tテクスチャの生成(bmpStrColored, false);
\r
1005 listMenu[nItem].txParamColored.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);
\r
1009 listMenu[nItem].txParam.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);
\r
1011 nItem = this.t次の項目(nItem);
\r
1015 #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]
\r
1016 if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))
\r
1024 if (this.b要素値にフォーカス中)
\r
1028 y_upper = 198 - this.ct三角矢印アニメ.n現在の値;
\r
1029 y_lower = 242 + this.ct三角矢印アニメ.n現在の値;
\r
1035 y_upper = 186 - this.ct三角矢印アニメ.n現在の値;
\r
1036 y_lower = 254 + this.ct三角矢印アニメ.n現在の値;
\r
1041 if (this.tx三角矢印 != null)
\r
1043 this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,
\r
1044 y_upper * Scale.Y,
\r
1045 new Rectangle(0, 0, (int)(32 * Scale.X), (int)(16 * Scale.Y)));
\r
1046 this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,
\r
1047 y_lower * Scale.Y,
\r
1048 new Rectangle(0, (int)(16 * Scale.Y), (int)(32 * Scale.X), (int)(16 * Scale.Y)));
\r
1058 internal enum Eメニュー種別
\r
1064 // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン
\r
1076 private int t前の項目(int nItem)
\r
1080 nItem = this.list項目リスト.Count - 1;
\r
1085 private int t次の項目(int nItem)
\r
1087 if (++nItem >= this.list項目リスト.Count)
\r