OSDN Git Service

#32713 初コミット。SVNrev567時点での、ファイルはbranch/140707(ReBuild XGVersion)から移行したもの。
[dtxmaniaxg-verk/dtxmaniaxg-verk-git.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CActConfigList.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Diagnostics;
4 using System.Text;
5 using System.Drawing;
6 using System.Threading;
7 using SlimDX;
8 using FDK;
9
10 namespace DTXMania
11 {
12         internal class CActConfigList : CActivity
13         {
14                 // プロパティ
15
16                 public bool bIsKeyAssignSelected                // #24525 2011.3.15 yyagi
17                 {
18                         get
19                         {
20                                 Eメニュー種別 e = this.eメニュー種別;
21                                 if ( e == Eメニュー種別.KeyAssignBass || e == Eメニュー種別.KeyAssignDrums ||
22                                         e == Eメニュー種別.KeyAssignGuitar || e == Eメニュー種別.KeyAssignSystem )
23                                 {
24                                         return true;
25                                 }
26                                 else
27                                 {
28                                         return false;
29                                 }
30                         }
31                 }
32                 public bool bIsFocusingParameter                // #32059 2013.9.17 yyagi
33                 {
34                         get
35                         {
36                                 return b要素値にフォーカス中;
37                         }
38                 }
39                 public bool b現在選択されている項目はReturnToMenuである
40                 {
41                         get
42                         {
43                                 CItemBase currentItem = this.list項目リスト[ this.n現在の選択項目 ];
44                                 if ( currentItem == this.iSystemReturnToMenu || currentItem == this.iDrumsReturnToMenu ||
45                                         currentItem == this.iGuitarReturnToMenu || currentItem == this.iBassReturnToMenu )
46                                 {
47                                         return true;
48                                 }
49                                 else
50                                 {
51                                         return false;
52                                 }
53                         }
54                 }
55                 public CItemBase ib現在の選択項目
56                 {
57                         get
58                         {
59                                 return this.list項目リスト[ this.n現在の選択項目 ];
60                         }
61                 }
62                 public int n現在の選択項目;
63
64
65                 // メソッド
66                 #region [ t項目リストの設定_System() ]
67                 public void t項目リストの設定_System()
68                 {
69                         this.tConfigIniへ記録する();
70                         this.list項目リスト.Clear();
71
72                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
73
74                         this.iSystemReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
75                                 "左側のメニューに戻ります。",
76                                 "Return to left menu." );
77                         this.list項目リスト.Add( this.iSystemReturnToMenu );
78
79                         this.iSystemReloadDTX = new CItemBase( "Reload Songs", CItemBase.Eパネル種別.通常,
80                                 "曲データの一覧情報を取得し直します。",
81                                 "Reload song data." );
82                         this.list項目リスト.Add( this.iSystemReloadDTX );
83
84             //this.iCommonDark = new CItemList( "Dark", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eDark,
85             //    "HALF: 背景、レーン、ゲージが表示されなくなります。\n" +
86             //    "FULL: さらに小節線、拍線、判定ライン、パッドも表示されなくなります。",
87             //    "OFF: all display parts are shown.\n" +
88             //    "HALF: wallpaper, lanes and gauge are disappeared.\n" +
89             //    "FULL: additionaly to HALF, bar/beat lines, hit bar, pads are disappeared.",
90             //    new string[] { "OFF", "HALF", "FULL" } );
91             //this.list項目リスト.Add( this.iCommonDark );
92
93             //this.iSystemRisky = new CItemInteger( "Risky", 0, 10, CDTXMania.ConfigIni.nRisky,
94             //    "Riskyモードの設定:\n" +
95             //    "1以上の値にすると、その回数分のPoor/Missで\n" + 
96             //    "FAILEDとなります。\n" +
97             //    "0にすると無効になり、DamageLevelに従った\n" + 
98             //    "ゲージ増減となります。\n" +
99             //    "\n" +
100             //    "なお、この設定は、StageFailedの設定と併用できます。",
101             //    "Risky mode:\n" +
102             //    "It means the Poor/Miss times to be FAILED.\n" +
103             //    "Set 0 to disable Risky mode." );
104             //this.list項目リスト.Add( this.iSystemRisky );
105
106             int nDGmode = ( CDTXMania.ConfigIni.bGuitar有効 ? 1 : 1 ) + ( CDTXMania.ConfigIni.bDrums有効 ? 0 : 1 ) - 1;
107                         this.iSystemGRmode = new CItemList("Drums & GR", CItemBase.Eパネル種別.通常, nDGmode,
108                                 "使用楽器の選択:\n" + 
109                 "DrOnly: ドラムを有効にします。\n" + 
110                 "GROnly: ギター/ベースを有効にします。",
111                                 "DrOnly: Drums is available.\n" + 
112                 "GROnly: Guitar/Bass are available.\n",
113                                 new string[] { "DrOnly", "GROnly" });
114                         this.list項目リスト.Add( this.iSystemGRmode );
115
116                         this.iCommonPlaySpeed = new CItemInteger( "PlaySpeed", 5, 40, CDTXMania.ConfigIni.n演奏速度,
117                                 "曲の演奏速度を、速くしたり遅くしたりすることが\n" + 
118                 "できます。" +
119                                 "(※一部のサウンドカードでは正しく再生\n" + 
120                 "できない可能性があります。)\n" +
121                                 "\n" +
122                                 "TimeStretchがONのとき、x0.850以下にすると、\n" + 
123                 "チップのズレが大きくなります。",
124                                 "It changes the song speed.\n" +
125                                 "For example, you can play in half speed by setting PlaySpeed = 0.500 for your practice.\n" +
126                                 "\n" +
127                                 "Note: It also changes the songs' pitch. In case TimeStretch=ON and slower than x0.900, some sound lag occurs." );
128                         this.list項目リスト.Add( this.iCommonPlaySpeed );
129
130                         this.iSystemTimeStretch = new CItemToggle( "TimeStretch", CDTXMania.ConfigIni.bTimeStretch,
131                                 "演奏速度の変更方式:\n" +
132                                 "ONにすると、演奏速度の変更を周波数変更ではなく\n"+
133                 "タイムストレッチで行います。\n" +
134                                 "\n" +
135                                 "タイムストレッチ使用時は、サウンド処理により\n" +
136                 "多くのCPU性能を使用します。\n" +
137                                 "また、演奏速度をx0.850以下にすると、\n" +
138                 "チップのズレが大きくなります。",
139                                 "The way to change the playing speed:\n" +
140                                 "Turn ON to use time stretch to change the play speed." +
141                                 "\n" +
142                                 "TimeStretch uses more CPU power. And some sound lag occurs if PlaySpeed is slower than x0.900." );
143                         this.list項目リスト.Add( this.iSystemTimeStretch );
144
145                         this.iSystemFullscreen = new CItemToggle( "Fullscreen", CDTXMania.ConfigIni.b全画面モード,
146                                 "画面モード設定:\n" +
147                                 "ONで全画面モード、OFFでウィンドウモードになります。",
148                                 "Fullscreen mode or window mode." );
149                         this.list項目リスト.Add( this.iSystemFullscreen );
150
151                         this.iSystemStageFailed = new CItemToggle( "StageFailed", CDTXMania.ConfigIni.bSTAGEFAILED有効,
152                                 "STAGE FAILED 有効:\n" +
153                                 "ON にすると、ゲージがなくなった時に \n" +
154                 "STAGE FAILED となり演奏が中断されます。\n" +
155                                 "OFF の場合は、ゲージがなくなっても\n" +
156                 "最後まで演奏できます。",
157                                 "Turn OFF if you don't want to encount GAME OVER." );
158                         this.list項目リスト.Add( this.iSystemStageFailed );
159
160                         this.iSystemRandomFromSubBox = new CItemToggle( "RandSubBox", CDTXMania.ConfigIni.bランダムセレクトで子BOXを検索対象とする,
161                                 "子BOXをRANDOMの対象とする:\n" +
162                                 "ON にすると、RANDOM SELECT 時に子BOXも\n" +
163                 "選択対象とします。",
164                                 "Turn ON to use child BOX (subfolders) at RANDOM SELECT." );
165                         this.list項目リスト.Add( this.iSystemRandomFromSubBox );
166
167
168                         this.iSystemAdjustWaves = new CItemToggle( "AdjustWaves", CDTXMania.ConfigIni.bWave再生位置自動調整機能有効,
169                                 "サウンド再生位置自動補正:\n" +
170                                 "ハードウェアやOSに起因するサウンドのずれを\n"+
171                 "強制的に補正します。\n" +
172                                 "BGM のように再生時間の長い音声データが\n" +
173                 "使用されている曲で効果があります。\n" +
174                                 "\n" +
175                                 "※ SoundTypeでDSound(DirectSound)を指定している\n" +
176                 "場合にのみ有効です。\n" +
177                 "WASAPI/ASIO使用時は効果がありません。",
178                                 "Automatic wave playing position adjustment feature.\n" +
179                                 "\n" +
180                                 "If you turn it ON, it decrease the lag which comes from the difference of hardware/OS.\n" +
181                                 "Usually, you should turn it ON.\n" +
182                                 "\n" +
183                                 "Note: This setting is effetive only when DSound(DirectSound) in SoundType is used." );
184                         this.list項目リスト.Add( this.iSystemAdjustWaves );
185
186
187                         this.iSystemVSyncWait = new CItemToggle( "VSyncWait", CDTXMania.ConfigIni.b垂直帰線待ちを行う,
188                                 "垂直帰線同期:\n" +
189                                 "画面の描画をディスプレイの垂直帰線中に行なう場合\n" +
190                 "には ON を指定します。\n" +
191                                 "ON にすると、ガタつきのない滑らかな画面描画が\n" +
192                 "実現されます。",
193                                 "Turn ON to wait VSync (Vertical Synchronizing signal) at every drawings. (so FPS becomes 60)\n" +
194                                 "\n" +
195                                 "If you have enough CPU/GPU power, the scroll would become smooth." );
196                         this.list項目リスト.Add( this.iSystemVSyncWait );
197                         this.iSystemAVI = new CItemToggle( "AVI", CDTXMania.ConfigIni.bAVI有効,
198                                 "AVIの使用:\n" +
199                                 "演奏中に動画(AVI)を再生する場合にON にします。\n" +
200                                 "AVI の再生には、それなりのマシンパワーが\n" +
201                 "必要とされます。",
202                                 "To use AVI playback or not." );
203                         this.list項目リスト.Add( this.iSystemAVI );
204                         this.iSystemForceAVIFullscreen = new CItemToggle( "FullAVI", CDTXMania.ConfigIni.bForceAVIFullscreen,
205                                 "旧AVIの全画面表示:\n" +
206                                 "旧仕様の動画(AVI)の表示を強制的に全画面化します。\n" +
207                                 "BGAと併用している場合は、表示がおかしくなります。",
208                                 "Forcely show the legacy-spec AVI to fullscreen.\n" +
209                                 "If the data contains both AVI and BGA, the screen will corrupt." );
210                         this.list項目リスト.Add( this.iSystemForceAVIFullscreen );
211                         this.iSystemBGA = new CItemToggle( "BGA", CDTXMania.ConfigIni.bBGA有効,
212                                 "BGAの使用:\n" +
213                                 "演奏中に画像(BGA)を表示する場合にON にします。\n" +
214                                 "BGA の再生には、それなりのマシンパワーが\n" +
215                 "必要とされます。",
216                                 "To draw BGA (back ground animations) or not." );
217                         this.list項目リスト.Add( this.iSystemBGA );
218                         this.iSystemPreviewSoundWait = new CItemInteger( "PreSoundWait", 0, 0x2710, CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms,
219                                 "プレビュー音演奏までの時間:\n" +
220                                 "曲にカーソルが合わされてからプレビュー音が\n" +
221                 "鳴り始めるまでの時間を指定します。\n" +
222                                 "0 ~ 10000 [ms] が指定可能です。",
223                                 "Delay time(ms) to start playing preview sound in SELECT MUSIC screen.\n" +
224                                 "You can specify from 0ms to 10000ms." );
225                         this.list項目リスト.Add( this.iSystemPreviewSoundWait );
226             //this.iSystemPreviewImageWait = new CItemInteger( "PreImageWait", 0, 0x2710, CDTXMania.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms,
227             //    "プレビュー画像表示までの時間:\n" +
228             //    "曲にカーソルが合わされてからプレビュー画像が\n" +
229             //    "表示されるまでの時間を指定します。\n" +
230             //    "0 ~ 10000 [ms] が指定可能です。",
231             //    "Delay time(ms) to show preview image in SELECT MUSIC screen.\n" +
232             //    "You can specify from 0ms to 10000ms." );
233             //this.list項目リスト.Add( this.iSystemPreviewImageWait );
234                         this.iSystemDebugInfo = new CItemToggle( "Debug Info", CDTXMania.ConfigIni.b演奏情報を表示する,
235                                 "演奏情報の表示:\n" +
236                                 "演奏中、BGA領域の下部に演奏情報\n" +
237                 "(FPS、BPM、演奏時間など)を表示します。\n" +
238                                 "また、小節線の横に小節番号が表示されるように\n" +
239                 "なります。",
240                                 "To show song informations on playing BGA area. (FPS, BPM, total time etc)\n" +
241                                 "You can ON/OFF the indications by pushing [Del] while playing drums, guitar or bass." );
242                         this.list項目リスト.Add( this.iSystemDebugInfo );
243             //this.iSystemBGAlpha = new CItemInteger( "BG Alpha", 0, 0xff, CDTXMania.ConfigIni.n背景の透過度,
244             //    "背景画像の透明割合:\n" +
245             //    "背景画像をDTXManiaのフレーム画像と合成する際の、\n" +
246             //    "背景画像の透明度を指定します。\n" +
247             //    "0 が完全不透明で、255 が完全透明となります。",
248             //    "The degree for transparing playing screen and wallpaper.\n" +
249             //    "\n" +
250             //    "0=no transparent, 255=completely transparency." );
251             //this.list項目リスト.Add( this.iSystemBGAlpha );
252                         this.iSystemBGMSound = new CItemToggle( "BGM Sound", CDTXMania.ConfigIni.bBGM音を発声する,
253                                 "BGMの再生:\n" +
254                                 "これをOFFにすると、BGM を再生しなくなります。",
255                                 "Turn OFF if you don't want to play BGM." );
256                         this.list項目リスト.Add( this.iSystemBGMSound );
257                         this.iSystemAudienceSound = new CItemToggle( "Audience", CDTXMania.ConfigIni.b歓声を発声する,
258                                 "歓声の再生:\n" +
259                                 "これをOFFにすると、歓声を再生しなくなります。",
260                                 "Turn ON if you want to be cheered at the end of fill-in zone." );
261                         this.list項目リスト.Add( this.iSystemAudienceSound );
262                         this.iSystemDamageLevel = new CItemList( "DamageLevel", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eダメージレベル,
263                                 "ゲージ減少割合:\n" +
264                                 "Miss ヒット時のゲージの減少度合いを指定します。\n" +
265                                 "Riskyが1以上の場合は無効となります。",
266                                 "Damage level at missing (and recovering level) at playing.\n" +
267                                 "This setting is ignored when Risky >= 1.",
268                                 new string[] { "Small", "Normal", "Large" } );
269                         this.list項目リスト.Add( this.iSystemDamageLevel );
270                         this.iSystemSaveScore = new CItemToggle( "SaveScore", CDTXMania.ConfigIni.bScoreIniを出力する,
271                                 "演奏記録の保存:\n" +
272                                 "これをONにすると、演奏記録を ~.score.ini \n" +
273                 "ファイルに保存します。",
274                                 "To save high-scores/skills, turn it ON.\n" +
275                                 "Turn OFF in case your song data are in read-only media (CD-ROM etc).\n" +
276                                 "Note that the score files also contain 'BGM Adjust' parameter.\n" +
277                                 "So if you want to keep adjusting parameter, you need to set SaveScore=ON." );
278                         this.list項目リスト.Add( this.iSystemSaveScore );
279
280
281                         this.iSystemChipVolume = new CItemInteger( "ChipVolume", 0, 100, CDTXMania.ConfigIni.n手動再生音量,
282                                 "打音の音量:\n" +
283                                 "入力に反応して再生されるチップの音量を指定します。\n" +
284                                 "0 ~ 100 % の値が指定可能です。",
285                                 "The volumes for chips you hit.\n" +
286                                 "You can specify from 0 to 100%." );
287                         this.list項目リスト.Add( this.iSystemChipVolume );
288                         this.iSystemAutoChipVolume = new CItemInteger( "AutoVolume", 0, 100, CDTXMania.ConfigIni.n自動再生音量,
289                                 "自動再生音の音量:\n" +
290                                 "自動的に再生されるチップの音量を指定します。\n" +
291                                 "0 ~ 100 % の値が指定可能です。",
292                                 "The volumes for AUTO chips.\n" +
293                                 "You can specify from 0 to 100%." );
294                         this.list項目リスト.Add( this.iSystemAutoChipVolume );
295             //this.iSystemStoicMode = new CItemToggle( "StoicMode", CDTXMania.ConfigIni.bストイックモード,
296             //    "ストイック(禁欲)モード:\n" +
297             //    "以下をまとめて表示ON/OFFします。\n" +
298             //    "・プレビュー画像/動画\n" +
299             //    "・リザルト画像/動画\n" +
300             //    "・NowLoading画像\n" +
301             //    "・演奏画面の背景画像\n" +
302             //    "・BGA 画像 / AVI 動画\n" +
303             //    "・グラフ画像",
304             //    "Turn ON to disable drawing\n" +
305             //    " * preview image / movie\n" +
306             //    " * result image / movie\n" +
307             //    " * nowloading image\n" +
308             //    " * wallpaper (in playing screen)\n" +
309             //    " * BGA / AVI (in playing screen)\n" +
310             //    " * Graph bar" );
311             //this.list項目リスト.Add( this.iSystemStoicMode );
312                         this.iSystemShowLag = new CItemList( "ShowLagTime", CItemBase.Eパネル種別.通常, CDTXMania.ConfigIni.nShowLagType,
313                                 "ズレ時間表示:\n" +
314                                 "ジャストタイミングからのズレ時間(ms)を表示します。\n" +
315                                 " OFF: ズレ時間を表示しません。\n" +
316                                 " ON: ズレ時間を表示します。\n" +
317                                 " GREAT-: PERFECT以外の時のみ表示します。",
318                                 "About displaying the lag from the \"just timing\".\n" +
319                                 " OFF: Don't show it.\n" +
320                                 " ON: Show it.\n" +
321                                 " GREAT-: Show it except you've gotten PERFECT.",
322                                 new string[] { "OFF", "ON", "GREAT-" } );
323                         this.list項目リスト.Add( this.iSystemShowLag );
324                         this.iSystemAutoResultCapture = new CItemToggle( "AutoSaveResult", CDTXMania.ConfigIni.bIsAutoResultCapture,
325                                 "リザルト画像自動保存機能:\n" +
326                                 "ONにすると、ハイスコア/ハイスキル時に、\n" +
327                 "自動的にリザルト画像を曲データと同じフォルダに\n" +
328                 "保存します。",
329                                 "AutoSaveResult:\n" +
330                                 "Turn ON to save your result screen image automatically when you get hiscore/hiskill." );
331                         this.list項目リスト.Add( this.iSystemAutoResultCapture );
332
333
334                         this.iSystemJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度,
335                                 "判定文字列とコンボ表示の優先順位を指定します。\n" +
336                                 "\n" +
337                                 " Under: チップの下に表示します。\n" +
338                                 " Over:  チップの上に表示します。",
339                                 "The display prioity between chips and judge mark/combo.\n" +
340                                 "\n" +
341                                 " Under: Show them under the chips.\n" +
342                                 " Over:  Show them over the chips.",
343                                 new string[] { "Under", "Over" } );
344                         this.list項目リスト.Add( this.iSystemJudgeDispPriority );
345
346                         this.iSystemBufferedInput = new CItemToggle( "BufferedInput", CDTXMania.ConfigIni.bバッファ入力を行う,
347                                 "バッファ入力モード:\n" +
348                                 "ON にすると、FPS を超える入力解像度を実現します。\n" +
349                                 "OFF にすると、入力解像度は FPS に等しくなります。",
350                                 "To select joystick input method.\n" +
351                                 "\n" +
352                                 "ON to use buffer input. No lost/lags.\n" +
353                                 "OFF to use realtime input. It may causes lost/lags for input.\n" +
354                                 "Moreover, input frequency is synchronized with FPS." );
355                         this.list項目リスト.Add( this.iSystemBufferedInput );
356                         this.iLogOutputLog = new CItemToggle( "TraceLog", CDTXMania.ConfigIni.bログ出力,
357                                 "Traceログ出力:\n" +
358                                 "DTXManiaLog.txt にログを出力します。\n" +
359                                 "この設定の変更は、DTXManiaの再起動後に\n" +
360                 "有効となります。",
361                                 "Turn ON to put debug log to DTXManiaLog.txt.\n" +
362                                 "To take it effective, you need to re-open DTXMania." );
363                         this.list項目リスト.Add( this.iLogOutputLog );
364
365             this.iSystemSkillMode = new CItemList( "SkillMode", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eSkillMode,
366                 "スキルモード:\n" +
367                 "達成率、ランク、スコアの計算方法を設定します。\n" +
368                 " DTXMania: DTXManiaの計算方法です。\n" +
369                 " XG:          XG以降の計算方法です。\n",
370                 new string[] { "DTXMania", "XG" } );
371             this.list項目リスト.Add( this.iSystemSkillMode );
372
373             #region [ XGオプション ]
374             //this.iSystemSpeaker = new CItemToggle("Speaker", CDTXMania.ConfigIni.bSpeaker,
375             //    "スピーカーの表示を設定します。",
376             //    "");
377             //this.list項目リスト.Add(this.iSystemSpeaker);
378
379             //this.iDrumsMoveDrumSet = new CItemList("DrumSetMove", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eドラムセットを動かす,
380             //    "ドラムセットが動くかを設定します。\n" +
381             //    "ON: ドラムセットを動かします。\n" +
382             //    "OFF: ドラムセットを動かしません。\n"+
383             //    "NONE: ドラムセットを表示しません。",
384             //    "Set up a DrumSet Moves.",
385             //    new string[] { "ON", "OFF", "NONE" });
386             //this.list項目リスト.Add(this.iDrumsMoveDrumSet);
387
388             //this.iSystemLivePoint = new CItemToggle("LivePoint", CDTXMania.ConfigIni.bLivePoint,
389             //    "LivePointゲージの表示を設定します。\n",
390             //    "\n" +
391             //    "");
392             //this.list項目リスト.Add(this.iSystemLivePoint);
393
394             //this.iSystemBPMbar = new CItemList("BPMBar", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eBPMbar,
395             //    "左右のBPMに連動して動くバーの表示\n" +
396             //    "位置を変更します。\n" +
397             //    "ON: 左右両方表示します。\n" +
398             //    "L Only: 左のみ表示します。\n" +
399             //    "OFF: 動くバーを表示しません。\n"+
400             //    "NONE: BPMバーを表示しません。",
401             //    "To change the displaying position of\n" +
402             //    "the ride cymbal.",
403             //    new string[] { "ON", "L Only", "OFF", "NONE" });
404             //this.list項目リスト.Add(this.iSystemBPMbar);
405
406             this.iSystemNamePlateType = new CItemList("NamePlateType", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eNamePlateType,
407                 "演奏画面の構成を変更します。\n" +
408                 " Type-A: XG2風の表示です。\n" +
409                 " Type-B: XG1風の表示です。\n",
410                 "Change the configuration playing screen\n" +
411                 " Type-A: XG2\n" +
412                 " Type-B: XG1\n",
413                 new string[] { "Type-A", "Type-B" });
414             this.list項目リスト.Add(this.iSystemNamePlateType);
415
416                         this.iSystemJudgeCountDisp = new CItemToggle( "JudgeCountDisp", CDTXMania.ConfigIni.bJudgeCountDisp,
417                                 "判定数表示:\n" +
418                                 "ONにするとSkillMater上に現在の判定数を\n" +
419                 "表示します。\n" +
420                 "SkillMaterが無効の場合は表示されません。",
421                                 "JudgeCountDisplayMode." );
422                         this.list項目リスト.Add( this.iSystemJudgeCountDisp );
423             #endregion
424
425                         #region [ WASAPI / ASIO ]
426                         // #24820 2013.1.3 yyagi
427                         this.iSystemSoundType = new CItemList( "SoundType", CItemList.Eパネル種別.通常, CDTXMania.ConfigIni.nSoundDeviceType,
428                                 "サウンドの出力方式:\n" +
429                                 "WASAPI, ASIO, DSound(DirectSound)の中から\n" +
430                 "サウンド出力方式を選択します。\n" +
431                                 "WASAPIはVista以降でのみ使用可能です。\n" +
432                 "ASIOはXPでも使用可能ですが、対応機器でのみ\n" +
433                 "使用できます。\n" +
434                                 "WASAPIかASIOを指定することで、\n" +
435                 "遅延の少ない演奏を楽しむことができます。\n" +
436                                 "\n" +
437                                 "※ 設定はCONFIGURATION画面の終了時に\n" +
438                 "有効になります。",
439                                 "Sound output type:\n" +
440                                 "You can choose WASAPI, ASIO or DShow(DirectShow).\n" +
441                                 "WASAPI can use only after Vista.\n" +
442                                 "ASIO can use on XP or later OSs, but you need \"ASIO-supported\" sound device.\n" +
443                                 "\n" +
444                                 "You should use WASAPI or ASIO to decrease the sound lag.\n" +
445                                 "\n" +
446                                 "Note: Exit CONFIGURATION to make the setting take effect.",
447                                 new string[] { "DSound", "ASIO", "WASAPI" } );
448                         this.list項目リスト.Add( this.iSystemSoundType );
449
450                         // #24820 2013.1.15 yyagi
451                         this.iSystemWASAPIBufferSizeMs = new CItemInteger( "WASAPI BufferSize", 0, 99999, CDTXMania.ConfigIni.nWASAPIBufferSizeMs,
452                             "WASAPI使用時のバッファサイズ:\n" +
453                           //  "0~99999ms を指定可能です。\n" +
454                             "0を指定すると、設定可能な最小のバッファサイズを\n" +
455                 "自動設定します。\n" +
456                                 "1以上を指定すると、その値以上で指定可能な\n" +
457                 "最小のバッファサイズを自動設定します。\n" +
458                             "値を小さくするほど発音遅延が減少しますが、\n" +
459                 "音割れや性能低下などの問題が発生する場合が\n" +
460                 "あります。\n" +
461                                 "タブレットなど性能の低いPCを使う場合は、\n" +
462                 "手動で大きめの値を指定してください。\n" +
463                                 "\n" +
464                             "※ 設定はCONFIGURATION画面の終了時に\n" +
465                                 " 有効になります。",
466                             "Sound buffer size for WASAPI:\n" +
467                             "You can set from 0 to 99999ms.\n" +
468                             "Set 0 to use a minimum buffer size automatically.\n" +
469                             "Smaller value makes smaller lag, but it may cause sound troubles. " +
470                                 "So if you use poor CPU PC (tablet etc), please specify a little bigger value.\n" +
471                             "\n" +
472                             "Note: Exit CONFIGURATION to make the setting take effect." );
473                         this.list項目リスト.Add( this.iSystemWASAPIBufferSizeMs );
474
475                         // #24820 2013.1.17 yyagi
476                         string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();
477                         this.iSystemASIODevice = new CItemList( "ASIO device", CItemList.Eパネル種別.通常, CDTXMania.ConfigIni.nASIODevice,
478                                 "ASIOデバイス:\n" +
479                                 "ASIO使用時のサウンドデバイスを選択します。\n" +
480                                 "\n" +
481                                 "※ 設定はCONFIGURATION画面の終了時に\n" +
482                 "有効になります。",
483                                 "ASIO Sound Device:\n" +
484                                 "Select the sound device to use under ASIO mode.\n" +
485                                 "\n" +
486                                 "Note: Exit CONFIGURATION to make the setting take effect.",
487                                 asiodevs );
488                         this.list項目リスト.Add( this.iSystemASIODevice );
489
490                         // #24820 2013.1.3 yyagi
491                         //this.iSystemASIOBufferSizeMs = new CItemInteger("ASIOBuffSize", 0, 99999, CDTXMania.ConfigIni.nASIOBufferSizeMs,
492                         //    "ASIO使用時のバッファサイズ:\n" +
493                         //    "0~99999ms を指定可能です。\n" +
494                         //    "推奨値は0で、サウンドデバイスでの\n" +
495                         //    "設定値をそのまま使用します。\n" +
496                         //    "(サウンドデバイスのASIO設定は、\n" +
497                         //    " ASIO capsなどで行います)\n" +
498                         //    "値を小さくするほど発音ラグが\n" +
499                         //    "減少しますが、音割れや異常動作を\n" +
500                         //    "引き起こす場合があります。\n" +
501                         //    "\n" +
502                         //    "※ 設定はCONFIGURATION画面の\n" +
503                         //    " 終了時に有効になります。",
504                         //    "Sound buffer size for ASIO:\n" +
505                         //    "You can set from 0 to 99999ms.\n" +
506                         //    "You should set it to 0, to use\n" +
507                         //    "a default value specified to\n" +
508                         //    "the sound device.\n" +
509                         //    "Smaller value makes smaller lag,\n" +
510                         //    "but it may cause sound troubles.\n" +
511                         //    "\n" +
512                         //    "Note: Exit CONFIGURATION to make\n" +
513                         //    "     the setting take effect." );
514                         //this.list項目リスト.Add( this.iSystemASIOBufferSizeMs );
515
516                         // #33689 2014.6.17 yyagi
517                         this.iSystemSoundTimerType = new CItemToggle( "UseOSTimer", CDTXMania.ConfigIni.bUseOSTimer,
518                                 "OSタイマーを使用するかどうか:\n" +
519                                 "演奏タイマーとして、DTXMania独自のタイマーを使うか\n" +
520                 "OS標準のタイマーを使うかを選択します。\n" +
521                                 "OS標準タイマーを使うとスクロールが滑らかに\n" +
522                 "なりますが、演奏で音ズレが発生することが\n" +
523                 "あります。\n" +
524                 "(そのためAdjustWavesの効果が適用されます。)\n" +
525                                 "\n" +
526                                 "この指定はWASAPI/ASIO使用時のみ有効です。\n",
527                                 "Use OS Timer or not:\n" +
528                                 "If this settings is ON, DTXMania uses OS Standard timer. It brings smooth scroll, but may cause some sound lag.\n" +
529                                 "(so AdjustWaves is also avilable)\n" +
530                                 "\n" +
531                                 "If OFF, DTXMania uses its original timer and the effect is vice versa.\n" +
532                                 "\n" +
533                                 "This settings is avilable only when you use WASAPI/ASIO.\n"
534                         );
535                         this.list項目リスト.Add( this.iSystemSoundTimerType );
536                         #endregion
537                         // #33700 2013.1.3 yyagi
538                         this.iSystemMasterVolume = new CItemInteger( "MasterVolume", 0, 100, CDTXMania.ConfigIni.nMasterVolume,
539                                 "マスターボリュームの設定:\n" +
540                                 "全体の音量を設定します。\n" +
541                                 "0が無音で、100が最大値です。\n" +
542                                 "(WASAPI/ASIO時のみ有効です)",
543                                 "Master Volume:\n" +
544                                 "You can set 0 - 100.\n" +
545                                 "\n" +
546                                 "Note:\n" +
547                                 "Only for WASAPI/ASIO mode." );
548                         this.list項目リスト.Add( this.iSystemMasterVolume );
549
550                         this.iSystemSkinSubfolder = new CItemList( "Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex,
551                                 "スキン切替:スキンを切り替えます。\n",
552                                 //"CONFIGURATIONを抜けると、設定した\n" +
553                                 //"スキンに変更されます。",
554                                 "Skin:\n" +
555                                 "Change skin.",
556                                 skinNames );
557                         this.list項目リスト.Add( this.iSystemSkinSubfolder );
558                         this.iSystemUseBoxDefSkin = new CItemToggle( "Skin (Box)", CDTXMania.ConfigIni.bUseBoxDefSkin,
559                                 "Music boxスキンの利用:\n" +
560                                 "特別なスキンが設定されたMusic boxに出入りしたとき\n" +
561                 "に、自動でスキンを切り替えるかどうかを設定します。\n",
562                                 //"\n" +
563                                 //"(Music Boxスキンは、box.defファイル\n" +
564                                 //" で指定できます)\n",
565                                 "Box skin:\n" +
566                                 "Automatically change skin specified in box.def file." );
567                         this.list項目リスト.Add( this.iSystemUseBoxDefSkin );
568
569             // #36372 2016.06.19 kairera0467
570                         this.iSystemBGMAdjust = new CItemInteger( "BGMAdjust", -99, 99, CDTXMania.ConfigIni.nCommonBGMAdjustMs,
571                                 "BGMの再生タイミングの微調整を行います。\n" +
572                                 "-99 ~ 99ms まで指定可能です。\n" +
573                 "値を指定してください。\n",
574                                 "To adjust the BGM play timing.\n" +
575                                 "You can set from -99 to 0ms.\n" );
576                         this.list項目リスト.Add( this.iSystemBGMAdjust );
577
578                         this.iSystemGoToKeyAssign = new CItemBase( "System Keys", CItemBase.Eパネル種別.通常,
579                         "システムのキー入力に関する項目を設定します。",
580                         "Settings for the system key/pad inputs." );
581                         this.list項目リスト.Add( this.iSystemGoToKeyAssign );
582
583                         OnListMenuの初期化();
584                         this.n現在の選択項目 = 0;
585                         this.eメニュー種別 = Eメニュー種別.System;
586                 }
587
588                 #endregion
589                 #region [ t項目リストの設定_Drums() ]
590                 public void t項目リストの設定_Drums()
591                 {
592                         this.tConfigIniへ記録する();
593                         this.list項目リスト.Clear();
594
595                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
596
597                         this.iDrumsReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
598                                 "左側のメニューに戻ります。",
599                                 "Return to left menu." );
600                         this.list項目リスト.Add( this.iDrumsReturnToMenu );
601
602                         #region [ AutoPlay ]
603                         this.iDrumsAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,
604                                 "全パッドの自動演奏の ON/OFF を\n" +
605                 "まとめて切り替えます。",
606                                 "You can change whether Auto or not for all drums lanes at once." );
607                         this.list項目リスト.Add( this.iDrumsAutoPlayAll );
608
609                         this.iDrumsLeftCymbal = new CItemToggle( "    LeftCymbal", CDTXMania.ConfigIni.bAutoPlay.LC,
610                                 "左シンバルを自動で演奏します。",
611                                 "To play LeftCymbal automatically." );
612                         this.list項目リスト.Add( this.iDrumsLeftCymbal );
613
614                         this.iDrumsHiHat = new CItemToggle( "    HiHat", CDTXMania.ConfigIni.bAutoPlay.HH,
615                                 "ハイハットを自動で演奏します。\n" +
616                                 "(クローズ、オープンとも)",
617                                 "To play HiHat automatically.\n" +
618                                 "(It effects to both HH-close and HH-open)" );
619                         this.list項目リスト.Add( this.iDrumsHiHat );
620
621                         this.iDrumsSnare = new CItemToggle( "    Snare", CDTXMania.ConfigIni.bAutoPlay.SD,
622                                 "スネアを自動で演奏します。",
623                                 "To play Snare automatically." );
624                         this.list項目リスト.Add( this.iDrumsSnare );
625
626                         this.iDrumsBass = new CItemToggle( "    BassDrum", CDTXMania.ConfigIni.bAutoPlay.BD,
627                                 "バスドラムを自動で演奏します。",
628                                 "To play Bass Drum automatically." );
629                         this.list項目リスト.Add( this.iDrumsBass );
630
631                         this.iDrumsHighTom = new CItemToggle( "    HighTom", CDTXMania.ConfigIni.bAutoPlay.HT,
632                                 "ハイタムを自動で演奏します。",
633                                 "To play High Tom automatically." );
634                         this.list項目リスト.Add( this.iDrumsHighTom );
635
636                         this.iDrumsLowTom = new CItemToggle( "    LowTom", CDTXMania.ConfigIni.bAutoPlay.LT,
637                                 "ロータムを自動で演奏します。",
638                                 "To play Low Tom automatically." );
639                         this.list項目リスト.Add( this.iDrumsLowTom );
640
641                         this.iDrumsFloorTom = new CItemToggle( "    FloorTom", CDTXMania.ConfigIni.bAutoPlay.FT,
642                                 "フロアタムを自動で演奏します。",
643                                 "To play Floor Tom automatically." );
644                         this.list項目リスト.Add( this.iDrumsFloorTom );
645
646                         this.iDrumsCymbalRide = new CItemToggle( "    Cym/Ride", CDTXMania.ConfigIni.bAutoPlay.CY,
647                                 "右シンバルとライドシンバルを自動で演奏します。",
648                                 "To play both right- and Ride-Cymbal automatically." );
649                         this.list項目リスト.Add( this.iDrumsCymbalRide );
650
651                         this.iDrumsLeftPedal = new CItemToggle( "    LeftPedal", CDTXMania.ConfigIni.bAutoPlay.LP,
652                                 "ハイハットペダルを自動で演奏します。",
653                                 "To play LeftPedal automatically." );
654                         this.list項目リスト.Add( this.iDrumsLeftPedal );
655
656                         this.iDrumsLeftBassDrum = new CItemToggle( "    LeftBassDrum", CDTXMania.ConfigIni.bAutoPlay.LBD,
657                                 "左バスドラムを自動で演奏します。",
658                                 "To play LeftBassDrum automatically." );
659                         this.list項目リスト.Add( this.iDrumsLeftBassDrum );
660                         #endregion
661
662
663                         this.iDrumsScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Drums,
664                                 "演奏時のドラム譜面のスクロールの速度を指定します。\n" +
665                                 "x0.5 ~ x1000.0 を指定可能です。",
666                                 "To change the scroll speed for the drums lanes.\n" +
667                                 "You can set it from x0.5 to x1000.0.\n" +
668                                 "(ScrollSpeed=x0.5 means half speed)" );
669                         this.list項目リスト.Add( this.iDrumsScrollSpeed );
670
671                         #region [ SudHid ]
672                         this.iDrumsSudHid = new CItemList( "Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue( E楽器パート.DRUMS ),
673                                 "ドラムチップの表示方式:\n" +
674                                 "OFF:  チップを常に表示します。\n" +
675                                 "Sudden: チップがヒットバー付近に来るまで表示\n" +
676                                 "    されなくなります。\n" +
677                                 "Hidden: チップがヒットバー付近で表示されなく\n" +
678                                 "    なります。\n" +
679                                 "Sud+Hid: SuddenとHiddenの効果を同時にかけます。\n" +
680                                 "S(emi)-Invisible:\n" +
681                                 "    通常はチップを透明にしますが、Poor /\n" +
682                                 "    Miss時にはしばらく表示します。\n" +
683                                 "F(ull)-Invisible:\n" +
684                                 "    チップを常に透明にします。暗譜での練習\n" +
685                                 "    にお使いください。",
686                                 "Drums chips display type:\n" +
687                                 "\n" +
688                                 "OFF:    Always show chips.\n" +
689                                 "Sudden: The chips are disappered until they\n" +
690                                 "        come near the hit bar, and suddenly\n" +
691                                 "        appears.\n" +
692                                 "Hidden: The chips are hidden by approaching to\n" +
693                                 "        the hit bar.\n" +
694                                 "Sud+Hid: Both Sudden and Hidden.\n" +
695                                 "S(emi)-Invisible:\n" +
696                                 "        Usually you can't see the chips except\n" +
697                                 "        you've gotten Poor/Miss.\n" +
698                                 "F(ull)-Invisible:\n" +
699                                 "        You can't see the chips at all.",
700                                 new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" } );
701                         this.list項目リスト.Add( this.iDrumsSudHid );
702                         #endregion
703
704             this.iDrumsDark = new CItemList("       Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eDark,
705                 "レーン表示のオプションをまとめて切り替えます。\n"+
706                 "HALF: レーンが表示されなくなります。\n"+
707                 "FULL: さらに小節線、拍線、判定ラインも\n"+
708                 "表示されなくなります。",
709                 "OFF: all display parts are shown.\nHALF: lanes and gauge are\n disappeared.\nFULL: additionaly to HALF, bar/beat\n lines, hit bar are disappeared.",
710                 new string[] { "OFF", "HALF", "FULL" });
711             this.list項目リスト.Add(this.iDrumsDark);
712
713             this.iDrumsLaneDispType = new CItemList("LaneDisp", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.nLaneDispType.Drums,
714                 "レーンの縦線と小節線の表示を切り替えます。\n" +
715                 "ALL  ON :レーン背景、小節線を表示します。\n" +
716                 "LANE OFF:レーン背景を表示しません。\n" +
717                 "LINE OFF:小節線を表示しません。\n"+
718                 "ALL  OFF:レーン背景、小節線を表示しません。",
719                 "",
720                 new string[] { "ALL ON", "LANE OFF", "LINE OFF", "ALL OFF"});
721             this.list項目リスト.Add(this.iDrumsLaneDispType);
722
723             this.iDrumsJudgeLineDisp = new CItemToggle("JudgeLineDisp", CDTXMania.ConfigIni.bJudgeLineDisp.Drums,
724                 "判定ラインの表示 / 非表示を切り替えます。",
725                 "Toggle JudgeLine");
726             this.list項目リスト.Add(this.iDrumsJudgeLineDisp);
727
728             this.iDrumsLaneFlush = new CItemToggle("LaneFlush", CDTXMania.ConfigIni.bLaneFlush.Drums,
729                 "レーンフラッシュの表示 / 非表示を\n" +
730                  "切り替えます。",
731                 "Toggle LaneFlush");
732             this.list項目リスト.Add(this.iDrumsLaneFlush);
733
734                         this.iDrumsReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Drums,
735                                 "ドラムチップが譜面の下から上に流れるようになります。",
736                                 "The scroll way is reversed. Drums chips flow from the bottom to the top." );
737                         this.list項目リスト.Add( this.iDrumsReverse );
738
739                         this.iSystemRisky = new CItemInteger( "Risky", 0, 10, CDTXMania.ConfigIni.nRisky,
740                                 "Riskyモードの設定:\n" +
741                                 "1以上の値にすると、その回数分のPoor/Missで\n" +
742                 "FAILEDとなります。\n" +
743                                 "0にすると無効になり、DamageLevelに従った\n" +
744                 "ゲージ増減となります。\n" +
745                                 "\n" +
746                                 "なお、この設定は、StageFailedの設定と併用できます。",
747                                 "Risky mode:\n" +
748                                 "It means the Poor/Miss times to be FAILED.\n" +
749                                 "Set 0 to disable Risky mode." );
750                         this.list項目リスト.Add( this.iSystemRisky );
751
752                         this.iDrumsTight = new CItemToggle( "Tight", CDTXMania.ConfigIni.bTight,
753                                 "ドラムチップのないところでパッドを叩くとミスになります",
754                                 "It becomes MISS to hit pad without chip." );
755                         this.list項目リスト.Add( this.iDrumsTight );
756
757                         #region [ Position ]
758             #region[ LaneType ]
759             this.iDrumsLaneType = new CItemList("LaneType", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eLaneType,
760                 "ドラムのレーンの配置を変更します。\n" +
761                 "Type-A 通常の設定です。\n"+
762                 "Type-B 2ペダルとタムをそれぞれま\n"+
763                 "とめた表示です。\n"+
764                 "Type-C 3タムのみをまとめた表示です。\n"+
765                 "Type-D 左右完全対象の表示です。",
766                 "To change the displaying position of\n" +
767                 "Drum Lanes.\n"+
768                 "Type-A default\n" +
769                 "Type-B Summarized 2 pedals and Toms.\n"+
770                 "Type-C Summarized 3 Toms only.\n"+
771                 "Type-D Work In Progress....",
772                 new string[] { "Type-A", "Type-B", "Type-C", "Type-D"});
773             this.list項目リスト.Add(this.iDrumsLaneType);
774             #endregion
775                         #region [ DrumsLanePosition ]
776             //this.iDrumsLanePosition = new CItemList( "LanePosition", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eドラムレーン表示位置,
777             //    "ドラムレーンの位置を指定します。\n" + 
778             //    "\n" +
779             //    "Left:   画面の左側にドラムレーンを表示します。\n" +
780             //    "Center: 画面の中央にドラムレーンを表示します。\n",
781             //    "The display position for Drums Lane." +
782             //    "\n" +
783             //    " Left:   Drums lanes are shown in the left of screen.\n" +
784             //    " Center: Drums lanes are shown in the center of screen.",
785             //    //"Note that it doesn't take effect at Autoplay ([Left] is forcely used).",
786             //    new string[] { "Left", "Center" } );
787             //this.list項目リスト.Add( this.iDrumsLanePosition );
788                         #endregion
789                         #region [ ComboPosition ]
790             //this.iDrumsComboPosition = new CItemList( "ComboPosition", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.ドラムコンボ文字の表示位置,
791             //    "演奏時のドラムコンボ文字列の位置を指定します。",
792             //    "The display position for Drums Combo.",
793             //    //"Note that it doesn't take effect at Autoplay ([Left] is forcely used).",
794             //    new string[] { "Left", "Center", "Right", "OFF" } );
795             //this.list項目リスト.Add( this.iDrumsComboPosition );
796                         #endregion
797                         #region [ Position ]
798                         this.iDrumsPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Drums,
799                                 "ドラムの判定文字の表示位置を指定します。\n" +
800                                 "  P-A: レーン上\n" +
801                                 "  P-B: 判定ライン下\n" +
802                                 "  OFF: 表示しない",
803                                 "The position to show judgement mark.\n" +
804                                 "(Perfect, Great, ...)\n" +
805                                 "\n" +
806                                 " P-A: on the lanes.\n" +
807                                 " P-B: under the hit bar.\n" +
808                                 " OFF: no judgement mark.",
809                                 new string[] { "OFF", "P-A", "P-B" } );
810                         this.list項目リスト.Add( this.iDrumsPosition );
811                         #endregion
812
813             this.iDrumsRDPosition = new CItemList("RDPosition", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eRDPosition,
814                 "ライドシンバルレーンの表示\n" +
815                 "位置を変更します。\n"+
816                 "RD RC:最右端はRCレーンになります\n"+
817                 "RC RD: 最右端はRDレーンになります",
818                 "To change the displaying position of\n" +
819                 "the ride cymbal.",
820                 new string[] { "RD RC", "RC RD" });
821             this.list項目リスト.Add(this.iDrumsRDPosition);
822             #endregion
823                         #region [ Group ]
824                         this.iSystemHHGroup = new CItemList( "HH Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHHGroup,
825                                 "ハイハットレーン打ち分け設定:\n" +
826                                 "左シンバル、ハイハットオープン、\n" +
827                 "ハイハットクローズの打ち分け方法を指定します。\n" +
828                                 "  HH-0 ... LC | HHC | HHO\n" +
829                                 "  HH-1 ... LC & ( HHC | HHO )\n" +
830                                 "  HH-2 ... LC | ( HHC & HHO )\n" +
831                                 "  HH-3 ... LC & HHC & HHO\n" +
832                                 "\n",
833                                 "HH-0: LC|HC|HO;\n" +
834                                 " all are separated.\n" +
835                                 "HH-1: LC&(HC|HO);\n" +
836                                 " HC and HO are separted.\n" +
837                                 " LC is grouped with HC and HHO.\n" +
838                                 "HH-2: LC|(HC&HO);\n" +
839                                 " LC and HHs are separated.\n" +
840                                 " HC and HO are grouped.\n" +
841                                 "HH-3: LC&HC&HO; all are grouped.\n" +
842                                 "\n",
843                                 new string[] { "HH-0", "HH-1", "HH-2", "HH-3" } );
844                         this.list項目リスト.Add( this.iSystemHHGroup );
845
846                         this.iSystemFTGroup = new CItemList( "FT Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eFTGroup,
847                                 "フロアタム打ち分け設定:\n" +
848                                 "ロータムとフロアタムの打ち分け方法を指定します。\n" +
849                                 "  FT-0 ... LT | FT\n" +
850                                 "  FT-1 ... LT & FT\n",
851                                 "FT-0: LT|FT\n" +
852                                 " LT and FT are separated.\n" +
853                                 "FT-1: LT&FT\n" +
854                                 " LT and FT are grouped.",
855                                 new string[] { "FT-0", "FT-1" } );
856                         this.list項目リスト.Add( this.iSystemFTGroup );
857
858                         this.iSystemCYGroup = new CItemList( "CY Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eCYGroup,
859                                 "シンバルレーン打ち分け設定:\n" +
860                                 "右シンバルとライドシンバルの打ち分け方法を\n" +
861                 "指定します。\n" +
862                                 "  CY-0 ... CY | RD\n" +
863                                 "  CY-1 ... CY & RD\n",
864                                 "CY-0: CY|RD\n" +
865                                 " CY and RD are separated.\n" +
866                                 "CY-1: CY&RD\n" +
867                                 " CY and RD are grouped.",
868                                 new string[] { "CY-0", "CY-1" } );
869                         this.list項目リスト.Add( this.iSystemCYGroup );
870
871             this.iSystemBDGroup = new CItemList("BD Group", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eBDGroup,               // #27029 2012.1.4 from
872                 "フットペダル打ち分け設定:\n" +
873                 "左ペダル、左バスドラ、右バスドラの打ち分け\n" +
874                 "方法を指定します。\n" +
875                 "  BD-0 ... LP | LBD | BD\n" +
876                 "  BD-1 ... LP | LBD & BD\n" +
877                 "  BD-2 ... LP & LBD | BD\n" +
878                 "  BD-3 ... LP & LBD & BD\n",
879                 new string[] { "BD-0", "BD-1", "BD-2", "BD-3" });
880             this.list項目リスト.Add(this.iSystemBDGroup);
881                         #endregion
882
883                         this.iSystemCymbalFree = new CItemToggle( "CymbalFree", CDTXMania.ConfigIni.bシンバルフリー,
884                                 "シンバルフリーモード:\n" +
885                                 "左シンバル・右シンバルの区別をなくします。\n" +
886                 "ライドシンバルまで区別をなくすか否かは、\n" +
887                 "CYGroup に従います。\n",
888                                 "Turn ON to group LC (left cymbal) and CY (right cymbal).\n" +
889                                 "Whether RD (ride cymbal) is also grouped or not depends on the 'CY Group' setting." );
890                         this.list項目リスト.Add( this.iSystemCymbalFree );
891
892                         #region [ SoundPriority ]
893                         this.iSystemHitSoundPriorityHH = new CItemList( "HH Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityHH,
894                                 "発声音決定の優先順位:\n" +
895                                 "ハイハットレーン打ち分け有効時に、チップの発声音を\n" +
896                 "どのように決定するかを指定します。\n" +
897                                 "  C > P ... チップの音が優先\n" +
898                                 "  P > C ... 叩いたパッドの音が優先\n" +
899                                 "\n" +
900                                 "※BD Group が BD-1 である場合、\n" +
901                 "この項目は変更できません。\n",
902                                 "To specify playing sound in case you're using HH-0,1 and 2.\n" +
903                                 "\n" +
904                                 "C>P:\n" +
905                                 " Chip sound is prior to the pad sound.\n" +
906                                 "P>C:\n" +
907                                 " Pad sound is prior to the chip sound.\n" +
908                                 "\n" +
909                                 "* This value cannot be changed while BD Group is set as BD-1.",
910                                 new string[] { "C>P", "P>C" } );
911                         this.list項目リスト.Add( this.iSystemHitSoundPriorityHH );
912
913                         this.iSystemHitSoundPriorityFT = new CItemList( "FT Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityFT,
914                                 "発声音決定の優先順位:\n" +
915                                 "フロアタム打ち分け有効時に、チップの発声音を\n" +
916                 "どのように決定するかを指定します。\n" +
917                                 "  C > P ... チップの音が優先\n" +
918                                 "  P > C ... 叩いたパッドの音が優先",
919                                 "To specify playing sound in case you're using FT-0.\n" +
920                                 "\n" +
921                                 "C>P:\n" +
922                                 " Chip sound is prior to the pad sound.\n" +
923                                 "P>C:\n" +
924                                 " Pad sound is prior to the chip sound.",
925                                 new string[] { "C>P", "P>C" } );
926                         this.list項目リスト.Add( this.iSystemHitSoundPriorityFT );
927
928                         this.iSystemHitSoundPriorityCY = new CItemList( "CY Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityCY,
929                                 "発声音決定の優先順位:\n" +
930                                 "シンバルレーン打ち分け有効時に、チップの発声音を\n" +
931                 "どのように決定するかを指定します。\n" +
932                                 "  C > P ... チップの音が優先\n" +
933                                 "  P > C ... 叩いたパッドの音が優先",
934                                 "To specify playing sound in case you're using CY-0.\n" +
935                                 "\n" +
936                                 "C>P:\n" +
937                                 " Chip sound is prior to the pad sound.\n" +
938                                 "P>C:\n" +
939                                 " Pad sound is prior to the chip sound.",
940                                 new string[] { "C>P", "P>C" } );
941                         this.list項目リスト.Add( this.iSystemHitSoundPriorityCY );
942                         #endregion
943
944                         this.iSystemFillIn = new CItemToggle( "FillIn", CDTXMania.ConfigIni.bフィルイン有効,
945                                 "フィルインエフェクトの使用:\n" +
946                                 "フィルイン区間の爆発パターンに特別のエフェクトを\n" +
947                 "使用します。\n" +
948                                 "フィルインエフェクトの描画には\n" +
949                 "それなりのマシンパワーが必要とされます。",
950                                 "To show bursting effects at the fill-in zone." );
951                         this.list項目リスト.Add( this.iSystemFillIn );
952
953                         this.iSystemHitSound = new CItemToggle( "HitSound", CDTXMania.ConfigIni.bドラム打音を発声する,
954                                 "打撃音の再生:\n" +
955                                 "これをOFFにすると、パッドを叩いたときの音を\n" +
956                 "再生しなくなります(ドラムのみ)。\n" +
957                                 "電子ドラム本来の音色で演奏したい場合などに\n" +
958                 "OFFにします。\n" +
959                                 "\n" +
960                                 "注意:BD Group が BD-1 である場合は\n" +
961                 "不具合が生じます。\n",
962                                 "Turn OFF if you don't want to play hitting chip sound.\n" +
963                                 "It is useful to play with real/electric drums kit.\n" +
964                                 "\n" +
965                                 "Warning: You should not use BD Group BD-1 with HitSound OFF.\n" );
966                         this.list項目リスト.Add( this.iSystemHitSound );
967
968                         this.iSystemSoundMonitorDrums = new CItemToggle( "DrumsMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Drums,
969                                 "ドラム音モニタ:\n" +
970                                 "ドラム音を他の音より大きめの音量で発声します。\n" +
971                                 "ただし、オートプレイの場合は通常音量で発声されます",
972                                 "To enhance the drums chip sound (except autoplay)." );
973                         this.list項目リスト.Add( this.iSystemSoundMonitorDrums );
974
975                         this.iSystemMinComboDrums = new CItemInteger( "D-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Drums,
976                                 "表示可能な最小コンボ数(ドラム):\n" +
977                                 "画面に表示されるコンボの最小の数を指定します。\n" +
978                                 "1 ~ 99999 の値が指定可能です。",
979                                 "Initial number to show the combo for the drums.\n" +
980                                 "You can specify from 1 to 99999." );
981                         this.list項目リスト.Add( this.iSystemMinComboDrums );
982
983             this.iDrumsJudgeLinePos = new CItemInteger("JudgeLinePos", 0, 100, CDTXMania.ConfigIni.nJudgeLine.Drums,
984                 "演奏時の判定ラインの高さを変更します。\n" +
985                 "0~100の間で指定できます。",
986                 "To change the judgeLinePosition for the\n" +
987                 "You can set it from 0 to 100." );
988             this.list項目リスト.Add(this.iDrumsJudgeLinePos);
989
990             this.iDrumsJudgeLineOffset = new CItemInteger("JudgeLineOffset", -99, 99, CDTXMania.ConfigIni.nJudgeLinePosOffset.Drums,
991                 "演奏時の判定ラインのY座標の位置を変更します。\n" +
992                 "-99 ~ 99pxの間で指定できます。",
993                 "To change the judgeLinePosition for the\n" +
994                 "You can set it from 0 to 100." );
995             this.list項目リスト.Add( this.iDrumsJudgeLineOffset );
996
997                         // #23580 2011.1.3 yyagi
998                         this.iDrumsInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums,
999                                 "ドラムの入力タイミングの微調整を行います。\n" +
1000                                 "-99 ~ 99ms まで指定可能です。\n" +
1001                                 "入力ラグを軽減するためには、\n" +
1002                 "負の値を指定してください。",
1003                                 "To adjust the drums input timing.\n" +
1004                                 "You can set from -99 to 99ms.\n" +
1005                                 "To decrease input lag, set minus value." );
1006                         this.list項目リスト.Add( this.iDrumsInputAdjustTimeMs );
1007
1008                         // #24074 2011.01.23 add ikanick
1009                         this.iDrumsGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph.Drums,
1010                                 "最高スキルと比較できるグラフを表示します。\n" +
1011                                 "オートプレイだと表示されません。",
1012                                 "To draw Graph or not." );
1013                         this.list項目リスト.Add( this.iDrumsGraph );
1014
1015                         this.iDrumsGoToKeyAssign = new CItemBase( "Drums Keys", CItemBase.Eパネル種別.通常,
1016                                 "ドラムのキー入力に関する項目を設定します。",
1017                                 "Settings for the drums key/pad inputs." );
1018                         this.list項目リスト.Add( this.iDrumsGoToKeyAssign );
1019
1020                         OnListMenuの初期化();
1021                         this.n現在の選択項目 = 0;
1022                         this.eメニュー種別 = Eメニュー種別.Drums;
1023                 }
1024                 #endregion
1025                 #region [ t項目リストの設定_Guitar() ]
1026                 public void t項目リストの設定_Guitar()
1027                 {
1028                         this.tConfigIniへ記録する();
1029                         this.list項目リスト.Clear();
1030
1031                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
1032
1033                         this.iGuitarReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
1034                                 "左側のメニューに戻ります。",
1035                                 "Return to left menu." );
1036                         this.list項目リスト.Add( this.iGuitarReturnToMenu );
1037
1038                         #region [ AutoPlay ]
1039                         this.iGuitarAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,
1040                                 "全ネック/ピックの自動演奏の ON/OFF を\n" +
1041                 "まとめて切り替えます。",
1042                                 "You can change whether Auto or not for all guitar neck/pick at once." );
1043                         this.list項目リスト.Add( this.iGuitarAutoPlayAll );
1044                         this.iGuitarR = new CItemToggle( "    R", CDTXMania.ConfigIni.bAutoPlay.GtR,
1045                                 "Rネックを自動で演奏します。",
1046                                 "To play R neck automatically." );
1047                         this.list項目リスト.Add( this.iGuitarR );
1048                         this.iGuitarG = new CItemToggle( "    G", CDTXMania.ConfigIni.bAutoPlay.GtG,
1049                                 "Gネックを自動で演奏します。",
1050                                 "To play G neck automatically." );
1051                         this.list項目リスト.Add( this.iGuitarG );
1052                         this.iGuitarB = new CItemToggle( "    B", CDTXMania.ConfigIni.bAutoPlay.GtB,
1053                                 "Bネックを自動で演奏します。",
1054                                 "To play B neck automatically." );
1055                         this.list項目リスト.Add( this.iGuitarB );
1056                         this.iGuitarPick = new CItemToggle( "    Pick", CDTXMania.ConfigIni.bAutoPlay.GtPick,
1057                                 "ピックを自動で演奏します。",
1058                                 "To play Pick automatically." );
1059                         this.list項目リスト.Add( this.iGuitarPick );
1060                         this.iGuitarW = new CItemToggle( "    Wailing", CDTXMania.ConfigIni.bAutoPlay.GtW,
1061                                 "ウェイリングを自動で演奏します。",
1062                                 "To play wailing automatically." );
1063                         this.list項目リスト.Add( this.iGuitarW );
1064                         #endregion
1065                         this.iGuitarScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Guitar,
1066                                 "演奏時のドラム譜面のスクロールの速度を指定します。\n" +
1067                                 "x0.5 ~ x1000.0 を指定可能です。",
1068                                 "To change the scroll speed for the drums lanes.\n" +
1069                                 "You can set it from x0.5 to x1000.0.\n" +
1070                                 "(ScrollSpeed=x0.5 means half speed)" );
1071                         this.list項目リスト.Add( this.iGuitarScrollSpeed );
1072
1073                         this.iGuitarSudHid = new CItemList( "Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue( E楽器パート.GUITAR ),
1074                                 "ギターチップの表示方式:\n" +
1075                                 "OFF:  チップを常に表示します。\n" +
1076                                 "Sudden: チップがヒットバー付近に来るまで表示\n" +
1077                                 "    されなくなります。\n" +
1078                                 "Hidden: チップがヒットバー付近で表示されなく\n" +
1079                                 "    なります。\n" +
1080                                 "Sud+Hid: SuddenとHiddenの効果を同時にかけます。\n" +
1081                                 "S(emi)-Invisible:\n" +
1082                                 "    通常はチップを透明にしますが、Bad時\n" +
1083                                 "    にはしばらく表示します。\n" +
1084                                 "F(ull)-Invisible:\n" +
1085                                 "    チップを常に透明にします。暗譜での練習\n" +
1086                                 "    にお使いください。",
1087                                 "Guitar chips display type:\n" +
1088                                 "\n" +
1089                                 "OFF:    Always show chips.\n" +
1090                                 "Sudden: The chips are disappered until they\n" +
1091                                 "        come near the hit bar, and suddenly\n" +
1092                                 "        appears.\n" +
1093                                 "Hidden: The chips are hidden by approaching to\n" +
1094                                 "        the hit bar.\n" +
1095                                 "Sud+Hid: Both Sudden and Hidden.\n" +
1096                                 "S(emi)-Invisible:\n" +
1097                                 "        Usually you can't see the chips except\n" +
1098                                 "        you've gotten Bad.\n" +
1099                                 "F(ull)-Invisible:\n" +
1100                                 "        You can't see the chips at all.",
1101                                 new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" } );
1102                         this.list項目リスト.Add( this.iGuitarSudHid );
1103
1104                         //this.iGuitarSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Guitar,
1105                         //    "ギターチップがヒットバー付近にくる\nまで表示されなくなります。",
1106                         //    "Guitar chips are disappered until they\ncome near the hit bar, and suddenly\nappears." );
1107                         //this.list項目リスト.Add( this.iGuitarSudden );
1108                         //this.iGuitarHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Guitar,
1109                         //    "ギターチップがヒットバー付近で表示\nされなくなります。",
1110                         //    "Guitar chips are hidden by approaching\nto the hit bar. " );
1111                         //this.list項目リスト.Add( this.iGuitarHidden );
1112
1113                         //this.iGuitarInvisible = new CItemList( "Invisible", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eInvisible.Guitar,
1114                         //    "ギターのチップを全く表示しなくなりま\n" +
1115                         //    "す。暗譜での練習にお使いください。\n" +
1116                         //    "これをONにすると、SuddenとHiddenの\n" +
1117                         //    "効果は無効になります。",
1118                         //    "If you set Blindfold=ON, you can't\n" +
1119                         //    "see the chips at all.",
1120                         //    new string[] { "OFF", "HALF", "ON" } );
1121                         //this.list項目リスト.Add( this.iGuitarInvisible );
1122
1123             this.iGuitarDark = new CItemList("       Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eDark,
1124                  "レーン表示のオプションをまとめて切り替えます。\n" +
1125                  "HALF: レーンが表示されなくなります。\n" +
1126                  "FULL: さらに小節線、拍線、判定ラインも\n" +
1127                  "表示されなくなります。",
1128                  "OFF: all display parts are shown.\nHALF: lanes and gauge are\n disappeared.\nFULL: additionaly to HALF, bar/beat\n lines, hit bar are disappeared.",
1129                  new string[] { "OFF", "HALF", "FULL" });
1130             this.list項目リスト.Add(this.iGuitarDark);
1131
1132             this.iGuitarLaneDispType = new CItemList("LaneDisp", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.nLaneDispType.Guitar,
1133                 "レーンの縦線と小節線の表示を切り替えます。\n" +
1134                 "ALL  ON :レーン背景、小節線を表示します。\n" +
1135                 "LANE OFF:レーン背景を表示しません。\n" +
1136                 "LINE OFF:小節線を表示しません。\n" +
1137                 "ALL  OFF:レーン背景、小節線を表示しません。",
1138                 "",
1139                 new string[] { "ALL ON", "LANE OFF", "LINE OFF", "ALL OFF" });
1140             this.list項目リスト.Add(this.iGuitarLaneDispType);
1141
1142             this.iGuitarJudgeLineDisp = new CItemToggle( "JudgeLineDisp", CDTXMania.ConfigIni.bJudgeLineDisp.Guitar,
1143                 "判定ラインの表示 / 非表示を切り替えます。",
1144                 "Toggle JudgeLine");
1145             this.list項目リスト.Add( this.iGuitarJudgeLineDisp );
1146
1147             this.iGuitarLaneFlush = new CItemToggle( "LaneFlush", CDTXMania.ConfigIni.bLaneFlush.Guitar,
1148                 "レーンフラッシュの表示の表示 / 非表示を\n" +
1149                  "切り替えます。",
1150                 "Toggle LaneFlush" );
1151             this.list項目リスト.Add( this.iGuitarLaneFlush );
1152
1153                         this.iGuitarReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Guitar,
1154                                 "ギターチップが譜面の上から下に流れるようになります",
1155                                 "The scroll way is reversed. Guitar chips flow from the top to the bottom." );
1156                         this.list項目リスト.Add( this.iGuitarReverse );
1157
1158                         this.iSystemJudgePosGuitar = new CItemList( "JudgePos", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定位置.Guitar,
1159                                 "判定ライン表示位置:\n" +
1160                                 "判定ラインとRGBボタンが、少し下側に表示される\n" +
1161                 "ようになります。",
1162                                 "Judge Line position:\n" +
1163                                 "The judge line and RGB buttons will be displayed lower position.",
1164                                 new string[] { "Normal", "Lower" } );
1165                         this.list項目リスト.Add( this.iSystemJudgePosGuitar );
1166
1167                         this.iGuitarPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Guitar,
1168                                 "ギターの判定文字の表示位置を指定します。\n" +
1169                                 " P-A: レーン上\n" +
1170                                 " P-B: 判定ラインの上\n" +
1171                                 " P-C: COMBO の下\n" +
1172                                 " OFF: 表示しない",
1173                                 "The position to show judgement mark.\n" +
1174                                 "(Perfect, Great, ...)\n" +
1175                                 "\n" +
1176                                 " P-A: on the lanes.\n" +
1177                                 " P-B: over the hit bar.\n" +
1178                                 " P-C: under the COMBO indication.\n" +
1179                                 " OFF: no judgement mark.",
1180                                 new string[] { "OFF", "P-A", "P-B", "P-C" } );
1181                         this.list項目リスト.Add( this.iGuitarPosition );
1182
1183                         //this.iGuitarJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度.Guitar,
1184                         //    "判定文字列とコンボ表示の優先順位を\n" +
1185                         //    "指定します。\n" +
1186                         //    "\n" +
1187                         //    " Under: チップの下に表示します。\n" +
1188                         //    " Over:  チップの上に表示します。",
1189                         //    "The display prioity between chips\n" +
1190                         //    " and judge mark/combo.\n" +
1191                         //    "\n" +
1192                         //    " Under: Show them under the chips.\n" +
1193                         //    " Over:  Show them over the chips.",
1194                         //    new string[] { "Under", "Over" } );
1195                         //this.list項目リスト.Add( this.iGuitarJudgeDispPriority );
1196
1197                         this.iGuitarRandom = new CItemList( "Random", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eRandom.Guitar,
1198                                 "ギターのチップがランダムに降ってきます。\n" +
1199                                 "  Part: 小節・レーン単位で交換\n" +
1200                                 "  Super: チップ単位で交換\n" +
1201                                 "  Hyper: 全部完全に変更",
1202                                 "Guitar chips come randomly.\n" +
1203                                 "\n" +
1204                                 "  Part: swapping lanes randomly for each measures.\n" +
1205                                 "  Super: swapping chip randomly\n" +
1206                                 "  Hyper: swapping randomly (number of lanes also changes)",
1207                                 new string[] { "OFF", "Part", "Super", "Hyper" } );
1208                         this.list項目リスト.Add( this.iGuitarRandom );
1209
1210                         this.iGuitarLight = new CItemToggle( "Light", CDTXMania.ConfigIni.bLight.Guitar,
1211                                 "ギターチップのないところでピッキングしても BAD に\n" +
1212                 "なりません。",
1213                                 "Even if you pick without any chips, it doesn't become BAD." );
1214                         this.list項目リスト.Add( this.iGuitarLight );
1215                         this.iGuitarLeft = new CItemToggle( "Left", CDTXMania.ConfigIni.bLeft.Guitar,
1216                                 "ギターの RGB の並びが左右反転します。\n" +
1217                 "(左利きモード)",
1218                                 "Lane order 'R-G-B' becomes 'B-G-R' for lefty." );
1219                         this.list項目リスト.Add( this.iGuitarLeft );
1220
1221                         this.iSystemSoundMonitorGuitar = new CItemToggle( "GuitarMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Guitar,
1222                         "ギター音モニタ:\n" +
1223                         "ギター音を他の音より大きめの音量で発声します。\n" +
1224                         "ただし、オートプレイの場合は通常音量で\n" +
1225             "発声されます。",
1226                         "To enhance the guitar chip sound (except autoplay)." );
1227                         this.list項目リスト.Add( this.iSystemSoundMonitorGuitar );
1228                         this.iSystemMinComboGuitar = new CItemInteger( "G-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Guitar,
1229                                 "表示可能な最小コンボ数(ギター):\n" +
1230                                 "画面に表示されるコンボの最小の数を指定します。\n" +
1231                                 "1 ~ 99999 の値が指定可能です。",
1232                                 "Initial number to show the combo for the guitar.\n" +
1233                                 "You can specify from 1 to 99999." );
1234                         this.list項目リスト.Add( this.iSystemMinComboGuitar );
1235
1236
1237                         // #23580 2011.1.3 yyagi
1238                         this.iGuitarInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar,
1239                                 "ギターの入力タイミングの微調整を行います。\n" +
1240                                 "-99 ~ 99ms まで指定可能です。\n" +
1241                                 "入力ラグを軽減するためには、\n" +
1242                 "負の値を指定してください。",
1243                                 "To adjust the guitar input timing.\n" +
1244                                 "You can set from -99 to 99ms.\n" +
1245                                 "To decrease input lag, set minus value." );
1246                         this.list項目リスト.Add( this.iGuitarInputAdjustTimeMs );
1247
1248                         this.iGuitarGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph.Guitar,
1249                                 "最高スキルと比較できるグラフを表示します。\n" +
1250                                 "オートプレイだと表示されません。\n" +
1251                 "この項目を有効にすると、ベースパートのグラフは\n" +
1252                 "無効になります。",
1253                                 "To draw Graph or not." );
1254                         this.list項目リスト.Add( this.iGuitarGraph );
1255
1256                         this.iGuitarGoToKeyAssign = new CItemBase( "Guitar Keys", CItemBase.Eパネル種別.通常,
1257                                 "ギターのキー入力に関する項目を設定します。",
1258                                 "Settings for the guitar key/pad inputs." );
1259                         this.list項目リスト.Add( this.iGuitarGoToKeyAssign );
1260
1261                         OnListMenuの初期化();
1262                         this.n現在の選択項目 = 0;
1263                         this.eメニュー種別 = Eメニュー種別.Guitar;
1264                 }
1265                 #endregion
1266                 #region [ t項目リストの設定_Bass() ]
1267                 public void t項目リストの設定_Bass()
1268                 {
1269                         this.tConfigIniへ記録する();
1270                         this.list項目リスト.Clear();
1271
1272                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
1273
1274                         this.iBassReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
1275                                 "左側のメニューに戻ります。",
1276                                 "Return to left menu." );
1277                         this.list項目リスト.Add( this.iBassReturnToMenu );
1278
1279                         #region [ AutoPlay ]
1280                         this.iBassAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,
1281                                 "全ネック/ピックの自動演奏の ON/OFF を\n" +
1282                 "まとめて切り替えます。",
1283                                 "You can change whether Auto or not for all bass neck/pick at once." );
1284                         this.list項目リスト.Add( this.iBassAutoPlayAll );
1285                         this.iBassR = new CItemToggle( "    R", CDTXMania.ConfigIni.bAutoPlay.BsR,
1286                                 "Rネックを自動で演奏します。",
1287                                 "To play R neck automatically." );
1288                         this.list項目リスト.Add( this.iBassR );
1289                         this.iBassG = new CItemToggle( "    G", CDTXMania.ConfigIni.bAutoPlay.BsG,
1290                                 "Gネックを自動で演奏します。",
1291                                 "To play G neck automatically." );
1292                         this.list項目リスト.Add( this.iBassG );
1293                         this.iBassB = new CItemToggle( "    B", CDTXMania.ConfigIni.bAutoPlay.BsB,
1294                                 "Bネックを自動で演奏します。",
1295                                 "To play B neck automatically." );
1296                         this.list項目リスト.Add( this.iBassB );
1297                         this.iBassPick = new CItemToggle( "    Pick", CDTXMania.ConfigIni.bAutoPlay.BsPick,
1298                                 "ピックを自動で演奏します。",
1299                                 "To play Pick automatically." );
1300                         this.list項目リスト.Add( this.iBassPick );
1301                         this.iBassW = new CItemToggle( "    Wailing", CDTXMania.ConfigIni.bAutoPlay.BsW,
1302                                 "ウェイリングを自動で演奏します。",
1303                                 "To play wailing automatically." );
1304                         this.list項目リスト.Add( this.iBassW );
1305                         #endregion
1306
1307                         this.iBassScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Bass,
1308                                 "演奏時のベース譜面のスクロールの速度を指定します\n" +
1309                                 "x0.5 ~ x1000.0 までを指定可能です。",
1310                                 "To change the scroll speed for the bass lanes.\n" +
1311                                 "You can set it from x0.5 to x1000.0.\n" +
1312                                 "(ScrollSpeed=x0.5 means half speed)" );
1313                         this.list項目リスト.Add( this.iBassScrollSpeed );
1314
1315                         this.iBassSudHid = new CItemList( "Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue( E楽器パート.BASS ),
1316                                 "ベースチップの表示方式:\n" +
1317                                 "OFF:  チップを常に表示します。\n" +
1318                                 "Sudden: チップがヒットバー付近に来るまで表示\n" +
1319                                 "    されなくなります。\n" +
1320                                 "Hidden: チップがヒットバー付近で表示されなく\n" +
1321                                 "    なります。\n" +
1322                                 "Sud+Hid: SuddenとHiddenの効果を同時にかけます。\n" +
1323                                 "S(emi)-Invisible:\n" +
1324                                 "    通常はチップを透明にしますが、Bad時\n" +
1325                                 "    にはしばらく表示します。\n" +
1326                                 "F(ull)-Invisible:\n" +
1327                                 "    チップを常に透明にします。暗譜での練習\n" +
1328                                 "    にお使いください。",
1329                                 "Bass chips display type:\n" +
1330                                 "\n" +
1331                                 "OFF:    Always show chips.\n" +
1332                                 "Sudden: The chips are disappered until they\n" +
1333                                 "        come near the hit bar, and suddenly\n" +
1334                                 "        appears.\n" +
1335                                 "Hidden: The chips are hidden by approaching to\n" +
1336                                 "        the hit bar.\n" +
1337                                 "Sud+Hid: Both Sudden and Hidden.\n" +
1338                                 "S(emi)-Invisible:\n" +
1339                                 "        Usually you can't see the chips except\n" +
1340                                 "        you've gotten Bad.\n" +
1341                                 "F(ull)-Invisible:\n" +
1342                                 "        You can't see the chips at all.",
1343                                 new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" } );
1344                         this.list項目リスト.Add( this.iBassSudHid );
1345
1346                         //this.iBassSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Bass,
1347                         //    "ベースチップがヒットバー付近にくる\nまで表示されなくなります。",
1348                         //    "Bass chips are disappered until they\ncome near the hit bar, and suddenly\nappears." );
1349                         //this.list項目リスト.Add( this.iBassSudden );
1350                         //this.iBassHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Bass,
1351                         //    "ベースチップがヒットバー付近で表示\nされなくなります。",
1352                         //    "Bass chips are hidden by approaching\nto the hit bar." );
1353                         //this.list項目リスト.Add( this.iBassHidden );
1354
1355                         //this.iBassInvisible = new CItemList( "InvisibleBlindfold", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eInvisible.Bass,
1356                         //    "ベースのチップを全く表示しなくなりま\n" +
1357                         //    "す。暗譜での練習にお使いください。\n" +
1358                         //    "これをONにすると、SuddenとHiddenの\n" +
1359                         //    "効果は無効になります。",
1360                         //    "If you set Blindfold=ON, you can't\n" +
1361                         //    "see the chips at all.",
1362                         //    new string[] { "OFF", "HALF", "ON"} );
1363                         //this.list項目リスト.Add( this.iBassInvisible );
1364
1365             this.iBassDark = new CItemList("       Dark", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.eDark,
1366                  "レーン表示のオプションをまとめて切り替えます。\n" +
1367                  "HALF: レーンが表示されなくなります。\n" +
1368                  "FULL: さらに小節線、拍線、判定ラインも\n" +
1369                  "表示されなくなります。",
1370                  "OFF: all display parts are shown.\nHALF: lanes and gauge are\n disappeared.\nFULL: additionaly to HALF, bar/beat\n lines, hit bar are disappeared.",
1371                  new string[] { "OFF", "HALF", "FULL" });
1372             this.list項目リスト.Add(this.iBassDark);
1373
1374             this.iBassLaneDispType = new CItemList( "LaneDisp", CItemBase.Eパネル種別.通常, (int)CDTXMania.ConfigIni.nLaneDispType.Bass,
1375                 "レーンの縦線と小節線の表示を切り替えます。\n" +
1376                 "ALL  ON :レーン背景、小節線を表示します。\n" +
1377                 "LANE OFF:レーン背景を表示しません。\n" +
1378                 "LINE OFF:小節線を表示しません。\n" +
1379                 "ALL  OFF:レーン背景、小節線を表示しません。",
1380                 "",
1381                 new string[] { "ALL ON", "LANE OFF", "LINE OFF", "ALL OFF" });
1382             this.list項目リスト.Add(this.iBassLaneDispType);
1383
1384             this.iBassJudgeLineDisp = new CItemToggle("JudgeLineDisp", CDTXMania.ConfigIni.bJudgeLineDisp.Bass,
1385                 "判定ラインの表示 / 非表示を切り替えます。",
1386                 "Toggle JudgeLine");
1387             this.list項目リスト.Add(this.iBassJudgeLineDisp);
1388
1389             this.iBassLaneFlush = new CItemToggle( "LaneFlush", CDTXMania.ConfigIni.bLaneFlush.Bass,
1390                 "レーンフラッシュの表示 / 非表示を\n" +
1391                  "切り替えます。",
1392                 "Toggle LaneFlush" );
1393             this.list項目リスト.Add( this.iBassLaneFlush );
1394
1395                         this.iBassReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Bass,
1396                                 "ベースチップが譜面の上から下に流れるようになります",
1397                                 "The scroll way is reversed. Bass chips flow from the top to the bottom." );
1398                         this.list項目リスト.Add( this.iBassReverse );
1399
1400                         this.iSystemJudgePosBass = new CItemList( "JudgePos", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定位置.Bass,
1401                                 "判定ライン表示位置:\n" +
1402                                 "判定ラインとRGBボタンが、少し下側に表示される\n" +
1403                 "ようになります。",
1404                                 "Judge Line position:\n" +
1405                                 "The judge line and RGB buttons will be displayed lower position.",
1406                                 new string[] { "Normal", "Lower" } );
1407                         this.list項目リスト.Add( this.iSystemJudgePosBass );
1408                         
1409                         this.iBassPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常,
1410                                 (int) CDTXMania.ConfigIni.判定文字表示位置.Bass,
1411                                 "ベースの判定文字の表示位置を指定します。\n" +
1412                                 " P-A: レーン上\n" +
1413                                 " P-B: 判定ラインの上\n" +
1414                                 " P-C: COMBO の下\n" +
1415                                 " OFF: 表示しない",
1416                                 "The position to show judgement mark.\n" +
1417                                 "(Perfect, Great, ...)\n" +
1418                                 "\n" +
1419                                 " P-A: on the lanes.\n" +
1420                                 " P-B: over the hit bar.\n" +
1421                                 " P-C: under the COMBO indication.\n" +
1422                                 " OFF: no judgement mark.",
1423                                 new string[] { "OFF", "P-A", "P-B", "P-C" } );
1424                         this.list項目リスト.Add( this.iBassPosition );
1425
1426                         //this.iBassJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度.Bass,
1427                         //"判定文字列とコンボ表示の優先順位を\n" +
1428                         //"指定します。\n" +
1429                         //"\n" +
1430                         //" Under: チップの下に表示します。\n" +
1431                         //" Over:  チップの上に表示します。",
1432                         //"The display prioity between chips\n" +
1433                         //" and judge mark/combo.\n" +
1434                         //"\n" +
1435                         //" Under: Show them under the chips.\n" +
1436                         //" Over:  Show them over the chips.",
1437                         //new string[] { "Under", "Over" } );
1438                         //this.list項目リスト.Add( this.iBassJudgeDispPriority );
1439
1440                         this.iBassRandom = new CItemList( "Random", CItemBase.Eパネル種別.通常,
1441                                 (int) CDTXMania.ConfigIni.eRandom.Bass,
1442                                 "ベースのチップがランダムに降ってきます。\n" +
1443                                 "  Part: 小節・レーン単位で交換\n" +
1444                                 "  Super: チップ単位で交換\n" +
1445                                 "  Hyper: 全部完全に変更",
1446                                 "Bass chips come randomly.\n" +
1447                                 "\n" +
1448                                 "  Part: swapping lanes randomly for each measures.\n" +
1449                                 "  Super: swapping chip randomly\n" +
1450                                 "  Hyper: swapping randomly (number of lanes also changes)",
1451                                 new string[] { "OFF", "Part", "Super", "Hyper" } );
1452                         this.list項目リスト.Add( this.iBassRandom );
1453                         this.iBassLight = new CItemToggle( "Light", CDTXMania.ConfigIni.bLight.Bass,
1454                                 "ベースチップのないところでピッキングしても BAD に\n" +
1455                 "なりません。",
1456                                 "Even if you pick without any chips, it doesn't become BAD." );
1457                         this.list項目リスト.Add( this.iBassLight );
1458                         this.iBassLeft = new CItemToggle( "Left", CDTXMania.ConfigIni.bLeft.Bass,
1459                                 "ベースの RGB の並びが左右反転します。\n" +
1460                 "(左利きモード)",
1461                                 "Lane order 'R-G-B' becomes 'B-G-R' for lefty." );
1462                         this.list項目リスト.Add( this.iBassLeft );
1463
1464                         this.iSystemSoundMonitorBass = new CItemToggle( "BassMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Bass,
1465                         "ベース音モニタ:\n" +
1466                         "ベース音を他の音より大きめの音量で発声します。\n" +
1467                         "ただし、オートプレイの場合は通常音量で\n" +
1468             "発声されます。",
1469                         "To enhance the bass chip sound (except autoplay)." );
1470                         this.list項目リスト.Add( this.iSystemSoundMonitorBass );
1471
1472                         this.iSystemMinComboBass = new CItemInteger( "B-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass,
1473                                 "表示可能な最小コンボ数(ベース):\n" +
1474                                 "画面に表示されるコンボの最小の数を指定します。\n" +
1475                                 "1 ~ 99999 の値が指定可能です。",
1476                                 "Initial number to show the combo for the bass.\n" +
1477                                 "You can specify from 1 to 99999." );
1478                         this.list項目リスト.Add( this.iSystemMinComboBass );
1479
1480                         this.iBassGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph.Bass,
1481                                 "最高スキルと比較できるグラフを表示します。\n" +
1482                                 "オートプレイだと表示されません。\n" +
1483                 "この項目を有効にすると、ギターパートのグラフは\n" +
1484                 "無効になります。",
1485                                 "To draw Graph or not." );
1486                         this.list項目リスト.Add( this.iBassGraph );
1487
1488                         // #23580 2011.1.3 yyagi
1489                         this.iBassInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass,
1490                                 "ベースの入力タイミングの微調整を行います。\n" +
1491                                 "-99 ~ 99ms まで指定可能です。\n" +
1492                                 "入力ラグを軽減するためには、負の値を\n" +
1493                 "指定してください。",
1494                                 "To adjust the bass input timing.\n" +
1495                                 "You can set from -99 to 99ms.\n" +
1496                                 "To decrease input lag, set minus value." );
1497                         this.list項目リスト.Add( this.iBassInputAdjustTimeMs );
1498
1499                         this.iBassGoToKeyAssign = new CItemBase( "Bass Keys", CItemBase.Eパネル種別.通常,
1500                                 "ベースのキー入力に関する項目を設定します。",
1501                                 "Settings for the bass key/pad inputs." );
1502                         this.list項目リスト.Add( this.iBassGoToKeyAssign );
1503
1504                         OnListMenuの初期化();
1505                         this.n現在の選択項目 = 0;
1506                         this.eメニュー種別 = Eメニュー種別.Bass;
1507                 }
1508                 #endregion
1509
1510                 /// <summary>Sud+Hidの初期値を返す</summary>
1511                 /// <param name="eInst"></param>
1512                 /// <returns>
1513                 /// 0: None
1514                 /// 1: Sudden
1515                 /// 2: Hidden
1516                 /// 3: Sud+Hid
1517                 /// 4: Semi-Invisible
1518                 /// 5: Full-Invisible
1519                 /// </returns>
1520                 private int getDefaultSudHidValue( E楽器パート eInst )
1521                 {
1522                         int defvar;
1523                         int nInst = (int) eInst;
1524                         if ( CDTXMania.ConfigIni.eInvisible[ nInst ] != EInvisible.OFF )
1525                         {
1526                                 defvar = (int) CDTXMania.ConfigIni.eInvisible[ nInst ] + 3;
1527                         }
1528                         else
1529                         {
1530                                 defvar = ( CDTXMania.ConfigIni.bSudden[ nInst ] ? 1 : 0 ) +
1531                                                  ( CDTXMania.ConfigIni.bHidden[ nInst ] ? 2 : 0 );
1532                         }
1533                         return defvar;
1534                 }
1535
1536                 /// <summary>
1537                 /// ESC押下時の右メニュー描画
1538                 /// </summary>
1539                 public void tEsc押下()
1540                 {
1541                         if ( this.b要素値にフォーカス中 )             // #32059 2013.9.17 add yyagi
1542                         {
1543                                 this.b要素値にフォーカス中 = false;
1544                         }
1545
1546                         if ( this.eメニュー種別 == Eメニュー種別.KeyAssignSystem )
1547                         {
1548                                 t項目リストの設定_System();
1549                         }
1550                         else if ( this.eメニュー種別 == Eメニュー種別.KeyAssignDrums )
1551                         {
1552                                 t項目リストの設定_Drums();
1553                         }
1554                         else if ( this.eメニュー種別 == Eメニュー種別.KeyAssignGuitar )
1555                         {
1556                                 t項目リストの設定_Guitar();
1557                         }
1558                         else if ( this.eメニュー種別 == Eメニュー種別.KeyAssignBass )
1559                         {
1560                                 t項目リストの設定_Bass();
1561                         }
1562                         // これ以外なら何もしない
1563                 }
1564                 public void tEnter押下()
1565                 {
1566                         CDTXMania.Skin.sound決定音.t再生する();
1567                         if( this.b要素値にフォーカス中 )
1568                         {
1569                                 this.b要素値にフォーカス中 = false;
1570                         }
1571                         else if( this.list項目リスト[ this.n現在の選択項目 ].e種別 == CItemBase.E種別.整数 )
1572                         {
1573                                 this.b要素値にフォーカス中 = true;
1574                         }
1575                         else if( this.b現在選択されている項目はReturnToMenuである )
1576                         {
1577                                 //this.tConfigIniへ記録する();
1578                                 //CONFIG中にスキン変化が発生すると面倒なので、一旦マスクした。
1579                         }
1580                         #region [ 個々のキーアサイン ]
1581                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLC )
1582                         {
1583                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LC );
1584                         }
1585                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHHC )
1586                         {
1587                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HH );
1588                         }
1589                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHHO )
1590                         {
1591                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HHO );
1592                         }
1593                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsSD )
1594                         {
1595                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.SD );
1596                         }
1597                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsBD )
1598                         {
1599                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.BD );
1600                         }
1601                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHT )
1602                         {
1603                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HT );
1604                         }
1605                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLT )
1606                         {
1607                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LT );
1608                         }
1609                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsFT )
1610                         {
1611                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.FT );
1612                         }
1613                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsCY )
1614                         {
1615                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.CY );
1616                         }
1617                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsRD )
1618                         {
1619                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.RD );
1620                         }
1621                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLP )                    // #27029 2012.1.4 from
1622                         {                                                                                                                                                                                       //
1623                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LP );        //
1624                         }                                                                                                                                                                                       //
1625                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLBD )                   // #27029 2012.1.4 from
1626                         {                                                                                                                                                                                       //
1627                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LBD );       //
1628                         }                                                                                                                                                                                       //
1629                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarR )
1630                         {
1631                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.R );
1632                         }
1633                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarG )
1634                         {
1635                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.G );
1636                         }
1637                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarB )
1638                         {
1639                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.B );
1640                         }
1641                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarPick )
1642                         {
1643                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Pick );
1644                         }
1645                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarWail )
1646                         {
1647                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Wail );
1648                         }
1649                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarDecide )
1650                         {
1651                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Decide );
1652                         }
1653                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarCancel )
1654                         {
1655                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Cancel );
1656                         }
1657                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassR )
1658                         {
1659                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.R );
1660                         }
1661                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassG )
1662                         {
1663                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.G );
1664                         }
1665                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassB )
1666                         {
1667                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.B );
1668                         }
1669                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassPick )
1670                         {
1671                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Pick );
1672                         }
1673                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassWail )
1674                         {
1675                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Wail );
1676                         }
1677                         else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassDecide )
1678                         {
1679                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Decide );
1680                         }
1681                         else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassCancel )
1682                         {
1683                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Cancel );
1684                         }
1685                         else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignSystemCapture )
1686                         {
1687                                 CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.SYSTEM, EKeyConfigPad.Capture);
1688                         }
1689                         #endregion
1690                         else
1691                         {
1692                                 // #27029 2012.1.5 from
1693                                 if( ( this.iSystemBDGroup.n現在選択されている項目番号 == (int) EBDGroup.どっちもBD ) &&
1694                                         ( ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemHHGroup ) || ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemHitSoundPriorityHH ) ) )
1695                                 {
1696                                         // 変更禁止(何もしない)
1697                                 }
1698                                 else
1699                                 {
1700                                         // 変更許可
1701                                         this.list項目リスト[ this.n現在の選択項目 ].tEnter押下();
1702                                 }
1703
1704
1705                                 // Enter押下後の後処理
1706
1707                                 if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemFullscreen )
1708                                 {
1709                                         CDTXMania.app.b次のタイミングで全画面_ウィンドウ切り替えを行う = true;
1710                                 }
1711                                 else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemVSyncWait )
1712                                 {
1713                                         CDTXMania.ConfigIni.b垂直帰線待ちを行う = this.iSystemVSyncWait.bON;
1714                                         CDTXMania.app.b次のタイミングで垂直帰線同期切り替えを行う = true;
1715                                 }
1716                                 #region [ AutoPlay #23886 2012.5.8 yyagi ]
1717                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iDrumsAutoPlayAll )
1718                                 {
1719                                         this.t全部のドラムパッドのAutoを切り替える( this.iDrumsAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );
1720                                 }
1721                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iGuitarAutoPlayAll )
1722                                 {
1723                                         this.t全部のギターパッドのAutoを切り替える( this.iGuitarAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );
1724                                 }
1725                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iBassAutoPlayAll )
1726                                 {
1727                                         this.t全部のベースパッドのAutoを切り替える( this.iBassAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );
1728                                 }
1729                                 #endregion
1730                                 #region [ キーアサインへの遷移と脱出 ]
1731                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemGoToKeyAssign )                        // #24609 2011.4.12 yyagi
1732                                 {
1733                                         t項目リストの設定_KeyAssignSystem();
1734                                 }
1735                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignSystemReturnToMenu )        // #24609 2011.4.12 yyagi
1736                                 {
1737                                         t項目リストの設定_System();
1738                                 }
1739                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iDrumsGoToKeyAssign )                         // #24525 2011.3.15 yyagi
1740                                 {
1741                                         t項目リストの設定_KeyAssignDrums();
1742                                 }
1743                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsReturnToMenu )         // #24525 2011.3.15 yyagi
1744                                 {
1745                                         t項目リストの設定_Drums();
1746                                 }
1747                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iGuitarGoToKeyAssign )                        // #24525 2011.3.15 yyagi
1748                                 {
1749                                         t項目リストの設定_KeyAssignGuitar();
1750                                 }
1751                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarReturnToMenu )        // #24525 2011.3.15 yyagi
1752                                 {
1753                                         t項目リストの設定_Guitar();
1754                                 }
1755                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iBassGoToKeyAssign )                          // #24525 2011.3.15 yyagi
1756                                 {
1757                                         t項目リストの設定_KeyAssignBass();
1758                                 }
1759                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassReturnToMenu )          // #24525 2011.3.15 yyagi
1760                                 {
1761                                         t項目リストの設定_Bass();
1762                                 }
1763                                 #endregion
1764                 #region [ ダーク ]
1765                 else if (this.list項目リスト[this.n現在の選択項目] == this.iDrumsDark)                                      // #27029 2012.1.4 from
1766                 {
1767                     if (this.iDrumsDark.n現在選択されている項目番号 == (int)Eダークモード.FULL)
1768                     {
1769                         this.iDrumsLaneDispType.n現在選択されている項目番号 = 3;
1770                         this.iDrumsJudgeLineDisp.bON = false;
1771                         this.iDrumsLaneFlush.bON = false;
1772                     }
1773                     else if (this.iDrumsDark.n現在選択されている項目番号 == (int)Eダークモード.HALF)
1774                     {
1775                         this.iDrumsLaneDispType.n現在選択されている項目番号 = 1;
1776                         this.iDrumsJudgeLineDisp.bON = true;
1777                         this.iDrumsLaneFlush.bON = true;
1778                     }
1779                     else
1780                     {
1781                         this.iDrumsLaneDispType.n現在選択されている項目番号 = 0;
1782                         this.iDrumsJudgeLineDisp.bON = true;
1783                         this.iDrumsLaneFlush.bON = true;
1784                     }
1785                 }
1786                 else if (this.list項目リスト[this.n現在の選択項目] == this.iGuitarDark)                                     // #27029 2012.1.4 from
1787                 {
1788                     if (this.iGuitarDark.n現在選択されている項目番号 == (int)Eダークモード.FULL)
1789                     {
1790                         this.iGuitarLaneDispType.n現在選択されている項目番号 = 3;
1791                         this.iGuitarJudgeLineDisp.bON = false;
1792                         this.iGuitarLaneFlush.bON = false;
1793                     }
1794                     else if (this.iGuitarDark.n現在選択されている項目番号 == (int)Eダークモード.HALF)
1795                     {
1796                         this.iGuitarLaneDispType.n現在選択されている項目番号 = 1;
1797                         this.iGuitarJudgeLineDisp.bON = true;
1798                         this.iGuitarLaneFlush.bON = true;
1799                     }
1800                     else
1801                     {
1802                         this.iGuitarLaneDispType.n現在選択されている項目番号 = 0;
1803                         this.iGuitarJudgeLineDisp.bON = true;
1804                         this.iGuitarLaneFlush.bON = true;
1805                     }
1806                 }
1807                 else if (this.list項目リスト[this.n現在の選択項目] == this.iBassDark)                                       // #27029 2012.1.4 from
1808                 {
1809                     if (this.iBassDark.n現在選択されている項目番号 == (int)Eダークモード.FULL)
1810                     {
1811                         this.iBassLaneDispType.n現在選択されている項目番号 = 3;
1812                         this.iBassJudgeLineDisp.bON = false;
1813                         this.iBassLaneFlush.bON = false;
1814                     }
1815                     else if (this.iBassDark.n現在選択されている項目番号 == (int)Eダークモード.HALF)
1816                     {
1817                         this.iBassLaneDispType.n現在選択されている項目番号 = 1;
1818                         this.iBassJudgeLineDisp.bON = true;
1819                         this.iBassLaneFlush.bON = true;
1820                     }
1821                     else
1822                     {
1823                         this.iBassLaneDispType.n現在選択されている項目番号 = 0;
1824                         this.iBassJudgeLineDisp.bON = true;
1825                         this.iBassLaneFlush.bON = true;
1826                     }
1827                 }
1828                 #endregion
1829                 #region[ ギター・ベースグラフ ]
1830                 else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iGuitarGraph )
1831                 {
1832                     if( this.iGuitarGraph.bON == true )
1833                     {
1834                         CDTXMania.ConfigIni.bGraph.Bass = false;
1835                         this.iBassGraph.bON = false;
1836                     }
1837                 }
1838                 else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iBassGraph )
1839                 {
1840                     if( this.iBassGraph.bON == true )
1841                     {
1842                         CDTXMania.ConfigIni.bGraph.Guitar = false;
1843                         this.iGuitarGraph.bON = false;
1844                         
1845                     }
1846                 }
1847                 #endregion
1848                 #region [ BDGroup #27029 2012.1.4 from ]
1849                 else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemBDGroup )                                       // #27029 2012.1.4 from
1850                                 {
1851                                         if( this.iSystemBDGroup.n現在選択されている項目番号 == (int) EBDGroup.どっちもBD )
1852                                         {
1853                                                 // #27029 2012.1.5 from: 変更前の状態をバックアップする。
1854                         //CDTXMania.ConfigIni.BackupOf1BD = new CConfigIni.CBackupOf1BD() {
1855                         //    eHHGroup = (EHHGroup) this.iSystemHHGroup.n現在選択されている項目番号,
1856                         //    eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityHH.n現在選択されている項目番号,
1857                         //};
1858
1859                         //// HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし
1860                         //if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.全部打ち分ける )
1861                         //    this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.左シンバルのみ打ち分ける;
1862                         //if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.ハイハットのみ打ち分ける )
1863                         //    this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.全部共通;
1864
1865                         //// HH Priority ... C>P → 変更なし / P>C → C>P
1866                         //if( this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 == (int) E打ち分け時の再生の優先順位.PadがChipより優先 )
1867                         //    this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) E打ち分け時の再生の優先順位.ChipがPadより優先;
1868                                         }
1869                                         else
1870                                         {
1871                                                 // #27029 2012.1.5 from: 変更前の状態に戻す。
1872                                                 //this.iSystemHHGroup.n現在選択されている項目番号 = (int) CDTXMania.ConfigIni.BackupOf1BD.eHHGroup;
1873                                                 //this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) CDTXMania.ConfigIni.BackupOf1BD.eHitSoundPriorityHH;
1874                                                 
1875                                                 //CDTXMania.ConfigIni.BackupOf1BD = null;
1876                                         }
1877                                 }
1878                                 #endregion
1879                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemUseBoxDefSkin )                        // #28195 2012.5.6 yyagi
1880                                 {
1881                                         CSkin.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;
1882                                 }
1883                                 #region [ スキン項目でEnterを押下した場合に限り、スキンの縮小サンプルを生成する。]
1884                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemSkinSubfolder )                        // #28195 2012.5.2 yyagi
1885                                 {
1886                                         tGenerateSkinSample();
1887                                 }
1888                                 #endregion
1889                                 #region [ 曲データ一覧の再読み込み ]
1890                                 else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemReloadDTX )                            // #32081 2013.10.21 yyagi
1891                                 {
1892                                         if ( CDTXMania.EnumSongs.IsEnumerating )
1893                                         {
1894                                                 // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );
1895                                                 CDTXMania.EnumSongs.Abort();
1896                                                 CDTXMania.actEnumSongs.On非活性化();
1897                                         }
1898
1899                                         CDTXMania.EnumSongs.StartEnumFromDisk();
1900                                         CDTXMania.EnumSongs.ChangeEnumeratePriority( ThreadPriority.Normal );
1901                                         CDTXMania.actEnumSongs.bコマンドでの曲データ取得 = true;
1902                                         CDTXMania.actEnumSongs.On活性化();
1903                                 }
1904                                 #endregion
1905                         }
1906                 }
1907
1908                 private void tGenerateSkinSample()
1909                 {
1910                         nSkinIndex = ( ( CItemList ) this.list項目リスト[ this.n現在の選択項目 ] ).n現在選択されている項目番号;
1911                         if ( nSkinSampleIndex != nSkinIndex )
1912                         {
1913                                 string path = skinSubFolders[ nSkinIndex ];
1914                                 path = System.IO.Path.Combine( path, @"Graphics\1_background.png" );
1915                                 Bitmap bmSrc = new Bitmap( path );
1916                                 Bitmap bmDest = new Bitmap( bmSrc.Width / 4, bmSrc.Height / 4 );
1917                                 Graphics g = Graphics.FromImage( bmDest );
1918                                 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
1919                                 g.DrawImage( bmSrc, new Rectangle( 0, 0, bmSrc.Width / 4, bmSrc.Height / 4 ),
1920                                         0, 0, bmSrc.Width, bmSrc.Height, GraphicsUnit.Pixel );
1921                                 if ( txSkinSample1 != null )
1922                                 {
1923                                         CDTXMania.t安全にDisposeする( ref txSkinSample1 );
1924                                 }
1925                                 txSkinSample1 = CDTXMania.tテクスチャの生成( bmDest, false );
1926                                 g.Dispose();
1927                                 bmDest.Dispose();
1928                                 bmSrc.Dispose();
1929                                 nSkinSampleIndex = nSkinIndex;
1930                         }
1931                 }
1932
1933                 #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]
1934                 public void t項目リストの設定_Exit()
1935                 {
1936                         this.tConfigIniへ記録する();
1937                         this.eメニュー種別 = Eメニュー種別.Unknown;
1938                 }
1939                 public void t項目リストの設定_KeyAssignSystem()
1940                 {
1941                         //this.tConfigIniへ記録する();
1942                         this.list項目リスト.Clear();
1943
1944                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
1945
1946                         this.iKeyAssignSystemReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
1947                                 "左側のメニューに戻ります。",
1948                                 "Return to left menu." );
1949                         this.list項目リスト.Add( this.iKeyAssignSystemReturnToMenu );
1950                         this.iKeyAssignSystemCapture = new CItemBase( "Capture",
1951                                 "キャプチャキー設定:\n" +
1952                                 "画面キャプチャのキーの割り当てを設定します。",
1953                                 "Capture key assign:\n" +
1954                                 "To assign key for screen capture.\n" +
1955                                 "(You can assign keyboard only. You can't use pads to capture screenshot.)" );
1956                         this.list項目リスト.Add( this.iKeyAssignSystemCapture );
1957
1958                         OnListMenuの初期化();
1959                         this.n現在の選択項目 = 0;
1960                         this.eメニュー種別 = Eメニュー種別.KeyAssignSystem;
1961                 }
1962                 public void t項目リストの設定_KeyAssignDrums()
1963                 {
1964                         //                      this.tConfigIniへ記録する();
1965                         this.list項目リスト.Clear();
1966
1967                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
1968
1969                         this.iKeyAssignDrumsReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
1970                                 "左側のメニューに戻ります。",
1971                                 "Return to left menu." );
1972                         this.list項目リスト.Add( this.iKeyAssignDrumsReturnToMenu );
1973                         this.iKeyAssignDrumsLC = new CItemBase( "LeftCymbal",
1974                                 "ドラムのキー設定:\n" +
1975                                 "左シンバルへのキーの割り当てを設定します。",
1976                                 "Drums key assign:\n" +
1977                                 "To assign key/pads for LeftCymbal button." );
1978                         this.list項目リスト.Add( this.iKeyAssignDrumsLC );
1979                         this.iKeyAssignDrumsHHC = new CItemBase( "HiHat(Close)",
1980                                 "ドラムのキー設定:\n" +
1981                                 "ハイハット(クローズ)へのキーの割り当てを設定します。",
1982                                 "Drums key assign:\n" +
1983                                 "To assign key/pads for HiHat(Close) button." );
1984                         this.list項目リスト.Add( this.iKeyAssignDrumsHHC );
1985                         this.iKeyAssignDrumsHHO = new CItemBase( "HiHat(Open)",
1986                                 "ドラムのキー設定:\n" +
1987                                 "ハイハット(オープン)へのキーの割り当てを設定します。",
1988                                 "Drums key assign:\n" +
1989                                 "To assign key/pads for HiHat(Open) button." );
1990                         this.list項目リスト.Add( this.iKeyAssignDrumsHHO );
1991                         this.iKeyAssignDrumsSD = new CItemBase( "Snare",
1992                                 "ドラムのキー設定:\n" +
1993                                 "スネアへのキーの割り当てを設定します。",
1994                                 "Drums key assign:\n" +
1995                                 "To assign key/pads for Snare button." );
1996                         this.list項目リスト.Add( this.iKeyAssignDrumsSD );
1997                         this.iKeyAssignDrumsBD = new CItemBase( "Bass",
1998                                 "ドラムのキー設定:\n" +
1999                                 "バスドラムへのキーの割り当てを設定します。",
2000                                 "Drums key assign:\n" +
2001                                 "To assign key/pads for Bass button." );
2002                         this.list項目リスト.Add( this.iKeyAssignDrumsBD );
2003                         this.iKeyAssignDrumsHT = new CItemBase( "HighTom",
2004                                 "ドラムのキー設定:\n" +
2005                                 "ハイタムへのキーの割り当てを設定します。",
2006                                 "Drums key assign:\n" +
2007                                 "To assign key/pads for HighTom button." );
2008                         this.list項目リスト.Add( this.iKeyAssignDrumsHT );
2009                         this.iKeyAssignDrumsLT = new CItemBase( "LowTom",
2010                                 "ドラムのキー設定:\n" +
2011                                 "ロータムへのキーの割り当てを設定します。",
2012                                 "Drums key assign:\n" +
2013                                 "To assign key/pads for LowTom button." );
2014                         this.list項目リスト.Add( this.iKeyAssignDrumsLT );
2015                         this.iKeyAssignDrumsFT = new CItemBase( "FloorTom",
2016                                 "ドラムのキー設定:\n" +
2017                                 "フロアタムへのキーの割り当てを設定します。",
2018                                 "Drums key assign:\n" +
2019                                 "To assign key/pads for FloorTom button." );
2020                         this.list項目リスト.Add( this.iKeyAssignDrumsFT );
2021                         this.iKeyAssignDrumsCY = new CItemBase( "RightCymbal",
2022                                 "ドラムのキー設定:\n" +
2023                                 "右シンバルへのキーの割り当てを設定します。",
2024                                 "Drums key assign:\n" +
2025                                 "To assign key/pads for RightCymbal button." );
2026                         this.list項目リスト.Add( this.iKeyAssignDrumsCY );
2027                         this.iKeyAssignDrumsRD = new CItemBase( "RideCymbal",
2028                                 "ドラムのキー設定:\n" +
2029                                 "ライドシンバルへのキーの割り当てを設定します。",
2030                                 "Drums key assign:\n" +
2031                                 "To assign key/pads for RideCymbal button." );
2032                         this.list項目リスト.Add( this.iKeyAssignDrumsRD );
2033                         this.iKeyAssignDrumsLP = new CItemBase( "HiHatPedal",                                                                   // #27029 2012.1.4 from
2034                                 "ドラムのキー設定:\n" +                                                                                                                       //
2035                                 "ハイハットのフットペダルへのキーの割り当てを設定します。",                                                 //
2036                                 "Drums key assign:\n" +                                                                                                                         //
2037                                 "To assign key/pads for HiHatPedal button." );                                                                          //
2038                         this.list項目リスト.Add( this.iKeyAssignDrumsLP );                                                                         //
2039                         this.iKeyAssignDrumsLBD = new CItemBase( "LeftBass",
2040                                 "ドラムのキー設定:\n" +
2041                                 "ハイハットのフットペダルへのキーの割り当てを設定します。",
2042                                 "Drums key assign:\n" +
2043                                 "To assign key/pads for LeftBass button." );
2044                         this.list項目リスト.Add( this.iKeyAssignDrumsLBD );
2045
2046                         OnListMenuの初期化();
2047                         this.n現在の選択項目 = 0;
2048                         this.eメニュー種別 = Eメニュー種別.KeyAssignDrums;
2049                 }
2050                 public void t項目リストの設定_KeyAssignGuitar()
2051                 {
2052                         //                      this.tConfigIniへ記録する();
2053                         this.list項目リスト.Clear();
2054
2055                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
2056
2057                         this.iKeyAssignGuitarReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
2058                                 "左側のメニューに戻ります。",
2059                                 "Return to left menu." );
2060                         this.list項目リスト.Add( this.iKeyAssignGuitarReturnToMenu );
2061                         this.iKeyAssignGuitarR = new CItemBase( "R",
2062                                 "ギターのキー設定:\n" +
2063                                 "Rボタンへのキーの割り当てを設定します。",
2064                                 "Guitar key assign:\n" +
2065                                 "To assign key/pads for R button." );
2066                         this.list項目リスト.Add( this.iKeyAssignGuitarR );
2067                         this.iKeyAssignGuitarG = new CItemBase( "G",
2068                                 "ギターのキー設定:\n" +
2069                                 "Gボタンへのキーの割り当てを設定します。",
2070                                 "Guitar key assign:\n" +
2071                                 "To assign key/pads for G button." );
2072                         this.list項目リスト.Add( this.iKeyAssignGuitarG );
2073                         this.iKeyAssignGuitarB = new CItemBase( "B",
2074                                 "ギターのキー設定:\n" +
2075                                 "Bボタンへのキーの割り当てを設定します。",
2076                                 "Guitar key assign:\n" +
2077                                 "To assign key/pads for B button." );
2078                         this.list項目リスト.Add( this.iKeyAssignGuitarB );
2079                         this.iKeyAssignGuitarPick = new CItemBase( "Pick",
2080                                 "ギターのキー設定:\n" +
2081                                 "ピックボタンへのキーの割り当てを設定します。",
2082                                 "Guitar key assign:\n" +
2083                                 "To assign key/pads for Pick button." );
2084                         this.list項目リスト.Add( this.iKeyAssignGuitarPick );
2085                         this.iKeyAssignGuitarWail = new CItemBase( "Wailing",
2086                                 "ギターのキー設定:\n" +
2087                                 "Wailingボタンへのキーの割り当てを設定します。",
2088                                 "Guitar key assign:\nTo assign key/pads for Wailing button." );
2089                         this.list項目リスト.Add( this.iKeyAssignGuitarWail );
2090                         this.iKeyAssignGuitarDecide = new CItemBase( "Decide",
2091                                 "ギターのキー設定:\n" +
2092                                 "決定ボタンへのキーの割り当てを設定します。",
2093                                 "Guitar key assign:\nTo assign key/pads for Decide button." );
2094                         this.list項目リスト.Add( this.iKeyAssignGuitarDecide );
2095                         this.iKeyAssignGuitarCancel = new CItemBase( "Cancel",
2096                                 "ギターのキー設定:\n" +
2097                                 "キャンセルボタンへのキーの割り当てを設定します。",
2098                                 "Guitar key assign:\n" +
2099                                 "To assign key/pads for Cancel button." );
2100                         this.list項目リスト.Add( this.iKeyAssignGuitarCancel );
2101
2102                         OnListMenuの初期化();
2103                         this.n現在の選択項目 = 0;
2104                         this.eメニュー種別 = Eメニュー種別.KeyAssignGuitar;
2105                 }
2106                 public void t項目リストの設定_KeyAssignBass()
2107                 {
2108                         //                      this.tConfigIniへ記録する();
2109                         this.list項目リスト.Clear();
2110
2111                         // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。
2112
2113                         this.iKeyAssignBassReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,
2114                                 "左側のメニューに戻ります。",
2115                                 "Return to left menu." );
2116                         this.list項目リスト.Add( this.iKeyAssignBassReturnToMenu );
2117                         this.iKeyAssignBassR = new CItemBase( "R",
2118                                 "ベースのキー設定:\n" +
2119                                 "Rボタンへのキーの割り当てを設定します。",
2120                                 "Bass key assign:\n" +
2121                                 "To assign key/pads for R button." );
2122                         this.list項目リスト.Add( this.iKeyAssignBassR );
2123                         this.iKeyAssignBassG = new CItemBase( "G",
2124                                 "ベースのキー設定:\n" +
2125                                 "Gボタンへのキーの割り当てを設定します。",
2126                                 "Bass key assign:\n" +
2127                                 "To assign key/pads for G button." );
2128                         this.list項目リスト.Add( this.iKeyAssignBassG );
2129                         this.iKeyAssignBassB = new CItemBase( "B",
2130                                 "ベースのキー設定:\n" +
2131                                 "Bボタンへのキーの割り当てを設定します。",
2132                                 "Bass key assign:\n" +
2133                                 "To assign key/pads for B button." );
2134                         this.list項目リスト.Add( this.iKeyAssignBassB );
2135                         this.iKeyAssignBassPick = new CItemBase( "Pick",
2136                                 "ベースのキー設定:\n" +
2137                                 "ピックボタンへのキーの割り当てを設定します。",
2138                                 "Bass key assign:\n" +
2139                                 "To assign key/pads for Pick button." );
2140                         this.list項目リスト.Add( this.iKeyAssignBassPick );
2141                         this.iKeyAssignBassWail = new CItemBase( "Wailing",
2142                                 "ベースのキー設定:\n" +
2143                                 "Wailingボタンへのキーの割り当てを設定します。",
2144                                 "Bass key assign:\n" +
2145                                 "To assign key/pads for Wailing button." );
2146                         this.list項目リスト.Add( this.iKeyAssignBassWail );
2147                         this.iKeyAssignBassDecide = new CItemBase( "Decide",
2148                                 "ベースのキー設定:\n" +
2149                                 "決定ボタンへのキーの割り当てを設定します。",
2150                                 "Bass key assign:\n" +
2151                                 "To assign key/pads for Decide button." );
2152                         this.list項目リスト.Add( this.iKeyAssignBassDecide );
2153                         this.iKeyAssignBassCancel = new CItemBase( "Cancel",
2154                                 "ベースのキー設定:\n" +
2155                                 "キャンセルボタンへのキーの割り当てを設定します。",
2156                                 "Bass key assign:\n" +
2157                                 "To assign key/pads for Cancel button." );
2158                         this.list項目リスト.Add( this.iKeyAssignBassCancel );
2159
2160                         OnListMenuの初期化();
2161                         this.n現在の選択項目 = 0;
2162                         this.eメニュー種別 = Eメニュー種別.KeyAssignBass;
2163                 }
2164                 #endregion
2165                 public void t次に移動()
2166                 {
2167                         CDTXMania.Skin.soundカーソル移動音.t再生する();
2168                         if( this.b要素値にフォーカス中 )
2169                         {
2170                                 this.list項目リスト[ this.n現在の選択項目 ].t項目値を前へ移動();
2171                                 t要素値を上下に変更中の処理();
2172                         }
2173                         else
2174                         {
2175                                 this.n目標のスクロールカウンタ += 100;
2176                         }
2177                 }
2178                 public void t前に移動()
2179                 {
2180                         CDTXMania.Skin.soundカーソル移動音.t再生する();
2181                         if( this.b要素値にフォーカス中 )
2182                         {
2183                                 this.list項目リスト[ this.n現在の選択項目 ].t項目値を次へ移動();
2184                                 t要素値を上下に変更中の処理();
2185                         }
2186                         else
2187                         {
2188                                 this.n目標のスクロールカウンタ -= 100;
2189                         }
2190                 }
2191                 private void t要素値を上下に変更中の処理()
2192                 {
2193                         if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemMasterVolume )                              // #33700 2014.4.26 yyagi
2194                         {
2195                                 CDTXMania.Sound管理.nMasterVolume = this.iSystemMasterVolume.n現在の値;
2196                         }
2197                 }
2198
2199
2200                 // CActivity 実装
2201
2202                 public override void On活性化()
2203                 {
2204                         if( this.b活性化してる )
2205                                 return;
2206
2207                         this.list項目リスト = new List<CItemBase>();
2208                         this.eメニュー種別 = Eメニュー種別.Unknown;
2209
2210                         #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]
2211                         int ns = ( CDTXMania.Skin.strSystemSkinSubfolders == null ) ? 0 : CDTXMania.Skin.strSystemSkinSubfolders.Length;
2212                         int nb = ( CDTXMania.Skin.strBoxDefSkinSubfolders == null ) ? 0 : CDTXMania.Skin.strBoxDefSkinSubfolders.Length;
2213                         skinSubFolders = new string[ ns + nb ];
2214                         for ( int i = 0; i < ns; i++ )
2215                         {
2216                                 skinSubFolders[ i ] = CDTXMania.Skin.strSystemSkinSubfolders[ i ];
2217                         }
2218                         for ( int i = 0; i < nb; i++ )
2219                         {
2220                                 skinSubFolders[ ns + i ] = CDTXMania.Skin.strBoxDefSkinSubfolders[ i ];
2221                         }
2222                         skinSubFolder_org = CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true );
2223                         Array.Sort( skinSubFolders );
2224                         skinNames = CSkin.GetSkinName( skinSubFolders );
2225                         nSkinIndex = Array.BinarySearch( skinSubFolders, skinSubFolder_org );
2226                         if ( nSkinIndex < 0 )   // 念のため
2227                         {
2228                                 nSkinIndex = 0;
2229                         }
2230                         nSkinSampleIndex = -1;
2231                         #endregion
2232
2233                         this.prvFont = new CPrivateFastFont( CSkin.Path( @"Graphics\fonts\mplus-1p-heavy.ttf" ), 20 );  // t項目リストの設定 の前に必要
2234 //                      this.listMenu = new List<stMenuItemRight>();
2235
2236
2237                         this.t項目リストの設定_Bass();          // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、
2238                         this.t項目リストの設定_Guitar();        // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。
2239                         this.t項目リストの設定_Drums(); // 
2240                         this.t項目リストの設定_System();        // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。
2241                         this.b要素値にフォーカス中 = false;
2242                         this.n目標のスクロールカウンタ = 0;
2243                         this.n現在のスクロールカウンタ = 0;
2244                         this.nスクロール用タイマ値 = -1;
2245                         this.ct三角矢印アニメ = new CCounter();
2246
2247                         this.iSystemSoundType_initial                   = this.iSystemSoundType.n現在選択されている項目番号;       // CONFIGに入ったときの値を保持しておく
2248                         this.iSystemWASAPIBufferSizeMs_initial  = this.iSystemWASAPIBufferSizeMs.n現在の値;                         // CONFIG脱出時にこの値から変更されているようなら
2249                         // this.iSystemASIOBufferSizeMs_initial = this.iSystemASIOBufferSizeMs.n現在の値;                           // サウンドデバイスを再構築する
2250                         this.iSystemASIODevice_initial                  = this.iSystemASIODevice.n現在選択されている項目番号;      //
2251                         this.iSystemSoundTimerType_initial      = this.iSystemSoundTimerType.GetIndex();                                //
2252                         base.On活性化();
2253                 }
2254                 public override void On非活性化()
2255                 {
2256                         if( this.b活性化してない )
2257                                 return;
2258
2259                         this.tConfigIniへ記録する();
2260                         this.list項目リスト.Clear();
2261                         this.ct三角矢印アニメ = null;
2262
2263                         OnListMenuの解放();
2264                         prvFont.Dispose();
2265
2266                         base.On非活性化();
2267                         #region [ Skin変更 ]
2268                         if ( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true ) != this.skinSubFolder_org )
2269                         {
2270                                 CDTXMania.stageChangeSkin.tChangeSkinMain();    // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新
2271                         }
2272                         #endregion
2273
2274                         // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。
2275                         // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。
2276                         #region [ サウンドデバイス変更 ]
2277                         if ( this.iSystemSoundType_initial != this.iSystemSoundType.n現在選択されている項目番号 ||
2278                                 this.iSystemWASAPIBufferSizeMs_initial != this.iSystemWASAPIBufferSizeMs.n現在の値 ||
2279                                 // this.iSystemASIOBufferSizeMs_initial != this.iSystemASIOBufferSizeMs.n現在の値 ||
2280                                 this.iSystemASIODevice_initial != this.iSystemASIODevice.n現在選択されている項目番号 ||
2281                                 this.iSystemSoundTimerType_initial != this.iSystemSoundTimerType.GetIndex() )
2282                         {
2283                                 ESoundDeviceType soundDeviceType;
2284                                 switch ( this.iSystemSoundType.n現在選択されている項目番号 )
2285                                 {
2286                                         case 0:
2287                                                 soundDeviceType = ESoundDeviceType.DirectSound;
2288                                                 break;
2289                                         case 1:
2290                                                 soundDeviceType = ESoundDeviceType.ASIO;
2291                                                 break;
2292                                         case 2:
2293                                                 soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;
2294                                                 break;
2295                                         default:
2296                                                 soundDeviceType = ESoundDeviceType.Unknown;
2297                                                 break;
2298                                 }
2299
2300                                 CDTXMania.Sound管理.t初期化( soundDeviceType,
2301                                                                                 this.iSystemWASAPIBufferSizeMs.n現在の値,
2302                                                                                 0,
2303                                                                                 // this.iSystemASIOBufferSizeMs.n現在の値,
2304                                                                                 this.iSystemASIODevice.n現在選択されている項目番号,
2305                                                                                 this.iSystemSoundTimerType.bON );
2306                                 CDTXMania.app.ShowWindowTitleWithSoundType();
2307                         }
2308                         #endregion
2309                         #region [ サウンドのタイムストレッチモード変更 ]
2310                         FDK.CSound管理.bIsTimeStretch = this.iSystemTimeStretch.bON;
2311                         #endregion
2312                 }
2313                 public override void OnManagedリソースの作成()
2314                 {
2315                         if( this.b活性化してない )
2316                                 return;
2317
2318                         this.tx通常項目行パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\4_itembox.png" ), false );
2319                         this.txその他項目行パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\4_itembox other.png" ), false );
2320                         this.tx三角矢印 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\4_triangle arrow.png" ), false );
2321                         this.txSkinSample1 = null;              // スキン選択時に動的に設定するため、ここでは初期化しない
2322                         base.OnManagedリソースの作成();
2323                 }
2324                 public override void OnManagedリソースの解放()
2325                 {
2326                         if( this.b活性化してない )
2327                                 return;
2328
2329                         CDTXMania.tテクスチャの解放( ref this.txSkinSample1 );
2330                         CDTXMania.tテクスチャの解放( ref this.tx通常項目行パネル );
2331                         CDTXMania.tテクスチャの解放( ref this.txその他項目行パネル );
2332                         CDTXMania.tテクスチャの解放( ref this.tx三角矢印 );
2333                 
2334                         base.OnManagedリソースの解放();
2335                 }
2336
2337                 private void OnListMenuの初期化()
2338                 {
2339                         OnListMenuの解放();
2340                         this.listMenu = new stMenuItemRight[ this.list項目リスト.Count ];
2341                 }
2342
2343                 /// <summary>
2344                 /// 事前にレンダリングしておいたテクスチャを解放する。
2345                 /// </summary>
2346                 private void OnListMenuの解放()
2347                 {
2348                         if ( listMenu != null )
2349                         {
2350                                 for ( int i = 0; i < listMenu.Length; i++ )
2351                                 {
2352                                         if ( listMenu[ i ].txParam != null )
2353                                         {
2354                                                 listMenu[ i ].txParam.Dispose();
2355                                         }
2356                                         if ( listMenu[ i ].txMenuItemRight != null )
2357                                         {
2358                                                 listMenu[ i ].txMenuItemRight.Dispose();
2359                                         }
2360                                 }
2361                                 this.listMenu = null;
2362                         }
2363                 }
2364                 public override int On進行描画()
2365                 {
2366                         throw new InvalidOperationException( "t進行描画(bool)のほうを使用してください。" );
2367                 }
2368                 public int t進行描画( bool b項目リスト側にフォーカスがある )
2369                 {
2370                         if( this.b活性化してない )
2371                                 return 0;
2372
2373                         // 進行
2374
2375                         #region [ 初めての進行描画 ]
2376                         //-----------------
2377                         if( base.b初めての進行描画 )
2378                         {
2379                 this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;
2380                                 this.ct三角矢印アニメ.t開始( 0, 9, 50, CDTXMania.Timer );
2381                         
2382                                 base.b初めての進行描画 = false;
2383                         }
2384                         //-----------------
2385                         #endregion
2386
2387                         this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;           // 記憶
2388
2389                         #region [ 項目スクロールの進行 ]
2390                         //-----------------
2391                         long n現在時刻 = CDTXMania.Timer.n現在時刻;
2392                         if( n現在時刻 < this.nスクロール用タイマ値 ) this.nスクロール用タイマ値 = n現在時刻;
2393
2394                         const int INTERVAL = 2; // [ms]
2395                         while( ( n現在時刻 - this.nスクロール用タイマ値 ) >= INTERVAL )
2396                         {
2397                                 int n目標項目までのスクロール量 = Math.Abs( (int) ( this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ ) );
2398                                 int n加速度 = 0;
2399
2400                                 #region [ n加速度の決定;目標まで遠いほど加速する。]
2401                                 //-----------------
2402                                 if( n目標項目までのスクロール量 <= 100 )
2403                                 {
2404                                         n加速度 = 2;
2405                                 }
2406                                 else if( n目標項目までのスクロール量 <= 300 )
2407                                 {
2408                                         n加速度 = 3;
2409                                 }
2410                                 else if( n目標項目までのスクロール量 <= 500 )
2411                                 {
2412                                         n加速度 = 4;
2413                                 }
2414                                 else
2415                                 {
2416                                         n加速度 = 8;
2417                                 }
2418                                 //-----------------
2419                                 #endregion
2420                                 #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]
2421                                 //-----------------
2422                                 if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )
2423                                 {
2424                                         this.n現在のスクロールカウンタ += n加速度;
2425                                         if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )
2426                                         {
2427                                                 // 目標を超えたら目標値で停止。
2428                                                 this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
2429                                         }
2430                                 }
2431                                 else if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )
2432                                 {
2433                                         this.n現在のスクロールカウンタ -= n加速度;
2434                                         if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )
2435                                         {
2436                                                 // 目標を超えたら目標値で停止。
2437                                                 this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
2438                                         }
2439                                 }
2440                                 //-----------------
2441                                 #endregion
2442                                 #region [ 行超え処理、ならびに目標位置に到達したらスクロールを停止して項目変更通知を発行。]
2443                                 //-----------------
2444                                 if( this.n現在のスクロールカウンタ >= 100 )
2445                                 {
2446                                         this.n現在の選択項目 = this.t次の項目( this.n現在の選択項目 );
2447                                         this.n現在のスクロールカウンタ -= 100;
2448                                         this.n目標のスクロールカウンタ -= 100;
2449                                         if( this.n目標のスクロールカウンタ == 0 )
2450                                         {
2451                                                 CDTXMania.stageコンフィグ.t項目変更通知();
2452                                         }
2453                                 }
2454                                 else if( this.n現在のスクロールカウンタ <= -100 )
2455                                 {
2456                                         this.n現在の選択項目 = this.t前の項目( this.n現在の選択項目 );
2457                                         this.n現在のスクロールカウンタ += 100;
2458                                         this.n目標のスクロールカウンタ += 100;
2459                                         if( this.n目標のスクロールカウンタ == 0 )
2460                                         {
2461                                                 CDTXMania.stageコンフィグ.t項目変更通知();
2462                                         }
2463                                 }
2464                                 //-----------------
2465                                 #endregion
2466
2467                                 this.nスクロール用タイマ値 += INTERVAL;
2468                         }
2469                         //-----------------
2470                         #endregion
2471                         
2472                         #region [ ▲印アニメの進行 ]
2473                         //-----------------
2474                         if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )
2475                                 this.ct三角矢印アニメ.t進行Loop();
2476                         //-----------------
2477                         #endregion
2478
2479
2480                         // 描画
2481
2482                         this.ptパネルの基本座標[ 4 ].X = this.b項目リスト側にフォーカスがある ? 276 : 301;               // メニューにフォーカスがあるなら、項目リストの中央は頭を出さない。
2483
2484                         #region [ 計11個の項目パネルを描画する。]
2485                         //-----------------
2486                         int nItem = this.n現在の選択項目;
2487                         for( int i = 0; i < 4; i++ )
2488                                 nItem = this.t前の項目( nItem );
2489
2490                         for( int n行番号 = -4; n行番号 < 6; n行番号++ )                // n行番号 == 0 がフォーカスされている項目パネル。
2491                         {
2492                                 #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]
2493                                 //-----------------
2494                                 if( ( ( n行番号 == -4 ) && ( this.n現在のスクロールカウンタ > 0 ) ) ||           // 上に飛び出そうとしている
2495                                         ( ( n行番号 == +5 ) && ( this.n現在のスクロールカウンタ < 0 ) ) )                // 下に飛び出そうとしている
2496                                 {
2497                                         nItem = this.t次の項目( nItem );
2498                                         continue;
2499                                 }
2500                                 //-----------------
2501                                 #endregion
2502
2503                                 int n移動元の行の基本位置 = n行番号 + 4;
2504                                 int n移動先の行の基本位置 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( n移動元の行の基本位置 + 1 ) % 10 ) : ( ( ( n移動元の行の基本位置 - 1 ) + 10 ) % 10 );
2505                                 int x = this.ptパネルの基本座標[ n移動元の行の基本位置 ].X + ( (int) ( ( this.ptパネルの基本座標[ n移動先の行の基本位置 ].X - this.ptパネルの基本座標[ n移動元の行の基本位置 ].X ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );
2506                                 int y = this.ptパネルの基本座標[ n移動元の行の基本位置 ].Y + ( (int) ( ( this.ptパネルの基本座標[ n移動先の行の基本位置 ].Y - this.ptパネルの基本座標[ n移動元の行の基本位置 ].Y ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );
2507
2508                                 #region [ 現在の行の項目パネル枠を描画。]
2509                                 //-----------------
2510                                 switch ( this.list項目リスト[ nItem ].eパネル種別 )
2511                                 {
2512                                         case CItemBase.Eパネル種別.通常:
2513                                                 if ( this.tx通常項目行パネル != null )
2514                                                         this.tx通常項目行パネル.t2D描画( CDTXMania.app.Device, x * Scale.X, y * Scale.Y );
2515                                                 break;
2516
2517                                         case CItemBase.Eパネル種別.その他:
2518                                                 if ( this.txその他項目行パネル != null )
2519                                                         this.txその他項目行パネル.t2D描画( CDTXMania.app.Device, x * Scale.X, y * Scale.Y );
2520                                                 break;
2521                                 }
2522                                 //-----------------
2523                                 #endregion
2524                                 #region [ 現在の行の項目名を描画。]
2525                                 //-----------------
2526                                 if ( listMenu[ nItem ].txMenuItemRight != null )        // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用
2527                                 {
2528                                         listMenu[ nItem ].txMenuItemRight.t2D描画( CDTXMania.app.Device, x + 337, (int)( ( y + 18 ) * 1.5 - 20 ) );
2529                                 }
2530                                 else
2531                                 {
2532                                         Bitmap bmpItem = prvFont.DrawPrivateFont( this.list項目リスト[ nItem ].str項目名, Color.White, Color.Black );
2533                                         listMenu[ nItem ].txMenuItemRight = CDTXMania.tテクスチャの生成( bmpItem );
2534                                         //                                      ctItem.t2D描画( CDTXMania.app.Device, ( x + 0x12 ) * Scale.X, ( y + 12 ) * Scale.Y - 20 );
2535                                         //                                      CDTXMania.tテクスチャの解放( ref ctItem );
2536                                         CDTXMania.t安全にDisposeする( ref bmpItem );
2537                                 }
2538                                 //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 0x12, y + 12, this.list項目リスト[ nItem ].str項目名 );
2539                                 //-----------------
2540                                 #endregion
2541                                 #region [ 現在の行の項目の要素を描画。]
2542                                 //-----------------
2543                                 string strParam = null;
2544                                 bool b強調 = false;
2545                                 switch ( this.list項目リスト[ nItem ].e種別 )
2546                                 {
2547                                         case CItemBase.E種別.ONorOFFトグル:
2548                                                 #region [ *** ]
2549                                                 //-----------------
2550                                                 //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF" );
2551                                                 strParam = ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF";
2552                                                 break;
2553                                         //-----------------
2554                                                 #endregion
2555
2556                                         case CItemBase.E種別.ONorOFFor不定スリーステート:
2557                                                 #region [ *** ]
2558                                                 //-----------------
2559                                                 switch ( ( (CItemThreeState) this.list項目リスト[ nItem ] ).e現在の状態 )
2560                                                 {
2561                                                         case CItemThreeState.E状態.ON:
2562                                                                 strParam = "ON";
2563                                                                 break;
2564
2565                                                         case CItemThreeState.E状態.不定:
2566                                                                 strParam = "- -";
2567                                                                 break;
2568
2569                                                         default:
2570                                                                 strParam = "OFF";
2571                                                                 break;
2572                                                 }
2573                                                 //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "ON" );
2574                                                 break;
2575                                         //-----------------
2576                                                 #endregion
2577
2578                                         case CItemBase.E種別.整数:          // #24789 2011.4.8 yyagi: add PlaySpeed supports (copied them from OPTION)
2579                                                 #region [ *** ]
2580                                                 //-----------------
2581                                                 if ( this.list項目リスト[ nItem ] == this.iCommonPlaySpeed )
2582                                                 {
2583                                                         double d = ( (double) ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 ) / 20.0;
2584                                                         //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, d.ToString( "0.000" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );
2585                                                         strParam = d.ToString( "0.000" );
2586                                                 }
2587                                                 else if ( this.list項目リスト[ nItem ] == this.iDrumsScrollSpeed || this.list項目リスト[ nItem ] == this.iGuitarScrollSpeed || this.list項目リスト[ nItem ] == this.iBassScrollSpeed )
2588                                                 {
2589                                                         float f = ( ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 + 1 ) * 0.5f;
2590                                                         //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, f.ToString( "x0.0" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );
2591                                                         strParam = f.ToString( "x0.0" );
2592                                                 }
2593                                                 else
2594                                                 {
2595                                                         //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString(), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );
2596                                                         strParam = ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString();
2597                                                 }
2598                                                 b強調 = ( n行番号 == 0 ) && this.b要素値にフォーカス中;
2599                                                 break;
2600                                         //-----------------
2601                                                 #endregion
2602
2603                                         case CItemBase.E種別.リスト:       // #28195 2012.5.2 yyagi: add Skin supports
2604                                                 #region [ *** ]
2605                                                 //-----------------
2606                                                 {
2607                                                         CItemList list = (CItemList) this.list項目リスト[ nItem ];
2608                                                         //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, list.list項目値[ list.n現在選択されている項目番号 ] );
2609                                                         strParam = list.list項目値[ list.n現在選択されている項目番号 ];
2610
2611                                                         #region [ 必要な場合に、Skinのサンプルを生成・描画する。#28195 2012.5.2 yyagi ]
2612                                                         if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemSkinSubfolder )
2613                                                         {
2614                                                                 tGenerateSkinSample();          // 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。
2615                                                                 if ( txSkinSample1 != null )
2616                                                                 {
2617                                                                         txSkinSample1.t2D描画( CDTXMania.app.Device, 124, 409 );
2618                                                                 }
2619                                                         }
2620                                                         #endregion
2621                                                         break;
2622                                                 }
2623                                         //-----------------
2624                                                 #endregion
2625                                 }
2626                                 if ( b強調 )
2627                                 {
2628                                         Bitmap bmpStr = b強調 ?
2629                                                 prvFont.DrawPrivateFont( strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :
2630                                                 prvFont.DrawPrivateFont( strParam, Color.White, Color.Black );
2631                                         CTexture txStr = CDTXMania.tテクスチャの生成( bmpStr, false );
2632                                         txStr.t2D描画( CDTXMania.app.Device, ( x + 210 ) * Scale.X, (int)( ( y + 18 ) * 1.5 - 20 ) );
2633                                         CDTXMania.tテクスチャの解放( ref txStr );
2634                                         CDTXMania.t安全にDisposeする( ref bmpStr );
2635                                 }
2636                                 else
2637                                 {
2638                                         int nIndex = this.list項目リスト[ nItem ].GetIndex();
2639                                         if ( listMenu[ nItem ].nParam != nIndex || listMenu[ nItem ].txParam == null )
2640                                         {
2641                                                 stMenuItemRight stm = listMenu[ nItem ];
2642                                                 stm.nParam = nIndex;
2643                                                 object o = this.list項目リスト[ nItem ].obj現在値();
2644                                                 stm.strParam = ( o == null ) ? "" : o.ToString();
2645
2646                                                 Bitmap bmpStr =
2647                                                         prvFont.DrawPrivateFont( strParam, Color.White, Color.Black );
2648                                                 stm.txParam = CDTXMania.tテクスチャの生成( bmpStr, false );
2649                                                 CDTXMania.t安全にDisposeする( ref bmpStr );
2650
2651                                                 listMenu[ nItem ] = stm;
2652                                         }
2653                                         listMenu[ nItem ].txParam.t2D描画( CDTXMania.app.Device, ( x + 210 ) * Scale.X, (int)( ( y + 18 ) * 1.5 - 20 ) );
2654                                 }
2655                                 //-----------------
2656                                 #endregion
2657                                 
2658                                 nItem = this.t次の項目( nItem );
2659                         }
2660                         //-----------------
2661                         #endregion
2662                         
2663                         #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]
2664                         //-----------------
2665                         if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )
2666                         {
2667                                 int x;
2668                                 int y_upper;
2669                                 int y_lower;
2670                         
2671                                 // 位置決定。
2672
2673                                 if( this.b要素値にフォーカス中 )
2674                                 {
2675                                         x = 528;        // 要素値の上下あたり。
2676                                         y_upper = 198 - this.ct三角矢印アニメ.n現在の値;
2677                                         y_lower = 242 + this.ct三角矢印アニメ.n現在の値;
2678                                 }
2679                                 else
2680                                 {
2681                                         x = 276;        // 項目名の上下あたり。
2682                                         y_upper = 186 - this.ct三角矢印アニメ.n現在の値;
2683                                         y_lower = 254 + this.ct三角矢印アニメ.n現在の値;
2684                                 }
2685
2686                                 // 描画。
2687
2688                                 if ( this.tx三角矢印 != null )
2689                                 {
2690                                         this.tx三角矢印.t2D描画( CDTXMania.app.Device, x * Scale.X, y_upper * Scale.Y, new Rectangle( 0, 0, (int) ( 32 * Scale.X ), (int) ( 16 * Scale.Y ) ) );
2691                                         this.tx三角矢印.t2D描画( CDTXMania.app.Device, x * Scale.X, y_lower * Scale.Y, new Rectangle( 0, (int) ( 16 * Scale.Y ), (int) ( 32 * Scale.X ), (int) ( 16 * Scale.Y ) ) );
2692                                 }
2693                         }
2694                         //-----------------
2695                         #endregion
2696                         return 0;
2697                 }
2698         
2699
2700                 // その他
2701
2702                 #region [ private ]
2703                 //-----------------
2704                 private enum Eメニュー種別
2705                 {
2706                         System,
2707                         Drums,
2708                         Guitar,
2709                         Bass,
2710                         KeyAssignSystem,                // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン
2711                         KeyAssignDrums,
2712                         KeyAssignGuitar,
2713                         KeyAssignBass,
2714                         Unknown
2715
2716                 }
2717
2718                 private bool b項目リスト側にフォーカスがある;
2719                 private bool b要素値にフォーカス中;
2720                 private CCounter ct三角矢印アニメ;
2721                 private Eメニュー種別 eメニュー種別;
2722                 #region [ キーコンフィグ ]
2723                 private CItemBase iKeyAssignSystemCapture;                      // #24609
2724                 private CItemBase iKeyAssignSystemReturnToMenu;         // #24609
2725                 private CItemBase iKeyAssignBassB;
2726                 private CItemBase iKeyAssignBassCancel;
2727                 private CItemBase iKeyAssignBassDecide;
2728                 private CItemBase iKeyAssignBassG;
2729                 private CItemBase iKeyAssignBassPick;
2730                 private CItemBase iKeyAssignBassR;
2731                 private CItemBase iKeyAssignBassReturnToMenu;
2732                 private CItemBase iKeyAssignBassWail;
2733                 private CItemBase iKeyAssignDrumsBD;
2734                 private CItemBase iKeyAssignDrumsCY;
2735                 private CItemBase iKeyAssignDrumsFT;
2736                 private CItemBase iKeyAssignDrumsHHC;
2737                 private CItemBase iKeyAssignDrumsHHO;
2738                 private CItemBase iKeyAssignDrumsHT;
2739                 private CItemBase iKeyAssignDrumsLC;
2740                 private CItemBase iKeyAssignDrumsLT;
2741                 private CItemBase iKeyAssignDrumsRD;
2742                 private CItemBase iKeyAssignDrumsReturnToMenu;
2743                 private CItemBase iKeyAssignDrumsSD;
2744                 private CItemBase iKeyAssignDrumsLP;    // #27029 2012.1.4 from
2745         private CItemBase iKeyAssignDrumsLBD;
2746                 private CItemBase iKeyAssignGuitarB;
2747                 private CItemBase iKeyAssignGuitarCancel;
2748                 private CItemBase iKeyAssignGuitarDecide;
2749                 private CItemBase iKeyAssignGuitarG;
2750                 private CItemBase iKeyAssignGuitarPick;
2751                 private CItemBase iKeyAssignGuitarR;
2752                 private CItemBase iKeyAssignGuitarReturnToMenu;
2753                 private CItemBase iKeyAssignGuitarWail;
2754                 #endregion
2755                 private CItemToggle iLogOutputLog;
2756                 private CItemToggle iSystemAdjustWaves;
2757                 private CItemToggle iSystemAudienceSound;
2758                 private CItemInteger iSystemAutoChipVolume;
2759                 private CItemToggle iSystemAVI;
2760                 private CItemToggle iSystemForceAVIFullscreen;
2761                 private CItemToggle iSystemBGA;
2762 //              private CItemToggle iSystemGraph; #24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行
2763                 private CItemInteger iSystemBGAlpha;
2764                 private CItemToggle iSystemBGMSound;
2765                 private CItemInteger iSystemChipVolume;
2766                 private CItemList iSystemCYGroup;
2767                 private CItemToggle iSystemCymbalFree;
2768                 private CItemList iSystemDamageLevel;
2769                 private CItemToggle iSystemDebugInfo;
2770 //              private CItemToggle iSystemDrums;
2771                 private CItemToggle iSystemFillIn;
2772                 private CItemList iSystemFTGroup;
2773                 private CItemToggle iSystemFullscreen;
2774 //              private CItemToggle iSystemGuitar;
2775                 private CItemList iSystemHHGroup;
2776                 private CItemList iSystemBDGroup;               // #27029 2012.1.4 from
2777                 private CItemToggle iSystemHitSound;
2778                 private CItemList iSystemHitSoundPriorityCY;
2779                 private CItemList iSystemHitSoundPriorityFT;
2780                 private CItemList iSystemHitSoundPriorityHH;
2781                 private CItemInteger iSystemMinComboBass;
2782                 private CItemInteger iSystemMinComboDrums;
2783                 private CItemInteger iSystemMinComboGuitar;
2784                 private CItemInteger iSystemPreviewImageWait;
2785                 private CItemInteger iSystemPreviewSoundWait;
2786                 private CItemToggle iSystemRandomFromSubBox;
2787                 private CItemBase iSystemReturnToMenu;
2788                 private CItemToggle iSystemSaveScore;
2789         private CItemList iSystemSkillMode;
2790                 private CItemToggle iSystemSoundMonitorBass;
2791                 private CItemToggle iSystemSoundMonitorDrums;
2792                 private CItemToggle iSystemSoundMonitorGuitar;
2793                 private CItemToggle iSystemStageFailed;
2794                 private CItemToggle iSystemStoicMode;
2795                 private CItemToggle iSystemVSyncWait;
2796                 private CItemList       iSystemShowLag;                                 // #25370 2011.6.3 yyagi
2797                 private CItemToggle iSystemAutoResultCapture;           // #25399 2011.6.9 yyagi
2798                 private CItemToggle iSystemBufferedInput;
2799                 private CItemInteger iSystemRisky;                                      // #23559 2011.7.27 yyagi
2800                 private CItemList iSystemSoundType;                                     // #24820 2013.1.3 yyagi
2801                 private CItemInteger iSystemWASAPIBufferSizeMs;         // #24820 2013.1.15 yyagi
2802 //              private CItemInteger iSystemASIOBufferSizeMs;           // #24820 2013.1.3 yyagi
2803                 private CItemList       iSystemASIODevice;                              // #24820 2013.1.17 yyagi
2804         private CItemInteger iSystemBGMAdjust;              // #36372 2016.06.19 kairera0467
2805
2806                 private int iSystemSoundType_initial;
2807                 private int iSystemWASAPIBufferSizeMs_initial;
2808 //              private int iSystemASIOBufferSizeMs_initial;
2809                 private int iSystemASIODevice_initial;
2810                 private CItemToggle iSystemSoundTimerType;                      // #33689 2014.6.17 yyagi
2811                 private int iSystemSoundTimerType_initial;                      // #33689 2014.6.17 yyagi
2812
2813                 private CItemToggle iSystemTimeStretch;                         // #23664 2013.2.24 yyagi
2814                 private CItemList iSystemJudgePosGuitar;                        // #33891 2014.6.26 yyagi
2815                 private CItemList iSystemJudgePosBass;                          // #33891 2014.6.26 yyagi
2816
2817                 //private CItemList iDrumsJudgeDispPriority;    //
2818                 //private CItemList iGuitarJudgeDispPriority;   //
2819                 //private CItemList iBassJudgeDispPriority;             //
2820                 private CItemList iSystemJudgeDispPriority;
2821
2822         #region[ XG ]
2823         private CItemList iSystemNamePlateType;
2824         private CItemToggle iSystemJudgeCountDisp;
2825         #endregion
2826
2827         private List<CItemBase> list項目リスト;
2828                 private long nスクロール用タイマ値;
2829                 private int n現在のスクロールカウンタ;
2830                 private int n目標のスクロールカウンタ;
2831                 private Point[] ptパネルの基本座標 = new Point[] { new Point( 0x12d, 3 ), new Point( 0x12d, 0x35 ), new Point( 0x12d, 0x67 ), new Point( 0x12d, 0x99 ), new Point( 0x114, 0xcb ), new Point( 0x12d, 0xfd ), new Point( 0x12d, 0x12f ), new Point( 0x12d, 0x161 ), new Point( 0x12d, 0x193 ), new Point( 0x12d, 0x1c5 ) };
2832                 private CTextureAf txその他項目行パネル;
2833                 private CTexture tx三角矢印;
2834                 private CTextureAf tx通常項目行パネル;
2835
2836                 private CPrivateFastFont prvFont;
2837                 //private List<string> list項目リスト_str最終描画名;
2838                 private struct stMenuItemRight
2839                 {
2840                         //      public string strMenuItem;
2841                         public CTexture txMenuItemRight;
2842                         public int nParam;
2843                         public string strParam;
2844                         public CTexture txParam;
2845                 }
2846                 private stMenuItemRight[] listMenu;
2847
2848                 private CTexture txSkinSample1;                         // #28195 2012.5.2 yyagi
2849                 private string[] skinSubFolders;                        //
2850                 private string[] skinNames;                                     //
2851                 private string skinSubFolder_org;                       //
2852                 private int nSkinSampleIndex;                           //
2853                 private int nSkinIndex;                                         //
2854
2855                 private CItemBase iDrumsGoToKeyAssign;
2856                 private CItemBase iGuitarGoToKeyAssign;
2857                 private CItemBase iBassGoToKeyAssign;
2858                 private CItemBase iSystemGoToKeyAssign;         // #24609
2859
2860                 private CItemList iSystemGRmode;
2861
2862                 //private CItemToggle iBassAutoPlay;
2863                 private CItemThreeState iBassAutoPlayAll;                       // #23886 2012.5.8 yyagi
2864                 private CItemToggle iBassR;                                                     //
2865                 private CItemToggle iBassG;                                                     //
2866                 private CItemToggle iBassB;                                                     //
2867                 private CItemToggle iBassPick;                                          //
2868                 private CItemToggle iBassW;                                                     //
2869         
2870                 private CItemToggle iBassLeft;
2871                 private CItemToggle iBassLight;
2872                 private CItemList iBassPosition;
2873                 private CItemList iBassRandom;
2874                 private CItemBase iBassReturnToMenu;
2875                 private CItemToggle iBassReverse;
2876                 private CItemInteger iBassScrollSpeed;
2877         private CItemList iBassDark;
2878         private CItemList iBassLaneDispType;
2879         private CItemToggle iBassJudgeLineDisp;
2880         private CItemToggle iBassLaneFlush;
2881         private CItemToggle iBassGraph;
2882
2883                 private CItemList iCommonDark;
2884                 private CItemInteger iCommonPlaySpeed;
2885 //              private CItemBase iCommonReturnToMenu;
2886
2887                 private CItemThreeState iDrumsAutoPlayAll;
2888                 private CItemToggle iDrumsBass;
2889                 private CItemList iDrumsComboPosition;
2890                 private CItemToggle iDrumsCymbalRide;
2891                 private CItemToggle iDrumsFloorTom;
2892                 //private CItemToggle iDrumsHidden;
2893                 private CItemToggle iDrumsHighTom;
2894                 private CItemToggle iDrumsHiHat;
2895         private CItemInteger iDrumsJudgeLinePos;
2896         private CItemInteger iDrumsJudgeLineOffset;
2897         private CItemList iDrumsLaneType;
2898                 private CItemToggle iDrumsLeftBassDrum;
2899                 private CItemToggle iDrumsLeftCymbal;
2900                 private CItemToggle iDrumsLeftPedal;
2901                 private CItemToggle iDrumsLowTom;
2902         private CItemList iDrumsRDPosition;
2903                 private CItemList iDrumsPosition;
2904                 private CItemBase iDrumsReturnToMenu;
2905                 private CItemToggle iDrumsReverse;
2906                 private CItemInteger iDrumsScrollSpeed;
2907                 private CItemToggle iDrumsSnare;
2908                 //private CItemToggle iDrumsSudden;
2909                 private CItemToggle iDrumsTight;
2910                 private CItemToggle iDrumsGraph;        // #24074 2011.01.23 add ikanick
2911                 private CItemList iDrumsLanePosition;
2912         private CItemList iDrumsDark;
2913         private CItemList iDrumsLaneDispType;
2914         private CItemToggle iDrumsJudgeLineDisp;
2915         private CItemToggle iDrumsLaneFlush;
2916
2917                 //private CItemToggle iGuitarAutoPlay;
2918                 private CItemThreeState iGuitarAutoPlayAll;                     // #23886 2012.5.8 yyagi
2919                 private CItemToggle iGuitarR;                                           //
2920                 private CItemToggle iGuitarG;                                           //
2921                 private CItemToggle iGuitarB;                                           //
2922                 private CItemToggle iGuitarPick;                                        //
2923                 private CItemToggle iGuitarW;                                           //
2924
2925                 private CItemToggle iGuitarLeft;
2926                 private CItemToggle iGuitarLight;
2927                 private CItemList iGuitarPosition;
2928                 private CItemList iGuitarRandom;
2929                 private CItemBase iGuitarReturnToMenu;
2930                 private CItemToggle iGuitarReverse;
2931                 private CItemInteger iGuitarScrollSpeed;
2932         private CItemList iGuitarDark;
2933         private CItemList iGuitarLaneDispType;
2934         private CItemToggle iGuitarJudgeLineDisp;
2935         private CItemToggle iGuitarLaneFlush;
2936         private CItemToggle iGuitarGraph;
2937
2938                 private CItemInteger iDrumsInputAdjustTimeMs;           // #23580 2011.1.3 yyagi
2939                 private CItemInteger iGuitarInputAdjustTimeMs;          //
2940                 private CItemInteger iBassInputAdjustTimeMs;            //
2941                 private CItemList iSystemSkinSubfolder;                         // #28195 2012.5.2 yyagi
2942                 private CItemToggle iSystemUseBoxDefSkin;                       // #28195 2012.5.6 yyagi
2943                 private CItemList iDrumsSudHid;                                         // #32072 2013.9.20 yyagi
2944                 private CItemList iGuitarSudHid;                                        // #32072 2013.9.20 yyagi
2945                 private CItemList iBassSudHid;                                          // #32072 2013.9.20 yyagi
2946                 private CItemBase iSystemReloadDTX;                                     // #32081 2013.10.21 yyagi
2947                 private CItemInteger iSystemMasterVolume;                       // #33700 2014.4.26 yyagi
2948
2949                 private int t前の項目( int nItem )
2950                 {
2951                         if( --nItem < 0 )
2952                         {
2953                                 nItem = this.list項目リスト.Count - 1;
2954                         }
2955                         return nItem;
2956                 }
2957                 private int t次の項目( int nItem )
2958                 {
2959                         if( ++nItem >= this.list項目リスト.Count )
2960                         {
2961                                 nItem = 0;
2962                         }
2963                         return nItem;
2964                 }
2965                 private void t全部のドラムパッドのAutoを切り替える( bool bAutoON )
2966                 {
2967                         this.iDrumsLeftCymbal.bON = this.iDrumsHiHat.bON = this.iDrumsSnare.bON = this.iDrumsBass.bON = this.iDrumsHighTom.bON = this.iDrumsLowTom.bON = this.iDrumsFloorTom.bON = this.iDrumsCymbalRide.bON = this.iDrumsLeftPedal.bON = this.iDrumsLeftBassDrum.bON = bAutoON;
2968                 }
2969                 private void t全部のギターパッドのAutoを切り替える( bool bAutoON )
2970                 {
2971                         this.iGuitarR.bON = this.iGuitarG.bON = this.iGuitarB.bON = this.iGuitarPick.bON = this.iGuitarW.bON = bAutoON;
2972                 }
2973                 private void t全部のベースパッドのAutoを切り替える( bool bAutoON )
2974                 {
2975                         this.iBassR.bON = this.iBassG.bON = this.iBassB.bON = this.iBassPick.bON = this.iBassW.bON = bAutoON;
2976                 }
2977                 private void tConfigIniへ記録する()
2978                 {
2979                         switch( this.eメニュー種別 )
2980                         {
2981                                 case Eメニュー種別.System:
2982                                         this.tConfigIniへ記録する_System();
2983                                         this.tConfigIniへ記録する_KeyAssignSystem();
2984                                         return;
2985
2986                                 case Eメニュー種別.Drums:
2987                                         this.tConfigIniへ記録する_Drums();
2988                                         this.tConfigIniへ記録する_KeyAssignDrums();
2989                                         return;
2990
2991                                 case Eメニュー種別.Guitar:
2992                                         this.tConfigIniへ記録する_Guitar();
2993                                         this.tConfigIniへ記録する_KeyAssignGuitar();
2994                                         return;
2995
2996                                 case Eメニュー種別.Bass:
2997                                         this.tConfigIniへ記録する_Bass();
2998                                         this.tConfigIniへ記録する_KeyAssignBass();
2999                                         return;
3000                         }
3001                 }
3002                 private void tConfigIniへ記録する_KeyAssignBass()
3003                 {
3004                 }
3005                 private void tConfigIniへ記録する_KeyAssignDrums()
3006                 {
3007                 }
3008                 private void tConfigIniへ記録する_KeyAssignGuitar()
3009                 {
3010                 }
3011                 private void tConfigIniへ記録する_KeyAssignSystem()
3012                 {
3013                 }
3014                 private void tConfigIniへ記録する_System()
3015                 {
3016                         //CDTXMania.ConfigIni.eDark = (Eダークモード) this.iCommonDark.n現在選択されている項目番号;
3017                         CDTXMania.ConfigIni.n演奏速度 = this.iCommonPlaySpeed.n現在の値;
3018
3019                         CDTXMania.ConfigIni.bGuitar有効 = ( ( ( this.iSystemGRmode.n現在選択されている項目番号 + 1 ) / 2 ) == 1 );
3020                                 //this.iSystemGuitar.bON;
3021                         CDTXMania.ConfigIni.bDrums有効 = ( ( ( this.iSystemGRmode.n現在選択されている項目番号 + 1 ) % 2 ) == 1 );
3022                                 //this.iSystemDrums.bON;
3023
3024                         CDTXMania.ConfigIni.b全画面モード = this.iSystemFullscreen.bON;
3025                         CDTXMania.ConfigIni.bSTAGEFAILED有効 = this.iSystemStageFailed.bON;
3026                         CDTXMania.ConfigIni.bランダムセレクトで子BOXを検索対象とする = this.iSystemRandomFromSubBox.bON;
3027
3028                         CDTXMania.ConfigIni.bWave再生位置自動調整機能有効 = this.iSystemAdjustWaves.bON;
3029                         CDTXMania.ConfigIni.b垂直帰線待ちを行う = this.iSystemVSyncWait.bON;
3030                         CDTXMania.ConfigIni.bバッファ入力を行う = this.iSystemBufferedInput.bON;
3031                         CDTXMania.ConfigIni.bAVI有効 = this.iSystemAVI.bON;
3032                         CDTXMania.ConfigIni.bForceAVIFullscreen = this.iSystemForceAVIFullscreen.bON;
3033                         CDTXMania.ConfigIni.bBGA有効 = this.iSystemBGA.bON;
3034 //                      CDTXMania.ConfigIni.bGraph有効 = this.iSystemGraph.bON;#24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行
3035                         CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = this.iSystemPreviewSoundWait.n現在の値;
3036             //CDTXMania.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = this.iSystemPreviewImageWait.n現在の値;
3037                         CDTXMania.ConfigIni.b演奏情報を表示する = this.iSystemDebugInfo.bON;
3038                         //CDTXMania.ConfigIni.n背景の透過度 = this.iSystemBGAlpha.n現在の値;
3039                         CDTXMania.ConfigIni.bBGM音を発声する = this.iSystemBGMSound.bON;
3040                         CDTXMania.ConfigIni.b歓声を発声する = this.iSystemAudienceSound.bON;
3041                         CDTXMania.ConfigIni.eダメージレベル = (Eダメージレベル) this.iSystemDamageLevel.n現在選択されている項目番号;
3042                         CDTXMania.ConfigIni.bScoreIniを出力する = this.iSystemSaveScore.bON;
3043
3044                         CDTXMania.ConfigIni.bログ出力 = this.iLogOutputLog.bON;
3045                         CDTXMania.ConfigIni.n手動再生音量 = this.iSystemChipVolume.n現在の値;
3046                         CDTXMania.ConfigIni.n自動再生音量 = this.iSystemAutoChipVolume.n現在の値;
3047                         //CDTXMania.ConfigIni.bストイックモード = this.iSystemStoicMode.bON;
3048
3049                         CDTXMania.ConfigIni.nShowLagType = this.iSystemShowLag.n現在選択されている項目番号;                                // #25370 2011.6.3 yyagi
3050                         CDTXMania.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON;                                   // #25399 2011.6.9 yyagi
3051
3052                         //CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                                                         // #23559 2011.7.27 yyagi
3053
3054                         CDTXMania.ConfigIni.strSystemSkinSubfolderFullName = skinSubFolders[ nSkinIndex ];                              // #28195 2012.5.2 yyagi
3055                         CDTXMania.Skin.SetCurrentSkinSubfolderFullName( CDTXMania.ConfigIni.strSystemSkinSubfolderFullName, true );
3056                         CDTXMania.ConfigIni.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;                                                             // #28195 2012.5.6 yyagi
3057
3058                         CDTXMania.ConfigIni.nSoundDeviceType = this.iSystemSoundType.n現在選択されている項目番号;          // #24820 2013.1.3 yyagi
3059                         CDTXMania.ConfigIni.nWASAPIBufferSizeMs = this.iSystemWASAPIBufferSizeMs.n現在の値;                         // #24820 2013.1.15 yyagi
3060 //                      CDTXMania.ConfigIni.nASIOBufferSizeMs = this.iSystemASIOBufferSizeMs.n現在の値;                                     // #24820 2013.1.3 yyagi
3061                         CDTXMania.ConfigIni.nASIODevice = this.iSystemASIODevice.n現在選択されている項目番号;                      // #24820 2013.1.17 yyagi
3062                         CDTXMania.ConfigIni.bUseOSTimer = this.iSystemSoundTimerType.bON;                                                               // #33689 2014.6.17 yyagi
3063
3064                         CDTXMania.ConfigIni.bTimeStretch = this.iSystemTimeStretch.bON;                                                                 // #23664 2013.2.24 yyagi
3065 //Trace.TraceInformation( "saved" );
3066 //Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(true) );
3067 //Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );
3068 //Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );
3069                         CDTXMania.ConfigIni.nMasterVolume = this.iSystemMasterVolume.n現在の値;                                                     // #33700 2014.4.26 yyagi
3070                         CDTXMania.ConfigIni.e判定表示優先度 = (E判定表示優先度) this.iSystemJudgeDispPriority.n現在選択されている項目番号;
3071
3072             CDTXMania.ConfigIni.eSkillMode = ( ESkillType )this.iSystemSkillMode.n現在選択されている項目番号;
3073             CDTXMania.ConfigIni.eNamePlateType = ( Eタイプ )this.iSystemNamePlateType.n現在選択されている項目番号;
3074             CDTXMania.ConfigIni.bJudgeCountDisp = this.iSystemJudgeCountDisp.bON;
3075             CDTXMania.ConfigIni.nCommonBGMAdjustMs = this.iSystemBGMAdjust.n現在の値;                       // #36372 2016.06.19 kairera0467
3076                 }
3077                 private void tConfigIniへ記録する_Bass()
3078                 {
3079                         //CDTXMania.ConfigIni.bAutoPlay.Bass = this.iBassAutoPlay.bON;
3080                         CDTXMania.ConfigIni.bAutoPlay.BsR = this.iBassR.bON;
3081                         CDTXMania.ConfigIni.bAutoPlay.BsG = this.iBassG.bON;
3082                         CDTXMania.ConfigIni.bAutoPlay.BsB = this.iBassB.bON;
3083                         CDTXMania.ConfigIni.bAutoPlay.BsPick = this.iBassPick.bON;
3084                         CDTXMania.ConfigIni.bAutoPlay.BsW = this.iBassW.bON;
3085                         CDTXMania.ConfigIni.n譜面スクロール速度.Bass = this.iBassScrollSpeed.n現在の値;
3086                                                                                                 // "Sudden" || "Sud+Hid"
3087                         CDTXMania.ConfigIni.bSudden.Bass = ( this.iBassSudHid.n現在選択されている項目番号 == 1 || this.iBassSudHid.n現在選択されている項目番号 == 3 ) ? true : false;
3088                                                                                                 // "Hidden" || "Sud+Hid"
3089                         CDTXMania.ConfigIni.bHidden.Bass = ( this.iBassSudHid.n現在選択されている項目番号 == 2 || this.iBassSudHid.n現在選択されている項目番号 == 3 ) ? true : false;
3090                         if      ( this.iBassSudHid.n現在選択されている項目番号 == 4 ) CDTXMania.ConfigIni.eInvisible.Bass = EInvisible.SEMI;       // "S-Invisible"
3091                         else if ( this.iBassSudHid.n現在選択されている項目番号 == 5 ) CDTXMania.ConfigIni.eInvisible.Bass = EInvisible.FULL;       // "F-Invisible"
3092                         else                                                          CDTXMania.ConfigIni.eInvisible.Bass = EInvisible.OFF;
3093                         CDTXMania.ConfigIni.bReverse.Bass = this.iBassReverse.bON;
3094                         CDTXMania.ConfigIni.判定文字表示位置.Bass = (E判定文字表示位置) this.iBassPosition.n現在選択されている項目番号;
3095                         CDTXMania.ConfigIni.eRandom.Bass = (Eランダムモード) this.iBassRandom.n現在選択されている項目番号;
3096                         CDTXMania.ConfigIni.bLight.Bass = this.iBassLight.bON;
3097                         CDTXMania.ConfigIni.bLeft.Bass = this.iBassLeft.bON;
3098                         CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass = this.iBassInputAdjustTimeMs.n現在の値;                // #23580 2011.1.3 yyagi
3099
3100                         CDTXMania.ConfigIni.b演奏音を強調する.Bass = this.iSystemSoundMonitorBass.bON;
3101                         CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass = this.iSystemMinComboBass.n現在の値;
3102                         CDTXMania.ConfigIni.e判定位置.Bass = (E判定位置) this.iSystemJudgePosBass.n現在選択されている項目番号;                                     // #33891 2014.6.26 yyagi
3103                         //CDTXMania.ConfigIni.e判定表示優先度.Bass = (E判定表示優先度) this.iBassJudgeDispPriority.n現在選択されている項目番号;
3104             CDTXMania.ConfigIni.bLaneFlush.Bass = this.iBassLaneFlush.bON;
3105             CDTXMania.ConfigIni.nLaneDispType.Bass = this.iBassLaneDispType.n現在選択されている項目番号;
3106             CDTXMania.ConfigIni.bJudgeLineDisp.Bass = this.iBassJudgeLineDisp.bON;
3107             CDTXMania.ConfigIni.bGraph.Bass = this.iBassGraph.bON;
3108                 }
3109                 private void tConfigIniへ記録する_Drums()
3110                 {
3111                         CDTXMania.ConfigIni.bAutoPlay.LC = this.iDrumsLeftCymbal.bON;
3112                         CDTXMania.ConfigIni.bAutoPlay.HH = this.iDrumsHiHat.bON;
3113                         CDTXMania.ConfigIni.bAutoPlay.SD = this.iDrumsSnare.bON;
3114                         CDTXMania.ConfigIni.bAutoPlay.BD = this.iDrumsBass.bON;
3115                         CDTXMania.ConfigIni.bAutoPlay.HT = this.iDrumsHighTom.bON;
3116                         CDTXMania.ConfigIni.bAutoPlay.LT = this.iDrumsLowTom.bON;
3117                         CDTXMania.ConfigIni.bAutoPlay.FT = this.iDrumsFloorTom.bON;
3118                         CDTXMania.ConfigIni.bAutoPlay.CY = this.iDrumsCymbalRide.bON;
3119             CDTXMania.ConfigIni.bAutoPlay.LP = this.iDrumsLeftPedal.bON;
3120             CDTXMania.ConfigIni.bAutoPlay.LBD = this.iDrumsLeftBassDrum.bON;
3121                         CDTXMania.ConfigIni.n譜面スクロール速度.Drums = this.iDrumsScrollSpeed.n現在の値;
3122             //CDTXMania.ConfigIni.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置) this.iDrumsComboPosition.n現在選択されている項目番号;
3123                                                                                                 // "Sudden" || "Sud+Hid"
3124                         CDTXMania.ConfigIni.bSudden.Drums = ( this.iDrumsSudHid.n現在選択されている項目番号 == 1 || this.iDrumsSudHid.n現在選択されている項目番号 == 3 ) ? true : false;
3125                                                                                                 // "Hidden" || "Sud+Hid"
3126                         CDTXMania.ConfigIni.bHidden.Drums = ( this.iDrumsSudHid.n現在選択されている項目番号 == 2 || this.iDrumsSudHid.n現在選択されている項目番号 == 3 ) ? true : false;
3127                         if      ( this.iDrumsSudHid.n現在選択されている項目番号 == 4 ) CDTXMania.ConfigIni.eInvisible.Drums = EInvisible.SEMI;     // "S-Invisible"
3128                         else if ( this.iDrumsSudHid.n現在選択されている項目番号 == 5 ) CDTXMania.ConfigIni.eInvisible.Drums = EInvisible.FULL;     // "F-Invisible"
3129                         else                                                           CDTXMania.ConfigIni.eInvisible.Drums = EInvisible.OFF;
3130                         CDTXMania.ConfigIni.bReverse.Drums = this.iDrumsReverse.bON;
3131                         CDTXMania.ConfigIni.判定文字表示位置.Drums = (E判定文字表示位置) this.iDrumsPosition.n現在選択されている項目番号;
3132                         CDTXMania.ConfigIni.bTight = this.iDrumsTight.bON;
3133                         CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums = this.iDrumsInputAdjustTimeMs.n現在の値;              // #23580 2011.1.3 yyagi
3134                         CDTXMania.ConfigIni.bGraph.Drums = this.iDrumsGraph.bON;// #24074 2011.01.23 add ikanick
3135
3136                         CDTXMania.ConfigIni.eHHGroup = (EHHGroup) this.iSystemHHGroup.n現在選択されている項目番号;
3137                         CDTXMania.ConfigIni.eFTGroup = (EFTGroup) this.iSystemFTGroup.n現在選択されている項目番号;
3138                         CDTXMania.ConfigIni.eCYGroup = (ECYGroup) this.iSystemCYGroup.n現在選択されている項目番号;
3139                         CDTXMania.ConfigIni.eBDGroup = (EBDGroup) this.iSystemBDGroup.n現在選択されている項目番号;
3140                         CDTXMania.ConfigIni.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityHH.n現在選択されている項目番号;
3141                         CDTXMania.ConfigIni.eHitSoundPriorityFT = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityFT.n現在選択されている項目番号;
3142                         CDTXMania.ConfigIni.eHitSoundPriorityCY = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityCY.n現在選択されている項目番号;
3143                         CDTXMania.ConfigIni.bフィルイン有効 = this.iSystemFillIn.bON;
3144                         CDTXMania.ConfigIni.b演奏音を強調する.Drums = this.iSystemSoundMonitorDrums.bON;
3145                         CDTXMania.ConfigIni.bドラム打音を発声する = this.iSystemHitSound.bON;
3146                         CDTXMania.ConfigIni.n表示可能な最小コンボ数.Drums = this.iSystemMinComboDrums.n現在の値;
3147                         CDTXMania.ConfigIni.bシンバルフリー = this.iSystemCymbalFree.bON;
3148
3149                         //CDTXMania.ConfigIni.eDark = (Eダークモード)this.iCommonDark.n現在選択されている項目番号;
3150                         CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                           // #23559 2911.7.27 yyagi
3151             CDTXMania.ConfigIni.nJudgeLine.Drums = this.iDrumsJudgeLinePos.n現在の値;
3152             CDTXMania.ConfigIni.nJudgeLinePosOffset.Drums = this.iDrumsJudgeLineOffset.n現在の値;
3153             //CDTXMania.ConfigIni.eドラムレーン表示位置 = (Eドラムレーン表示位置) this.iDrumsLanePosition.n現在選択されている項目番号;
3154             CDTXMania.ConfigIni.eRDPosition = (ERDPosition)this.iDrumsRDPosition.n現在選択されている項目番号;
3155             CDTXMania.ConfigIni.eLaneType = ( Eタイプ )this.iDrumsLaneType.n現在選択されている項目番号;
3156
3157             CDTXMania.ConfigIni.nLaneDispType.Drums = this.iDrumsLaneDispType.n現在選択されている項目番号;
3158             CDTXMania.ConfigIni.bJudgeLineDisp.Drums = this.iDrumsJudgeLineDisp.bON;
3159             CDTXMania.ConfigIni.bLaneFlush.Drums = this.iDrumsLaneFlush.bON;
3160                 }
3161                 private void tConfigIniへ記録する_Guitar()
3162                 {
3163                         //CDTXMania.ConfigIni.bAutoPlay.Guitar = this.iGuitarAutoPlay.bON;
3164                         CDTXMania.ConfigIni.bAutoPlay.GtR = this.iGuitarR.bON;
3165                         CDTXMania.ConfigIni.bAutoPlay.GtG = this.iGuitarG.bON;
3166                         CDTXMania.ConfigIni.bAutoPlay.GtB = this.iGuitarB.bON;
3167                         CDTXMania.ConfigIni.bAutoPlay.GtPick = this.iGuitarPick.bON;
3168                         CDTXMania.ConfigIni.bAutoPlay.GtW = this.iGuitarW.bON;
3169                         CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = this.iGuitarScrollSpeed.n現在の値;
3170                                                                                                 // "Sudden" || "Sud+Hid"
3171                         CDTXMania.ConfigIni.bSudden.Guitar = ( this.iGuitarSudHid.n現在選択されている項目番号 == 1 || this.iGuitarSudHid.n現在選択されている項目番号 == 3 ) ? true : false;
3172                                                                                                 // "Hidden" || "Sud+Hid"
3173                         CDTXMania.ConfigIni.bHidden.Guitar = ( this.iGuitarSudHid.n現在選択されている項目番号 == 2 || this.iGuitarSudHid.n現在選択されている項目番号 == 3 ) ? true : false;
3174                         if      ( this.iGuitarSudHid.n現在選択されている項目番号 == 4 ) CDTXMania.ConfigIni.eInvisible.Guitar = EInvisible.SEMI;   // "S-Invisible"
3175                         else if ( this.iGuitarSudHid.n現在選択されている項目番号 == 5 ) CDTXMania.ConfigIni.eInvisible.Guitar = EInvisible.FULL;   // "F-Invisible"
3176                         else                                                            CDTXMania.ConfigIni.eInvisible.Guitar = EInvisible.OFF;
3177                         CDTXMania.ConfigIni.bReverse.Guitar = this.iGuitarReverse.bON;
3178                         CDTXMania.ConfigIni.判定文字表示位置.Guitar = (E判定文字表示位置) this.iGuitarPosition.n現在選択されている項目番号;
3179                         CDTXMania.ConfigIni.eRandom.Guitar = (Eランダムモード) this.iGuitarRandom.n現在選択されている項目番号;
3180                         CDTXMania.ConfigIni.bLight.Guitar = this.iGuitarLight.bON;
3181                         CDTXMania.ConfigIni.bLeft.Guitar = this.iGuitarLeft.bON;
3182                         CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar = this.iGuitarInputAdjustTimeMs.n現在の値;    // #23580 2011.1.3 yyagi
3183
3184                         CDTXMania.ConfigIni.n表示可能な最小コンボ数.Guitar = this.iSystemMinComboGuitar.n現在の値;
3185                         CDTXMania.ConfigIni.b演奏音を強調する.Guitar = this.iSystemSoundMonitorGuitar.bON;
3186                         CDTXMania.ConfigIni.e判定位置.Guitar = (E判定位置) this.iSystemJudgePosGuitar.n現在選択されている項目番号;                                 // #33891 2014.6.26 yyagi
3187                         //CDTXMania.ConfigIni.e判定表示優先度.Guitar = (E判定表示優先度) this.iGuitarJudgeDispPriority.n現在選択されている項目番号;
3188             CDTXMania.ConfigIni.bLaneFlush.Guitar = this.iGuitarLaneFlush.bON;
3189             CDTXMania.ConfigIni.nLaneDispType.Guitar = this.iGuitarLaneDispType.n現在選択されている項目番号;
3190             CDTXMania.ConfigIni.bJudgeLineDisp.Guitar = this.iGuitarJudgeLineDisp.bON;
3191             CDTXMania.ConfigIni.bGraph.Guitar = this.iGuitarGraph.bON;
3192                 }
3193                 //-----------------
3194                 #endregion
3195         }
3196 }