OSDN Git Service

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