OSDN Git Service

#34026 動画再生時にレーン表示が消えていた問題を修正。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / 全体 / CConfigIni.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Runtime.InteropServices;\r
5 using System.IO;\r
6 using System.Diagnostics;\r
7 using System.Web;\r
8 using FDK;\r
9 \r
10 namespace DTXMania\r
11 {\r
12         internal class CConfigIni\r
13         {\r
14                 // クラス\r
15 \r
16                 #region [ CKeyAssign ]\r
17                 public class CKeyAssign\r
18                 {\r
19                         public class CKeyAssignPad\r
20                         {\r
21                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] HH\r
22                                 {\r
23                                         get\r
24                                         {\r
25                                                 return this.padHH_R;\r
26                                         }\r
27                                         set\r
28                                         {\r
29                                                 this.padHH_R = value;\r
30                                         }\r
31                                 }\r
32                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] R\r
33                                 {\r
34                                         get\r
35                                         {\r
36                                                 return this.padHH_R;\r
37                                         }\r
38                                         set\r
39                                         {\r
40                                                 this.padHH_R = value;\r
41                                         }\r
42                                 }\r
43                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] SD\r
44                                 {\r
45                                         get\r
46                                         {\r
47                                                 return this.padSD_G;\r
48                                         }\r
49                                         set\r
50                                         {\r
51                                                 this.padSD_G = value;\r
52                                         }\r
53                                 }\r
54                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] G\r
55                                 {\r
56                                         get\r
57                                         {\r
58                                                 return this.padSD_G;\r
59                                         }\r
60                                         set\r
61                                         {\r
62                                                 this.padSD_G = value;\r
63                                         }\r
64                                 }\r
65                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] BD\r
66                                 {\r
67                                         get\r
68                                         {\r
69                                                 return this.padBD_B;\r
70                                         }\r
71                                         set\r
72                                         {\r
73                                                 this.padBD_B = value;\r
74                                         }\r
75                                 }\r
76                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] B\r
77                                 {\r
78                                         get\r
79                                         {\r
80                                                 return this.padBD_B;\r
81                                         }\r
82                                         set\r
83                                         {\r
84                                                 this.padBD_B = value;\r
85                                         }\r
86                                 }\r
87                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] HT\r
88                                 {\r
89                                         get\r
90                                         {\r
91                                                 return this.padHT_Pick;\r
92                                         }\r
93                                         set\r
94                                         {\r
95                                                 this.padHT_Pick = value;\r
96                                         }\r
97                                 }\r
98                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] Pick\r
99                                 {\r
100                                         get\r
101                                         {\r
102                                                 return this.padHT_Pick;\r
103                                         }\r
104                                         set\r
105                                         {\r
106                                                 this.padHT_Pick = value;\r
107                                         }\r
108                                 }\r
109                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] LT\r
110                                 {\r
111                                         get\r
112                                         {\r
113                                                 return this.padLT_Wail;\r
114                                         }\r
115                                         set\r
116                                         {\r
117                                                 this.padLT_Wail = value;\r
118                                         }\r
119                                 }\r
120                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] Wail\r
121                                 {\r
122                                         get\r
123                                         {\r
124                                                 return this.padLT_Wail;\r
125                                         }\r
126                                         set\r
127                                         {\r
128                                                 this.padLT_Wail = value;\r
129                                         }\r
130                                 }\r
131                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] FT\r
132                                 {\r
133                                         get\r
134                                         {\r
135                                                 return this.padFT_Cancel;\r
136                                         }\r
137                                         set\r
138                                         {\r
139                                                 this.padFT_Cancel = value;\r
140                                         }\r
141                                 }\r
142                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] Cancel\r
143                                 {\r
144                                         get\r
145                                         {\r
146                                                 return this.padFT_Cancel;\r
147                                         }\r
148                                         set\r
149                                         {\r
150                                                 this.padFT_Cancel = value;\r
151                                         }\r
152                                 }\r
153                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] CY\r
154                                 {\r
155                                         get\r
156                                         {\r
157                                                 return this.padCY_Decide;\r
158                                         }\r
159                                         set\r
160                                         {\r
161                                                 this.padCY_Decide = value;\r
162                                         }\r
163                                 }\r
164                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] Decide\r
165                                 {\r
166                                         get\r
167                                         {\r
168                                                 return this.padCY_Decide;\r
169                                         }\r
170                                         set\r
171                                         {\r
172                                                 this.padCY_Decide = value;\r
173                                         }\r
174                                 }\r
175                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] HHO\r
176                                 {\r
177                                         get\r
178                                         {\r
179                                                 return this.padHHO;\r
180                                         }\r
181                                         set\r
182                                         {\r
183                                                 this.padHHO = value;\r
184                                         }\r
185                                 }\r
186                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] RD\r
187                                 {\r
188                                         get\r
189                                         {\r
190                                                 return this.padRD;\r
191                                         }\r
192                                         set\r
193                                         {\r
194                                                 this.padRD = value;\r
195                                         }\r
196                                 }\r
197                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] LC\r
198                                 {\r
199                                         get\r
200                                         {\r
201                                                 return this.padLC;\r
202                                         }\r
203                                         set\r
204                                         {\r
205                                                 this.padLC = value;\r
206                                         }\r
207                                 }\r
208                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] HP\r
209                                 {\r
210                                         get\r
211                                         {\r
212                                                 return this.padHP;\r
213                                         }\r
214                                         set\r
215                                         {\r
216                                                 this.padHP = value;\r
217                                         }\r
218                                 }\r
219                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] Capture\r
220                                 {\r
221                                         get\r
222                                         {\r
223                                                 return this.padCapture;\r
224                                         }\r
225                                         set\r
226                                         {\r
227                                                 this.padCapture = value;\r
228                                         }\r
229                                 }\r
230                                 public CConfigIni.CKeyAssign.STKEYASSIGN[] this[ int index ]\r
231                                 {\r
232                                         get\r
233                                         {\r
234                                                 switch ( index )\r
235                                                 {\r
236                                                         case (int) EKeyConfigPad.HH:\r
237                                                                 return this.padHH_R;\r
238 \r
239                                                         case (int) EKeyConfigPad.SD:\r
240                                                                 return this.padSD_G;\r
241 \r
242                                                         case (int) EKeyConfigPad.BD:\r
243                                                                 return this.padBD_B;\r
244 \r
245                                                         case (int) EKeyConfigPad.HT:\r
246                                                                 return this.padHT_Pick;\r
247 \r
248                                                         case (int) EKeyConfigPad.LT:\r
249                                                                 return this.padLT_Wail;\r
250 \r
251                                                         case (int) EKeyConfigPad.FT:\r
252                                                                 return this.padFT_Cancel;\r
253 \r
254                                                         case (int) EKeyConfigPad.CY:\r
255                                                                 return this.padCY_Decide;\r
256 \r
257                                                         case (int) EKeyConfigPad.HHO:\r
258                                                                 return this.padHHO;\r
259 \r
260                                                         case (int) EKeyConfigPad.RD:\r
261                                                                 return this.padRD;\r
262 \r
263                                                         case (int) EKeyConfigPad.LC:\r
264                                                                 return this.padLC;\r
265 \r
266                                                         case (int) EKeyConfigPad.HP:    // #27029 2012.1.4 from\r
267                                                                 return this.padHP;                      //\r
268 \r
269                                                         case (int) EKeyConfigPad.Capture:\r
270                                                                 return this.padCapture;\r
271                                                 }\r
272                                                 throw new IndexOutOfRangeException();\r
273                                         }\r
274                                         set\r
275                                         {\r
276                                                 switch ( index )\r
277                                                 {\r
278                                                         case (int) EKeyConfigPad.HH:\r
279                                                                 this.padHH_R = value;\r
280                                                                 return;\r
281 \r
282                                                         case (int) EKeyConfigPad.SD:\r
283                                                                 this.padSD_G = value;\r
284                                                                 return;\r
285 \r
286                                                         case (int) EKeyConfigPad.BD:\r
287                                                                 this.padBD_B = value;\r
288                                                                 return;\r
289 \r
290                                                         case (int) EKeyConfigPad.Pick:\r
291                                                                 this.padHT_Pick = value;\r
292                                                                 return;\r
293 \r
294                                                         case (int) EKeyConfigPad.LT:\r
295                                                                 this.padLT_Wail = value;\r
296                                                                 return;\r
297 \r
298                                                         case (int) EKeyConfigPad.FT:\r
299                                                                 this.padFT_Cancel = value;\r
300                                                                 return;\r
301 \r
302                                                         case (int) EKeyConfigPad.CY:\r
303                                                                 this.padCY_Decide = value;\r
304                                                                 return;\r
305 \r
306                                                         case (int) EKeyConfigPad.HHO:\r
307                                                                 this.padHHO = value;\r
308                                                                 return;\r
309 \r
310                                                         case (int) EKeyConfigPad.RD:\r
311                                                                 this.padRD = value;\r
312                                                                 return;\r
313 \r
314                                                         case (int) EKeyConfigPad.LC:\r
315                                                                 this.padLC = value;\r
316                                                                 return;\r
317 \r
318                                                         case (int) EKeyConfigPad.HP:\r
319                                                                 this.padHP = value;\r
320                                                                 return;\r
321 \r
322                                                         case (int) EKeyConfigPad.Capture:\r
323                                                                 this.padCapture = value;\r
324                                                                 return;\r
325                                                 }\r
326                                                 throw new IndexOutOfRangeException();\r
327                                         }\r
328                                 }\r
329 \r
330                                 #region [ private ]\r
331                                 //-----------------\r
332                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padBD_B;\r
333                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padCY_Decide;\r
334                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padFT_Cancel;\r
335                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padHH_R;\r
336                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padHHO;\r
337                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padHT_Pick;\r
338                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padLC;\r
339                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padLT_Wail;\r
340                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padRD;\r
341                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padSD_G;\r
342                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padHP;\r
343                                 private CConfigIni.CKeyAssign.STKEYASSIGN[] padCapture;\r
344                                 //-----------------\r
345                                 #endregion\r
346                         }\r
347 \r
348                         [StructLayout( LayoutKind.Sequential )]\r
349                         public struct STKEYASSIGN\r
350                         {\r
351                                 public E入力デバイス 入力デバイス;\r
352                                 public int ID;\r
353                                 public int コード;\r
354                                 public STKEYASSIGN( E入力デバイス DeviceType, int nID, int nCode )\r
355                                 {\r
356                                         this.入力デバイス = DeviceType;\r
357                                         this.ID = nID;\r
358                                         this.コード = nCode;\r
359                                 }\r
360                         }\r
361 \r
362                         public CKeyAssignPad Bass = new CKeyAssignPad();\r
363                         public CKeyAssignPad Drums = new CKeyAssignPad();\r
364                         public CKeyAssignPad Guitar = new CKeyAssignPad();\r
365                         public CKeyAssignPad System = new CKeyAssignPad();\r
366                         public CKeyAssignPad this[ int index ]\r
367                         {\r
368                                 get\r
369                                 {\r
370                                         switch( index )\r
371                                         {\r
372                                                 case (int) EKeyConfigPart.DRUMS:\r
373                                                         return this.Drums;\r
374 \r
375                                                 case (int) EKeyConfigPart.GUITAR:\r
376                                                         return this.Guitar;\r
377 \r
378                                                 case (int) EKeyConfigPart.BASS:\r
379                                                         return this.Bass;\r
380 \r
381                                                 case (int) EKeyConfigPart.SYSTEM:\r
382                                                         return this.System;\r
383                                         }\r
384                                         throw new IndexOutOfRangeException();\r
385                                 }\r
386                                 set\r
387                                 {\r
388                                         switch( index )\r
389                                         {\r
390                                                 case (int) EKeyConfigPart.DRUMS:\r
391                                                         this.Drums = value;\r
392                                                         return;\r
393 \r
394                                                 case (int) EKeyConfigPart.GUITAR:\r
395                                                         this.Guitar = value;\r
396                                                         return;\r
397 \r
398                                                 case (int) EKeyConfigPart.BASS:\r
399                                                         this.Bass = value;\r
400                                                         return;\r
401 \r
402                                                 case (int) EKeyConfigPart.SYSTEM:\r
403                                                         this.System = value;\r
404                                                         return;\r
405                                         }\r
406                                         throw new IndexOutOfRangeException();\r
407                                 }\r
408                         }\r
409                 }\r
410                 #endregion\r
411 \r
412                 //\r
413                 public enum ESoundDeviceTypeForConfig\r
414                 {\r
415                         ACM = 0,\r
416                         // DirectSound,\r
417                         ASIO,\r
418                         WASAPI,\r
419                         Unknown=99\r
420                 }\r
421                 // プロパティ\r
422 \r
423 #if false               // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
424                 //----------------------------------------\r
425                 public float[,] fGaugeFactor = new float[5,2];\r
426                 public float[] fDamageLevelFactor = new float[3];\r
427                 //----------------------------------------\r
428 #endif\r
429                 public int nBGAlpha;\r
430                 public bool bAVI有効;\r
431                 public bool bBGA有効;\r
432                 public bool bBGM音を発声する;\r
433                 public STDGBVALUE<bool> bHidden;\r
434                 public STDGBVALUE<bool> bLeft;\r
435                 public STDGBVALUE<bool> bLight;\r
436                 public bool bLogDTX詳細ログ出力;\r
437                 public bool bLog曲検索ログ出力;\r
438                 public bool bLog作成解放ログ出力;\r
439                 public STDGBVALUE<bool> bReverse;\r
440                 //public STDGBVALUE<E判定表示優先度> e判定表示優先度;\r
441                 public E判定表示優先度 e判定表示優先度;\r
442                 public STDGBVALUE<E判定位置> e判定位置;                 // #33891 2014.6.26 yyagi\r
443                 public bool bScoreIniを出力する;\r
444                 public bool bSTAGEFAILED有効;\r
445                 public STDGBVALUE<bool> bSudden;\r
446                 public bool bTight;\r
447                 public STDGBVALUE<bool> bGraph;     // #24074 2011.01.23 add ikanick\r
448                 public bool bWave再生位置自動調整機能有効;\r
449                 public bool bシンバルフリー;\r
450                 public bool bストイックモード;\r
451                 public bool bドラム打音を発声する;\r
452                 public bool bフィルイン有効;\r
453                 public bool bランダムセレクトで子BOXを検索対象とする;\r
454                 public bool bログ出力;\r
455                 public STDGBVALUE<bool> b演奏音を強調する;\r
456                 public bool b演奏情報を表示する;\r
457                 public bool b歓声を発声する;\r
458                 public bool b垂直帰線待ちを行う;\r
459                 public bool b選曲リストフォントを斜体にする;\r
460                 public bool b選曲リストフォントを太字にする;\r
461                 public bool b全画面モード;\r
462                 public int n初期ウィンドウ開始位置X; // #30675 2013.02.04 ikanick add\r
463                 public int n初期ウィンドウ開始位置Y;  \r
464                 public int nウインドウwidth;                               // #23510 2010.10.31 yyagi add\r
465                 public int nウインドウheight;                              // #23510 2010.10.31 yyagi add\r
466                 public Dictionary<int, string> dicJoystick;\r
467                 public ECYGroup eCYGroup;\r
468                 public Eダークモード eDark;\r
469                 public EFTGroup eFTGroup;\r
470                 public EHHGroup eHHGroup;\r
471                 public EBDGroup eBDGroup;                                       // #27029 2012.1.4 from add\r
472                 public E打ち分け時の再生の優先順位 eHitSoundPriorityCY;\r
473                 public E打ち分け時の再生の優先順位 eHitSoundPriorityFT;\r
474                 public E打ち分け時の再生の優先順位 eHitSoundPriorityHH;\r
475                 public STDGBVALUE<Eランダムモード> eRandom;\r
476                 public Eダメージレベル eダメージレベル;\r
477         public CKeyAssign KeyAssign;\r
478                 public int n非フォーカス時スリープms;       // #23568 2010.11.04 ikanick add\r
479                 public int nフレーム毎スリープms;                      // #xxxxx 2011.11.27 yyagi add\r
480                 public int n演奏速度;\r
481                 public int n曲が選択されてからプレビュー音が鳴るまでのウェイトms;\r
482                 public int n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms;\r
483                 public int n自動再生音量;\r
484                 public int n手動再生音量;\r
485                 public int n選曲リストフォントのサイズdot;\r
486                 public STDGBVALUE<int> n表示可能な最小コンボ数;\r
487                 public STDGBVALUE<int> n譜面スクロール速度;\r
488                 public string strDTXManiaのバージョン;\r
489                 public string str曲データ検索パス;\r
490                 public string str選曲リストフォント;\r
491                 public Eドラムコンボ文字の表示位置 ドラムコンボ文字の表示位置;\r
492                 public STDGBVALUE<E判定文字表示位置> 判定文字表示位置;\r
493 //              public int nハイハット切り捨て下限Velocity;\r
494 //              public int n切り捨て下限Velocity;                 // #23857 2010.12.12 yyagi VelocityMin\r
495                 public STDGBVALUE<int> nInputAdjustTimeMs;      // #23580 2011.1.3 yyagi タイミングアジャスト機能\r
496                 public STDGBVALUE<int> nJudgeLinePosOffset;     // #31602 2013.6.23 yyagi 判定ライン表示位置のオフセット\r
497                 public int      nShowLagType;                                   // #25370 2011.6.5 yyagi ズレ時間表示機能\r
498                 public bool bIsAutoResultCapture;                       // #25399 2011.6.9 yyagi リザルト画像自動保存機能のON/OFF制御\r
499                 public int nPoliphonicSounds;                           // #28228 2012.5.1 yyagi レーン毎の最大同時発音数\r
500                 public bool bバッファ入力を行う;\r
501                 public bool bIsEnabledSystemMenu;                       // #28200 2012.5.1 yyagi System Menuの使用可否切替\r
502                 public string strSystemSkinSubfolderFullName;   // #28195 2012.5.2 yyagi Skin切替用 System/以下のサブフォルダ名\r
503                 public bool bUseBoxDefSkin;                                             // #28195 2012.5.6 yyagi Skin切替用 box.defによるスキン変更機能を使用するか否か\r
504                 public bool bConfigIniがないかDTXManiaのバージョンが異なる\r
505                 {\r
506                         get\r
507                         {\r
508                                 return ( !this.bConfigIniが存在している || !CDTXMania.VERSION.Equals( this.strDTXManiaのバージョン ) );\r
509                         }\r
510                 }\r
511                 public bool bDrums有効\r
512                 {\r
513                         get\r
514                         {\r
515                                 return this._bDrums有効;\r
516                         }\r
517                         set\r
518                         {\r
519                                 this._bDrums有効 = value;\r
520                                 if( !this._bGuitar有効 && !this._bDrums有効 )\r
521                                 {\r
522                                         this._bGuitar有効 = true;\r
523                                 }\r
524                         }\r
525                 }\r
526                 public bool bEnterがキー割り当てのどこにも使用されていない\r
527                 {\r
528                         get\r
529                         {\r
530                                 for( int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++ )\r
531                                 {\r
532                                         for( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )\r
533                                         {\r
534                                                 for( int k = 0; k < 0x10; k++ )\r
535                                                 {\r
536                                                         if( ( this.KeyAssign[ i ][ j ][ k ].入力デバイス == E入力デバイス.キーボード ) && ( this.KeyAssign[ i ][ j ][ k ].コード == (int) SlimDX.DirectInput.Key.Return ) )\r
537                                                         {\r
538                                                                 return false;\r
539                                                         }\r
540                                                 }\r
541                                         }\r
542                                 }\r
543                                 return true;\r
544                         }\r
545                 }\r
546                 public bool bGuitar有効\r
547                 {\r
548                         get\r
549                         {\r
550                                 return this._bGuitar有効;\r
551                         }\r
552                         set\r
553                         {\r
554                                 this._bGuitar有効 = value;\r
555                                 if( !this._bGuitar有効 && !this._bDrums有効 )\r
556                                 {\r
557                                         this._bDrums有効 = true;\r
558                                 }\r
559                         }\r
560                 }\r
561                 public bool bウィンドウモード\r
562                 {\r
563                         get\r
564                         {\r
565                                 return !this.b全画面モード;\r
566                         }\r
567                         set\r
568                         {\r
569                                 this.b全画面モード = !value;\r
570                         }\r
571                 }\r
572                 public bool bギタレボモード\r
573                 {\r
574                         get\r
575                         {\r
576                                 return ( !this.bDrums有効 && this.bGuitar有効 );\r
577                         }\r
578                 }\r
579                 public bool bドラムが全部オートプレイである\r
580                 {\r
581                         get\r
582                         {\r
583                                 for ( int i = (int) Eレーン.LC; i <= (int) Eレーン.CY; i++ )\r
584                                 {\r
585                                         if( !this.bAutoPlay[ i ] )\r
586                                         {\r
587                                                 return false;\r
588                                         }\r
589                                 }\r
590                                 return true;\r
591                         }\r
592                 }\r
593                 public bool bギターが全部オートプレイである\r
594                 {\r
595                         get\r
596                         {\r
597                                 for ( int i = (int) Eレーン.GtR; i <= (int) Eレーン.GtW; i++ )\r
598                                 {\r
599                                         if ( !this.bAutoPlay[ i ] )\r
600                                         {\r
601                                                 return false;\r
602                                         }\r
603                                 }\r
604                                 return true;\r
605                         }\r
606                 }\r
607                 public bool bベースが全部オートプレイである\r
608                 {\r
609                         get\r
610                         {\r
611                                 for ( int i = (int) Eレーン.BsR; i <= (int) Eレーン.BsW; i++ )\r
612                                 {\r
613                                         if ( !this.bAutoPlay[ i ] )\r
614                                         {\r
615                                                 return false;\r
616                                         }\r
617                                 }\r
618                                 return true;\r
619                         }\r
620                 }\r
621                 public bool b演奏情報を表示しない\r
622                 {\r
623                         get\r
624                         {\r
625                                 return !this.b演奏情報を表示する;\r
626                         }\r
627                         set\r
628                         {\r
629                                 this.b演奏情報を表示する = !value;\r
630                         }\r
631                 }\r
632                 public int n背景の透過度\r
633                 {\r
634                         get\r
635                         {\r
636                                 return this.nBGAlpha;\r
637                         }\r
638                         set\r
639                         {\r
640                                 if( value < 0 )\r
641                                 {\r
642                                         this.nBGAlpha = 0;\r
643                                 }\r
644                                 else if( value > 0xff )\r
645                                 {\r
646                                         this.nBGAlpha = 0xff;\r
647                                 }\r
648                                 else\r
649                                 {\r
650                                         this.nBGAlpha = value;\r
651                                 }\r
652                         }\r
653                 }\r
654                 public int nRisky;                                              // #23559 2011.6.20 yyagi Riskyでの残ミス数。0で閉店\r
655                 public bool bIsAllowedDoubleClickFullscreen;    // #26752 2011.11.27 yyagi ダブルクリックしてもフルスクリーンに移行しない\r
656                 public bool bIsSwappedGuitarBass                        // #24063 2011.1.16 yyagi ギターとベースの切り替え中か否か\r
657                 {\r
658                         get;\r
659                         set;\r
660                 }\r
661                 public bool bIsSwappedGuitarBass_AutoFlagsAreSwapped    // #24415 2011.2.21 yyagi FLIP中にalt-f4終了で、AUTOフラグがswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ\r
662                 {\r
663                     get;\r
664                     set;\r
665                 }\r
666                 public STAUTOPLAY bAutoPlay;\r
667                 public int nSoundDeviceType;                            // #24820 2012.12.23 yyagi 出力サウンドデバイス(0=ACM(にしたいが設計がきつそうならDirectShow), 1=ASIO, 2=WASAPI)\r
668 //              public int nWASAPIBufferSizeMs;                         // #24820 2013.1.15 yyagi WASAPIのバッファサイズ\r
669 //              public int nASIOBufferSizeMs;                           // #24820 2012.12.28 yyagi ASIOのバッファサイズ\r
670                 public int nASIODevice;                                         // #24820 2013.1.17 yyagi ASIOデバイス\r
671                 public bool bUseOSTimer;                                        // #33689 2014.6.6 yyagi 演奏タイマーの種類\r
672                 public bool bDynamicBassMixerManagement;        // #24820\r
673                 public bool bTimeStretch;                                       // #23664 2013.2.24 yyagi ピッチ変更無しで再生速度を変更するかどうか\r
674                 public STDGBVALUE<EInvisible> eInvisible;       // #32072 2013.9.20 yyagi チップを非表示にする\r
675                 public int nDisplayTimesMs, nFadeoutTimeMs;\r
676 \r
677                 public STDGBVALUE<int> nViewerScrollSpeed;\r
678                 public bool bViewerVSyncWait;\r
679                 public bool bViewerShowDebugStatus;\r
680                 public bool bViewerTimeStretch;\r
681                 public bool bViewerDrums有効, bViewerGuitar有効;\r
682                 //public bool bNoMP3Streaming;                          // 2014.4.14 yyagi; mp3のシーク位置がおかしくなる場合は、これをtrueにすることで、wavにデコードしてからオンメモリ再生する\r
683                 public int nMasterVolume;\r
684 #if false\r
685                 [StructLayout( LayoutKind.Sequential )]\r
686                 public struct STAUTOPLAY                                                                // C定数のEレーンとindexを一致させること\r
687                 {\r
688                         public bool LC;                 // 0\r
689                         public bool HH;                 // 1\r
690                         public bool SD;                 // 2\r
691                         public bool BD;                 // 3\r
692                         public bool HT;                 // 4\r
693                         public bool LT;                 // 5\r
694                         public bool FT;                 // 6\r
695                         public bool CY;                 // 7\r
696                         public bool RD;                 // 8\r
697                         public bool Guitar;             // 9    (not used)\r
698                         public bool Bass;               // 10   (not used)\r
699                         public bool GtR;                // 11\r
700                         public bool GtG;                // 12\r
701                         public bool GtB;                // 13\r
702                         public bool GtPick;             // 14\r
703                         public bool GtW;                // 15\r
704                         public bool BsR;                // 16\r
705                         public bool BsG;                // 17\r
706                         public bool BsB;                // 18\r
707                         public bool BsPick;             // 19\r
708                         public bool BsW;                // 20\r
709                         public bool this[ int index ]\r
710                         {\r
711                                 get\r
712                                 {\r
713                                         switch ( index )\r
714                                         {\r
715                                                 case (int) Eレーン.LC:\r
716                                                         return this.LC;\r
717                                                 case (int) Eレーン.HH:\r
718                                                         return this.HH;\r
719                                                 case (int) Eレーン.SD:\r
720                                                         return this.SD;\r
721                                                 case (int) Eレーン.BD:\r
722                                                         return this.BD;\r
723                                                 case (int) Eレーン.HT:\r
724                                                         return this.HT;\r
725                                                 case (int) Eレーン.LT:\r
726                                                         return this.LT;\r
727                                                 case (int) Eレーン.FT:\r
728                                                         return this.FT;\r
729                                                 case (int) Eレーン.CY:\r
730                                                         return this.CY;\r
731                                                 case (int) Eレーン.RD:\r
732                                                         return this.RD;\r
733                                                 case (int) Eレーン.Guitar:\r
734                                                         return this.Guitar;\r
735                                                 case (int) Eレーン.Bass:\r
736                                                         return this.Bass;\r
737                                                 case (int) Eレーン.GtR:\r
738                                                         return this.GtR;\r
739                                                 case (int) Eレーン.GtG:\r
740                                                         return this.GtG;\r
741                                                 case (int) Eレーン.GtB:\r
742                                                         return this.GtB;\r
743                                                 case (int) Eレーン.GtPick:\r
744                                                         return this.GtPick;\r
745                                                 case (int) Eレーン.GtW:\r
746                                                         return this.GtW;\r
747                                                 case (int) Eレーン.BsR:\r
748                                                         return this.BsR;\r
749                                                 case (int) Eレーン.BsG:\r
750                                                         return this.BsG;\r
751                                                 case (int) Eレーン.BsB:\r
752                                                         return this.BsB;\r
753                                                 case (int) Eレーン.BsPick:\r
754                                                         return this.BsPick;\r
755                                                 case (int) Eレーン.BsW:\r
756                                                         return this.BsW;\r
757                                         }\r
758                                         throw new IndexOutOfRangeException();\r
759                                 }\r
760                                 set\r
761                                 {\r
762                                         switch ( index )\r
763                                         {\r
764                                                 case (int) Eレーン.LC:\r
765                                                         this.LC = value;\r
766                                                         return;\r
767                                                 case (int) Eレーン.HH:\r
768                                                         this.HH = value;\r
769                                                         return;\r
770                                                 case (int) Eレーン.SD:\r
771                                                         this.SD = value;\r
772                                                         return;\r
773                                                 case (int) Eレーン.BD:\r
774                                                         this.BD = value;\r
775                                                         return;\r
776                                                 case (int) Eレーン.HT:\r
777                                                         this.HT = value;\r
778                                                         return;\r
779                                                 case (int) Eレーン.LT:\r
780                                                         this.LT = value;\r
781                                                         return;\r
782                                                 case (int) Eレーン.FT:\r
783                                                         this.FT = value;\r
784                                                         return;\r
785                                                 case (int) Eレーン.CY:\r
786                                                         this.CY = value;\r
787                                                         return;\r
788                                                 case (int) Eレーン.RD:\r
789                                                         this.RD = value;\r
790                                                         return;\r
791                                                 case (int) Eレーン.Guitar:\r
792                                                         this.Guitar = value;\r
793                                                         return;\r
794                                                 case (int) Eレーン.Bass:\r
795                                                         this.Bass = value;\r
796                                                         return;\r
797                                                 case (int) Eレーン.GtR:\r
798                                                         this.GtR = value;\r
799                                                         return;\r
800                                                 case (int) Eレーン.GtG:\r
801                                                         this.GtG = value;\r
802                                                         return;\r
803                                                 case (int) Eレーン.GtB:\r
804                                                         this.GtB = value;\r
805                                                         return;\r
806                                                 case (int) Eレーン.GtPick:\r
807                                                         this.GtPick = value;\r
808                                                         return;\r
809                                                 case (int) Eレーン.GtW:\r
810                                                         this.GtW = value;\r
811                                                         return;\r
812                                                 case (int) Eレーン.BsR:\r
813                                                         this.BsR = value;\r
814                                                         return;\r
815                                                 case (int) Eレーン.BsG:\r
816                                                         this.BsG = value;\r
817                                                         return;\r
818                                                 case (int) Eレーン.BsB:\r
819                                                         this.BsB = value;\r
820                                                         return;\r
821                                                 case (int) Eレーン.BsPick:\r
822                                                         this.BsPick = value;\r
823                                                         return;\r
824                                                 case (int) Eレーン.BsW:\r
825                                                         this.BsW = value;\r
826                                                         return;\r
827                                         }\r
828                                         throw new IndexOutOfRangeException();\r
829                                 }\r
830                         }\r
831                 }\r
832 #endif\r
833                 #region [ STRANGE ]\r
834                 public STRANGE nヒット範囲ms;\r
835                 [StructLayout( LayoutKind.Sequential )]\r
836                 public struct STRANGE\r
837                 {\r
838                         public int Perfect;\r
839                         public int Great;\r
840                         public int Good;\r
841                         public int Poor;\r
842                         public int this[ int index ]\r
843                         {\r
844                                 get\r
845                                 {\r
846                                         switch( index )\r
847                                         {\r
848                                                 case 0:\r
849                                                         return this.Perfect;\r
850 \r
851                                                 case 1:\r
852                                                         return this.Great;\r
853 \r
854                                                 case 2:\r
855                                                         return this.Good;\r
856 \r
857                                                 case 3:\r
858                                                         return this.Poor;\r
859                                         }\r
860                                         throw new IndexOutOfRangeException();\r
861                                 }\r
862                                 set\r
863                                 {\r
864                                         switch( index )\r
865                                         {\r
866                                                 case 0:\r
867                                                         this.Perfect = value;\r
868                                                         return;\r
869 \r
870                                                 case 1:\r
871                                                         this.Great = value;\r
872                                                         return;\r
873 \r
874                                                 case 2:\r
875                                                         this.Good = value;\r
876                                                         return;\r
877 \r
878                                                 case 3:\r
879                                                         this.Poor = value;\r
880                                                         return;\r
881                                         }\r
882                                         throw new IndexOutOfRangeException();\r
883                                 }\r
884                         }\r
885                 }\r
886                 #endregion\r
887                 #region [ STLANEVALUE ]\r
888                 public STLANEVALUE nVelocityMin;\r
889                 [StructLayout( LayoutKind.Sequential )]\r
890                 public struct STLANEVALUE\r
891                 {\r
892                         public int LC;\r
893                         public int HH;\r
894                         public int SD;\r
895                         public int BD;\r
896                         public int HT;\r
897                         public int LT;\r
898                         public int FT;\r
899                         public int CY;\r
900                         public int RD;\r
901                         public int Guitar;\r
902                         public int Bass;\r
903                         public int this[ int index ]\r
904                         {\r
905                                 get\r
906                                 {\r
907                                         switch( index )\r
908                                         {\r
909                                                 case 0:\r
910                                                         return this.LC;\r
911 \r
912                                                 case 1:\r
913                                                         return this.HH;\r
914 \r
915                                                 case 2:\r
916                                                         return this.SD;\r
917 \r
918                                                 case 3:\r
919                                                         return this.BD;\r
920 \r
921                                                 case 4:\r
922                                                         return this.HT;\r
923 \r
924                                                 case 5:\r
925                                                         return this.LT;\r
926 \r
927                                                 case 6:\r
928                                                         return this.FT;\r
929 \r
930                                                 case 7:\r
931                                                         return this.CY;\r
932 \r
933                                                 case 8:\r
934                                                         return this.RD;\r
935 \r
936                                                 case 9:\r
937                                                         return this.Guitar;\r
938 \r
939                                                 case 10:\r
940                                                         return this.Bass;\r
941                                         }\r
942                                         throw new IndexOutOfRangeException();\r
943                                 }\r
944                                 set\r
945                                 {\r
946                                         switch( index )\r
947                                         {\r
948                                                 case 0:\r
949                                                         this.LC = value;\r
950                                                         return;\r
951 \r
952                                                 case 1:\r
953                                                         this.HH = value;\r
954                                                         return;\r
955 \r
956                                                 case 2:\r
957                                                         this.SD = value;\r
958                                                         return;\r
959 \r
960                                                 case 3:\r
961                                                         this.BD = value;\r
962                                                         return;\r
963 \r
964                                                 case 4:\r
965                                                         this.HT = value;\r
966                                                         return;\r
967 \r
968                                                 case 5:\r
969                                                         this.LT = value;\r
970                                                         return;\r
971 \r
972                                                 case 6:\r
973                                                         this.FT = value;\r
974                                                         return;\r
975 \r
976                                                 case 7:\r
977                                                         this.CY = value;\r
978                                                         return;\r
979 \r
980                                                 case 8:\r
981                                                         this.RD = value;\r
982                                                         return;\r
983 \r
984                                                 case 9:\r
985                                                         this.Guitar = value;\r
986                                                         return;\r
987 \r
988                                                 case 10:\r
989                                                         this.Bass = value;\r
990                                                         return;\r
991                                         }\r
992                                         throw new IndexOutOfRangeException();\r
993                                 }\r
994                         }\r
995                 }\r
996                 #endregion\r
997 \r
998                 // #27029 2012.1.5 from:\r
999                 // BDGroup が FP|BD→FP&BD に変化した際に自動変化するパラメータの値のバックアップ。FP&BD→FP|BD の時に元に戻す。\r
1000                 // これらのバックアップ値は、BDGroup が FP&BD 状態の時にのみ Config.ini に出力され、BDGroup が FP|BD に戻ったら Config.ini から消える。\r
1001                 public class CBackupOf1BD\r
1002                 {\r
1003                         public EHHGroup eHHGroup = EHHGroup.全部打ち分ける;\r
1004                         public E打ち分け時の再生の優先順位 eHitSoundPriorityHH = E打ち分け時の再生の優先順位.ChipがPadより優先;\r
1005                 }\r
1006                 public CBackupOf1BD BackupOf1BD = null;\r
1007 \r
1008                 public void SwapGuitarBassInfos_AutoFlags()\r
1009                 {\r
1010                         //bool ts = CDTXMania.ConfigIni.bAutoPlay.Bass;                 // #24415 2011.2.21 yyagi: FLIP時のリザルトにAUTOの記録が混ざらないよう、AUTOのフラグもswapする\r
1011                         //CDTXMania.ConfigIni.bAutoPlay.Bass = CDTXMania.ConfigIni.bAutoPlay.Guitar;\r
1012                         //CDTXMania.ConfigIni.bAutoPlay.Guitar = ts;\r
1013 \r
1014                         int looptime = (int) Eレーン.GtW - (int) Eレーン.GtR + 1;         // #29390 2013.1.25 yyagi ギターのAutoLane/AutoPick対応に伴い、FLIPもこれに対応\r
1015                         for ( int i = 0; i < looptime; i++ )                                                    // こんなに離れたところを独立して修正しなければならない設計ではいけませんね・・・\r
1016                         {\r
1017                                 bool b = CDTXMania.ConfigIni.bAutoPlay[ i + (int) Eレーン.BsR ];\r
1018                                 CDTXMania.ConfigIni.bAutoPlay[ i + (int) Eレーン.BsR ] = CDTXMania.ConfigIni.bAutoPlay[ i + (int) Eレーン.GtR ];\r
1019                                 CDTXMania.ConfigIni.bAutoPlay[ i + (int) Eレーン.GtR ] = b;\r
1020                         }\r
1021 \r
1022                         CDTXMania.ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped = !CDTXMania.ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped;\r
1023                 }\r
1024                 \r
1025                 // コンストラクタ\r
1026 \r
1027                 public CConfigIni()\r
1028                 {\r
1029 #if false               // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
1030                         //----------------------------------------\r
1031                         this.fGaugeFactor[0,0] =  0.004f;\r
1032                         this.fGaugeFactor[0,1] =  0.006f;\r
1033                         this.fGaugeFactor[1,0] =  0.002f;\r
1034                         this.fGaugeFactor[1,1] =  0.003f;\r
1035                         this.fGaugeFactor[2,0] =  0.000f;\r
1036                         this.fGaugeFactor[2,1] =  0.000f;\r
1037                         this.fGaugeFactor[3,0] = -0.020f;\r
1038                         this.fGaugeFactor[3,1] = -0.030f;\r
1039                         this.fGaugeFactor[4,0] = -0.050f;\r
1040                         this.fGaugeFactor[4,1] = -0.050f;\r
1041 \r
1042                         this.fDamageLevelFactor[0] = 0.5f;\r
1043                         this.fDamageLevelFactor[1] = 1.0f;\r
1044                         this.fDamageLevelFactor[2] = 1.5f;\r
1045                         //----------------------------------------\r
1046 #endif\r
1047                         this.strDTXManiaのバージョン = "Unknown";\r
1048                         this.str曲データ検索パス = @".\";\r
1049                         this.b全画面モード = false;\r
1050                         this.b垂直帰線待ちを行う = true;\r
1051                         this.n初期ウィンドウ開始位置X = 0; // #30675 2013.02.04 ikanick add\r
1052                         this.n初期ウィンドウ開始位置Y = 0;\r
1053                         this.nウインドウwidth = 0;                 // #34069 2014.7.23 yyagi 初回起動時のwindow sizeは、CDTXMania側で設定する(-> 1280x720にする)\r
1054                         this.nウインドウheight = 0;                        //\r
1055                         this.nフレーム毎スリープms = -1;                       // #xxxxx 2011.11.27 yyagi add\r
1056                         this.n非フォーカス時スリープms = 1;                  // #23568 2010.11.04 ikanick add\r
1057                         this._bGuitar有効 = true;\r
1058                         this._bDrums有効 = true;\r
1059                         this.nBGAlpha = 100;\r
1060                         this.eダメージレベル = Eダメージレベル.普通;\r
1061                         this.bSTAGEFAILED有効 = true;\r
1062                         this.bAVI有効 = true;\r
1063                         this.bBGA有効 = true;\r
1064                         this.bフィルイン有効 = true;\r
1065                         this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = 1000;\r
1066                         this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = 100;\r
1067                         this.bWave再生位置自動調整機能有効 = true;\r
1068                         this.bBGM音を発声する = true;\r
1069                         this.bドラム打音を発声する = true;\r
1070                         this.b歓声を発声する = true;\r
1071                         this.bScoreIniを出力する = true;\r
1072                         this.bランダムセレクトで子BOXを検索対象とする = true;\r
1073                         this.n表示可能な最小コンボ数 = new STDGBVALUE<int>();\r
1074                         this.n表示可能な最小コンボ数.Drums = 11;\r
1075                         this.n表示可能な最小コンボ数.Guitar = 2;\r
1076                         this.n表示可能な最小コンボ数.Bass = 2;\r
1077                         this.str選曲リストフォント = "MS PGothic";\r
1078                         this.n選曲リストフォントのサイズdot = 20;\r
1079                         this.b選曲リストフォントを太字にする = true;\r
1080                         this.n自動再生音量 = 80;\r
1081                         this.n手動再生音量 = 100;\r
1082                         this.bログ出力 = true;\r
1083                         this.b演奏音を強調する = new STDGBVALUE<bool>();\r
1084                         this.bSudden = new STDGBVALUE<bool>();\r
1085                         this.bHidden = new STDGBVALUE<bool>();\r
1086                         this.bReverse = new STDGBVALUE<bool>();\r
1087                         this.eRandom = new STDGBVALUE<Eランダムモード>();\r
1088                         this.bLight = new STDGBVALUE<bool>();\r
1089                         this.bLeft = new STDGBVALUE<bool>();\r
1090                         this.e判定位置 = new STDGBVALUE<E判定位置>();           // #33891 2014.6.26 yyagi\r
1091                         this.判定文字表示位置 = new STDGBVALUE<E判定文字表示位置>();\r
1092                         this.n譜面スクロール速度 = new STDGBVALUE<int>();\r
1093                         this.nInputAdjustTimeMs = new STDGBVALUE<int>();        // #23580 2011.1.3 yyagi\r
1094                         this.nJudgeLinePosOffset = new STDGBVALUE<int>();       // #31602 2013.6.23 yyagi\r
1095                         this.e判定表示優先度 = E判定表示優先度.Chipより下;\r
1096                         for ( int i = 0; i < 3; i++ )\r
1097                         {\r
1098                                 this.b演奏音を強調する[ i ] = true;\r
1099                                 this.bSudden[ i ] = false;\r
1100                                 this.bHidden[ i ] = false;\r
1101                                 this.bReverse[ i ] = false;\r
1102                                 this.eRandom[ i ] = Eランダムモード.OFF;\r
1103                                 this.bLight[ i ] = false;\r
1104                                 this.bLeft[ i ] = false;\r
1105                                 this.判定文字表示位置[ i ] = E判定文字表示位置.レーン上;\r
1106                                 this.n譜面スクロール速度[ i ] = 1;\r
1107                                 this.nInputAdjustTimeMs[ i ] = 0;\r
1108                                 this.nJudgeLinePosOffset[ i ] = 0;\r
1109                                 this.eInvisible[ i ] = EInvisible.OFF;\r
1110                                 this.nViewerScrollSpeed[ i ] = 1;\r
1111                                 this.e判定位置[ i ] = E判定位置.標準;\r
1112                                 //this.e判定表示優先度[ i ] = E判定表示優先度.Chipより下;\r
1113                         }\r
1114                         this.n演奏速度 = 20;\r
1115                         #region [ AutoPlay ]\r
1116                         this.bAutoPlay = new STAUTOPLAY();\r
1117                         this.bAutoPlay.HH = false;\r
1118                         this.bAutoPlay.SD = false;\r
1119                         this.bAutoPlay.BD = false;\r
1120                         this.bAutoPlay.HT = false;\r
1121                         this.bAutoPlay.LT = false;\r
1122                         this.bAutoPlay.FT = false;\r
1123                         this.bAutoPlay.CY = false;\r
1124                         this.bAutoPlay.LC = false;\r
1125                         //this.bAutoPlay.Guitar = true;\r
1126                         //this.bAutoPlay.Bass = true;\r
1127                         this.bAutoPlay.GtR = true;\r
1128                         this.bAutoPlay.GtG = true;\r
1129                         this.bAutoPlay.GtB = true;\r
1130                         this.bAutoPlay.GtPick = true;\r
1131                         this.bAutoPlay.GtW = true;\r
1132                         this.bAutoPlay.BsR = true;\r
1133                         this.bAutoPlay.BsG = true;\r
1134                         this.bAutoPlay.BsB = true;\r
1135                         this.bAutoPlay.BsPick = true;\r
1136                         this.bAutoPlay.BsW = true;\r
1137                         #endregion\r
1138                         this.nヒット範囲ms = new STRANGE();\r
1139                         this.nヒット範囲ms.Perfect = 34;\r
1140                         this.nヒット範囲ms.Great = 67;\r
1141                         this.nヒット範囲ms.Good = 84;\r
1142                         this.nヒット範囲ms.Poor = 117;\r
1143                         this.ConfigIniファイル名 = "";\r
1144                         this.dicJoystick = new Dictionary<int, string>( 10 );\r
1145                         this.tデフォルトのキーアサインに設定する();\r
1146                         #region [ velocityMin ]\r
1147                         this.nVelocityMin.LC = 0;                                       // #23857 2011.1.31 yyagi VelocityMin\r
1148                         this.nVelocityMin.HH = 20;\r
1149                         this.nVelocityMin.SD = 0;\r
1150                         this.nVelocityMin.BD = 0;\r
1151                         this.nVelocityMin.HT = 0;\r
1152                         this.nVelocityMin.LT = 0;\r
1153                         this.nVelocityMin.FT = 0;\r
1154                         this.nVelocityMin.CY = 0;\r
1155                         this.nVelocityMin.RD = 0;\r
1156                         #endregion\r
1157                         this.nRisky = 0;                                                        // #23539 2011.7.26 yyagi RISKYモード\r
1158                         this.nShowLagType = (int) EShowLagType.OFF;     // #25370 2011.6.3 yyagi ズレ時間表示\r
1159                         this.bIsAutoResultCapture = false;                      // #25399 2011.6.9 yyagi リザルト画像自動保存機能ON/OFF\r
1160 \r
1161                         this.bバッファ入力を行う = true;\r
1162                         this.bIsSwappedGuitarBass = false;                      // #24063 2011.1.16 yyagi ギターとベースの切り替え\r
1163                         this.bIsAllowedDoubleClickFullscreen = true;    // #26752 2011.11.26 ダブルクリックでのフルスクリーンモード移行を許可\r
1164                         this.eBDGroup = EBDGroup.打ち分ける;               // #27029 2012.1.4 from HHPedalとBassPedalのグルーピング\r
1165                         this.nPoliphonicSounds = 4;                                     // #28228 2012.5.1 yyagi レーン毎の最大同時発音数\r
1166                                                                                                                 // #24820 2013.1.15 yyagi 初期値を4から2に変更。BASS.net使用時の負荷軽減のため。\r
1167                                                                                                                 // #24820 2013.1.17 yyagi 初期値を4に戻した。動的なミキサー制御がうまく動作しているため。\r
1168                         this.bIsEnabledSystemMenu = true;                       // #28200 2012.5.1 yyagi System Menuの利用可否切替(使用可)\r
1169                         this.strSystemSkinSubfolderFullName = "";       // #28195 2012.5.2 yyagi 使用中のSkinサブフォルダ名\r
1170                         this.bUseBoxDefSkin = true;                                     // #28195 2012.5.6 yyagi box.defによるスキン切替機能を使用するか否か\r
1171                         this.bTight = false;                        // #29500 2012.9.11 kairera0467 TIGHTモード\r
1172                         this.nSoundDeviceType = FDK.COS.bIsVistaOrLater ?\r
1173                                 (int) ESoundDeviceTypeForConfig.WASAPI : (int) ESoundDeviceTypeForConfig.ACM;   // #24820 2012.12.23 yyagi 初期値はACM | #31927 2013.8.25 yyagi OSにより初期値変更\r
1174 //                      this.nWASAPIBufferSizeMs = 0;                           // #24820 2013.1.15 yyagi 初期値は0(自動設定)\r
1175                         this.nASIODevice = 0;                                           // #24820 2013.1.17 yyagi\r
1176 //                      this.nASIOBufferSizeMs = 0;                                     // #24820 2012.12.25 yyagi 初期値は0(自動設定)\r
1177                         this.bUseOSTimer = false;;                                      // #33689 2014.6.6 yyagi 初期値はfalse (FDKのタイマー。FROM氏考案の独自タイマー)\r
1178                         this.bDynamicBassMixerManagement = true;        //\r
1179                         this.bTimeStretch = false;                                      // #23664 2013.2.24 yyagi 初期値はfalse (再生速度変更を、ピッチ変更にて行う)\r
1180                         this.nDisplayTimesMs = 3000;                            // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップ再表示期間\r
1181                         this.nFadeoutTimeMs = 2000;                                     // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップフェードアウト時間\r
1182 \r
1183                         bViewerVSyncWait = true;\r
1184                         bViewerShowDebugStatus = true;\r
1185                         bViewerTimeStretch = false;\r
1186                         bViewerDrums有効 = true;\r
1187                         bViewerGuitar有効 = true;\r
1188 \r
1189                         //this.bNoMP3Streaming = false;\r
1190                         this.nMasterVolume = 100;                                       // #33700 2014.4.26 yyagi マスターボリュームの設定(WASAPI/ASIO用)\r
1191                 }\r
1192                 public CConfigIni( string iniファイル名 )\r
1193                         : this()\r
1194                 {\r
1195                         this.tファイルから読み込み( iniファイル名 );\r
1196                 }\r
1197 \r
1198 \r
1199                 // メソッド\r
1200 \r
1201                 public void t指定した入力が既にアサイン済みである場合はそれを全削除する( E入力デバイス DeviceType, int nID, int nCode )\r
1202                 {\r
1203                         for( int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++ )\r
1204                         {\r
1205                                 for( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )\r
1206                                 {\r
1207                                         for( int k = 0; k < 0x10; k++ )\r
1208                                         {\r
1209                                                 if( ( ( this.KeyAssign[ i ][ j ][ k ].入力デバイス == DeviceType ) && ( this.KeyAssign[ i ][ j ][ k ].ID == nID ) ) && ( this.KeyAssign[ i ][ j ][ k ].コード == nCode ) )\r
1210                                                 {\r
1211                                                         for( int m = k; m < 15; m++ )\r
1212                                                         {\r
1213                                                                 this.KeyAssign[ i ][ j ][ m ] = this.KeyAssign[ i ][ j ][ m + 1 ];\r
1214                                                         }\r
1215                                                         this.KeyAssign[ i ][ j ][ 15 ].入力デバイス = E入力デバイス.不明;\r
1216                                                         this.KeyAssign[ i ][ j ][ 15 ].ID = 0;\r
1217                                                         this.KeyAssign[ i ][ j ][ 15 ].コード = 0;\r
1218                                                         k--;\r
1219                                                 }\r
1220                                         }\r
1221                                 }\r
1222                         }\r
1223                 }\r
1224                 public void t書き出し( string iniファイル名 )\r
1225                 {\r
1226                         StreamWriter sw = new StreamWriter( iniファイル名, false, Encoding.GetEncoding( "Shift_JIS" ) );\r
1227                         sw.WriteLine( ";-------------------" );\r
1228                         \r
1229                         #region [ System ]\r
1230                         sw.WriteLine( "[System]" );\r
1231                         sw.WriteLine();\r
1232 \r
1233 #if false               // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
1234         //------------------------------\r
1235                         sw.WriteLine("; ライフゲージのパラメータ調整(調整完了後削除予定)");\r
1236                         sw.WriteLine("; GaugeFactorD: ドラムのPerfect, Great,... の回復量(ライフMAXを1.0としたときの値を指定)");\r
1237                         sw.WriteLine("; GaugeFactorG:  Gt/BsのPerfect, Great,... の回復量(ライフMAXを1.0としたときの値を指定)");\r
1238                         sw.WriteLine("; DamageFactorD: DamageLevelがSmall, Normal, Largeの時に対するダメージ係数");\r
1239                         sw.WriteLine("GaugeFactorD={0}, {1}, {2}, {3}, {4}", this.fGaugeFactor[0, 0], this.fGaugeFactor[1, 0], this.fGaugeFactor[2, 0], this.fGaugeFactor[3, 0], this.fGaugeFactor[4, 0]);\r
1240                         sw.WriteLine("GaugeFactorG={0}, {1}, {2}, {3}, {4}", this.fGaugeFactor[0, 1], this.fGaugeFactor[1, 1], this.fGaugeFactor[2, 1], this.fGaugeFactor[3, 1], this.fGaugeFactor[4, 1]);\r
1241                         sw.WriteLine("DamageFactor={0}, {1}, {2}", this.fDamageLevelFactor[0], this.fDamageLevelFactor[1], fDamageLevelFactor[2]);\r
1242                         sw.WriteLine();\r
1243         //------------------------------\r
1244 #endif\r
1245                         #region [ Version ]\r
1246                         sw.WriteLine( "; リリースバージョン" );\r
1247                         sw.WriteLine( "; Release Version." );\r
1248                         sw.WriteLine( "Version={0}", CDTXMania.VERSION );\r
1249                         sw.WriteLine();\r
1250                         #endregion\r
1251                         #region [ DTXPath ]\r
1252                         sw.WriteLine( "; 演奏データの格納されているフォルダへのパス。" );\r
1253                         sw.WriteLine( @"; セミコロン(;)で区切ることにより複数のパスを指定できます。(例: d:\DTXFiles1\;e:\DTXFiles2\)" );\r
1254                         sw.WriteLine( "; Pathes for DTX data." );\r
1255                         sw.WriteLine( @"; You can specify many pathes separated with semicolon(;). (e.g. d:\DTXFiles1\;e:\DTXFiles2\)" );\r
1256                         sw.WriteLine( "DTXPath={0}", this.str曲データ検索パス );\r
1257                         sw.WriteLine();\r
1258                         #endregion\r
1259                         #region [ スキン関連 ]\r
1260                         #region [ Skinパスの絶対パス→相対パス変換 ]\r
1261                         Uri uriRoot = new Uri( System.IO.Path.Combine( CDTXMania.strEXEのあるフォルダ, "System" + System.IO.Path.DirectorySeparatorChar ) );\r
1262                         if ( strSystemSkinSubfolderFullName != null && strSystemSkinSubfolderFullName.Length == 0 )\r
1263                         {\r
1264                                 // Config.iniが空の状態でDTXManiaをViewerとして起動・終了すると、strSystemSkinSubfolderFullName が空の状態でここに来る。\r
1265                                 // → 初期値として Default/ を設定する。\r
1266                                 strSystemSkinSubfolderFullName = System.IO.Path.Combine( CDTXMania.strEXEのあるフォルダ, "System" + System.IO.Path.DirectorySeparatorChar + "Default" + System.IO.Path.DirectorySeparatorChar );\r
1267                         }\r
1268                         Uri uriPath = new Uri( System.IO.Path.Combine( this.strSystemSkinSubfolderFullName, "." + System.IO.Path.DirectorySeparatorChar ) );\r
1269                         string relPath = uriRoot.MakeRelativeUri( uriPath ).ToString();                         // 相対パスを取得\r
1270                         relPath = System.Web.HttpUtility.UrlDecode( relPath );                                          // デコードする\r
1271                         relPath = relPath.Replace( '/', System.IO.Path.DirectorySeparatorChar );        // 区切り文字が\ではなく/なので置換する\r
1272                         #endregion\r
1273                         sw.WriteLine( "; 使用するSkinのフォルダ名。" );\r
1274                         sw.WriteLine( "; 例えば System\\Default\\Graphics\\... などの場合は、SkinPath=.\\Default\\ を指定します。" );\r
1275                         sw.WriteLine( "; Skin folder path." );\r
1276                         sw.WriteLine( "; e.g. System\\Default\\Graphics\\... -> Set SkinPath=.\\Default\\" );\r
1277                         sw.WriteLine( "SkinPath={0}", relPath );\r
1278                         sw.WriteLine();\r
1279                         sw.WriteLine( "; box.defが指定するSkinに自動で切り替えるかどうか (0=切り替えない、1=切り替える)" );\r
1280                         sw.WriteLine( "; Automatically change skin specified in box.def. (0=No 1=Yes)" );\r
1281                         sw.WriteLine( "SkinChangeByBoxDef={0}", this.bUseBoxDefSkin? 1 : 0 );\r
1282                         sw.WriteLine();\r
1283                         #endregion\r
1284                         #region [ Window関連 ]\r
1285                         sw.WriteLine( "; 画面モード(0:ウィンドウ, 1:全画面)" );\r
1286                         sw.WriteLine( "; Screen mode. (0:Window, 1:Fullscreen)" );\r
1287                         sw.WriteLine( "FullScreen={0}", this.b全画面モード ? 1 : 0 );\r
1288             sw.WriteLine();\r
1289                         sw.WriteLine("; ウインドウモード時の画面幅");                              // #23510 2010.10.31 yyagi add\r
1290                         sw.WriteLine("; A width size in the window mode.");                     //\r
1291                         sw.WriteLine("WindowWidth={0}", this.nウインドウwidth);            //\r
1292                         sw.WriteLine();                                                                                         //\r
1293                         sw.WriteLine("; ウインドウモード時の画面高さ");                           //\r
1294                         sw.WriteLine("; A height size in the window mode.");            //\r
1295                         sw.WriteLine("WindowHeight={0}", this.nウインドウheight);  //\r
1296                         sw.WriteLine();                                                                                         //\r
1297                         sw.WriteLine( "; ウィンドウモード時の位置X" );                                          // #30675 2013.02.04 ikanick add\r
1298                         sw.WriteLine( "; X position in the window mode." );                                 //\r
1299                         sw.WriteLine( "WindowX={0}", this.n初期ウィンドウ開始位置X );                        //\r
1300                         sw.WriteLine();                                                                                                 //\r
1301                         sw.WriteLine( "; ウィンドウモード時の位置Y" );                                      //\r
1302                         sw.WriteLine( "; Y position in the window mode." );                         //\r
1303                         sw.WriteLine( "WindowY={0}", this.n初期ウィンドウ開始位置Y );                //\r
1304                         sw.WriteLine();                                                                                                     //\r
1305 \r
1306                         sw.WriteLine( "; ウインドウをダブルクリックした時にフルスクリーンに移行するか(0:移行しない,1:移行する)" );       // #26752 2011.11.27 yyagi\r
1307                         sw.WriteLine( "; Whether double click to go full screen mode or not.(0:No, 1:Yes)" );           //\r
1308                         sw.WriteLine( "DoubleClickFullScreen={0}", this.bIsAllowedDoubleClickFullscreen? 1 : 0);        //\r
1309                         sw.WriteLine();                                                                                                                                                         //\r
1310                         sw.WriteLine( "; ALT+SPACEのメニュー表示を抑制するかどうか(0:抑制する 1:抑制しない)" );                // #28200 2012.5.1 yyagi\r
1311                         sw.WriteLine( "; Whether ALT+SPACE menu would be masked or not.(0=masked 1=not masked)" );      //\r
1312                         sw.WriteLine( "EnableSystemMenu={0}", this.bIsEnabledSystemMenu? 1 : 0 );                                       //\r
1313                         sw.WriteLine();                                                                                                                                                         //\r
1314                         sw.WriteLine( "; 非フォーカス時のsleep値[ms]" );                                   // #23568 2011.11.04 ikanick add\r
1315                         sw.WriteLine( "; A sleep time[ms] while the window is inactive." );     //\r
1316                         sw.WriteLine( "BackSleep={0}", this.n非フォーカス時スリープms );             // そのまま引用(苦笑)\r
1317                         sw.WriteLine();                                                                                                                 //\r
1318                         #endregion\r
1319                         #region [ フレーム処理関連(VSync, フレーム毎のsleep) ]\r
1320                         sw.WriteLine("; 垂直帰線同期(0:OFF,1:ON)");\r
1321                         sw.WriteLine( "VSyncWait={0}", this.b垂直帰線待ちを行う ? 1 : 0 );\r
1322             sw.WriteLine();\r
1323                         sw.WriteLine( "; フレーム毎のsleep値[ms] (-1でスリープ無し, 0以上で毎フレームスリープ。動画キャプチャ等で活用下さい)" );       // #xxxxx 2011.11.27 yyagi add\r
1324                         sw.WriteLine( "; A sleep time[ms] per frame." );                                                        //\r
1325                         sw.WriteLine( "SleepTimePerFrame={0}", this.nフレーム毎スリープms );           //\r
1326                         sw.WriteLine();                                                                                                                 //\r
1327                         #endregion\r
1328                         #region [ WASAPI/ASIO関連 ]\r
1329                         sw.WriteLine( "; サウンド出力方式(0=ACM(って今はまだDirectSoundですが), 1=ASIO, 2=WASAPI)" );\r
1330                         sw.WriteLine( "; WASAPIはVista以降のOSで使用可能。推奨方式はWASAPI。" );\r
1331                         sw.WriteLine( "; なお、WASAPIが使用不可ならASIOを、ASIOが使用不可ならACMを使用します。" );\r
1332                         sw.WriteLine( "; Sound device type(0=ACM, 1=ASIO, 2=WASAPI)" );\r
1333                         sw.WriteLine( "; WASAPI can use on Vista or later OSs." );\r
1334                         sw.WriteLine( "; If WASAPI is not available, DTXMania try to use ASIO. If ASIO can't be used, ACM is used." );\r
1335                         sw.WriteLine( "SoundDeviceType={0}", (int) this.nSoundDeviceType );\r
1336                         sw.WriteLine();\r
1337 \r
1338                         //sw.WriteLine( "; WASAPI使用時のサウンドバッファサイズ" );\r
1339                         //sw.WriteLine( "; (0=デバイスに設定されている値を使用, 1~9999=バッファサイズ(単位:ms)の手動指定" );\r
1340                         //sw.WriteLine( "; WASAPI Sound Buffer Size." );\r
1341                         //sw.WriteLine( "; (0=Use system default buffer size, 1-9999=specify the buffer size(ms) by yourself)" );\r
1342                         //sw.WriteLine( "WASAPIBufferSizeMs={0}", (int) this.nWASAPIBufferSizeMs );\r
1343                         //sw.WriteLine();\r
1344 \r
1345                         sw.WriteLine( "; ASIO使用時のサウンドデバイス" );\r
1346                         sw.WriteLine( "; 存在しないデバイスを指定すると、DTXManiaが起動しないことがあります。" );\r
1347                         sw.WriteLine( "; Sound device used by ASIO." );\r
1348                         sw.WriteLine( "; Don't specify unconnected device, as the DTXMania may not bootup." );\r
1349                         string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();\r
1350                         for ( int i = 0; i < asiodev.Length; i++ )\r
1351                         {\r
1352                                 sw.WriteLine( "; {0}: {1}", i, asiodev[ i ] );\r
1353                         }\r
1354                         sw.WriteLine( "ASIODevice={0}", (int) this.nASIODevice );\r
1355                         sw.WriteLine();\r
1356 \r
1357                         //sw.WriteLine( "; ASIO使用時のサウンドバッファサイズ" );\r
1358                         //sw.WriteLine( "; (0=デバイスに設定されている値を使用, 1~9999=バッファサイズ(単位:ms)の手動指定" );\r
1359                         //sw.WriteLine( "; ASIO Sound Buffer Size." );\r
1360                         //sw.WriteLine( "; (0=Use the value specified to the device, 1-9999=specify the buffer size(ms) by yourself)" );\r
1361                         //sw.WriteLine( "ASIOBufferSizeMs={0}", (int) this.nASIOBufferSizeMs );\r
1362                         //sw.WriteLine();\r
1363 \r
1364                         //sw.WriteLine( "; Bass.Mixの制御を動的に行うか否か。" );\r
1365                         //sw.WriteLine( "; ONにすると、ギター曲などチップ音の多い曲も再生できますが、画面が少しがたつきます。" );\r
1366                         //sw.WriteLine( "; (0=行わない, 1=行う)" );\r
1367                         //sw.WriteLine( "DynamicBassMixerManagement={0}", this.bDynamicBassMixerManagement ? 1 : 0 );\r
1368                         //sw.WriteLine();\r
1369 \r
1370                         sw.WriteLine( "; WASAPI/ASIO時に使用する演奏タイマーの種類" );\r
1371                         sw.WriteLine( "; Playback timer used for WASAPI/ASIO" );\r
1372                         sw.WriteLine( "; (0=FDK Timer, 1=System Timer)" );\r
1373                         sw.WriteLine( "SoundTimerType={0}", this.bUseOSTimer ? 1 : 0 );\r
1374                         sw.WriteLine();\r
1375 \r
1376                         //sw.WriteLine( "; 全体ボリュームの設定" );\r
1377                         //sw.WriteLine( "; (0=無音 ~ 100=最大。WASAPI/ASIO時のみ有効)" );\r
1378                         //sw.WriteLine( "; Master volume settings" );\r
1379                         //sw.WriteLine( "; (0=Silent - 100=Max)" );\r
1380                         //sw.WriteLine( "MasterVolume={0}", this.nMasterVolume );\r
1381                         //sw.WriteLine();\r
1382 \r
1383                         #endregion\r
1384                         #region [ ギター/ベース/ドラム 有効/無効 ]\r
1385                         sw.WriteLine( "; ギター/ベース有効(0:OFF,1:ON)" );\r
1386                         sw.WriteLine( "; Enable Guitar/Bass or not.(0:OFF,1:ON)" );\r
1387                         sw.WriteLine( "Guitar={0}", this.bGuitar有効 ? 1 : 0 );\r
1388                         sw.WriteLine();\r
1389                         sw.WriteLine( "; ドラム有効(0:OFF,1:ON)" );\r
1390                         sw.WriteLine( "; Enable Drums or not.(0:OFF,1:ON)" );\r
1391                         sw.WriteLine( "Drums={0}", this.bDrums有効 ? 1 : 0 );\r
1392                         sw.WriteLine();\r
1393                         #endregion\r
1394                         sw.WriteLine( "; 背景画像の半透明割合(0:透明~255:不透明)" );\r
1395                         sw.WriteLine( "; Transparency for background image in playing screen.(0:tranaparent - 255:no transparent)" );\r
1396                         sw.WriteLine( "BGAlpha={0}", this.nBGAlpha );\r
1397                         sw.WriteLine();\r
1398                         sw.WriteLine( "; Missヒット時のゲージ減少割合(0:少, 1:普通, 2:大)" );\r
1399                         sw.WriteLine( "DamageLevel={0}", (int) this.eダメージレベル );\r
1400                         sw.WriteLine();\r
1401                         sw.WriteLine( "; ゲージゼロでSTAGE FAILED (0:OFF, 1:ON)" );\r
1402                         sw.WriteLine( "StageFailed={0}", this.bSTAGEFAILED有効 ? 1 : 0 );\r
1403                         sw.WriteLine();\r
1404                         #region [ 打ち分け関連 ]\r
1405                         sw.WriteLine( "; LC/HHC/HHO 打ち分けモード (0:LC|HHC|HHO, 1:LC&(HHC|HHO), 2:LC|(HHC&HHO), 3:LC&HHC&HHO)" );\r
1406                         sw.WriteLine( "; LC/HHC/HHO Grouping       (0:LC|HHC|HHO, 1:LC&(HHC|HHO), 2:LC|(HHC&HHO), 3:LC&HHC&HHO)" );\r
1407                         sw.WriteLine( "HHGroup={0}", (int) this.eHHGroup );\r
1408                         sw.WriteLine();\r
1409                         sw.WriteLine( "; LT/FT 打ち分けモード (0:LT|FT, 1:LT&FT)" );\r
1410                         sw.WriteLine( "; LT/FT Grouping       (0:LT|FT, 1:LT&FT)" );\r
1411                         sw.WriteLine( "FTGroup={0}", (int) this.eFTGroup );\r
1412                         sw.WriteLine();\r
1413                         sw.WriteLine( "; CY/RD 打ち分けモード (0:CY|RD, 1:CY&RD)" );\r
1414                         sw.WriteLine( "; CY/RD Grouping       (0:CY|RD, 1:CY&RD)" );\r
1415                         sw.WriteLine( "CYGroup={0}", (int) this.eCYGroup );\r
1416                         sw.WriteLine();\r
1417                         sw.WriteLine( "; HP/BD 打ち分けモード (0:HP|BD, 1:HP&BD)" );     // #27029 2012.1.4 from\r
1418                         sw.WriteLine( "; HP/BD Grouping (0:HP|BD, 1:HP&BD)" );                  //\r
1419                         sw.WriteLine( "BDGroup={0}", (int) this.eBDGroup );                             // \r
1420                         sw.WriteLine();                                                                                                 //\r
1421                         sw.WriteLine( "; 打ち分け時の再生音の優先順位(HHGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1422                         sw.WriteLine( "; Grouping sound priority(HHGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1423                         sw.WriteLine( "HitSoundPriorityHH={0}", (int) this.eHitSoundPriorityHH );\r
1424                         sw.WriteLine();\r
1425                         sw.WriteLine( "; 打ち分け時の再生音の優先順位(FTGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1426                         sw.WriteLine( "; Grouping sound priority(FTGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1427                         sw.WriteLine( "HitSoundPriorityFT={0}", (int) this.eHitSoundPriorityFT );\r
1428                         sw.WriteLine();\r
1429                         sw.WriteLine( "; 打ち分け時の再生音の優先順位(CYGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1430                         sw.WriteLine( "; Grouping sound priority(CYGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1431                         sw.WriteLine( "HitSoundPriorityCY={0}", (int) this.eHitSoundPriorityCY );\r
1432                         sw.WriteLine();\r
1433                         sw.WriteLine( "; シンバルフリーモード(0:OFF, 1:ON)" );\r
1434                         sw.WriteLine( "; Grouping CY and LC (0:OFF, 1:ON)" );\r
1435                         sw.WriteLine( "CymbalFree={0}", this.bシンバルフリー ? 1 : 0 );\r
1436                         sw.WriteLine();\r
1437                         #endregion\r
1438                         #region [ AVI/BGA ]\r
1439                         sw.WriteLine( "; AVIの表示(0:OFF, 1:ON)" );\r
1440                         sw.WriteLine( "AVI={0}", this.bAVI有効 ? 1 : 0 );\r
1441                         sw.WriteLine();\r
1442                         sw.WriteLine( "; BGAの表示(0:OFF, 1:ON)" );\r
1443                         sw.WriteLine( "BGA={0}", this.bBGA有効 ? 1 : 0 );\r
1444                         sw.WriteLine();\r
1445                         #endregion\r
1446                         #region [ フィルイン ]\r
1447                         sw.WriteLine( "; フィルイン効果(0:OFF, 1:ON)" );\r
1448                         sw.WriteLine( "FillInEffect={0}", this.bフィルイン有効 ? 1 : 0 );\r
1449                         sw.WriteLine();\r
1450                         sw.WriteLine( "; フィルイン達成時の歓声の再生(0:OFF, 1:ON)" );\r
1451                         sw.WriteLine( "AudienceSound={0}", this.b歓声を発声する ? 1 : 0 );\r
1452                         sw.WriteLine();\r
1453                         #endregion\r
1454                         #region [ プレビュー音 ]\r
1455                         sw.WriteLine( "; 曲選択からプレビュー音の再生までのウェイト[ms]" );\r
1456                         sw.WriteLine( "PreviewSoundWait={0}", this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms );\r
1457                         sw.WriteLine();\r
1458                         sw.WriteLine( "; 曲選択からプレビュー画像表示までのウェイト[ms]" );\r
1459                         sw.WriteLine( "PreviewImageWait={0}", this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms );\r
1460                         sw.WriteLine();\r
1461                         #endregion\r
1462                         sw.WriteLine( "; Waveの再生位置自動補正(0:OFF, 1:ON)" );\r
1463                         sw.WriteLine( "AdjustWaves={0}", this.bWave再生位置自動調整機能有効 ? 1 : 0 );\r
1464                         sw.WriteLine();\r
1465                         #region [ BGM/ドラムヒット音の再生 ]\r
1466                         sw.WriteLine( "; BGM の再生(0:OFF, 1:ON)" );\r
1467                         sw.WriteLine( "BGMSound={0}", this.bBGM音を発声する ? 1 : 0 );\r
1468                         sw.WriteLine();\r
1469                         sw.WriteLine( "; ドラム打音の再生(0:OFF, 1:ON)" );\r
1470                         sw.WriteLine( "HitSound={0}", this.bドラム打音を発声する ? 1 : 0 );\r
1471                         sw.WriteLine();\r
1472                         #endregion\r
1473                         sw.WriteLine( "; 演奏記録(~.score.ini)の出力 (0:OFF, 1:ON)" );\r
1474                         sw.WriteLine( "SaveScoreIni={0}", this.bScoreIniを出力する ? 1 : 0 );\r
1475                         sw.WriteLine();\r
1476                         sw.WriteLine( "; RANDOM SELECT で子BOXを検索対象に含める (0:OFF, 1:ON)" );\r
1477                         sw.WriteLine( "RandomFromSubBox={0}", this.bランダムセレクトで子BOXを検索対象とする ? 1 : 0 );\r
1478                         sw.WriteLine();\r
1479                         #region [ モニターサウンド(ヒット音の再生音量アップ) ]\r
1480                         sw.WriteLine( "; ドラム演奏時にドラム音を強調する (0:OFF, 1:ON)" );\r
1481                         sw.WriteLine( "SoundMonitorDrums={0}", this.b演奏音を強調する.Drums ? 1 : 0 );\r
1482                         sw.WriteLine();\r
1483                         sw.WriteLine( "; ギター演奏時にギター音を強調する (0:OFF, 1:ON)" );\r
1484                         sw.WriteLine( "SoundMonitorGuitar={0}", this.b演奏音を強調する.Guitar ? 1 : 0 );\r
1485                         sw.WriteLine();\r
1486                         sw.WriteLine( "; ベース演奏時にベース音を強調する (0:OFF, 1:ON)" );\r
1487                         sw.WriteLine( "SoundMonitorBass={0}", this.b演奏音を強調する.Bass ? 1 : 0 );\r
1488                         sw.WriteLine();\r
1489                         #endregion\r
1490                         #region [ コンボ表示数 ]\r
1491                         sw.WriteLine( "; ドラムの表示可能な最小コンボ数(1~99999)" );\r
1492                         sw.WriteLine( "MinComboDrums={0}", this.n表示可能な最小コンボ数.Drums );\r
1493                         sw.WriteLine();\r
1494                         sw.WriteLine( "; ギターの表示可能な最小コンボ数(1~99999)" );\r
1495                         sw.WriteLine( "MinComboGuitar={0}", this.n表示可能な最小コンボ数.Guitar );\r
1496                         sw.WriteLine();\r
1497                         sw.WriteLine( "; ベースの表示可能な最小コンボ数(1~99999)" );\r
1498                         sw.WriteLine( "MinComboBass={0}", this.n表示可能な最小コンボ数.Bass );\r
1499                         sw.WriteLine();\r
1500                         #endregion\r
1501                         sw.WriteLine( "; 演奏情報を表示する (0:OFF, 1:ON)" );\r
1502                         sw.WriteLine( "; Showing playing info on the playing screen. (0:OFF, 1:ON)" );\r
1503                         sw.WriteLine( "ShowDebugStatus={0}", this.b演奏情報を表示する ? 1 : 0 );\r
1504                         sw.WriteLine();\r
1505                         #region [ 選曲リストのフォント ]\r
1506                         sw.WriteLine( "; 選曲リストのフォント名" );\r
1507                         sw.WriteLine( "; Font name for select song item." );\r
1508                         sw.WriteLine( "SelectListFontName={0}", this.str選曲リストフォント );\r
1509                         sw.WriteLine();\r
1510                         sw.WriteLine( "; 選曲リストのフォントのサイズ[dot]" );\r
1511                         sw.WriteLine( "; Font size[dot] for select song item." );\r
1512                         sw.WriteLine( "SelectListFontSize={0}", this.n選曲リストフォントのサイズdot );\r
1513                         sw.WriteLine();\r
1514                         sw.WriteLine( "; 選曲リストのフォントを斜体にする (0:OFF, 1:ON)" );\r
1515                         sw.WriteLine( "; Using italic font style select song list. (0:OFF, 1:ON)" );\r
1516                         sw.WriteLine( "SelectListFontItalic={0}", this.b選曲リストフォントを斜体にする ? 1 : 0 );\r
1517                         sw.WriteLine();\r
1518                         sw.WriteLine( "; 選曲リストのフォントを太字にする (0:OFF, 1:ON)" );\r
1519                         sw.WriteLine( "; Using bold font style select song list. (0:OFF, 1:ON)" );\r
1520                         sw.WriteLine( "SelectListFontBold={0}", this.b選曲リストフォントを太字にする ? 1 : 0 );\r
1521                         sw.WriteLine();\r
1522                         #endregion\r
1523                         sw.WriteLine( "; 打音の音量(0~100%)" );\r
1524                         sw.WriteLine( "; Sound volume (you're playing) (0-100%)" );\r
1525                         sw.WriteLine( "ChipVolume={0}", this.n手動再生音量 );\r
1526                         sw.WriteLine();\r
1527                         sw.WriteLine( "; 自動再生音の音量(0~100%)" );\r
1528                         sw.WriteLine( "; Sound volume (auto playing) (0-100%)" );\r
1529                         sw.WriteLine( "AutoChipVolume={0}", this.n自動再生音量 );\r
1530                         sw.WriteLine();\r
1531                         sw.WriteLine( "; ストイックモード(0:OFF, 1:ON)" );\r
1532                         sw.WriteLine( "; Stoic mode. (0:OFF, 1:ON)" );\r
1533                         sw.WriteLine( "StoicMode={0}", this.bストイックモード ? 1 : 0 );\r
1534                         sw.WriteLine();\r
1535                         sw.WriteLine( "; バッファ入力モード(0:OFF, 1:ON)" );\r
1536                         sw.WriteLine( "; Using Buffered input (0:OFF, 1:ON)" );\r
1537                         sw.WriteLine( "BufferedInput={0}", this.bバッファ入力を行う ? 1 : 0 );\r
1538                         sw.WriteLine();\r
1539                         sw.WriteLine( "; レーン毎の最大同時発音数(1~8)" );\r
1540                         sw.WriteLine( "; Number of polyphonic sounds per lane. (1-8)" );\r
1541                         sw.WriteLine( "PolyphonicSounds={0}", this.nPoliphonicSounds );\r
1542                         sw.WriteLine();\r
1543                         sw.WriteLine( "; 判定ズレ時間表示(0:OFF, 1:ON, 2=GREAT-POOR)" );                                // #25370 2011.6.3 yyagi\r
1544                         sw.WriteLine( "; Whether displaying the lag times from the just timing or not." );      //\r
1545                         sw.WriteLine( "ShowLagTime={0}", this.nShowLagType );                                                   //\r
1546                         sw.WriteLine();\r
1547                         sw.WriteLine( "; 判定・コンボ表示優先度(0:チップの下, 1:チップの上)" );\r
1548                         sw.WriteLine( "JudgeDispPriority={0}" , (int) this.e判定表示優先度 );\r
1549                         sw.WriteLine();\r
1550                         sw.WriteLine( "; リザルト画像自動保存機能(0:OFF, 1:ON)" );                                          // #25399 2011.6.9 yyagi\r
1551                         sw.WriteLine( "; Set \"1\" if you'd like to save result screen image automatically");   //\r
1552                         sw.WriteLine( "; when you get hiscore/hiskill.");                                                               //\r
1553                         sw.WriteLine( "AutoResultCapture={0}", this.bIsAutoResultCapture? 1 : 0 );              //\r
1554                         sw.WriteLine();\r
1555                         sw.WriteLine( "; 再生速度変更を、ピッチ変更で行うかどうか(0:ピッチ変更, 1:タイムストレッチ" ); // #23664 2013.2.24 yyagi\r
1556                         sw.WriteLine( "; (WASAPI/ASIO使用時のみ有効) " );\r
1557                         sw.WriteLine( "; Set \"0\" if you'd like to use pitch shift with PlaySpeed." ); //\r
1558                         sw.WriteLine( "; Set \"1\" for time stretch." );                                                                //\r
1559                         sw.WriteLine( "; (Only available when you're using using WASAPI or ASIO)" );    //\r
1560                         sw.WriteLine( "TimeStretch={0}", this.bTimeStretch ? 1 : 0 );                                   //\r
1561                         sw.WriteLine();\r
1562                         //sw.WriteLine( "; WASAPI/ASIO使用時に、MP3をストリーム再生するかどうか(0:ストリーム再生する, 1:しない)" );                      //\r
1563                         //sw.WriteLine( "; (mp3のシークがおかしくなる場合は、これを1にしてください) " );       //\r
1564                         //sw.WriteLine( "; Set \"0\" if you'd like to use mp3 streaming playback on WASAPI/ASIO." );            //\r
1565                         //sw.WriteLine( "; Set \"1\" not to use streaming playback for mp3." );                 //\r
1566                         //sw.WriteLine( "; (If you feel illegal seek with mp3, please set it to 1.)" ); //\r
1567                         //sw.WriteLine( "NoMP3Streaming={0}", this.bNoMP3Streaming ? 1 : 0 );                           //\r
1568                         //sw.WriteLine();\r
1569                         #region [ Adjust ]\r
1570                         sw.WriteLine( "; 判定タイミング調整(ドラム, ギター, ベース)(-99~99)[ms]" );         // #23580 2011.1.3 yyagi\r
1571                         sw.WriteLine("; Revision value to adjust judgement timing for the drums, guitar and bass.");    //\r
1572                         sw.WriteLine("InputAdjustTimeDrums={0}", this.nInputAdjustTimeMs.Drums);                //\r
1573                         sw.WriteLine("InputAdjustTimeGuitar={0}", this.nInputAdjustTimeMs.Guitar);              //\r
1574                         sw.WriteLine("InputAdjustTimeBass={0}", this.nInputAdjustTimeMs.Bass);                  //\r
1575                         sw.WriteLine();\r
1576 \r
1577                         sw.WriteLine( "; 判定ラインの表示位置調整(ドラム, ギター, ベース)(-99~99)[px]" );        // #31602 2013.6.23 yyagi 判定ラインの表示位置オフセット\r
1578                         sw.WriteLine( "; Offset value to adjust displaying judgement line for the drums, guitar and bass." );   //\r
1579                         sw.WriteLine( "JudgeLinePosOffsetDrums={0}",  this.nJudgeLinePosOffset.Drums );         //\r
1580                         sw.WriteLine( "JudgeLinePosOffsetGuitar={0}", this.nJudgeLinePosOffset.Guitar );        //\r
1581                         sw.WriteLine( "JudgeLinePosOffsetBass={0}",   this.nJudgeLinePosOffset.Bass );          //\r
1582 \r
1583                         sw.WriteLine( "; 判定ラインの表示位置(ギター, ベース)" );       // #33891 2014.6.26 yyagi\r
1584                         sw.WriteLine( "; 0=Normal, 1=Lower" );\r
1585                         sw.WriteLine( "; Position of the Judgement line and RGB button; Vseries compatible(1) or not(0)." );    //\r
1586                         sw.WriteLine( "JudgeLinePosModeGuitar={0}", (int) this.e判定位置.Guitar );  //\r
1587                         sw.WriteLine( "JudgeLinePosModeBass={0}  ", (int) this.e判定位置.Bass );    //\r
1588                         \r
1589                         sw.WriteLine();\r
1590                         #endregion\r
1591                         #region [ VelocityMin ]\r
1592                         sw.WriteLine( "; LC, HH, SD,...の入力切り捨て下限Velocity値(0~127)" );                      // #23857 2011.1.31 yyagi\r
1593                         sw.WriteLine( "; Minimum velocity value for LC, HH, SD, ... to accept." );              //\r
1594                         sw.WriteLine( "LCVelocityMin={0}", this.nVelocityMin.LC );                                              //\r
1595                         sw.WriteLine("HHVelocityMin={0}", this.nVelocityMin.HH );                                               //\r
1596 //                      sw.WriteLine("; ハイハット以外の入力切り捨て下限Velocity値(0~127)");                 // #23857 2010.12.12 yyagi\r
1597 //                      sw.WriteLine("; Minimum velocity value to accept. (except HiHat)");                             //\r
1598 //                      sw.WriteLine("VelocityMin={0}", this.n切り捨て下限Velocity);                                      //\r
1599 //                      sw.WriteLine();                                                                                                                                 //\r
1600                         sw.WriteLine( "SDVelocityMin={0}", this.nVelocityMin.SD );                                              //\r
1601                         sw.WriteLine( "BDVelocityMin={0}", this.nVelocityMin.BD );                                              //\r
1602                         sw.WriteLine( "HTVelocityMin={0}", this.nVelocityMin.HT );                                              //\r
1603                         sw.WriteLine( "LTVelocityMin={0}", this.nVelocityMin.LT );                                              //\r
1604                         sw.WriteLine( "FTVelocityMin={0}", this.nVelocityMin.FT );                                              //\r
1605                         sw.WriteLine( "CYVelocityMin={0}", this.nVelocityMin.CY );                                              //\r
1606                         sw.WriteLine( "RDVelocityMin={0}", this.nVelocityMin.RD );                                              //\r
1607                         sw.WriteLine();                                                                                                                                 //\r
1608                         #endregion\r
1609                         sw.WriteLine( ";-------------------" );\r
1610                         #endregion\r
1611                         #region [ Log ]\r
1612                         sw.WriteLine( "[Log]" );\r
1613                         sw.WriteLine();\r
1614                         sw.WriteLine( "; Log出力(0:OFF, 1:ON)" );\r
1615                         sw.WriteLine( "OutputLog={0}", this.bログ出力 ? 1 : 0 );\r
1616                         sw.WriteLine();\r
1617                         sw.WriteLine( "; 曲データ検索に関するLog出力(0:OFF, 1:ON)" );\r
1618                         sw.WriteLine( "TraceSongSearch={0}", this.bLog曲検索ログ出力 ? 1 : 0 );\r
1619                         sw.WriteLine();\r
1620                         sw.WriteLine( "; 画像やサウンドの作成・解放に関するLog出力(0:OFF, 1:ON)" );\r
1621                         sw.WriteLine( "TraceCreatedDisposed={0}", this.bLog作成解放ログ出力 ? 1 : 0 );\r
1622                         sw.WriteLine();\r
1623                         sw.WriteLine( "; DTX読み込み詳細に関するLog出力(0:OFF, 1:ON)" );\r
1624                         sw.WriteLine( "TraceDTXDetails={0}", this.bLogDTX詳細ログ出力 ? 1 : 0 );\r
1625                         sw.WriteLine();\r
1626                         sw.WriteLine( ";-------------------" );\r
1627                         #endregion\r
1628 \r
1629                         #region [ PlayOption ]\r
1630                         sw.WriteLine( "[PlayOption]" );\r
1631                         sw.WriteLine();\r
1632                         sw.WriteLine( "; DARKモード(0:OFF, 1:HALF, 2:FULL)" );\r
1633                         sw.WriteLine( "Dark={0}", (int) this.eDark );\r
1634                         sw.WriteLine();\r
1635                         #region [ SUDDEN ]\r
1636                         sw.WriteLine( "; ドラムSUDDENモード(0:OFF, 1:ON)" );\r
1637                         sw.WriteLine( "DrumsSudden={0}", this.bSudden.Drums ? 1 : 0 );\r
1638                         sw.WriteLine();\r
1639                         sw.WriteLine( "; ギターSUDDENモード(0:OFF, 1:ON)" );\r
1640                         sw.WriteLine( "GuitarSudden={0}", this.bSudden.Guitar ? 1 : 0 );\r
1641                         sw.WriteLine();\r
1642                         sw.WriteLine( "; ベースSUDDENモード(0:OFF, 1:ON)" );\r
1643                         sw.WriteLine( "BassSudden={0}", this.bSudden.Bass ? 1 : 0 );\r
1644                         sw.WriteLine();\r
1645                         #endregion\r
1646                         #region [ HIDDEN ]\r
1647                         sw.WriteLine( "; ドラムHIDDENモード(0:OFF, 1:ON)" );\r
1648                         sw.WriteLine( "DrumsHidden={0}", this.bHidden.Drums ? 1 : 0 );\r
1649                         sw.WriteLine();\r
1650                         sw.WriteLine( "; ギターHIDDENモード(0:OFF, 1:ON)" );\r
1651                         sw.WriteLine( "GuitarHidden={0}", this.bHidden.Guitar ? 1 : 0 );\r
1652                         sw.WriteLine();\r
1653                         sw.WriteLine( "; ベースHIDDENモード(0:OFF, 1:ON)" );\r
1654                         sw.WriteLine( "BassHidden={0}", this.bHidden.Bass ? 1 : 0 );\r
1655                         sw.WriteLine();\r
1656                         #endregion\r
1657                         #region [ Invisible ]\r
1658                         sw.WriteLine( "; ドラムチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)" );\r
1659                         sw.WriteLine( "; Drums chip invisible mode" );\r
1660                         sw.WriteLine( "DrumsInvisible={0}", (int) this.eInvisible.Drums );\r
1661                         sw.WriteLine();\r
1662                         sw.WriteLine( "; ギターチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)" );\r
1663                         sw.WriteLine( "; Guitar chip invisible mode" );\r
1664                         sw.WriteLine( "GuitarInvisible={0}", (int) this.eInvisible.Guitar );\r
1665                         sw.WriteLine();\r
1666                         sw.WriteLine( "; ベースチップ非表示モード (0:OFF, 1=SEMI, 2:FULL)" );\r
1667                         sw.WriteLine( "; Bbass chip invisible mode" );\r
1668                         sw.WriteLine( "BassInvisible={0}", (int) this.eInvisible.Bass );\r
1669                         sw.WriteLine();\r
1670                         //sw.WriteLine( "; Semi-InvisibleでMissった時のチップ再表示時間(ms)" );\r
1671                         //sw.WriteLine( "InvisibleDisplayTimeMs={0}", (int) this.nDisplayTimesMs );\r
1672                         //sw.WriteLine();\r
1673                         //sw.WriteLine( "; Semi-InvisibleでMissってチップ再表示時間終了後のフェードアウト時間(ms)" );\r
1674                         //sw.WriteLine( "InvisibleFadeoutTimeMs={0}", (int) this.nFadeoutTimeMs );\r
1675                         //sw.WriteLine();\r
1676                         #endregion\r
1677                         sw.WriteLine( "; ドラムREVERSEモード(0:OFF, 1:ON)" );\r
1678                         sw.WriteLine( "DrumsReverse={0}", this.bReverse.Drums ? 1 : 0 );\r
1679                         sw.WriteLine();\r
1680                         sw.WriteLine( "; ギターREVERSEモード(0:OFF, 1:ON)" );\r
1681                         sw.WriteLine( "GuitarReverse={0}", this.bReverse.Guitar ? 1 : 0 );\r
1682                         sw.WriteLine();\r
1683                         sw.WriteLine( "; ベースREVERSEモード(0:OFF, 1:ON)" );\r
1684                         sw.WriteLine( "BassReverse={0}", this.bReverse.Bass ? 1 : 0 );\r
1685                         sw.WriteLine();\r
1686                         sw.WriteLine( "; ギターRANDOMモード(0:OFF, 1:Random, 2:SuperRandom, 3:HyperRandom)" );\r
1687                         sw.WriteLine( "GuitarRandom={0}", (int) this.eRandom.Guitar );\r
1688                         sw.WriteLine();\r
1689                         sw.WriteLine( "; ベースRANDOMモード(0:OFF, 1:Random, 2:SuperRandom, 3:HyperRandom)" );\r
1690                         sw.WriteLine( "BassRandom={0}", (int) this.eRandom.Bass );\r
1691                         sw.WriteLine();\r
1692                         sw.WriteLine( "; ギターLIGHTモード(0:OFF, 1:ON)" );\r
1693                         sw.WriteLine( "GuitarLight={0}", this.bLight.Guitar ? 1 : 0 );\r
1694                         sw.WriteLine();\r
1695                         sw.WriteLine( "; ベースLIGHTモード(0:OFF, 1:ON)" );\r
1696                         sw.WriteLine( "BassLight={0}", this.bLight.Bass ? 1 : 0 );\r
1697                         sw.WriteLine();\r
1698                         sw.WriteLine( "; ギターLEFTモード(0:OFF, 1:ON)" );\r
1699                         sw.WriteLine( "GuitarLeft={0}", this.bLeft.Guitar ? 1 : 0 );\r
1700                         sw.WriteLine();\r
1701                         sw.WriteLine( "; ベースLEFTモード(0:OFF, 1:ON)" );\r
1702                         sw.WriteLine( "BassLeft={0}", this.bLeft.Bass ? 1 : 0 );\r
1703                         sw.WriteLine();\r
1704                         sw.WriteLine( "; RISKYモード(0:OFF, 1-10)" );                                                                        // #23559 2011.6.23 yyagi\r
1705                         sw.WriteLine( "; RISKY mode. 0=OFF, 1-10 is the times of misses to be Failed." );       //\r
1706                         sw.WriteLine( "Risky={0}", this.nRisky );                       //\r
1707                         sw.WriteLine();\r
1708                         sw.WriteLine( "; TIGHTモード(0:OFF, 1:ON)" );                                                                        // #29500 2012.9.11 kairera0467\r
1709                         sw.WriteLine( "; TIGHT mode. 0=OFF, 1=ON " );\r
1710                         sw.WriteLine( "DrumsTight={0}", this.bTight ? 1 : 0 );\r
1711                         sw.WriteLine();\r
1712                         sw.WriteLine( "; ドラム判定文字表示位置(0:表示OFF, 1:レーン上, 2:判定ライン上)" );\r
1713                         sw.WriteLine( "; Drums Judgement display position (0:OFF, 1:on the lane, 2:over the judge line)" );\r
1714                         sw.WriteLine( "DrumsPosition={0}", (int) this.判定文字表示位置.Drums );\r
1715                         sw.WriteLine();\r
1716                         sw.WriteLine( "; ギター判定文字表示位置(0:表示IFF, 1:レーン上, 2:判定ライン上, 3:コンボ下)" );\r
1717                         sw.WriteLine( "; Guitar Judgement display position (0:OFF, 1:on the lane, 2:over the judge line, 3:under combo)" );\r
1718                         sw.WriteLine( "GuitarPosition={0}", (int) this.判定文字表示位置.Guitar );\r
1719                         sw.WriteLine();\r
1720                         sw.WriteLine( "; ベース判定文字表示位置(0:表示OFF, 1:レーン上, 2:判定ライン上, 3:コンボ下)" );\r
1721                         sw.WriteLine( "; Bass Judgement display position (0:OFF, 1:on the lane, 2:over the judge line, 3:under combo)" );\r
1722                         sw.WriteLine( "BassPosition={0}", (int) this.判定文字表示位置.Bass );\r
1723                         sw.WriteLine();\r
1724                         sw.WriteLine( "; ドラム譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)" );\r
1725                         sw.WriteLine( "DrumsScrollSpeed={0}", this.n譜面スクロール速度.Drums );\r
1726                         sw.WriteLine();\r
1727                         sw.WriteLine( "; ギター譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)" );\r
1728                         sw.WriteLine( "GuitarScrollSpeed={0}", this.n譜面スクロール速度.Guitar );\r
1729                         sw.WriteLine();\r
1730                         sw.WriteLine( "; ベース譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)" );\r
1731                         sw.WriteLine( "BassScrollSpeed={0}", this.n譜面スクロール速度.Bass );\r
1732                         sw.WriteLine();\r
1733                         sw.WriteLine( "; 演奏速度(5~40)(→x5/20~x40/20)" );\r
1734                         sw.WriteLine( "PlaySpeed={0}", this.n演奏速度 );\r
1735                         sw.WriteLine();\r
1736                         sw.WriteLine( "; ドラムCOMBO文字表示位置(0:左, 1:中, 2:右, 3:OFF)" );\r
1737                         sw.WriteLine( "ComboPosition={0}", (int) this.ドラムコンボ文字の表示位置 );\r
1738                         sw.WriteLine();\r
1739                         //sw.WriteLine( "; 判定・コンボ表示優先度(0:チップの下, 1:チップの上)" );\r
1740                         //sw.WriteLine( "JudgeDispPriorityDrums={0}" , (int) this.e判定表示優先度.Drums );\r
1741                         //sw.WriteLine( "JudgeDispPriorityGuitar={0}", (int) this.e判定表示優先度.Guitar );\r
1742                         //sw.WriteLine( "JudgeDispPriorityBass={0}"  , (int) this.e判定表示優先度.Bass );\r
1743                         //sw.WriteLine();\r
1744 \r
1745             // #24074 2011.01.23 add ikanick\r
1746                         sw.WriteLine( "; ドラムグラフ表示(0:OFF, 1:ON)" );\r
1747                         sw.WriteLine( "DrumsGraph={0}", this.bGraph.Drums ? 1 : 0 );\r
1748                         sw.WriteLine();\r
1749 \r
1750                         sw.WriteLine( ";-------------------" );\r
1751                         #endregion\r
1752 \r
1753                         #region [ ViewerOption ]\r
1754                         sw.WriteLine( "[ViewerOption]" );\r
1755                         sw.WriteLine();\r
1756                         sw.WriteLine( "; Viewerモード時専用 ドラム譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)" );\r
1757                         sw.WriteLine( "; for viewer mode; Drums Scroll Speed" );\r
1758                         sw.WriteLine( "ViewerDrumsScrollSpeed={0}", this.nViewerScrollSpeed.Drums );\r
1759                         sw.WriteLine();\r
1760                         sw.WriteLine( "; Viewerモード時専用 ギター譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
1761                         sw.WriteLine( "; for viewer mode; Guitar Scroll Speed" );\r
1762                         sw.WriteLine( "ViewerGuitarScrollSpeed={0}", this.nViewerScrollSpeed.Guitar );\r
1763                         sw.WriteLine();\r
1764                         sw.WriteLine( "; Viewerモード時専用 ベース譜面スクロール速度(0:x0.5, 1:x1.0, 2:x1.5,…,1999:x1000.0)");\r
1765                         sw.WriteLine( "; for viewer mode; Bass Scroll Speed" );\r
1766                         sw.WriteLine( "ViewerBassScrollSpeed={0}", this.nViewerScrollSpeed.Bass );\r
1767                         sw.WriteLine();\r
1768                         sw.WriteLine( "; Viewerモード時専用 垂直帰線同期(0:OFF,1:ON)" );\r
1769                         sw.WriteLine( "; for viewer mode; Use whether Vertical Sync or not." );\r
1770                         sw.WriteLine( "ViewerVSyncWait={0}", this.bViewerVSyncWait ? 1 : 0 );\r
1771                         sw.WriteLine();\r
1772                         sw.WriteLine( "; Viewerモード時専用 演奏情報を表示する (0:OFF, 1:ON) ");\r
1773                         sw.WriteLine( "; for viewer mode;" );\r
1774                         sw.WriteLine( "; Showing playing info on the playing screen. (0:OFF, 1:ON) " );\r
1775                         sw.WriteLine( "ViewerShowDebugStatus={0}", this.bViewerShowDebugStatus? 1 : 0 );\r
1776                         sw.WriteLine();\r
1777                         sw.WriteLine( "; Viewerモード時専用 再生速度変更を、ピッチ変更で行うかどうか(0:ピッチ変更, 1:タイムストレッチ ");\r
1778                         sw.WriteLine( "; (WASAPI/ASIO使用時のみ有効)  ");\r
1779                         sw.WriteLine( "; for viewer mode;" );\r
1780                         sw.WriteLine( "; Set \"0\" if you'd like to use pitch shift with PlaySpeed. " );\r
1781                         sw.WriteLine( "; Set \"1\" for time stretch. " );\r
1782                         sw.WriteLine( "; (Only available when you're using using WASAPI or ASIO) ");\r
1783                         sw.WriteLine( "ViewerTimeStretch={0}", this.bViewerTimeStretch? 1 : 0 );\r
1784                         sw.WriteLine();\r
1785                         sw.WriteLine( "; Viewerモード時専用 ギター/ベース有効(0:OFF,1:ON) ");\r
1786                         sw.WriteLine( "; for viewer mode;" );\r
1787                         sw.WriteLine( "; Enable Guitar/Bass or not.(0:OFF,1:ON) " );\r
1788                         sw.WriteLine( "ViewerGuitar={0}", this.bViewerGuitar有効? 1 : 0 );\r
1789                         sw.WriteLine();\r
1790                         sw.WriteLine( "; Viewerモード時専用 ドラム有効(0:OFF,1:ON) ");\r
1791                         sw.WriteLine( "; for viewer mode;" );\r
1792                         sw.WriteLine( "; Enable Drums or not.(0:OFF,1:ON) " );\r
1793                         sw.WriteLine( "ViewerDrums={0}", this.bViewerDrums有効? 1 : 0 );\r
1794                         sw.WriteLine();\r
1795                         sw.WriteLine( ";-------------------" );\r
1796                         #endregion\r
1797 \r
1798                         #region [ AutoPlay ]\r
1799                         sw.WriteLine( "[AutoPlay]" );\r
1800                         sw.WriteLine();\r
1801                         sw.WriteLine( "; 自動演奏(0:OFF, 1:ON)" );\r
1802                         sw.WriteLine();\r
1803                         sw.WriteLine( "; Drums" );\r
1804                         sw.WriteLine( "LC={0}", this.bAutoPlay.LC ? 1 : 0 );\r
1805                         sw.WriteLine( "HH={0}", this.bAutoPlay.HH ? 1 : 0 );\r
1806                         sw.WriteLine( "SD={0}", this.bAutoPlay.SD ? 1 : 0 );\r
1807                         sw.WriteLine( "BD={0}", this.bAutoPlay.BD ? 1 : 0 );\r
1808                         sw.WriteLine( "HT={0}", this.bAutoPlay.HT ? 1 : 0 );\r
1809                         sw.WriteLine( "LT={0}", this.bAutoPlay.LT ? 1 : 0 );\r
1810                         sw.WriteLine( "FT={0}", this.bAutoPlay.FT ? 1 : 0 );\r
1811                         sw.WriteLine( "CY={0}", this.bAutoPlay.CY ? 1 : 0 );\r
1812                         sw.WriteLine();\r
1813                         sw.WriteLine( "; Guitar" );\r
1814                         //sw.WriteLine( "Guitar={0}", this.bAutoPlay.Guitar ? 1 : 0 );\r
1815                         sw.WriteLine( "GuitarR={0}", this.bAutoPlay.GtR ? 1 : 0 );\r
1816                         sw.WriteLine( "GuitarG={0}", this.bAutoPlay.GtG ? 1 : 0 );\r
1817                         sw.WriteLine( "GuitarB={0}", this.bAutoPlay.GtB ? 1 : 0 );\r
1818                         sw.WriteLine( "GuitarPick={0}", this.bAutoPlay.GtPick ? 1 : 0 );\r
1819                         sw.WriteLine( "GuitarWailing={0}", this.bAutoPlay.GtW ? 1 : 0 );\r
1820                         sw.WriteLine();\r
1821                         sw.WriteLine( "; Bass" );\r
1822                         // sw.WriteLine( "Bass={0}", this.bAutoPlay.Bass ? 1 : 0 );\r
1823                         sw.WriteLine( "BassR={0}", this.bAutoPlay.BsR ? 1 : 0 );\r
1824                         sw.WriteLine( "BassG={0}", this.bAutoPlay.BsG ? 1 : 0 );\r
1825                         sw.WriteLine( "BassB={0}", this.bAutoPlay.BsB ? 1 : 0 );\r
1826                         sw.WriteLine( "BassPick={0}", this.bAutoPlay.BsPick ? 1 : 0 );\r
1827                         sw.WriteLine( "BassWailing={0}", this.bAutoPlay.BsW ? 1 : 0 );\r
1828                         sw.WriteLine();\r
1829                         sw.WriteLine( ";-------------------" );\r
1830                         #endregion\r
1831 \r
1832                         #region [ HitRange ]\r
1833                         sw.WriteLine( "[HitRange]" );\r
1834                         sw.WriteLine();\r
1835                         sw.WriteLine( "; Perfect~Poor とみなされる範囲[ms]" );\r
1836                         sw.WriteLine( "Perfect={0}", this.nヒット範囲ms.Perfect );\r
1837                         sw.WriteLine( "Great={0}", this.nヒット範囲ms.Great );\r
1838                         sw.WriteLine( "Good={0}", this.nヒット範囲ms.Good );\r
1839                         sw.WriteLine( "Poor={0}", this.nヒット範囲ms.Poor );\r
1840                         sw.WriteLine();\r
1841                         sw.WriteLine( ";-------------------" );\r
1842                         #endregion\r
1843                         #region [ GUID ]\r
1844                         sw.WriteLine( "[GUID]" );\r
1845                         sw.WriteLine();\r
1846                         foreach( KeyValuePair<int, string> pair in this.dicJoystick )\r
1847                         {\r
1848                                 sw.WriteLine( "JoystickID={0},{1}", pair.Key, pair.Value );\r
1849                         }\r
1850                         #endregion\r
1851                         #region [ DrumsKeyAssign ]\r
1852                         sw.WriteLine();\r
1853                         sw.WriteLine( ";-------------------" );\r
1854                         sw.WriteLine( "; キーアサイン" );\r
1855                         sw.WriteLine( ";   項 目:Keyboard → 'K'+'0'+キーコード(10進数)" );\r
1856                         sw.WriteLine( ";           Mouse    → 'N'+'0'+ボタン番号(0~7)" );\r
1857                         sw.WriteLine( ";           MIDI In  → 'M'+デバイス番号1桁(0~9,A~Z)+ノート番号(10進数)" );\r
1858                         sw.WriteLine( ";           Joystick → 'J'+デバイス番号1桁(0~9,A~Z)+ 0 ...... X減少(左)ボタン" );\r
1859                         sw.WriteLine( ";                                                         1 ...... X増加(右)ボタン" );\r
1860                         sw.WriteLine( ";                                                         2 ...... Y減少(上)ボタン" );\r
1861                         sw.WriteLine( ";                                                         3 ...... Y増加(下)ボタン" );\r
1862                         sw.WriteLine( ";                                                         4 ...... Z減少(前)ボタン" );\r
1863                         sw.WriteLine( ";                                                         5 ...... Z増加(後)ボタン" );\r
1864                         sw.WriteLine( ";                                                         6~133.. ボタン1~128" );\r
1865                         sw.WriteLine( ";           これらの項目を 16 個まで指定可能(',' で区切って記述)。" );\r
1866                         sw.WriteLine( ";" );\r
1867                         sw.WriteLine( ";   表記例:HH=K044,M042,J16" );\r
1868                         sw.WriteLine( ";           → HiHat を Keyboard の 44 ('Z'), MidiIn#0 の 42, JoyPad#1 の 6(ボタン1) に割当て" );\r
1869                         sw.WriteLine( ";" );\r
1870                         sw.WriteLine( ";   ※Joystick のデバイス番号とデバイスとの関係は [GUID] セクションに記してあるものが有効。" );\r
1871                         sw.WriteLine( ";" );\r
1872                         sw.WriteLine();\r
1873                         sw.WriteLine( "[DrumsKeyAssign]" );\r
1874                         sw.WriteLine();\r
1875                         sw.Write( "HH=" );\r
1876                         this.tキーの書き出し( sw, this.KeyAssign.Drums.HH );\r
1877                         sw.WriteLine();\r
1878                         sw.Write( "SD=" );\r
1879                         this.tキーの書き出し( sw, this.KeyAssign.Drums.SD );\r
1880                         sw.WriteLine();\r
1881                         sw.Write( "BD=" );\r
1882                         this.tキーの書き出し( sw, this.KeyAssign.Drums.BD );\r
1883                         sw.WriteLine();\r
1884                         sw.Write( "HT=" );\r
1885                         this.tキーの書き出し( sw, this.KeyAssign.Drums.HT );\r
1886                         sw.WriteLine();\r
1887                         sw.Write( "LT=" );\r
1888                         this.tキーの書き出し( sw, this.KeyAssign.Drums.LT );\r
1889                         sw.WriteLine();\r
1890                         sw.Write( "FT=" );\r
1891                         this.tキーの書き出し( sw, this.KeyAssign.Drums.FT );\r
1892                         sw.WriteLine();\r
1893                         sw.Write( "CY=" );\r
1894                         this.tキーの書き出し( sw, this.KeyAssign.Drums.CY );\r
1895                         sw.WriteLine();\r
1896                         sw.Write( "HO=" );\r
1897                         this.tキーの書き出し( sw, this.KeyAssign.Drums.HHO );\r
1898                         sw.WriteLine();\r
1899                         sw.Write( "RD=" );\r
1900                         this.tキーの書き出し( sw, this.KeyAssign.Drums.RD );\r
1901                         sw.WriteLine();\r
1902                         sw.Write( "LC=" );\r
1903                         this.tキーの書き出し( sw, this.KeyAssign.Drums.LC );\r
1904                         sw.WriteLine();\r
1905                         sw.Write( "HP=" );                                                                              // #27029 2012.1.4 from\r
1906                         this.tキーの書き出し( sw, this.KeyAssign.Drums.HP );     //\r
1907                         sw.WriteLine();                                                                                 //\r
1908                         sw.WriteLine();\r
1909                         #endregion\r
1910                         #region [ GuitarKeyAssign ]\r
1911                         sw.WriteLine( "[GuitarKeyAssign]" );\r
1912                         sw.WriteLine();\r
1913                         sw.Write( "R=" );\r
1914                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.R );\r
1915                         sw.WriteLine();\r
1916                         sw.Write( "G=" );\r
1917                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.G );\r
1918                         sw.WriteLine();\r
1919                         sw.Write( "B=" );\r
1920                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.B );\r
1921                         sw.WriteLine();\r
1922                         sw.Write( "Pick=" );\r
1923                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.Pick );\r
1924                         sw.WriteLine();\r
1925                         sw.Write( "Wail=" );\r
1926                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.Wail );\r
1927                         sw.WriteLine();\r
1928                         sw.Write( "Decide=" );\r
1929                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.Decide );\r
1930                         sw.WriteLine();\r
1931                         sw.Write( "Cancel=" );\r
1932                         this.tキーの書き出し( sw, this.KeyAssign.Guitar.Cancel );\r
1933                         sw.WriteLine();\r
1934                         sw.WriteLine();\r
1935                         #endregion\r
1936                         #region [ BassKeyAssign ]\r
1937                         sw.WriteLine( "[BassKeyAssign]" );\r
1938                         sw.WriteLine();\r
1939                         sw.Write( "R=" );\r
1940                         this.tキーの書き出し( sw, this.KeyAssign.Bass.R );\r
1941                         sw.WriteLine();\r
1942                         sw.Write( "G=" );\r
1943                         this.tキーの書き出し( sw, this.KeyAssign.Bass.G );\r
1944                         sw.WriteLine();\r
1945                         sw.Write( "B=" );\r
1946                         this.tキーの書き出し( sw, this.KeyAssign.Bass.B );\r
1947                         sw.WriteLine();\r
1948                         sw.Write( "Pick=" );\r
1949                         this.tキーの書き出し( sw, this.KeyAssign.Bass.Pick );\r
1950                         sw.WriteLine();\r
1951                         sw.Write( "Wail=" );\r
1952                         this.tキーの書き出し( sw, this.KeyAssign.Bass.Wail );\r
1953                         sw.WriteLine();\r
1954                         sw.Write( "Decide=" );\r
1955                         this.tキーの書き出し( sw, this.KeyAssign.Bass.Decide );\r
1956                         sw.WriteLine();\r
1957                         sw.Write( "Cancel=" );\r
1958                         this.tキーの書き出し( sw, this.KeyAssign.Bass.Cancel );\r
1959                         sw.WriteLine();\r
1960                         sw.WriteLine();\r
1961                         #endregion\r
1962                         #region [ SystemkeyAssign ]\r
1963                         sw.WriteLine( "[SystemKeyAssign]" );\r
1964                         sw.WriteLine();\r
1965                         sw.Write( "Capture=" );\r
1966                         this.tキーの書き出し( sw, this.KeyAssign.System.Capture );\r
1967                         sw.WriteLine();\r
1968                         sw.WriteLine();\r
1969                         #endregion\r
1970 \r
1971                         #region [ Temp ]        - 2012.1.5 from add\r
1972                         sw.WriteLine( "[Temp]" );\r
1973                         sw.WriteLine();\r
1974                         if( ( this.eBDGroup == EBDGroup.どっちもBD ) && ( this.BackupOf1BD != null ) )              // #27029 2012.1.5 from: 有効な場合にのみ出力する。\r
1975                         {\r
1976                                 sw.WriteLine( "; BDGroup が FP|BD→FP&BD に変わった時の LC/HHC/HHO 打ち分けモード(0:LC|HHC|HHO, 1:LC&(HHC|HHO), 2:LC&HHC&HHO)" );\r
1977                                 sw.WriteLine( "BackupOf1BD_HHGroup={0}", (int) this.BackupOf1BD.eHHGroup );\r
1978                                 sw.WriteLine();\r
1979                                 sw.WriteLine( ";BDGropu が FP|BD→FP&BD に変わった時の打ち分け時の再生音の優先順位(HHGroup)(0:Chip>Pad, 1:Pad>Chip)" );\r
1980                                 sw.WriteLine( "BackupOf1BD_HitSoundPriorityHH={0}", (int) this.BackupOf1BD.eHitSoundPriorityHH );\r
1981                                 sw.WriteLine();\r
1982                         }\r
1983                         sw.WriteLine( ";-------------------" );\r
1984                         #endregion\r
1985                         \r
1986                         sw.Close();\r
1987                 }\r
1988                 public void tファイルから読み込み( string iniファイル名 )\r
1989                 {\r
1990                         this.ConfigIniファイル名 = iniファイル名;\r
1991                         this.bConfigIniが存在している = File.Exists( this.ConfigIniファイル名 );\r
1992                         if( this.bConfigIniが存在している )\r
1993                         {\r
1994                                 string str;\r
1995                                 this.tキーアサインを全部クリアする();\r
1996                                 using ( StreamReader reader = new StreamReader( this.ConfigIniファイル名, Encoding.GetEncoding( "Shift_JIS" ) ) )\r
1997                                 {\r
1998                                         str = reader.ReadToEnd();\r
1999                                 }\r
2000                                 t文字列から読み込み( str );\r
2001                                 CDTXVersion version = new CDTXVersion( this.strDTXManiaのバージョン );\r
2002                                 if( version.n整数部 <= 69 )\r
2003                                 {\r
2004                                         this.tデフォルトのキーアサインに設定する();\r
2005                                 }\r
2006                         }\r
2007                 }\r
2008 \r
2009                 private void t文字列から読み込み( string strAllSettings )      // 2011.4.13 yyagi; refactored to make initial KeyConfig easier.\r
2010                 {\r
2011                         Eセクション種別 unknown = Eセクション種別.Unknown;\r
2012                         string[] delimiter = { "\n" };\r
2013                         string[] strSingleLine = strAllSettings.Split( delimiter, StringSplitOptions.RemoveEmptyEntries );\r
2014                         foreach ( string s in strSingleLine )\r
2015                         {\r
2016                                 string str = s.Replace( '\t', ' ' ).TrimStart( new char[] { '\t', ' ' } );\r
2017                                 if ( ( str.Length != 0 ) && ( str[ 0 ] != ';' ) )\r
2018                                 {\r
2019                                         try\r
2020                                         {\r
2021                                                 string str3;\r
2022                                                 string str4;\r
2023                                                 if ( str[ 0 ] == '[' )\r
2024                                                 {\r
2025                                                         #region [ セクションの変更 ]\r
2026                                                         //-----------------------------\r
2027                                                         StringBuilder builder = new StringBuilder( 0x20 );\r
2028                                                         int num = 1;\r
2029                                                         while ( ( num < str.Length ) && ( str[ num ] != ']' ) )\r
2030                                                         {\r
2031                                                                 builder.Append( str[ num++ ] );\r
2032                                                         }\r
2033                                                         string str2 = builder.ToString();\r
2034                                                         if ( str2.Equals( "System" ) )\r
2035                                                         {\r
2036                                                                 unknown = Eセクション種別.System;\r
2037                                                         }\r
2038                                                         else if ( str2.Equals( "Log" ) )\r
2039                                                         {\r
2040                                                                 unknown = Eセクション種別.Log;\r
2041                                                         }\r
2042                                                         else if ( str2.Equals( "PlayOption" ) )\r
2043                                                         {\r
2044                                                                 unknown = Eセクション種別.PlayOption;\r
2045                                                         }\r
2046                                                         else if ( str2.Equals( "ViewerOption" ) )\r
2047                                                         {\r
2048                                                                 unknown = Eセクション種別.ViewerOption;\r
2049                                                         }\r
2050                                                         else if ( str2.Equals( "AutoPlay" ) )\r
2051                                                         {\r
2052                                                                 unknown = Eセクション種別.AutoPlay;\r
2053                                                         }\r
2054                                                         else if ( str2.Equals( "HitRange" ) )\r
2055                                                         {\r
2056                                                                 unknown = Eセクション種別.HitRange;\r
2057                                                         }\r
2058                                                         else if ( str2.Equals( "GUID" ) )\r
2059                                                         {\r
2060                                                                 unknown = Eセクション種別.GUID;\r
2061                                                         }\r
2062                                                         else if ( str2.Equals( "DrumsKeyAssign" ) )\r
2063                                                         {\r
2064                                                                 unknown = Eセクション種別.DrumsKeyAssign;\r
2065                                                         }\r
2066                                                         else if ( str2.Equals( "GuitarKeyAssign" ) )\r
2067                                                         {\r
2068                                                                 unknown = Eセクション種別.GuitarKeyAssign;\r
2069                                                         }\r
2070                                                         else if ( str2.Equals( "BassKeyAssign" ) )\r
2071                                                         {\r
2072                                                                 unknown = Eセクション種別.BassKeyAssign;\r
2073                                                         }\r
2074                                                         else if ( str2.Equals( "SystemKeyAssign" ) )\r
2075                                                         {\r
2076                                                                 unknown = Eセクション種別.SystemKeyAssign;\r
2077                                                         }\r
2078                                                         else if( str2.Equals( "Temp" ) )\r
2079                                                         {\r
2080                                                                 unknown = Eセクション種別.Temp;\r
2081                                                         }\r
2082                                                         else\r
2083                                                         {\r
2084                                                                 unknown = Eセクション種別.Unknown;\r
2085                                                         }\r
2086                                                         //-----------------------------\r
2087                                                         #endregion\r
2088                                                 }\r
2089                                                 else\r
2090                                                 {\r
2091                                                         string[] strArray = str.Split( new char[] { '=' } );\r
2092                                                         if( strArray.Length == 2 )\r
2093                                                         {\r
2094                                                                 str3 = strArray[ 0 ].Trim();\r
2095                                                                 str4 = strArray[ 1 ].Trim();\r
2096                                                                 switch( unknown )\r
2097                                                                 {\r
2098                                                                         #region [ [System] ]\r
2099                                                                         //-----------------------------\r
2100                                                                         case Eセクション種別.System:\r
2101                                                                                 {\r
2102 #if false               // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化\r
2103                                                                                 //----------------------------------------\r
2104                                                                                                 if (str3.Equals("GaugeFactorD"))\r
2105                                                                                                 {\r
2106                                                                                                         int p = 0;\r
2107                                                                                                         string[] splittedFactor = str4.Split(',');\r
2108                                                                                                         foreach (string s in splittedFactor) {\r
2109                                                                                                                 this.fGaugeFactor[p++, 0] = Convert.ToSingle(s);\r
2110                                                                                                         }\r
2111                                                                                                 } else\r
2112                                                                                                 if (str3.Equals("GaugeFactorG"))\r
2113                                                                                                 {\r
2114                                                                                                         int p = 0;\r
2115                                                                                                         string[] splittedFactor = str4.Split(',');\r
2116                                                                                                         foreach (string s in splittedFactor)\r
2117                                                                                                         {\r
2118                                                                                                                 this.fGaugeFactor[p++, 1] = Convert.ToSingle(s);\r
2119                                                                                                         }\r
2120                                                                                                 }\r
2121                                                                                                 else\r
2122                                                                                                 if (str3.Equals("DamageFactor"))\r
2123                                                                                                 {\r
2124                                                                                                         int p = 0;\r
2125                                                                                                         string[] splittedFactor = str4.Split(',');\r
2126                                                                                                         foreach (string s in splittedFactor)\r
2127                                                                                                         {\r
2128                                                                                                                 this.fDamageLevelFactor[p++] = Convert.ToSingle(s);\r
2129                                                                                                         }\r
2130                                                                                                 }\r
2131                                                                                                 else\r
2132                                                                                 //----------------------------------------\r
2133 #endif\r
2134                                                                                         #region [ Version ]\r
2135                                                                                         if ( str3.Equals( "Version" ) )\r
2136                                                                                         {\r
2137                                                                                                 this.strDTXManiaのバージョン = str4;\r
2138                                                                                         }\r
2139                                                                                         #endregion\r
2140                                                                                         #region [ DTXPath ]\r
2141                                                                                         else if( str3.Equals( "DTXPath" ) )\r
2142                                                                                         {\r
2143                                                                                                 this.str曲データ検索パス = str4;\r
2144                                                                                         }\r
2145                                                                                         #endregion\r
2146                                                                                         #region [ skin関係 ]\r
2147                                                                                         else if ( str3.Equals( "SkinPath" ) )\r
2148                                                                                         {\r
2149                                                                                                 string absSkinPath = str4;\r
2150                                                                                                 if ( !System.IO.Path.IsPathRooted( str4 ) )\r
2151                                                                                                 {\r
2152                                                                                                         absSkinPath = System.IO.Path.Combine( CDTXMania.strEXEのあるフォルダ, "System" );\r
2153                                                                                                         absSkinPath = System.IO.Path.Combine( absSkinPath, str4 );\r
2154                                                                                                         Uri u = new Uri( absSkinPath );\r
2155                                                                                                         absSkinPath = u.AbsolutePath.ToString();        // str4内に相対パスがある場合に備える\r
2156                                                                                                         absSkinPath = System.Web.HttpUtility.UrlDecode( absSkinPath );                                          // デコードする\r
2157                                                                                                         absSkinPath = absSkinPath.Replace( '/', System.IO.Path.DirectorySeparatorChar );        // 区切り文字が\ではなく/なので置換する\r
2158                                                                                                 }\r
2159                                                                                                 if ( absSkinPath[ absSkinPath.Length - 1 ] != System.IO.Path.DirectorySeparatorChar )   // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する\r
2160                                                                                                 {\r
2161                                                                                                         absSkinPath += System.IO.Path.DirectorySeparatorChar;\r
2162                                                                                                 }\r
2163                                                                                                 this.strSystemSkinSubfolderFullName = absSkinPath;\r
2164                                                                                         }\r
2165                                                                                         else if ( str3.Equals( "SkinChangeByBoxDef" ) )\r
2166                                                                                         {\r
2167                                                                                                 this.bUseBoxDefSkin = C変換.bONorOFF( str4[ 0 ] );\r
2168                                                                                         }\r
2169                                                                                         #endregion\r
2170                                                                                         #region [ Window関係 ]\r
2171                                                                                         else if ( str3.Equals( "FullScreen" ) )\r
2172                                                                                         {\r
2173                                                                                                 this.b全画面モード = C変換.bONorOFF( str4[ 0 ] );\r
2174                                                                                         }\r
2175                                                                                         else if ( str3.Equals( "WindowX" ) )            // #30675 2013.02.04 ikanick add\r
2176                                                                                         {\r
2177                                                                                                 this.n初期ウィンドウ開始位置X = C変換.n値を文字列から取得して範囲内に丸めて返す(\r
2178                                                     str4, 0,  System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 1 , this.n初期ウィンドウ開始位置X );\r
2179                                                                                         }\r
2180                                                                                         else if ( str3.Equals( "WindowY" ) )            // #30675 2013.02.04 ikanick add\r
2181                                                                                         {\r
2182                                                                                                 this.n初期ウィンドウ開始位置Y = C変換.n値を文字列から取得して範囲内に丸めて返す(\r
2183                                                     str4, 0,  System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - 1 , this.n初期ウィンドウ開始位置Y );\r
2184                                                                                         }\r
2185                                                                                         else if ( str3.Equals( "WindowWidth" ) )                // #23510 2010.10.31 yyagi add\r
2186                                                                                         {\r
2187                                                                                                 this.nウインドウwidth = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 65535, this.nウインドウwidth );\r
2188                                                                                                 if( this.nウインドウwidth <= 0 )\r
2189                                                                                                 {\r
2190                                                                                                         this.nウインドウwidth = SampleFramework.GameWindowSize.Width;\r
2191                                                                                                 }\r
2192                                                                                         }\r
2193                                                                                         else if( str3.Equals( "WindowHeight" ) )                // #23510 2010.10.31 yyagi add\r
2194                                                                                         {\r
2195                                                                                                 this.nウインドウheight = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 65535, this.nウインドウheight );\r
2196                                                                                                 if( this.nウインドウheight <= 0 )\r
2197                                                                                                 {\r
2198                                                                                                         this.nウインドウheight = SampleFramework.GameWindowSize.Height;\r
2199                                                                                                 }\r
2200                                                                                         }\r
2201                                                                                         else if ( str3.Equals( "DoubleClickFullScreen" ) )      // #26752 2011.11.27 yyagi\r
2202                                                                                         {\r
2203                                                                                                 this.bIsAllowedDoubleClickFullscreen = C変換.bONorOFF( str4[ 0 ] );\r
2204                                                                                         }\r
2205                                                                                         else if ( str3.Equals( "EnableSystemMenu" ) )           // #28200 2012.5.1 yyagi\r
2206                                                                                         {\r
2207                                                                                                 this.bIsEnabledSystemMenu = C変換.bONorOFF( str4[ 0 ] );\r
2208                                                                                         }\r
2209                                                                                         else if ( str3.Equals( "BackSleep" ) )                          // #23568 2010.11.04 ikanick add\r
2210                                                                                         {\r
2211                                                                                                 this.n非フォーカス時スリープms = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す( str4, 0, 50, this.n非フォーカス時スリープms );\r
2212                                                                                         }\r
2213                                                                                         #endregion\r
2214                                                                                         #region [ WASAPI/ASIO関係 ]\r
2215                                                                                         else if ( str3.Equals( "SoundDeviceType" ) )\r
2216                                                                                         {\r
2217                                                                                                 this.nSoundDeviceType = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, this.nSoundDeviceType );\r
2218                                                                                         }\r
2219                                                                                         //else if ( str3.Equals( "WASAPIBufferSizeMs" ) )\r
2220                                                                                         //{\r
2221                                                                                         //    this.nWASAPIBufferSizeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999, this.nWASAPIBufferSizeMs );\r
2222                                                                                         //}\r
2223                                                                                         else if ( str3.Equals( "ASIODevice" ) )\r
2224                                                                                         {\r
2225                                                                                                 string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();\r
2226                                                                                                 this.nASIODevice = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, asiodev.Length - 1, this.nASIODevice );\r
2227                                                                                         }\r
2228                                                                                         //else if ( str3.Equals( "ASIOBufferSizeMs" ) )\r
2229                                                                                         //{\r
2230                                                                                         //    this.nASIOBufferSizeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999, this.nASIOBufferSizeMs );\r
2231                                                                                         //}\r
2232                                                                                         //else if ( str3.Equals( "DynamicBassMixerManagement" ) )\r
2233                                                                                         //{\r
2234                                                                                         //    this.bDynamicBassMixerManagement = C変換.bONorOFF( str4[ 0 ] );\r
2235                                                                                         //}\r
2236                                                                                         else if ( str3.Equals( "SoundTimerType" ) )                     // #33689 2014.6.6 yyagi\r
2237                                                                                         {\r
2238                                                                                                 this.bUseOSTimer = C変換.bONorOFF( str4[ 0 ] );\r
2239                                                                                         }\r
2240                                                                                         //else if ( str3.Equals( "MasterVolume" ) )\r
2241                                                                                         //{\r
2242                                                                                         //    this.nMasterVolume = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 100, this.nMasterVolume );\r
2243                                                                                         //}\r
2244                                                                                         #endregion\r
2245                                                                                         else if ( str3.Equals( "VSyncWait" ) )\r
2246                                                                                         {\r
2247                                                                                                 this.b垂直帰線待ちを行う = C変換.bONorOFF( str4[ 0 ] );\r
2248                                                                                         }\r
2249                                                                                         else if( str3.Equals( "SleepTimePerFrame" ) )           // #23568 2011.11.27 yyagi\r
2250                                                                                         {\r
2251                                                                                                 this.nフレーム毎スリープms = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す( str4, -1, 50, this.nフレーム毎スリープms );\r
2252                                                                                         }\r
2253                                                                                         #region [ ギター/ベース/ドラム 有効/無効 ]\r
2254                                                                                         else if( str3.Equals( "Guitar" ) )\r
2255                                                                                         {\r
2256                                                                                                 this.bGuitar有効 = C変換.bONorOFF( str4[ 0 ] );\r
2257                                                                                         }\r
2258                                                                                         else if( str3.Equals( "Drums" ) )\r
2259                                                                                         {\r
2260                                                                                                 this.bDrums有効 = C変換.bONorOFF( str4[ 0 ] );\r
2261                                                                                         }\r
2262                                                                                         #endregion\r
2263                                                                                         else if( str3.Equals( "BGAlpha" ) )\r
2264                                                                                         {\r
2265                                                                                                 this.n背景の透過度 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0xff, this.n背景の透過度 );\r
2266                                                                                         }\r
2267                                                                                         else if( str3.Equals( "DamageLevel" ) )\r
2268                                                                                         {\r
2269                                                                                                 this.eダメージレベル = (Eダメージレベル) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eダメージレベル );\r
2270                                                                                         }\r
2271                                                                                         else if ( str3.Equals( "StageFailed" ) )\r
2272                                                                                         {\r
2273                                                                                                 this.bSTAGEFAILED有効 = C変換.bONorOFF( str4[ 0 ] );\r
2274                                                                                         }\r
2275                                                                                         #region [ 打ち分け関連 ]\r
2276                                                                                         else if( str3.Equals( "HHGroup" ) )\r
2277                                                                                         {\r
2278                                                                                                 this.eHHGroup = (EHHGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.eHHGroup );\r
2279                                                                                         }\r
2280                                                                                         else if( str3.Equals( "FTGroup" ) )\r
2281                                                                                         {\r
2282                                                                                                 this.eFTGroup = (EFTGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eFTGroup );\r
2283                                                                                         }\r
2284                                                                                         else if( str3.Equals( "CYGroup" ) )\r
2285                                                                                         {\r
2286                                                                                                 this.eCYGroup = (ECYGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eCYGroup );\r
2287                                                                                         }\r
2288                                                                                         else if( str3.Equals( "BDGroup" ) )             // #27029 2012.1.4 from\r
2289                                                                                         {\r
2290                                                                                                 this.eBDGroup = (EBDGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eBDGroup );\r
2291                                                                                         }\r
2292                                                                                         else if( str3.Equals( "HitSoundPriorityHH" ) )\r
2293                                                                                         {\r
2294                                                                                                 this.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.eHitSoundPriorityHH );\r
2295                                                                                         }\r
2296                                                                                         else if( str3.Equals( "HitSoundPriorityFT" ) )\r
2297                                                                                         {\r
2298                                                                                                 this.eHitSoundPriorityFT = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.eHitSoundPriorityFT );\r
2299                                                                                         }\r
2300                                                                                         else if( str3.Equals( "HitSoundPriorityCY" ) )\r
2301                                                                                         {\r
2302                                                                                                 this.eHitSoundPriorityCY = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.eHitSoundPriorityCY );\r
2303                                                                                         }\r
2304                                                                                         else if ( str3.Equals( "CymbalFree" ) )\r
2305                                                                                         {\r
2306                                                                                                 this.bシンバルフリー = C変換.bONorOFF( str4[ 0 ] );\r
2307                                                                                         }\r
2308                                                                                         #endregion\r
2309                                                                                         #region [ AVI/BGA ]\r
2310                                                                                         else if( str3.Equals( "AVI" ) )\r
2311                                                                                         {\r
2312                                                                                                 this.bAVI有効 = C変換.bONorOFF( str4[ 0 ] );\r
2313                                                                                         }\r
2314                                                                                         else if( str3.Equals( "BGA" ) )\r
2315                                                                                         {\r
2316                                                                                                 this.bBGA有効 = C変換.bONorOFF( str4[ 0 ] );\r
2317                                                                                         }\r
2318                                                                                         #endregion\r
2319                                                                                         #region [ フィルイン関係 ]\r
2320                                                                                         else if ( str3.Equals( "FillInEffect" ) )\r
2321                                                                                         {\r
2322                                                                                                 this.bフィルイン有効 = C変換.bONorOFF( str4[ 0 ] );\r
2323                                                                                         }\r
2324                                                                                         else if ( str3.Equals( "AudienceSound" ) )\r
2325                                                                                         {\r
2326                                                                                                 this.b歓声を発声する = C変換.bONorOFF( str4[ 0 ] );\r
2327                                                                                         }\r
2328                                                                                         #endregion\r
2329                                                                                         #region [ プレビュー音 ]\r
2330                                                                                         else if( str3.Equals( "PreviewSoundWait" ) )\r
2331                                                                                         {\r
2332                                                                                                 this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x5f5e0ff, this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms );\r
2333                                                                                         }\r
2334                                                                                         else if( str3.Equals( "PreviewImageWait" ) )\r
2335                                                                                         {\r
2336                                                                                                 this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x5f5e0ff, this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms );\r
2337                                                                                         }\r
2338                                                                                         #endregion\r
2339                                                                                         else if( str3.Equals( "AdjustWaves" ) )\r
2340                                                                                         {\r
2341                                                                                                 this.bWave再生位置自動調整機能有効 = C変換.bONorOFF( str4[ 0 ] );\r
2342                                                                                         }\r
2343                                                                                         #region [ BGM/ドラムのヒット音 ]\r
2344                                                                                         else if( str3.Equals( "BGMSound" ) )\r
2345                                                                                         {\r
2346                                                                                                 this.bBGM音を発声する = C変換.bONorOFF( str4[ 0 ] );\r
2347                                                                                         }\r
2348                                                                                         else if( str3.Equals( "HitSound" ) )\r
2349                                                                                         {\r
2350                                                                                                 this.bドラム打音を発声する = C変換.bONorOFF( str4[ 0 ] );\r
2351                                                                                         }\r
2352                                                                                         #endregion\r
2353                                                                                         else if( str3.Equals( "SaveScoreIni" ) )\r
2354                                                                                         {\r
2355                                                                                                 this.bScoreIniを出力する = C変換.bONorOFF( str4[ 0 ] );\r
2356                                                                                         }\r
2357                                                                                         else if( str3.Equals( "RandomFromSubBox" ) )\r
2358                                                                                         {\r
2359                                                                                                 this.bランダムセレクトで子BOXを検索対象とする = C変換.bONorOFF( str4[ 0 ] );\r
2360                                                                                         }\r
2361                                                                                         #region [ SoundMonitor ]\r
2362                                                                                         else if( str3.Equals( "SoundMonitorDrums" ) )\r
2363                                                                                         {\r
2364                                                                                                 this.b演奏音を強調する.Drums = C変換.bONorOFF( str4[ 0 ] );\r
2365                                                                                         }\r
2366                                                                                         else if( str3.Equals( "SoundMonitorGuitar" ) )\r
2367                                                                                         {\r
2368                                                                                                 this.b演奏音を強調する.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2369                                                                                         }\r
2370                                                                                         else if( str3.Equals( "SoundMonitorBass" ) )\r
2371                                                                                         {\r
2372                                                                                                 this.b演奏音を強調する.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2373                                                                                         }\r
2374                                                                                         #endregion\r
2375                                                                                         #region [ コンボ数 ]\r
2376                                                                                         else if( str3.Equals( "MinComboDrums" ) )\r
2377                                                                                         {\r
2378                                                                                                 this.n表示可能な最小コンボ数.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Drums );\r
2379                                                                                         }\r
2380                                                                                         else if( str3.Equals( "MinComboGuitar" ) )\r
2381                                                                                         {\r
2382                                                                                                 this.n表示可能な最小コンボ数.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Guitar );\r
2383                                                                                         }\r
2384                                                                                         else if( str3.Equals( "MinComboBass" ) )\r
2385                                                                                         {\r
2386                                                                                                 this.n表示可能な最小コンボ数.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Bass );\r
2387                                                                                         }\r
2388                                                                                         #endregion\r
2389                                                                                         else if( str3.Equals( "ShowDebugStatus" ) )\r
2390                                                                                         {\r
2391                                                                                                 this.b演奏情報を表示する = C変換.bONorOFF( str4[ 0 ] );\r
2392                                                                                         }\r
2393                                                                                         #region [ 選曲リストフォント ]\r
2394                                                                                         else if( str3.Equals( "SelectListFontName" ) )\r
2395                                                                                         {\r
2396                                                                                                 this.str選曲リストフォント = str4;\r
2397                                                                                         }\r
2398                                                                                         else if( str3.Equals( "SelectListFontSize" ) )\r
2399                                                                                         {\r
2400                                                                                                 this.n選曲リストフォントのサイズdot = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x3e7, this.n選曲リストフォントのサイズdot );\r
2401                                                                                         }\r
2402                                                                                         else if( str3.Equals( "SelectListFontItalic" ) )\r
2403                                                                                         {\r
2404                                                                                                 this.b選曲リストフォントを斜体にする = C変換.bONorOFF( str4[ 0 ] );\r
2405                                                                                         }\r
2406                                                                                         else if( str3.Equals( "SelectListFontBold" ) )\r
2407                                                                                         {\r
2408                                                                                                 this.b選曲リストフォントを太字にする = C変換.bONorOFF( str4[ 0 ] );\r
2409                                                                                         }\r
2410                                                                                         #endregion\r
2411                                                                                         else if( str3.Equals( "ChipVolume" ) )\r
2412                                                                                         {\r
2413                                                                                                 this.n手動再生音量 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 100, this.n手動再生音量 );\r
2414                                                                                         }\r
2415                                                                                         else if( str3.Equals( "AutoChipVolume" ) )\r
2416                                                                                         {\r
2417                                                                                                 this.n自動再生音量 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 100, this.n自動再生音量 );\r
2418                                                                                         }\r
2419                                                                                         else if( str3.Equals( "StoicMode" ) )\r
2420                                                                                         {\r
2421                                                                                                 this.bストイックモード = C変換.bONorOFF( str4[ 0 ] );\r
2422                                                                                         }\r
2423                                                                                         else if( str3.Equals( "ShowLagTime" ) )                         // #25370 2011.6.3 yyagi\r
2424                                                                                         {\r
2425                                                                                                 this.nShowLagType = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, this.nShowLagType );\r
2426                                                                                         }\r
2427                                                                                         else if ( str3.Equals( "JudgeDispPriority" ) )\r
2428                                                                                         {\r
2429                                                                                                 this.e判定表示優先度 = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度 );\r
2430                                                                                         }\r
2431                                                                                         else if ( str3.Equals( "AutoResultCapture" ) )                  // #25399 2011.6.9 yyagi\r
2432                                                                                         {\r
2433                                                                                                 this.bIsAutoResultCapture = C変換.bONorOFF( str4[ 0 ] );\r
2434                                                                                         }\r
2435                                                                                         else if ( str3.Equals( "TimeStretch" ) )                                // #23664 2013.2.24 yyagi\r
2436                                                                                         {\r
2437                                                                                                 this.bTimeStretch = C変換.bONorOFF( str4[ 0 ] );\r
2438                                                                                         }\r
2439                                                                                         #region [ AdjustTime ]\r
2440                                                                                         else if( str3.Equals( "InputAdjustTimeDrums" ) )                // #23580 2011.1.3 yyagi\r
2441                                                                                         {\r
2442                                                                                                 this.nInputAdjustTimeMs.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs.Drums );\r
2443                                                                                         }\r
2444                                                                                         else if( str3.Equals( "InputAdjustTimeGuitar" ) )       // #23580 2011.1.3 yyagi\r
2445                                                                                         {\r
2446                                                                                                 this.nInputAdjustTimeMs.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs.Guitar );\r
2447                                                                                         }\r
2448                                                                                         else if( str3.Equals( "InputAdjustTimeBass" ) )         // #23580 2011.1.3 yyagi\r
2449                                                                                         {\r
2450                                                                                                 this.nInputAdjustTimeMs.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs.Bass );\r
2451                                                                                         }\r
2452                                                                                         else if ( str3.Equals( "JudgeLinePosOffsetDrums" ) )            // #31602 2013.6.23 yyagi\r
2453                                                                                         {\r
2454                                                                                                 this.nJudgeLinePosOffset.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Drums );\r
2455                                                                                         }\r
2456                                                                                         else if ( str3.Equals( "JudgeLinePosOffsetGuitar" ) )           // #31602 2013.6.23 yyagi\r
2457                                                                                         {\r
2458                                                                                                 this.nJudgeLinePosOffset.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Guitar );\r
2459                                                                                         }\r
2460                                                                                         else if ( str3.Equals( "JudgeLinePosOffsetBass" ) )                     // #31602 2013.6.23 yyagi\r
2461                                                                                         {\r
2462                                                                                                 this.nJudgeLinePosOffset.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Bass );\r
2463                                                                                         }\r
2464                                                                                         else if ( str3.Equals( "JudgeLinePosModeGuitar" ) )     // #33891 2014.6.26 yyagi\r
2465                                                                                         {\r
2466                                                                                                 this.e判定位置.Guitar = (E判定位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.e判定位置.Guitar );\r
2467                                                                                         }\r
2468                                                                                         else if ( str3.Equals( "JudgeLinePosModeBass" ) )               // #33891 2014.6.26 yyagi\r
2469                                                                                         {\r
2470                                                                                                 this.e判定位置.Bass = (E判定位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.e判定位置.Bass );\r
2471                                                                                         }\r
2472                                                                                         #endregion\r
2473                                                                                         else if( str3.Equals( "BufferedInput" ) )\r
2474                                                                                         {\r
2475                                                                                                 this.bバッファ入力を行う = C変換.bONorOFF( str4[ 0 ] );\r
2476                                                                                         }\r
2477                                                                                         else if ( str3.Equals( "PolyphonicSounds" ) )           // #28228 2012.5.1 yyagi\r
2478                                                                                         {\r
2479                                                                                                 this.nPoliphonicSounds = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 8, this.nPoliphonicSounds );\r
2480                                                                                         }\r
2481                                                                                         #region [ VelocityMin ]\r
2482                                                                                         else if ( str3.Equals( "LCVelocityMin" ) )                      // #23857 2010.12.12 yyagi\r
2483                                                                                         {\r
2484                                                                                                 this.nVelocityMin.LC = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.LC );\r
2485                                                                                         }\r
2486                                                                                         else if( str3.Equals( "HHVelocityMin" ) )\r
2487                                                                                         {\r
2488                                                                                                 this.nVelocityMin.HH = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.HH );\r
2489                                                                                         }\r
2490                                                                                         else if( str3.Equals( "SDVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2491                                                                                         {\r
2492                                                                                                 this.nVelocityMin.SD = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.SD );\r
2493                                                                                         }\r
2494                                                                                         else if( str3.Equals( "BDVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2495                                                                                         {\r
2496                                                                                                 this.nVelocityMin.BD = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.BD );\r
2497                                                                                         }\r
2498                                                                                         else if( str3.Equals( "HTVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2499                                                                                         {\r
2500                                                                                                 this.nVelocityMin.HT = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.HT );\r
2501                                                                                         }\r
2502                                                                                         else if( str3.Equals( "LTVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2503                                                                                         {\r
2504                                                                                                 this.nVelocityMin.LT = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.LT );\r
2505                                                                                         }\r
2506                                                                                         else if( str3.Equals( "FTVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2507                                                                                         {\r
2508                                                                                                 this.nVelocityMin.FT = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.FT );\r
2509                                                                                         }\r
2510                                                                                         else if( str3.Equals( "CYVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2511                                                                                         {\r
2512                                                                                                 this.nVelocityMin.CY = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.CY );\r
2513                                                                                         }\r
2514                                                                                         else if( str3.Equals( "RDVelocityMin" ) )                       // #23857 2011.1.31 yyagi\r
2515                                                                                         {\r
2516                                                                                                 this.nVelocityMin.RD = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.RD );\r
2517                                                                                         }\r
2518                                                                                         #endregion\r
2519                                                                                         //else if ( str3.Equals( "NoMP3Streaming" ) )\r
2520                                                                                         //{\r
2521                                                                                         //    this.bNoMP3Streaming = C変換.bONorOFF( str4[ 0 ] );\r
2522                                                                                         //}\r
2523                                                                                         continue;\r
2524                                                                                 }\r
2525                                                                         //-----------------------------\r
2526                                                                         #endregion\r
2527 \r
2528                                                                         #region [ [Log] ]\r
2529                                                                         //-----------------------------\r
2530                                                                         case Eセクション種別.Log:\r
2531                                                                                 {\r
2532                                                                                         if( str3.Equals( "OutputLog" ) )\r
2533                                                                                         {\r
2534                                                                                                 this.bログ出力 = C変換.bONorOFF( str4[ 0 ] );\r
2535                                                                                         }\r
2536                                                                                         else if( str3.Equals( "TraceCreatedDisposed" ) )\r
2537                                                                                         {\r
2538                                                                                                 this.bLog作成解放ログ出力 = C変換.bONorOFF( str4[ 0 ] );\r
2539                                                                                         }\r
2540                                                                                         else if( str3.Equals( "TraceDTXDetails" ) )\r
2541                                                                                         {\r
2542                                                                                                 this.bLogDTX詳細ログ出力 = C変換.bONorOFF( str4[ 0 ] );\r
2543                                                                                         }\r
2544                                                                                         else if( str3.Equals( "TraceSongSearch" ) )\r
2545                                                                                         {\r
2546                                                                                                 this.bLog曲検索ログ出力 = C変換.bONorOFF( str4[ 0 ] );\r
2547                                                                                         }\r
2548                                                                                         continue;\r
2549                                                                                 }\r
2550                                                                         //-----------------------------\r
2551                                                                         #endregion\r
2552 \r
2553                                                                         #region [ [PlayOption] ]\r
2554                                                                         //-----------------------------\r
2555                                                                         case Eセクション種別.PlayOption:\r
2556                                                                                 {\r
2557                                                                                         if( str3.Equals( "Dark" ) )\r
2558                                                                                         {\r
2559                                                                                                 this.eDark = (Eダークモード) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eDark );\r
2560                                                                                         }\r
2561                                                                                         else if( str3.Equals( "DrumsGraph" ) )  // #24074 2011.01.23 addikanick\r
2562                                                                                         {\r
2563                                                                                                 this.bGraph.Drums = C変換.bONorOFF( str4[ 0 ] );\r
2564                                                                                         }\r
2565                                                                                         #region [ Sudden ]\r
2566                                                                                         else if( str3.Equals( "DrumsSudden" ) )\r
2567                                                                                         {\r
2568                                                                                                 this.bSudden.Drums = C変換.bONorOFF( str4[ 0 ] );\r
2569                                                                                         }\r
2570                                                                                         else if( str3.Equals( "GuitarSudden" ) )\r
2571                                                                                         {\r
2572                                                                                                 this.bSudden.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2573                                                                                         }\r
2574                                                                                         else if( str3.Equals( "BassSudden" ) )\r
2575                                                                                         {\r
2576                                                                                                 this.bSudden.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2577                                                                                         }\r
2578                                                                                         #endregion\r
2579                                                                                         #region [ Hidden ]\r
2580                                                                                         else if( str3.Equals( "DrumsHidden" ) )\r
2581                                                                                         {\r
2582                                                                                                 this.bHidden.Drums = C変換.bONorOFF( str4[ 0 ] );\r
2583                                                                                         }\r
2584                                                                                         else if( str3.Equals( "GuitarHidden" ) )\r
2585                                                                                         {\r
2586                                                                                                 this.bHidden.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2587                                                                                         }\r
2588                                                                                         else if( str3.Equals( "BassHidden" ) )\r
2589                                                                                         {\r
2590                                                                                                 this.bHidden.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2591                                                                                         }\r
2592                                                                                         #endregion\r
2593                                                                                         #region [ Invisible ]\r
2594                                                                                         else if ( str3.Equals( "DrumsInvisible" ) )\r
2595                                                                                         {\r
2596                                                                                                 this.eInvisible.Drums = (EInvisible) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eInvisible.Drums );\r
2597                                                                                         }\r
2598                                                                                         else if ( str3.Equals( "GuitarInvisible" ) )\r
2599                                                                                         {\r
2600                                                                                                 this.eInvisible.Guitar = (EInvisible) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eInvisible.Guitar ); \r
2601                                                                                         }\r
2602                                                                                         else if ( str3.Equals( "BassInvisible" ) )\r
2603                                                                                         {\r
2604                                                                                                 this.eInvisible.Bass = (EInvisible) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eInvisible.Bass );\r
2605                                                                                         }\r
2606                                                                                         //else if ( str3.Equals( "InvisibleDisplayTimeMs" ) )\r
2607                                                                                         //{\r
2608                                                                                         //    this.nDisplayTimesMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999999, (int) this.nDisplayTimesMs );\r
2609                                                                                         //}\r
2610                                                                                         //else if ( str3.Equals( "InvisibleFadeoutTimeMs" ) )\r
2611                                                                                         //{\r
2612                                                                                         //    this.nFadeoutTimeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999999, (int) this.nFadeoutTimeMs );\r
2613                                                                                         //}\r
2614                                                                                         #endregion\r
2615                                                                                         else if ( str3.Equals( "DrumsReverse" ) )\r
2616                                                                                         {\r
2617                                                                                                 this.bReverse.Drums = C変換.bONorOFF( str4[ 0 ] );\r
2618                                                                                         }\r
2619                                                                                         else if( str3.Equals( "GuitarReverse" ) )\r
2620                                                                                         {\r
2621                                                                                                 this.bReverse.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2622                                                                                         }\r
2623                                                                                         else if( str3.Equals( "BassReverse" ) )\r
2624                                                                                         {\r
2625                                                                                                 this.bReverse.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2626                                                                                         }\r
2627                                                                                         else if( str3.Equals( "GuitarRandom" ) )\r
2628                                                                                         {\r
2629                                                                                                 this.eRandom.Guitar = (Eランダムモード) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.eRandom.Guitar );\r
2630                                                                                         }\r
2631                                                                                         else if( str3.Equals( "BassRandom" ) )\r
2632                                                                                         {\r
2633                                                                                                 this.eRandom.Bass = (Eランダムモード) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.eRandom.Bass );\r
2634                                                                                         }\r
2635                                                                                         else if( str3.Equals( "GuitarLight" ) )\r
2636                                                                                         {\r
2637                                                                                                 this.bLight.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2638                                                                                         }\r
2639                                                                                         else if( str3.Equals( "BassLight" ) )\r
2640                                                                                         {\r
2641                                                                                                 this.bLight.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2642                                                                                         }\r
2643                                                                                         else if( str3.Equals( "GuitarLeft" ) )\r
2644                                                                                         {\r
2645                                                                                                 this.bLeft.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2646                                                                                         }\r
2647                                                                                         else if( str3.Equals( "BassLeft" ) )\r
2648                                                                                         {\r
2649                                                                                                 this.bLeft.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2650                                                                                         }\r
2651                                                                                         else if( str3.Equals( "DrumsPosition" ) )\r
2652                                                                                         {\r
2653                                                                                                 this.判定文字表示位置.Drums = (E判定文字表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.判定文字表示位置.Drums );\r
2654                                                                                         }\r
2655                                                                                         else if( str3.Equals( "GuitarPosition" ) )\r
2656                                                                                         {\r
2657                                                                                                 this.判定文字表示位置.Guitar = (E判定文字表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.判定文字表示位置.Guitar );\r
2658                                                                                         }\r
2659                                                                                         else if( str3.Equals( "BassPosition" ) )\r
2660                                                                                         {\r
2661                                                                                                 this.判定文字表示位置.Bass = (E判定文字表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.判定文字表示位置.Bass );\r
2662                                                                                         }\r
2663                                                                                         else if( str3.Equals( "DrumsScrollSpeed" ) )\r
2664                                                                                         {\r
2665                                                                                                 this.n譜面スクロール速度.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x7cf, this.n譜面スクロール速度.Drums );\r
2666                                                                                         }\r
2667                                                                                         else if( str3.Equals( "GuitarScrollSpeed" ) )\r
2668                                                                                         {\r
2669                                                                                                 this.n譜面スクロール速度.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x7cf, this.n譜面スクロール速度.Guitar );\r
2670                                                                                         }\r
2671                                                                                         else if( str3.Equals( "BassScrollSpeed" ) )\r
2672                                                                                         {\r
2673                                                                                                 this.n譜面スクロール速度.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x7cf, this.n譜面スクロール速度.Bass );\r
2674                                                                                         }\r
2675                                                                                         else if( str3.Equals( "PlaySpeed" ) )\r
2676                                                                                         {\r
2677                                                                                                 this.n演奏速度 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 5, 40, this.n演奏速度 );\r
2678                                                                                         }\r
2679                                                                                         else if( str3.Equals( "ComboPosition" ) )\r
2680                                                                                         {\r
2681                                                                                                 this.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.ドラムコンボ文字の表示位置 );\r
2682                                                                                         }\r
2683                                                                                         //else if ( str3.Equals( "JudgeDispPriorityDrums" ) )\r
2684                                                                                         //{\r
2685                                                                                         //    this.e判定表示優先度.Drums = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Drums );\r
2686                                                                                         //}\r
2687                                                                                         //else if ( str3.Equals( "JudgeDispPriorityGuitar" ) )\r
2688                                                                                         //{\r
2689                                                                                         //    this.e判定表示優先度.Guitar = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Guitar );\r
2690                                                                                         //}\r
2691                                                                                         //else if ( str3.Equals( "JudgeDispPriorityBass" ) )\r
2692                                                                                         //{\r
2693                                                                                         //    this.e判定表示優先度.Bass = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Bass );\r
2694                                                                                         //}\r
2695                                                                                         else if ( str3.Equals( "Risky" ) )                                      // #23559 2011.6.23  yyagi\r
2696                                                                                         {\r
2697                                                                                                 this.nRisky = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 10, this.nRisky );\r
2698                                                                                         }\r
2699                                                                                         else if ( str3.Equals( "DrumsTight" ) )                         // #29500 2012.9.11 kairera0467\r
2700                                                                                         {\r
2701                                                                                                 this.bTight = C変換.bONorOFF( str4[ 0 ] );\r
2702                                                                                         }\r
2703                                                                                         continue;\r
2704                                                                                 }\r
2705                                                                         //-----------------------------\r
2706                                                                         #endregion\r
2707 \r
2708                                                                         #region [ [ViewerOption] ]\r
2709                                                                         //-----------------------------\r
2710                                                                         case Eセクション種別.ViewerOption:\r
2711                                                                                 {\r
2712                                                                                         if ( str3.Equals( "ViewerDrumsScrollSpeed" ) )\r
2713                                                                                         {\r
2714                                                                                                 this.nViewerScrollSpeed.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1999, this.nViewerScrollSpeed.Drums );\r
2715                                                                                         }\r
2716                                                                                         else if ( str3.Equals( "ViewerGuitarScrollSpeed" ) )\r
2717                                                                                         {\r
2718                                                                                                 this.nViewerScrollSpeed.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1999, this.nViewerScrollSpeed.Guitar );\r
2719                                                                                         }\r
2720                                                                                         else if ( str3.Equals( "ViewerBassScrollSpeed" ) )\r
2721                                                                                         {\r
2722                                                                                                 this.nViewerScrollSpeed.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1999, this.nViewerScrollSpeed.Bass );\r
2723                                                                                         }\r
2724                                                                                         else if ( str3.Equals( "ViewerVSyncWait" ) )\r
2725                                                                                         {\r
2726                                                                                                 this.bViewerVSyncWait = C変換.bONorOFF( str4[ 0 ] );\r
2727                                                                                         }\r
2728                                                                                         else if ( str3.Equals( "ViewerShowDebugStatus" ) )\r
2729                                                                                         {\r
2730                                                                                                 this.bViewerShowDebugStatus = C変換.bONorOFF( str4[ 0 ] );\r
2731                                                                                         }\r
2732                                                                                         else if ( str3.Equals( "ViewerTimeStretch" ) )\r
2733                                                                                         {\r
2734                                                                                                 this.bViewerTimeStretch = C変換.bONorOFF( str4[ 0 ] );\r
2735                                                                                         }\r
2736                                                                                         else if ( str3.Equals( "ViewerGuitar" ) )\r
2737                                                                                         {\r
2738                                                                                                 this.bViewerGuitar有効 = C変換.bONorOFF( str4[ 0 ] );\r
2739                                                                                         }\r
2740                                                                                         else if ( str3.Equals( "ViewerDrums" ) )\r
2741                                                                                         {\r
2742                                                                                                 this.bViewerDrums有効 = C変換.bONorOFF( str4[ 0 ] );\r
2743                                                                                         }\r
2744                                                                                         continue;\r
2745                                                                                 }\r
2746                                                                         //-----------------------------\r
2747                                                                         #endregion\r
2748 \r
2749                                                                         #region [ [AutoPlay] ]\r
2750                                                                         //-----------------------------\r
2751                                                                         case Eセクション種別.AutoPlay:\r
2752                                                                                 if( str3.Equals( "LC" ) )\r
2753                                                                                 {\r
2754                                                                                         this.bAutoPlay.LC = C変換.bONorOFF( str4[ 0 ] );\r
2755                                                                                 }\r
2756                                                                                 if( str3.Equals( "HH" ) )\r
2757                                                                                 {\r
2758                                                                                 this.bAutoPlay.HH = C変換.bONorOFF( str4[ 0 ] );\r
2759                                                                                 }\r
2760                                                                                 else if( str3.Equals( "SD" ) )\r
2761                                                                                 {\r
2762                                                                                         this.bAutoPlay.SD = C変換.bONorOFF( str4[ 0 ] );\r
2763                                                                                 }\r
2764                                                                                 else if( str3.Equals( "BD" ) )\r
2765                                                                                 {\r
2766                                                                                         this.bAutoPlay.BD = C変換.bONorOFF( str4[ 0 ] );\r
2767                                                                                 }\r
2768                                                                                 else if( str3.Equals( "HT" ) )\r
2769                                                                                 {\r
2770                                                                                         this.bAutoPlay.HT = C変換.bONorOFF( str4[ 0 ] );\r
2771                                                                                 }\r
2772                                                                                 else if( str3.Equals( "LT" ) )\r
2773                                                                                 {\r
2774                                                                                         this.bAutoPlay.LT = C変換.bONorOFF( str4[ 0 ] );\r
2775                                                                                 }\r
2776                                                                                 else if( str3.Equals( "FT" ) )\r
2777                                                                                 {\r
2778                                                                                 this.bAutoPlay.FT = C変換.bONorOFF( str4[ 0 ] );\r
2779                                                                                 }\r
2780                                                                                 else if( str3.Equals( "CY" ) )\r
2781                                                                                 {\r
2782                                                                                         this.bAutoPlay.CY = C変換.bONorOFF( str4[ 0 ] );\r
2783                                                                                 }\r
2784                                                                                 //else if( str3.Equals( "Guitar" ) )\r
2785                                                                                 //{\r
2786                                                                                 //    this.bAutoPlay.Guitar = C変換.bONorOFF( str4[ 0 ] );\r
2787                                                                                 //}\r
2788                                                                                 else if ( str3.Equals( "GuitarR" ) )\r
2789                                                                                 {\r
2790                                                                                         this.bAutoPlay.GtR = C変換.bONorOFF( str4[ 0 ] );\r
2791                                                                                 }\r
2792                                                                                 else if ( str3.Equals( "GuitarG" ) )\r
2793                                                                                 {\r
2794                                                                                         this.bAutoPlay.GtG = C変換.bONorOFF( str4[ 0 ] );\r
2795                                                                                 }\r
2796                                                                                 else if ( str3.Equals( "GuitarB" ) )\r
2797                                                                                 {\r
2798                                                                                         this.bAutoPlay.GtB = C変換.bONorOFF( str4[ 0 ] );\r
2799                                                                                 }\r
2800                                                                                 else if ( str3.Equals( "GuitarPick" ) )\r
2801                                                                                 {\r
2802                                                                                         this.bAutoPlay.GtPick = C変換.bONorOFF( str4[ 0 ] );\r
2803                                                                                 }\r
2804                                                                                 else if ( str3.Equals( "GuitarWailing" ) )\r
2805                                                                                 {\r
2806                                                                                         this.bAutoPlay.GtW = C変換.bONorOFF( str4[ 0 ] );\r
2807                                                                                 }\r
2808                                                                                 //else if ( str3.Equals( "Bass" ) )\r
2809                                                                                 //{\r
2810                                                                                 //    this.bAutoPlay.Bass = C変換.bONorOFF( str4[ 0 ] );\r
2811                                                                                 //}\r
2812                                                                                 else if ( str3.Equals( "BassR" ) )\r
2813                                                                                 {\r
2814                                                                                         this.bAutoPlay.BsR = C変換.bONorOFF( str4[ 0 ] );\r
2815                                                                                 }\r
2816                                                                                 else if ( str3.Equals( "BassG" ) )\r
2817                                                                                 {\r
2818                                                                                         this.bAutoPlay.BsG = C変換.bONorOFF( str4[ 0 ] );\r
2819                                                                                 }\r
2820                                                                                 else if ( str3.Equals( "BassB" ) )\r
2821                                                                                 {\r
2822                                                                                         this.bAutoPlay.BsB = C変換.bONorOFF( str4[ 0 ] );\r
2823                                                                                 }\r
2824                                                                                 else if ( str3.Equals( "BassPick" ) )\r
2825                                                                                 {\r
2826                                                                                         this.bAutoPlay.BsPick = C変換.bONorOFF( str4[ 0 ] );\r
2827                                                                                 }\r
2828                                                                                 else if ( str3.Equals( "BassWailing" ) )\r
2829                                                                                 {\r
2830                                                                                         this.bAutoPlay.BsW = C変換.bONorOFF( str4[ 0 ] );\r
2831                                                                                 }\r
2832                                                                                 continue;\r
2833                                                                         //-----------------------------\r
2834                                                                         #endregion\r
2835 \r
2836                                                                         #region [ [HitRange] ]\r
2837                                                                         //-----------------------------\r
2838                                                                         case Eセクション種別.HitRange:\r
2839                                                                                 if( str3.Equals( "Perfect" ) )\r
2840                                                                                 {\r
2841                                                                                         this.nヒット範囲ms.Perfect = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Perfect );\r
2842                                                                                         }\r
2843                                                                                 else if( str3.Equals( "Great" ) )\r
2844                                                                                 {\r
2845                                                                                         this.nヒット範囲ms.Great = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Great );\r
2846                                                                                 }\r
2847                                                                                 else if( str3.Equals( "Good" ) )\r
2848                                                                                 {\r
2849                                                                                         this.nヒット範囲ms.Good = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Good );\r
2850                                                                                 }\r
2851                                                                                 else if( str3.Equals( "Poor" ) )\r
2852                                                                                 {\r
2853                                                                                         this.nヒット範囲ms.Poor = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Poor );\r
2854                                                                                 }\r
2855                                                                                 continue;\r
2856                                                                         //-----------------------------\r
2857                                                                         #endregion\r
2858 \r
2859                                                                         #region [ [GUID] ]\r
2860                                                                         //-----------------------------\r
2861                                                                         case Eセクション種別.GUID:\r
2862                                                                                 if( str3.Equals( "JoystickID" ) )\r
2863                                                                                 {\r
2864                                                                                         this.tJoystickIDの取得( str4 );\r
2865                                                                                 }\r
2866                                                                                 continue;\r
2867                                                                         //-----------------------------\r
2868                                                                         #endregion\r
2869 \r
2870                                                                         #region [ [DrumsKeyAssign] ]\r
2871                                                                         //-----------------------------\r
2872                                                                         case Eセクション種別.DrumsKeyAssign:\r
2873                                                                                 {\r
2874                                                                                         if( str3.Equals( "HH" ) )\r
2875                                                                                         {\r
2876                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HH );\r
2877                                                                                         }\r
2878                                                                                         else if( str3.Equals( "SD" ) )\r
2879                                                                                         {\r
2880                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.SD );\r
2881                                                                                         }\r
2882                                                                                         else if( str3.Equals( "BD" ) )\r
2883                                                                                         {\r
2884                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.BD );\r
2885                                                                                         }\r
2886                                                                                         else if( str3.Equals( "HT" ) )\r
2887                                                                                         {\r
2888                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HT );\r
2889                                                                                         }\r
2890                                                                                         else if( str3.Equals( "LT" ) )\r
2891                                                                                         {\r
2892                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.LT );\r
2893                                                                                         }\r
2894                                                                                         else if( str3.Equals( "FT" ) )\r
2895                                                                                         {\r
2896                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.FT );\r
2897                                                                                         }\r
2898                                                                                         else if( str3.Equals( "CY" ) )\r
2899                                                                                         {\r
2900                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.CY );\r
2901                                                                                         }\r
2902                                                                                         else if( str3.Equals( "HO" ) )\r
2903                                                                                         {\r
2904                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HHO );\r
2905                                                                                         }\r
2906                                                                                         else if( str3.Equals( "RD" ) )\r
2907                                                                                         {\r
2908                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.RD );\r
2909                                                                                         }\r
2910                                                                                         else if( str3.Equals( "LC" ) )\r
2911                                                                                         {\r
2912                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.LC );\r
2913                                                                                         }\r
2914                                                                                         else if( str3.Equals( "HP" ) )                                                                          // #27029 2012.1.4 from\r
2915                                                                                         {                                                                                                                                       //\r
2916                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HP );  //\r
2917                                                                                         }                                                                                                                                       //\r
2918                                                                                         continue;\r
2919                                                                                 }\r
2920                                                                         //-----------------------------\r
2921                                                                         #endregion\r
2922 \r
2923                                                                         #region [ [GuitarKeyAssign] ]\r
2924                                                                         //-----------------------------\r
2925                                                                         case Eセクション種別.GuitarKeyAssign:\r
2926                                                                                 {\r
2927                                                                                         if( str3.Equals( "R" ) )\r
2928                                                                                         {\r
2929                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.R );\r
2930                                                                                         }\r
2931                                                                                         else if( str3.Equals( "G" ) )\r
2932                                                                                         {\r
2933                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.G );\r
2934                                                                                         }\r
2935                                                                                         else if( str3.Equals( "B" ) )\r
2936                                                                                         {\r
2937                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.B );\r
2938                                                                                         }\r
2939                                                                                         else if( str3.Equals( "Pick" ) )\r
2940                                                                                         {\r
2941                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Pick );\r
2942                                                                                         }\r
2943                                                                                         else if( str3.Equals( "Wail" ) )\r
2944                                                                                         {\r
2945                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Wail );\r
2946                                                                                         }\r
2947                                                                                         else if( str3.Equals( "Decide" ) )\r
2948                                                                                         {\r
2949                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Decide );\r
2950                                                                                         }\r
2951                                                                                         else if( str3.Equals( "Cancel" ) )\r
2952                                                                                         {\r
2953                                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Cancel );\r
2954                                                                                         }\r
2955                                                                                         continue;\r
2956                                                                                 }\r
2957                                                                         //-----------------------------\r
2958                                                                         #endregion\r
2959 \r
2960                                                                         #region [ [BassKeyAssign] ]\r
2961                                                                         //-----------------------------\r
2962                                                                         case Eセクション種別.BassKeyAssign:\r
2963                                                                                 if( str3.Equals( "R" ) )\r
2964                                                                                 {\r
2965                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.R );\r
2966                                                                                 }\r
2967                                                                                 else if( str3.Equals( "G" ) )\r
2968                                                                                 {\r
2969                                                                                 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.G );\r
2970                                                                                 }\r
2971                                                                                 else if( str3.Equals( "B" ) )\r
2972                                                                                 {\r
2973                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.B );\r
2974                                                                                 }\r
2975                                                                                 else if( str3.Equals( "Pick" ) )\r
2976                                                                                 {\r
2977                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Pick );\r
2978                                                                                 }\r
2979                                                                                 else if( str3.Equals( "Wail" ) )\r
2980                                                                                 {\r
2981                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Wail );\r
2982                                                                                 }\r
2983                                                                                 else if( str3.Equals( "Decide" ) )\r
2984                                                                                 {\r
2985                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Decide );\r
2986                                                                                 }\r
2987                                                                                 else if( str3.Equals( "Cancel" ) )\r
2988                                                                                 {\r
2989                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Cancel );\r
2990                                                                                 }\r
2991                                                                                 continue;\r
2992                                                                         //-----------------------------\r
2993                                                                         #endregion\r
2994 \r
2995                                                                         #region [ [SystemKeyAssign] ]\r
2996                                                                         //-----------------------------\r
2997                                                                         case Eセクション種別.SystemKeyAssign:\r
2998                                                                                 if( str3.Equals( "Capture" ) )\r
2999                                                                                 {\r
3000                                                                                         this.tキーの読み出しと設定( str4, this.KeyAssign.System.Capture );\r
3001                                                                                 }\r
3002                                                                                 continue;\r
3003                                                                         //-----------------------------\r
3004                                                                         #endregion\r
3005 \r
3006                                                                         #region [ [Temp] ]\r
3007                                                                         //-----------------------------\r
3008                                                                         case Eセクション種別.Temp:       // #27029 2012.1.5 from\r
3009                                                                                 if( str3.Equals( "BackupOf1BD_HHGroup" ) )\r
3010                                                                                 {\r
3011                                                                                         if( this.BackupOf1BD == null ) this.BackupOf1BD = new CBackupOf1BD();\r
3012                                                                                         this.BackupOf1BD.eHHGroup = (EHHGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.BackupOf1BD.eHHGroup );\r
3013                                                                                 }\r
3014                                                                                 else if( str3.Equals( "BackupOf1BD_HitSoundPriorityHH" ) )\r
3015                                                                                 {\r
3016                                                                                         if( this.BackupOf1BD == null ) this.BackupOf1BD = new CBackupOf1BD();\r
3017                                                                                         this.BackupOf1BD.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.BackupOf1BD.eHitSoundPriorityHH );\r
3018                                                                                 }\r
3019                                                                                 continue;\r
3020                                                                         //-----------------------------\r
3021                                                                         #endregion\r
3022                                                                 }\r
3023                                                         }\r
3024                                                 }\r
3025                                                 continue;\r
3026                                         }\r
3027                                         catch ( Exception exception )\r
3028                                         {\r
3029                                                 Trace.TraceError( exception.Message );\r
3030                                                 continue;\r
3031                                         }\r
3032                                 }\r
3033                         }\r
3034                 }\r
3035 \r
3036                 /// <summary>\r
3037                 /// ギターとベースのキーアサイン入れ替え\r
3038                 /// </summary>\r
3039                 //public void SwapGuitarBassKeyAssign()         // #24063 2011.1.16 yyagi\r
3040                 //{\r
3041                 //    for ( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )\r
3042                 //    {\r
3043                 //        CKeyAssign.STKEYASSIGN t; //= new CConfigIni.CKeyAssign.STKEYASSIGN();\r
3044                 //        for ( int k = 0; k < 16; k++ )\r
3045                 //        {\r
3046                 //            t = this.KeyAssign[ (int)EKeyConfigPart.GUITAR ][ j ][ k ];\r
3047                 //            this.KeyAssign[ (int)EKeyConfigPart.GUITAR ][ j ][ k ] = this.KeyAssign[ (int)EKeyConfigPart.BASS ][ j ][ k ];\r
3048                 //            this.KeyAssign[ (int)EKeyConfigPart.BASS ][ j ][ k ] = t;\r
3049                 //        }\r
3050                 //    }\r
3051                 //    this.bIsSwappedGuitarBass = !bIsSwappedGuitarBass;\r
3052                 //}\r
3053 \r
3054 \r
3055                 // その他\r
3056 \r
3057                 #region [ private ]\r
3058                 //-----------------\r
3059                 private enum Eセクション種別\r
3060                 {\r
3061                         Unknown,\r
3062                         System,\r
3063                         Log,\r
3064                         PlayOption,\r
3065                         ViewerOption,\r
3066                         AutoPlay,\r
3067                         HitRange,\r
3068                         GUID,\r
3069                         DrumsKeyAssign,\r
3070                         GuitarKeyAssign,\r
3071                         BassKeyAssign,\r
3072                         SystemKeyAssign,\r
3073                         Temp,\r
3074                 }\r
3075 \r
3076                 private bool _bDrums有効;\r
3077                 private bool _bGuitar有効;\r
3078                 private bool bConfigIniが存在している;\r
3079                 private string ConfigIniファイル名;\r
3080 \r
3081                 private void tJoystickIDの取得( string strキー記述 )\r
3082                 {\r
3083                         string[] strArray = strキー記述.Split( new char[] { ',' } );\r
3084                         if( strArray.Length >= 2 )\r
3085                         {\r
3086                                 int result = 0;\r
3087                                 if( ( int.TryParse( strArray[ 0 ], out result ) && ( result >= 0 ) ) && ( result <= 9 ) )\r
3088                                 {\r
3089                                         if( this.dicJoystick.ContainsKey( result ) )\r
3090                                         {\r
3091                                                 this.dicJoystick.Remove( result );\r
3092                                         }\r
3093                                         this.dicJoystick.Add( result, strArray[ 1 ] );\r
3094                                 }\r
3095                         }\r
3096                 }\r
3097                 private void tキーアサインを全部クリアする()\r
3098                 {\r
3099                         this.KeyAssign = new CKeyAssign();\r
3100                         for( int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++ )\r
3101                         {\r
3102                                 for( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )\r
3103                                 {\r
3104                                         this.KeyAssign[ i ][ j ] = new CKeyAssign.STKEYASSIGN[ 16 ];\r
3105                                         for( int k = 0; k < 16; k++ )\r
3106                                         {\r
3107                                                 this.KeyAssign[ i ][ j ][ k ] = new CKeyAssign.STKEYASSIGN( E入力デバイス.不明, 0, 0 );\r
3108                                         }\r
3109                                 }\r
3110                         }\r
3111                 }\r
3112                 private void tキーの書き出し( StreamWriter sw, CKeyAssign.STKEYASSIGN[] assign )\r
3113                 {\r
3114                         bool flag = true;\r
3115                         for( int i = 0; i < 0x10; i++ )\r
3116                         {\r
3117                                 if( assign[ i ].入力デバイス == E入力デバイス.不明 )\r
3118                                 {\r
3119                                         continue;\r
3120                                 }\r
3121                                 if( !flag )\r
3122                                 {\r
3123                                         sw.Write( ',' );\r
3124                                 }\r
3125                                 flag = false;\r
3126                                 switch( assign[ i ].入力デバイス )\r
3127                                 {\r
3128                                         case E入力デバイス.キーボード:\r
3129                                                 sw.Write( 'K' );\r
3130                                                 break;\r
3131 \r
3132                                         case E入力デバイス.MIDI入力:\r
3133                                                 sw.Write( 'M' );\r
3134                                                 break;\r
3135 \r
3136                                         case E入力デバイス.ジョイパッド:\r
3137                                                 sw.Write( 'J' );\r
3138                                                 break;\r
3139 \r
3140                                         case E入力デバイス.マウス:\r
3141                                                 sw.Write( 'N' );\r
3142                                                 break;\r
3143                                 }\r
3144                                 sw.Write( "{0}{1}", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring( assign[ i ].ID, 1 ), assign[ i ].コード );     // #24166 2011.1.15 yyagi: to support ID > 10, change 2nd character from Decimal to 36-numeral system. (e.g. J1023 -> JA23)\r
3145                         }\r
3146                 }\r
3147                 private void tキーの読み出しと設定( string strキー記述, CKeyAssign.STKEYASSIGN[] assign )\r
3148                 {\r
3149                         string[] strArray = strキー記述.Split( new char[] { ',' } );\r
3150                         for( int i = 0; ( i < strArray.Length ) && ( i < 0x10 ); i++ )\r
3151                         {\r
3152                                 E入力デバイス e入力デバイス;\r
3153                                 int id;\r
3154                                 int code;\r
3155                                 string str = strArray[ i ].Trim().ToUpper();\r
3156                                 if ( str.Length >= 3 )\r
3157                                 {\r
3158                                         e入力デバイス = E入力デバイス.不明;\r
3159                                         switch ( str[ 0 ] )\r
3160                                         {\r
3161                                                 case 'J':\r
3162                                                         e入力デバイス = E入力デバイス.ジョイパッド;\r
3163                                                         break;\r
3164 \r
3165                                                 case 'K':\r
3166                                                         e入力デバイス = E入力デバイス.キーボード;\r
3167                                                         break;\r
3168 \r
3169                                                 case 'L':\r
3170                                                         continue;\r
3171 \r
3172                                                 case 'M':\r
3173                                                         e入力デバイス = E入力デバイス.MIDI入力;\r
3174                                                         break;\r
3175 \r
3176                                                 case 'N':\r
3177                                                         e入力デバイス = E入力デバイス.マウス;\r
3178                                                         break;\r
3179                                         }\r
3180                                 }\r
3181                                 else\r
3182                                 {\r
3183                                         continue;\r
3184                                 }\r
3185                                 id = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".IndexOf( str[ 1 ] );        // #24166 2011.1.15 yyagi: to support ID > 10, change 2nd character from Decimal to 36-numeral system. (e.g. J1023 -> JA23)\r
3186                                 if( ( ( id >= 0 ) && int.TryParse( str.Substring( 2 ), out code ) ) && ( ( code >= 0 ) && ( code <= 0xff ) ) )\r
3187                                 {\r
3188                                         this.t指定した入力が既にアサイン済みである場合はそれを全削除する( e入力デバイス, id, code );\r
3189                                         assign[ i ].入力デバイス = e入力デバイス;\r
3190                                         assign[ i ].ID = id;\r
3191                                         assign[ i ].コード = code;\r
3192                                 }\r
3193                         }\r
3194                 }\r
3195                 private void tデフォルトのキーアサインに設定する()\r
3196                 {\r
3197                         this.tキーアサインを全部クリアする();\r
3198 \r
3199                         string strDefaultKeyAssign = @"\r
3200 [DrumsKeyAssign]\r
3201 \r
3202 HH=K035,M042,M093\r
3203 SD=K033,M025,M026,M027,M028,M029,M031,M032,M034,M037,M038,M040,M0113\r
3204 BD=K012,K0126,M033,M035,M036,M0112\r
3205 HT=K031,M048,M050\r
3206 LT=K011,M047\r
3207 FT=K023,M041,M043,M045\r
3208 CY=K022,M049,M052,M055,M057,M091\r
3209 HO=K010,M046,M092\r
3210 RD=K020,M051,M053,M059,M089\r
3211 LC=K026\r
3212 HP=M044\r
3213 \r
3214 [GuitarKeyAssign]\r
3215 \r
3216 R=K055\r
3217 G=K056,J012\r
3218 B=K057\r
3219 Pick=K0115,K046,J06\r
3220 Wail=K0116\r
3221 Decide=K060\r
3222 Cancel=K061\r
3223 \r
3224 [BassKeyAssign]\r
3225 \r
3226 R=K090\r
3227 G=K091,J013\r
3228 B=K092\r
3229 Pick=K0103,K0100,J08\r
3230 Wail=K089\r
3231 Decide=K096\r
3232 Cancel=K097\r
3233 \r
3234 [SystemKeyAssign]\r
3235 Capture=K065\r
3236 ";\r
3237                         t文字列から読み込み( strDefaultKeyAssign );\r
3238                 }\r
3239                 //-----------------\r
3240                 #endregion\r
3241         }\r
3242 }\r