2 using System.Collections.Generic;
\r
4 using System.Runtime.InteropServices;
\r
6 using System.Diagnostics;
\r
12 internal class CConfigIni
\r
16 #region [ CKeyAssign ]
\r
17 public class CKeyAssign
\r
19 public class CKeyAssignPad
\r
21 public CConfigIni.CKeyAssign.STKEYASSIGN[] HH
\r
25 return this.padHH_R;
\r
29 this.padHH_R = value;
\r
32 public CConfigIni.CKeyAssign.STKEYASSIGN[] R
\r
36 return this.padHH_R;
\r
40 this.padHH_R = value;
\r
43 public CConfigIni.CKeyAssign.STKEYASSIGN[] SD
\r
47 return this.padSD_G;
\r
51 this.padSD_G = value;
\r
54 public CConfigIni.CKeyAssign.STKEYASSIGN[] G
\r
58 return this.padSD_G;
\r
62 this.padSD_G = value;
\r
65 public CConfigIni.CKeyAssign.STKEYASSIGN[] BD
\r
69 return this.padBD_B;
\r
73 this.padBD_B = value;
\r
76 public CConfigIni.CKeyAssign.STKEYASSIGN[] B
\r
80 return this.padBD_B;
\r
84 this.padBD_B = value;
\r
87 public CConfigIni.CKeyAssign.STKEYASSIGN[] HT
\r
91 return this.padHT_Pick;
\r
95 this.padHT_Pick = value;
\r
98 public CConfigIni.CKeyAssign.STKEYASSIGN[] Pick
\r
102 return this.padHT_Pick;
\r
106 this.padHT_Pick = value;
\r
109 public CConfigIni.CKeyAssign.STKEYASSIGN[] LT
\r
113 return this.padLT_Wail;
\r
117 this.padLT_Wail = value;
\r
120 public CConfigIni.CKeyAssign.STKEYASSIGN[] Wail
\r
124 return this.padLT_Wail;
\r
128 this.padLT_Wail = value;
\r
131 public CConfigIni.CKeyAssign.STKEYASSIGN[] FT
\r
135 return this.padFT_Cancel;
\r
139 this.padFT_Cancel = value;
\r
142 public CConfigIni.CKeyAssign.STKEYASSIGN[] Cancel
\r
146 return this.padFT_Cancel;
\r
150 this.padFT_Cancel = value;
\r
153 public CConfigIni.CKeyAssign.STKEYASSIGN[] CY
\r
157 return this.padCY_Decide;
\r
161 this.padCY_Decide = value;
\r
164 public CConfigIni.CKeyAssign.STKEYASSIGN[] Decide
\r
168 return this.padCY_Decide;
\r
172 this.padCY_Decide = value;
\r
175 public CConfigIni.CKeyAssign.STKEYASSIGN[] HHO
\r
179 return this.padHHO;
\r
183 this.padHHO = value;
\r
186 public CConfigIni.CKeyAssign.STKEYASSIGN[] RD
\r
194 this.padRD = value;
\r
197 public CConfigIni.CKeyAssign.STKEYASSIGN[] LC
\r
205 this.padLC = value;
\r
208 public CConfigIni.CKeyAssign.STKEYASSIGN[] HP
\r
216 this.padHP = value;
\r
219 public CConfigIni.CKeyAssign.STKEYASSIGN[] Capture
\r
223 return this.padCapture;
\r
227 this.padCapture = value;
\r
230 public CConfigIni.CKeyAssign.STKEYASSIGN[] this[ int index ]
\r
236 case (int) EKeyConfigPad.HH:
\r
237 return this.padHH_R;
\r
239 case (int) EKeyConfigPad.SD:
\r
240 return this.padSD_G;
\r
242 case (int) EKeyConfigPad.BD:
\r
243 return this.padBD_B;
\r
245 case (int) EKeyConfigPad.HT:
\r
246 return this.padHT_Pick;
\r
248 case (int) EKeyConfigPad.LT:
\r
249 return this.padLT_Wail;
\r
251 case (int) EKeyConfigPad.FT:
\r
252 return this.padFT_Cancel;
\r
254 case (int) EKeyConfigPad.CY:
\r
255 return this.padCY_Decide;
\r
257 case (int) EKeyConfigPad.HHO:
\r
258 return this.padHHO;
\r
260 case (int) EKeyConfigPad.RD:
\r
263 case (int) EKeyConfigPad.LC:
\r
266 case (int) EKeyConfigPad.HP: // #27029 2012.1.4 from
\r
267 return this.padHP; //
\r
269 case (int) EKeyConfigPad.Capture:
\r
270 return this.padCapture;
\r
272 throw new IndexOutOfRangeException();
\r
278 case (int) EKeyConfigPad.HH:
\r
279 this.padHH_R = value;
\r
282 case (int) EKeyConfigPad.SD:
\r
283 this.padSD_G = value;
\r
286 case (int) EKeyConfigPad.BD:
\r
287 this.padBD_B = value;
\r
290 case (int) EKeyConfigPad.Pick:
\r
291 this.padHT_Pick = value;
\r
294 case (int) EKeyConfigPad.LT:
\r
295 this.padLT_Wail = value;
\r
298 case (int) EKeyConfigPad.FT:
\r
299 this.padFT_Cancel = value;
\r
302 case (int) EKeyConfigPad.CY:
\r
303 this.padCY_Decide = value;
\r
306 case (int) EKeyConfigPad.HHO:
\r
307 this.padHHO = value;
\r
310 case (int) EKeyConfigPad.RD:
\r
311 this.padRD = value;
\r
314 case (int) EKeyConfigPad.LC:
\r
315 this.padLC = value;
\r
318 case (int) EKeyConfigPad.HP:
\r
319 this.padHP = value;
\r
322 case (int) EKeyConfigPad.Capture:
\r
323 this.padCapture = value;
\r
326 throw new IndexOutOfRangeException();
\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
348 [StructLayout( LayoutKind.Sequential )]
\r
349 public struct STKEYASSIGN
\r
351 public E入力デバイス 入力デバイス;
\r
354 public STKEYASSIGN( E入力デバイス DeviceType, int nID, int nCode )
\r
356 this.入力デバイス = DeviceType;
\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
372 case (int) EKeyConfigPart.DRUMS:
\r
375 case (int) EKeyConfigPart.GUITAR:
\r
376 return this.Guitar;
\r
378 case (int) EKeyConfigPart.BASS:
\r
381 case (int) EKeyConfigPart.SYSTEM:
\r
382 return this.System;
\r
384 throw new IndexOutOfRangeException();
\r
390 case (int) EKeyConfigPart.DRUMS:
\r
391 this.Drums = value;
\r
394 case (int) EKeyConfigPart.GUITAR:
\r
395 this.Guitar = value;
\r
398 case (int) EKeyConfigPart.BASS:
\r
402 case (int) EKeyConfigPart.SYSTEM:
\r
403 this.System = value;
\r
406 throw new IndexOutOfRangeException();
\r
413 public enum ESoundDeviceTypeForConfig
\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
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
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
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
508 return ( !this.bConfigIniが存在している || !CDTXMania.VERSION.Equals( this.strDTXManiaのバージョン ) );
\r
511 public bool bDrums有効
\r
515 return this._bDrums有効;
\r
519 this._bDrums有効 = value;
\r
520 if( !this._bGuitar有効 && !this._bDrums有効 )
\r
522 this._bGuitar有効 = true;
\r
526 public bool bEnterがキー割り当てのどこにも使用されていない
\r
530 for( int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++ )
\r
532 for( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )
\r
534 for( int k = 0; k < 0x10; k++ )
\r
536 if( ( this.KeyAssign[ i ][ j ][ k ].入力デバイス == E入力デバイス.キーボード ) && ( this.KeyAssign[ i ][ j ][ k ].コード == (int) SlimDX.DirectInput.Key.Return ) )
\r
546 public bool bGuitar有効
\r
550 return this._bGuitar有効;
\r
554 this._bGuitar有効 = value;
\r
555 if( !this._bGuitar有効 && !this._bDrums有効 )
\r
557 this._bDrums有効 = true;
\r
561 public bool bウィンドウモード
\r
565 return !this.b全画面モード;
\r
569 this.b全画面モード = !value;
\r
572 public bool bギタレボモード
\r
576 return ( !this.bDrums有効 && this.bGuitar有効 );
\r
579 public bool bドラムが全部オートプレイである
\r
583 for ( int i = (int) Eレーン.LC; i <= (int) Eレーン.CY; i++ )
\r
585 if( !this.bAutoPlay[ i ] )
\r
593 public bool bギターが全部オートプレイである
\r
597 for ( int i = (int) Eレーン.GtR; i <= (int) Eレーン.GtW; i++ )
\r
599 if ( !this.bAutoPlay[ i ] )
\r
607 public bool bベースが全部オートプレイである
\r
611 for ( int i = (int) Eレーン.BsR; i <= (int) Eレーン.BsW; i++ )
\r
613 if ( !this.bAutoPlay[ i ] )
\r
621 public bool b演奏情報を表示しない
\r
625 return !this.b演奏情報を表示する;
\r
629 this.b演奏情報を表示する = !value;
\r
636 return this.nBGAlpha;
\r
644 else if( value > 0xff )
\r
646 this.nBGAlpha = 0xff;
\r
650 this.nBGAlpha = value;
\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
661 public bool bIsSwappedGuitarBass_AutoFlagsAreSwapped // #24415 2011.2.21 yyagi FLIP中にalt-f4終了で、AUTOフラグがswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ
\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
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
685 [StructLayout( LayoutKind.Sequential )]
\r
686 public struct STAUTOPLAY // C定数のEレーンとindexを一致させること
\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
715 case (int) Eレーン.LC:
\r
717 case (int) Eレーン.HH:
\r
719 case (int) Eレーン.SD:
\r
721 case (int) Eレーン.BD:
\r
723 case (int) Eレーン.HT:
\r
725 case (int) Eレーン.LT:
\r
727 case (int) Eレーン.FT:
\r
729 case (int) Eレーン.CY:
\r
731 case (int) Eレーン.RD:
\r
733 case (int) Eレーン.Guitar:
\r
734 return this.Guitar;
\r
735 case (int) Eレーン.Bass:
\r
737 case (int) Eレーン.GtR:
\r
739 case (int) Eレーン.GtG:
\r
741 case (int) Eレーン.GtB:
\r
743 case (int) Eレーン.GtPick:
\r
744 return this.GtPick;
\r
745 case (int) Eレーン.GtW:
\r
747 case (int) Eレーン.BsR:
\r
749 case (int) Eレーン.BsG:
\r
751 case (int) Eレーン.BsB:
\r
753 case (int) Eレーン.BsPick:
\r
754 return this.BsPick;
\r
755 case (int) Eレーン.BsW:
\r
758 throw new IndexOutOfRangeException();
\r
764 case (int) Eレーン.LC:
\r
767 case (int) Eレーン.HH:
\r
770 case (int) Eレーン.SD:
\r
773 case (int) Eレーン.BD:
\r
776 case (int) Eレーン.HT:
\r
779 case (int) Eレーン.LT:
\r
782 case (int) Eレーン.FT:
\r
785 case (int) Eレーン.CY:
\r
788 case (int) Eレーン.RD:
\r
791 case (int) Eレーン.Guitar:
\r
792 this.Guitar = value;
\r
794 case (int) Eレーン.Bass:
\r
797 case (int) Eレーン.GtR:
\r
800 case (int) Eレーン.GtG:
\r
803 case (int) Eレーン.GtB:
\r
806 case (int) Eレーン.GtPick:
\r
807 this.GtPick = value;
\r
809 case (int) Eレーン.GtW:
\r
812 case (int) Eレーン.BsR:
\r
815 case (int) Eレーン.BsG:
\r
818 case (int) Eレーン.BsB:
\r
821 case (int) Eレーン.BsPick:
\r
822 this.BsPick = value;
\r
824 case (int) Eレーン.BsW:
\r
828 throw new IndexOutOfRangeException();
\r
833 #region [ STRANGE ]
\r
834 public STRANGE nヒット範囲ms;
\r
835 [StructLayout( LayoutKind.Sequential )]
\r
836 public struct STRANGE
\r
838 public int Perfect;
\r
842 public int this[ int index ]
\r
849 return this.Perfect;
\r
860 throw new IndexOutOfRangeException();
\r
867 this.Perfect = value;
\r
871 this.Great = value;
\r
882 throw new IndexOutOfRangeException();
\r
887 #region [ STLANEVALUE ]
\r
888 public STLANEVALUE nVelocityMin;
\r
889 [StructLayout( LayoutKind.Sequential )]
\r
890 public struct STLANEVALUE
\r
903 public int this[ int index ]
\r
937 return this.Guitar;
\r
942 throw new IndexOutOfRangeException();
\r
985 this.Guitar = value;
\r
992 throw new IndexOutOfRangeException();
\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
1003 public EHHGroup eHHGroup = EHHGroup.全部打ち分ける;
\r
1004 public E打ち分け時の再生の優先順位 eHitSoundPriorityHH = E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1006 public CBackupOf1BD BackupOf1BD = null;
\r
1008 public void SwapGuitarBassInfos_AutoFlags()
\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
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
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
1022 CDTXMania.ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped = !CDTXMania.ConfigIni.bIsSwappedGuitarBass_AutoFlagsAreSwapped;
\r
1027 public CConfigIni()
\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
1042 this.fDamageLevelFactor[0] = 0.5f;
\r
1043 this.fDamageLevelFactor[1] = 1.0f;
\r
1044 this.fDamageLevelFactor[2] = 1.5f;
\r
1045 //----------------------------------------
\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
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
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
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
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
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
1183 bViewerVSyncWait = true;
\r
1184 bViewerShowDebugStatus = true;
\r
1185 bViewerTimeStretch = false;
\r
1186 bViewerDrums有効 = true;
\r
1187 bViewerGuitar有効 = true;
\r
1189 //this.bNoMP3Streaming = false;
\r
1190 this.nMasterVolume = 100; // #33700 2014.4.26 yyagi マスターボリュームの設定(WASAPI/ASIO用)
\r
1192 public CConfigIni( string iniファイル名 )
\r
1195 this.tファイルから読み込み( iniファイル名 );
\r
1201 public void t指定した入力が既にアサイン済みである場合はそれを全削除する( E入力デバイス DeviceType, int nID, int nCode )
\r
1203 for( int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++ )
\r
1205 for( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )
\r
1207 for( int k = 0; k < 0x10; k++ )
\r
1209 if( ( ( this.KeyAssign[ i ][ j ][ k ].入力デバイス == DeviceType ) && ( this.KeyAssign[ i ][ j ][ k ].ID == nID ) ) && ( this.KeyAssign[ i ][ j ][ k ].コード == nCode ) )
\r
1211 for( int m = k; m < 15; m++ )
\r
1213 this.KeyAssign[ i ][ j ][ m ] = this.KeyAssign[ i ][ j ][ m + 1 ];
\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
1224 public void t書き出し( string iniファイル名 )
\r
1226 StreamWriter sw = new StreamWriter( iniファイル名, false, Encoding.GetEncoding( "Shift_JIS" ) );
\r
1227 sw.WriteLine( ";-------------------" );
\r
1229 #region [ System ]
\r
1230 sw.WriteLine( "[System]" );
\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
1243 //------------------------------
\r
1245 #region [ Version ]
\r
1246 sw.WriteLine( "; リリースバージョン" );
\r
1247 sw.WriteLine( "; Release Version." );
\r
1248 sw.WriteLine( "Version={0}", CDTXMania.VERSION );
\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
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
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
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
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
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
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
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
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
1319 #region [ フレーム処理関連(VSync, フレーム毎のsleep) ]
\r
1320 sw.WriteLine("; 垂直帰線同期(0:OFF,1:ON)");
\r
1321 sw.WriteLine( "VSyncWait={0}", this.b垂直帰線待ちを行う ? 1 : 0 );
\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
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
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
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
1352 sw.WriteLine( "; {0}: {1}", i, asiodev[ i ] );
\r
1354 sw.WriteLine( "ASIODevice={0}", (int) this.nASIODevice );
\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
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
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
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
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
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
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
1398 sw.WriteLine( "; Missヒット時のゲージ減少割合(0:少, 1:普通, 2:大)" );
\r
1399 sw.WriteLine( "DamageLevel={0}", (int) this.eダメージレベル );
\r
1401 sw.WriteLine( "; ゲージゼロでSTAGE FAILED (0:OFF, 1:ON)" );
\r
1402 sw.WriteLine( "StageFailed={0}", this.bSTAGEFAILED有効 ? 1 : 0 );
\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
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
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
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
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
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
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
1438 #region [ AVI/BGA ]
\r
1439 sw.WriteLine( "; AVIの表示(0:OFF, 1:ON)" );
\r
1440 sw.WriteLine( "AVI={0}", this.bAVI有効 ? 1 : 0 );
\r
1442 sw.WriteLine( "; BGAの表示(0:OFF, 1:ON)" );
\r
1443 sw.WriteLine( "BGA={0}", this.bBGA有効 ? 1 : 0 );
\r
1447 sw.WriteLine( "; フィルイン効果(0:OFF, 1:ON)" );
\r
1448 sw.WriteLine( "FillInEffect={0}", this.bフィルイン有効 ? 1 : 0 );
\r
1450 sw.WriteLine( "; フィルイン達成時の歓声の再生(0:OFF, 1:ON)" );
\r
1451 sw.WriteLine( "AudienceSound={0}", this.b歓声を発声する ? 1 : 0 );
\r
1454 #region [ プレビュー音 ]
\r
1455 sw.WriteLine( "; 曲選択からプレビュー音の再生までのウェイト[ms]" );
\r
1456 sw.WriteLine( "PreviewSoundWait={0}", this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms );
\r
1458 sw.WriteLine( "; 曲選択からプレビュー画像表示までのウェイト[ms]" );
\r
1459 sw.WriteLine( "PreviewImageWait={0}", this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms );
\r
1462 sw.WriteLine( "; Waveの再生位置自動補正(0:OFF, 1:ON)" );
\r
1463 sw.WriteLine( "AdjustWaves={0}", this.bWave再生位置自動調整機能有効 ? 1 : 0 );
\r
1465 #region [ BGM/ドラムヒット音の再生 ]
\r
1466 sw.WriteLine( "; BGM の再生(0:OFF, 1:ON)" );
\r
1467 sw.WriteLine( "BGMSound={0}", this.bBGM音を発声する ? 1 : 0 );
\r
1469 sw.WriteLine( "; ドラム打音の再生(0:OFF, 1:ON)" );
\r
1470 sw.WriteLine( "HitSound={0}", this.bドラム打音を発声する ? 1 : 0 );
\r
1473 sw.WriteLine( "; 演奏記録(~.score.ini)の出力 (0:OFF, 1:ON)" );
\r
1474 sw.WriteLine( "SaveScoreIni={0}", this.bScoreIniを出力する ? 1 : 0 );
\r
1476 sw.WriteLine( "; RANDOM SELECT で子BOXを検索対象に含める (0:OFF, 1:ON)" );
\r
1477 sw.WriteLine( "RandomFromSubBox={0}", this.bランダムセレクトで子BOXを検索対象とする ? 1 : 0 );
\r
1479 #region [ モニターサウンド(ヒット音の再生音量アップ) ]
\r
1480 sw.WriteLine( "; ドラム演奏時にドラム音を強調する (0:OFF, 1:ON)" );
\r
1481 sw.WriteLine( "SoundMonitorDrums={0}", this.b演奏音を強調する.Drums ? 1 : 0 );
\r
1483 sw.WriteLine( "; ギター演奏時にギター音を強調する (0:OFF, 1:ON)" );
\r
1484 sw.WriteLine( "SoundMonitorGuitar={0}", this.b演奏音を強調する.Guitar ? 1 : 0 );
\r
1486 sw.WriteLine( "; ベース演奏時にベース音を強調する (0:OFF, 1:ON)" );
\r
1487 sw.WriteLine( "SoundMonitorBass={0}", this.b演奏音を強調する.Bass ? 1 : 0 );
\r
1490 #region [ コンボ表示数 ]
\r
1491 sw.WriteLine( "; ドラムの表示可能な最小コンボ数(1~99999)" );
\r
1492 sw.WriteLine( "MinComboDrums={0}", this.n表示可能な最小コンボ数.Drums );
\r
1494 sw.WriteLine( "; ギターの表示可能な最小コンボ数(1~99999)" );
\r
1495 sw.WriteLine( "MinComboGuitar={0}", this.n表示可能な最小コンボ数.Guitar );
\r
1497 sw.WriteLine( "; ベースの表示可能な最小コンボ数(1~99999)" );
\r
1498 sw.WriteLine( "MinComboBass={0}", this.n表示可能な最小コンボ数.Bass );
\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
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
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
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
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
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
1527 sw.WriteLine( "; 自動再生音の音量(0~100%)" );
\r
1528 sw.WriteLine( "; Sound volume (auto playing) (0-100%)" );
\r
1529 sw.WriteLine( "AutoChipVolume={0}", this.n自動再生音量 );
\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
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
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
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
1547 sw.WriteLine( "; 判定・コンボ表示優先度(0:チップの下, 1:チップの上)" );
\r
1548 sw.WriteLine( "JudgeDispPriority={0}" , (int) this.e判定表示優先度 );
\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
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
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
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
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
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
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
1609 sw.WriteLine( ";-------------------" );
\r
1612 sw.WriteLine( "[Log]" );
\r
1614 sw.WriteLine( "; Log出力(0:OFF, 1:ON)" );
\r
1615 sw.WriteLine( "OutputLog={0}", this.bログ出力 ? 1 : 0 );
\r
1617 sw.WriteLine( "; 曲データ検索に関するLog出力(0:OFF, 1:ON)" );
\r
1618 sw.WriteLine( "TraceSongSearch={0}", this.bLog曲検索ログ出力 ? 1 : 0 );
\r
1620 sw.WriteLine( "; 画像やサウンドの作成・解放に関するLog出力(0:OFF, 1:ON)" );
\r
1621 sw.WriteLine( "TraceCreatedDisposed={0}", this.bLog作成解放ログ出力 ? 1 : 0 );
\r
1623 sw.WriteLine( "; DTX読み込み詳細に関するLog出力(0:OFF, 1:ON)" );
\r
1624 sw.WriteLine( "TraceDTXDetails={0}", this.bLogDTX詳細ログ出力 ? 1 : 0 );
\r
1626 sw.WriteLine( ";-------------------" );
\r
1629 #region [ PlayOption ]
\r
1630 sw.WriteLine( "[PlayOption]" );
\r
1632 sw.WriteLine( "; DARKモード(0:OFF, 1:HALF, 2:FULL)" );
\r
1633 sw.WriteLine( "Dark={0}", (int) this.eDark );
\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
1639 sw.WriteLine( "; ギターSUDDENモード(0:OFF, 1:ON)" );
\r
1640 sw.WriteLine( "GuitarSudden={0}", this.bSudden.Guitar ? 1 : 0 );
\r
1642 sw.WriteLine( "; ベースSUDDENモード(0:OFF, 1:ON)" );
\r
1643 sw.WriteLine( "BassSudden={0}", this.bSudden.Bass ? 1 : 0 );
\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
1650 sw.WriteLine( "; ギターHIDDENモード(0:OFF, 1:ON)" );
\r
1651 sw.WriteLine( "GuitarHidden={0}", this.bHidden.Guitar ? 1 : 0 );
\r
1653 sw.WriteLine( "; ベースHIDDENモード(0:OFF, 1:ON)" );
\r
1654 sw.WriteLine( "BassHidden={0}", this.bHidden.Bass ? 1 : 0 );
\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
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
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
1670 //sw.WriteLine( "; Semi-InvisibleでMissった時のチップ再表示時間(ms)" );
\r
1671 //sw.WriteLine( "InvisibleDisplayTimeMs={0}", (int) this.nDisplayTimesMs );
\r
1673 //sw.WriteLine( "; Semi-InvisibleでMissってチップ再表示時間終了後のフェードアウト時間(ms)" );
\r
1674 //sw.WriteLine( "InvisibleFadeoutTimeMs={0}", (int) this.nFadeoutTimeMs );
\r
1677 sw.WriteLine( "; ドラムREVERSEモード(0:OFF, 1:ON)" );
\r
1678 sw.WriteLine( "DrumsReverse={0}", this.bReverse.Drums ? 1 : 0 );
\r
1680 sw.WriteLine( "; ギターREVERSEモード(0:OFF, 1:ON)" );
\r
1681 sw.WriteLine( "GuitarReverse={0}", this.bReverse.Guitar ? 1 : 0 );
\r
1683 sw.WriteLine( "; ベースREVERSEモード(0:OFF, 1:ON)" );
\r
1684 sw.WriteLine( "BassReverse={0}", this.bReverse.Bass ? 1 : 0 );
\r
1686 sw.WriteLine( "; ギターRANDOMモード(0:OFF, 1:Random, 2:SuperRandom, 3:HyperRandom)" );
\r
1687 sw.WriteLine( "GuitarRandom={0}", (int) this.eRandom.Guitar );
\r
1689 sw.WriteLine( "; ベースRANDOMモード(0:OFF, 1:Random, 2:SuperRandom, 3:HyperRandom)" );
\r
1690 sw.WriteLine( "BassRandom={0}", (int) this.eRandom.Bass );
\r
1692 sw.WriteLine( "; ギターLIGHTモード(0:OFF, 1:ON)" );
\r
1693 sw.WriteLine( "GuitarLight={0}", this.bLight.Guitar ? 1 : 0 );
\r
1695 sw.WriteLine( "; ベースLIGHTモード(0:OFF, 1:ON)" );
\r
1696 sw.WriteLine( "BassLight={0}", this.bLight.Bass ? 1 : 0 );
\r
1698 sw.WriteLine( "; ギターLEFTモード(0:OFF, 1:ON)" );
\r
1699 sw.WriteLine( "GuitarLeft={0}", this.bLeft.Guitar ? 1 : 0 );
\r
1701 sw.WriteLine( "; ベースLEFTモード(0:OFF, 1:ON)" );
\r
1702 sw.WriteLine( "BassLeft={0}", this.bLeft.Bass ? 1 : 0 );
\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
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
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
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
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
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
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
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
1733 sw.WriteLine( "; 演奏速度(5~40)(→x5/20~x40/20)" );
\r
1734 sw.WriteLine( "PlaySpeed={0}", this.n演奏速度 );
\r
1736 sw.WriteLine( "; ドラムCOMBO文字表示位置(0:左, 1:中, 2:右, 3:OFF)" );
\r
1737 sw.WriteLine( "ComboPosition={0}", (int) this.ドラムコンボ文字の表示位置 );
\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
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
1750 sw.WriteLine( ";-------------------" );
\r
1753 #region [ ViewerOption ]
\r
1754 sw.WriteLine( "[ViewerOption]" );
\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
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
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
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
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
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
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
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
1795 sw.WriteLine( ";-------------------" );
\r
1798 #region [ AutoPlay ]
\r
1799 sw.WriteLine( "[AutoPlay]" );
\r
1801 sw.WriteLine( "; 自動演奏(0:OFF, 1:ON)" );
\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
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
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
1829 sw.WriteLine( ";-------------------" );
\r
1832 #region [ HitRange ]
\r
1833 sw.WriteLine( "[HitRange]" );
\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
1841 sw.WriteLine( ";-------------------" );
\r
1844 sw.WriteLine( "[GUID]" );
\r
1846 foreach( KeyValuePair<int, string> pair in this.dicJoystick )
\r
1848 sw.WriteLine( "JoystickID={0},{1}", pair.Key, pair.Value );
\r
1851 #region [ DrumsKeyAssign ]
\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
1873 sw.WriteLine( "[DrumsKeyAssign]" );
\r
1875 sw.Write( "HH=" );
\r
1876 this.tキーの書き出し( sw, this.KeyAssign.Drums.HH );
\r
1878 sw.Write( "SD=" );
\r
1879 this.tキーの書き出し( sw, this.KeyAssign.Drums.SD );
\r
1881 sw.Write( "BD=" );
\r
1882 this.tキーの書き出し( sw, this.KeyAssign.Drums.BD );
\r
1884 sw.Write( "HT=" );
\r
1885 this.tキーの書き出し( sw, this.KeyAssign.Drums.HT );
\r
1887 sw.Write( "LT=" );
\r
1888 this.tキーの書き出し( sw, this.KeyAssign.Drums.LT );
\r
1890 sw.Write( "FT=" );
\r
1891 this.tキーの書き出し( sw, this.KeyAssign.Drums.FT );
\r
1893 sw.Write( "CY=" );
\r
1894 this.tキーの書き出し( sw, this.KeyAssign.Drums.CY );
\r
1896 sw.Write( "HO=" );
\r
1897 this.tキーの書き出し( sw, this.KeyAssign.Drums.HHO );
\r
1899 sw.Write( "RD=" );
\r
1900 this.tキーの書き出し( sw, this.KeyAssign.Drums.RD );
\r
1902 sw.Write( "LC=" );
\r
1903 this.tキーの書き出し( sw, this.KeyAssign.Drums.LC );
\r
1905 sw.Write( "HP=" ); // #27029 2012.1.4 from
\r
1906 this.tキーの書き出し( sw, this.KeyAssign.Drums.HP ); //
\r
1907 sw.WriteLine(); //
\r
1910 #region [ GuitarKeyAssign ]
\r
1911 sw.WriteLine( "[GuitarKeyAssign]" );
\r
1914 this.tキーの書き出し( sw, this.KeyAssign.Guitar.R );
\r
1917 this.tキーの書き出し( sw, this.KeyAssign.Guitar.G );
\r
1920 this.tキーの書き出し( sw, this.KeyAssign.Guitar.B );
\r
1922 sw.Write( "Pick=" );
\r
1923 this.tキーの書き出し( sw, this.KeyAssign.Guitar.Pick );
\r
1925 sw.Write( "Wail=" );
\r
1926 this.tキーの書き出し( sw, this.KeyAssign.Guitar.Wail );
\r
1928 sw.Write( "Decide=" );
\r
1929 this.tキーの書き出し( sw, this.KeyAssign.Guitar.Decide );
\r
1931 sw.Write( "Cancel=" );
\r
1932 this.tキーの書き出し( sw, this.KeyAssign.Guitar.Cancel );
\r
1936 #region [ BassKeyAssign ]
\r
1937 sw.WriteLine( "[BassKeyAssign]" );
\r
1940 this.tキーの書き出し( sw, this.KeyAssign.Bass.R );
\r
1943 this.tキーの書き出し( sw, this.KeyAssign.Bass.G );
\r
1946 this.tキーの書き出し( sw, this.KeyAssign.Bass.B );
\r
1948 sw.Write( "Pick=" );
\r
1949 this.tキーの書き出し( sw, this.KeyAssign.Bass.Pick );
\r
1951 sw.Write( "Wail=" );
\r
1952 this.tキーの書き出し( sw, this.KeyAssign.Bass.Wail );
\r
1954 sw.Write( "Decide=" );
\r
1955 this.tキーの書き出し( sw, this.KeyAssign.Bass.Decide );
\r
1957 sw.Write( "Cancel=" );
\r
1958 this.tキーの書き出し( sw, this.KeyAssign.Bass.Cancel );
\r
1962 #region [ SystemkeyAssign ]
\r
1963 sw.WriteLine( "[SystemKeyAssign]" );
\r
1965 sw.Write( "Capture=" );
\r
1966 this.tキーの書き出し( sw, this.KeyAssign.System.Capture );
\r
1971 #region [ Temp ] - 2012.1.5 from add
\r
1972 sw.WriteLine( "[Temp]" );
\r
1974 if( ( this.eBDGroup == EBDGroup.どっちもBD ) && ( this.BackupOf1BD != null ) ) // #27029 2012.1.5 from: 有効な場合にのみ出力する。
\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
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
1983 sw.WriteLine( ";-------------------" );
\r
1988 public void tファイルから読み込み( string iniファイル名 )
\r
1990 this.ConfigIniファイル名 = iniファイル名;
\r
1991 this.bConfigIniが存在している = File.Exists( this.ConfigIniファイル名 );
\r
1992 if( this.bConfigIniが存在している )
\r
1995 this.tキーアサインを全部クリアする();
\r
1996 using ( StreamReader reader = new StreamReader( this.ConfigIniファイル名, Encoding.GetEncoding( "Shift_JIS" ) ) )
\r
1998 str = reader.ReadToEnd();
\r
2000 t文字列から読み込み( str );
\r
2001 CDTXVersion version = new CDTXVersion( this.strDTXManiaのバージョン );
\r
2002 if( version.n整数部 <= 69 )
\r
2004 this.tデフォルトのキーアサインに設定する();
\r
2009 private void t文字列から読み込み( string strAllSettings ) // 2011.4.13 yyagi; refactored to make initial KeyConfig easier.
\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
2016 string str = s.Replace( '\t', ' ' ).TrimStart( new char[] { '\t', ' ' } );
\r
2017 if ( ( str.Length != 0 ) && ( str[ 0 ] != ';' ) )
\r
2023 if ( str[ 0 ] == '[' )
\r
2025 #region [ セクションの変更 ]
\r
2026 //-----------------------------
\r
2027 StringBuilder builder = new StringBuilder( 0x20 );
\r
2029 while ( ( num < str.Length ) && ( str[ num ] != ']' ) )
\r
2031 builder.Append( str[ num++ ] );
\r
2033 string str2 = builder.ToString();
\r
2034 if ( str2.Equals( "System" ) )
\r
2036 unknown = Eセクション種別.System;
\r
2038 else if ( str2.Equals( "Log" ) )
\r
2040 unknown = Eセクション種別.Log;
\r
2042 else if ( str2.Equals( "PlayOption" ) )
\r
2044 unknown = Eセクション種別.PlayOption;
\r
2046 else if ( str2.Equals( "ViewerOption" ) )
\r
2048 unknown = Eセクション種別.ViewerOption;
\r
2050 else if ( str2.Equals( "AutoPlay" ) )
\r
2052 unknown = Eセクション種別.AutoPlay;
\r
2054 else if ( str2.Equals( "HitRange" ) )
\r
2056 unknown = Eセクション種別.HitRange;
\r
2058 else if ( str2.Equals( "GUID" ) )
\r
2060 unknown = Eセクション種別.GUID;
\r
2062 else if ( str2.Equals( "DrumsKeyAssign" ) )
\r
2064 unknown = Eセクション種別.DrumsKeyAssign;
\r
2066 else if ( str2.Equals( "GuitarKeyAssign" ) )
\r
2068 unknown = Eセクション種別.GuitarKeyAssign;
\r
2070 else if ( str2.Equals( "BassKeyAssign" ) )
\r
2072 unknown = Eセクション種別.BassKeyAssign;
\r
2074 else if ( str2.Equals( "SystemKeyAssign" ) )
\r
2076 unknown = Eセクション種別.SystemKeyAssign;
\r
2078 else if( str2.Equals( "Temp" ) )
\r
2080 unknown = Eセクション種別.Temp;
\r
2084 unknown = Eセクション種別.Unknown;
\r
2086 //-----------------------------
\r
2091 string[] strArray = str.Split( new char[] { '=' } );
\r
2092 if( strArray.Length == 2 )
\r
2094 str3 = strArray[ 0 ].Trim();
\r
2095 str4 = strArray[ 1 ].Trim();
\r
2098 #region [ [System] ]
\r
2099 //-----------------------------
\r
2100 case Eセクション種別.System:
\r
2102 #if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化
\r
2103 //----------------------------------------
\r
2104 if (str3.Equals("GaugeFactorD"))
\r
2107 string[] splittedFactor = str4.Split(',');
\r
2108 foreach (string s in splittedFactor) {
\r
2109 this.fGaugeFactor[p++, 0] = Convert.ToSingle(s);
\r
2112 if (str3.Equals("GaugeFactorG"))
\r
2115 string[] splittedFactor = str4.Split(',');
\r
2116 foreach (string s in splittedFactor)
\r
2118 this.fGaugeFactor[p++, 1] = Convert.ToSingle(s);
\r
2122 if (str3.Equals("DamageFactor"))
\r
2125 string[] splittedFactor = str4.Split(',');
\r
2126 foreach (string s in splittedFactor)
\r
2128 this.fDamageLevelFactor[p++] = Convert.ToSingle(s);
\r
2132 //----------------------------------------
\r
2134 #region [ Version ]
\r
2135 if ( str3.Equals( "Version" ) )
\r
2137 this.strDTXManiaのバージョン = str4;
\r
2140 #region [ DTXPath ]
\r
2141 else if( str3.Equals( "DTXPath" ) )
\r
2143 this.str曲データ検索パス = str4;
\r
2146 #region [ skin関係 ]
\r
2147 else if ( str3.Equals( "SkinPath" ) )
\r
2149 string absSkinPath = str4;
\r
2150 if ( !System.IO.Path.IsPathRooted( str4 ) )
\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
2159 if ( absSkinPath[ absSkinPath.Length - 1 ] != System.IO.Path.DirectorySeparatorChar ) // フォルダ名末尾に\を必ずつけて、CSkin側と表記を統一する
\r
2161 absSkinPath += System.IO.Path.DirectorySeparatorChar;
\r
2163 this.strSystemSkinSubfolderFullName = absSkinPath;
\r
2165 else if ( str3.Equals( "SkinChangeByBoxDef" ) )
\r
2167 this.bUseBoxDefSkin = C変換.bONorOFF( str4[ 0 ] );
\r
2170 #region [ Window関係 ]
\r
2171 else if ( str3.Equals( "FullScreen" ) )
\r
2173 this.b全画面モード = C変換.bONorOFF( str4[ 0 ] );
\r
2175 else if ( str3.Equals( "WindowX" ) ) // #30675 2013.02.04 ikanick add
\r
2177 this.n初期ウィンドウ開始位置X = C変換.n値を文字列から取得して範囲内に丸めて返す(
\r
2178 str4, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 1 , this.n初期ウィンドウ開始位置X );
\r
2180 else if ( str3.Equals( "WindowY" ) ) // #30675 2013.02.04 ikanick add
\r
2182 this.n初期ウィンドウ開始位置Y = C変換.n値を文字列から取得して範囲内に丸めて返す(
\r
2183 str4, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - 1 , this.n初期ウィンドウ開始位置Y );
\r
2185 else if ( str3.Equals( "WindowWidth" ) ) // #23510 2010.10.31 yyagi add
\r
2187 this.nウインドウwidth = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 65535, this.nウインドウwidth );
\r
2188 if( this.nウインドウwidth <= 0 )
\r
2190 this.nウインドウwidth = SampleFramework.GameWindowSize.Width;
\r
2193 else if( str3.Equals( "WindowHeight" ) ) // #23510 2010.10.31 yyagi add
\r
2195 this.nウインドウheight = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 65535, this.nウインドウheight );
\r
2196 if( this.nウインドウheight <= 0 )
\r
2198 this.nウインドウheight = SampleFramework.GameWindowSize.Height;
\r
2201 else if ( str3.Equals( "DoubleClickFullScreen" ) ) // #26752 2011.11.27 yyagi
\r
2203 this.bIsAllowedDoubleClickFullscreen = C変換.bONorOFF( str4[ 0 ] );
\r
2205 else if ( str3.Equals( "EnableSystemMenu" ) ) // #28200 2012.5.1 yyagi
\r
2207 this.bIsEnabledSystemMenu = C変換.bONorOFF( str4[ 0 ] );
\r
2209 else if ( str3.Equals( "BackSleep" ) ) // #23568 2010.11.04 ikanick add
\r
2211 this.n非フォーカス時スリープms = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す( str4, 0, 50, this.n非フォーカス時スリープms );
\r
2214 #region [ WASAPI/ASIO関係 ]
\r
2215 else if ( str3.Equals( "SoundDeviceType" ) )
\r
2217 this.nSoundDeviceType = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, this.nSoundDeviceType );
\r
2219 //else if ( str3.Equals( "WASAPIBufferSizeMs" ) )
\r
2221 // this.nWASAPIBufferSizeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999, this.nWASAPIBufferSizeMs );
\r
2223 else if ( str3.Equals( "ASIODevice" ) )
\r
2225 string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();
\r
2226 this.nASIODevice = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, asiodev.Length - 1, this.nASIODevice );
\r
2228 //else if ( str3.Equals( "ASIOBufferSizeMs" ) )
\r
2230 // this.nASIOBufferSizeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999, this.nASIOBufferSizeMs );
\r
2232 //else if ( str3.Equals( "DynamicBassMixerManagement" ) )
\r
2234 // this.bDynamicBassMixerManagement = C変換.bONorOFF( str4[ 0 ] );
\r
2236 else if ( str3.Equals( "SoundTimerType" ) ) // #33689 2014.6.6 yyagi
\r
2238 this.bUseOSTimer = C変換.bONorOFF( str4[ 0 ] );
\r
2240 //else if ( str3.Equals( "MasterVolume" ) )
\r
2242 // this.nMasterVolume = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 100, this.nMasterVolume );
\r
2245 else if ( str3.Equals( "VSyncWait" ) )
\r
2247 this.b垂直帰線待ちを行う = C変換.bONorOFF( str4[ 0 ] );
\r
2249 else if( str3.Equals( "SleepTimePerFrame" ) ) // #23568 2011.11.27 yyagi
\r
2251 this.nフレーム毎スリープms = C変換.n値を文字列から取得して範囲内にちゃんと丸めて返す( str4, -1, 50, this.nフレーム毎スリープms );
\r
2253 #region [ ギター/ベース/ドラム 有効/無効 ]
\r
2254 else if( str3.Equals( "Guitar" ) )
\r
2256 this.bGuitar有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2258 else if( str3.Equals( "Drums" ) )
\r
2260 this.bDrums有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2263 else if( str3.Equals( "BGAlpha" ) )
\r
2265 this.n背景の透過度 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0xff, this.n背景の透過度 );
\r
2267 else if( str3.Equals( "DamageLevel" ) )
\r
2269 this.eダメージレベル = (Eダメージレベル) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eダメージレベル );
\r
2271 else if ( str3.Equals( "StageFailed" ) )
\r
2273 this.bSTAGEFAILED有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2275 #region [ 打ち分け関連 ]
\r
2276 else if( str3.Equals( "HHGroup" ) )
\r
2278 this.eHHGroup = (EHHGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.eHHGroup );
\r
2280 else if( str3.Equals( "FTGroup" ) )
\r
2282 this.eFTGroup = (EFTGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eFTGroup );
\r
2284 else if( str3.Equals( "CYGroup" ) )
\r
2286 this.eCYGroup = (ECYGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eCYGroup );
\r
2288 else if( str3.Equals( "BDGroup" ) ) // #27029 2012.1.4 from
\r
2290 this.eBDGroup = (EBDGroup) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eBDGroup );
\r
2292 else if( str3.Equals( "HitSoundPriorityHH" ) )
\r
2294 this.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.eHitSoundPriorityHH );
\r
2296 else if( str3.Equals( "HitSoundPriorityFT" ) )
\r
2298 this.eHitSoundPriorityFT = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.eHitSoundPriorityFT );
\r
2300 else if( str3.Equals( "HitSoundPriorityCY" ) )
\r
2302 this.eHitSoundPriorityCY = (E打ち分け時の再生の優先順位) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.eHitSoundPriorityCY );
\r
2304 else if ( str3.Equals( "CymbalFree" ) )
\r
2306 this.bシンバルフリー = C変換.bONorOFF( str4[ 0 ] );
\r
2309 #region [ AVI/BGA ]
\r
2310 else if( str3.Equals( "AVI" ) )
\r
2312 this.bAVI有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2314 else if( str3.Equals( "BGA" ) )
\r
2316 this.bBGA有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2319 #region [ フィルイン関係 ]
\r
2320 else if ( str3.Equals( "FillInEffect" ) )
\r
2322 this.bフィルイン有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2324 else if ( str3.Equals( "AudienceSound" ) )
\r
2326 this.b歓声を発声する = C変換.bONorOFF( str4[ 0 ] );
\r
2329 #region [ プレビュー音 ]
\r
2330 else if( str3.Equals( "PreviewSoundWait" ) )
\r
2332 this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x5f5e0ff, this.n曲が選択されてからプレビュー音が鳴るまでのウェイトms );
\r
2334 else if( str3.Equals( "PreviewImageWait" ) )
\r
2336 this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x5f5e0ff, this.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms );
\r
2339 else if( str3.Equals( "AdjustWaves" ) )
\r
2341 this.bWave再生位置自動調整機能有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2343 #region [ BGM/ドラムのヒット音 ]
\r
2344 else if( str3.Equals( "BGMSound" ) )
\r
2346 this.bBGM音を発声する = C変換.bONorOFF( str4[ 0 ] );
\r
2348 else if( str3.Equals( "HitSound" ) )
\r
2350 this.bドラム打音を発声する = C変換.bONorOFF( str4[ 0 ] );
\r
2353 else if( str3.Equals( "SaveScoreIni" ) )
\r
2355 this.bScoreIniを出力する = C変換.bONorOFF( str4[ 0 ] );
\r
2357 else if( str3.Equals( "RandomFromSubBox" ) )
\r
2359 this.bランダムセレクトで子BOXを検索対象とする = C変換.bONorOFF( str4[ 0 ] );
\r
2361 #region [ SoundMonitor ]
\r
2362 else if( str3.Equals( "SoundMonitorDrums" ) )
\r
2364 this.b演奏音を強調する.Drums = C変換.bONorOFF( str4[ 0 ] );
\r
2366 else if( str3.Equals( "SoundMonitorGuitar" ) )
\r
2368 this.b演奏音を強調する.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2370 else if( str3.Equals( "SoundMonitorBass" ) )
\r
2372 this.b演奏音を強調する.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2376 else if( str3.Equals( "MinComboDrums" ) )
\r
2378 this.n表示可能な最小コンボ数.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Drums );
\r
2380 else if( str3.Equals( "MinComboGuitar" ) )
\r
2382 this.n表示可能な最小コンボ数.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Guitar );
\r
2384 else if( str3.Equals( "MinComboBass" ) )
\r
2386 this.n表示可能な最小コンボ数.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x1869f, this.n表示可能な最小コンボ数.Bass );
\r
2389 else if( str3.Equals( "ShowDebugStatus" ) )
\r
2391 this.b演奏情報を表示する = C変換.bONorOFF( str4[ 0 ] );
\r
2393 #region [ 選曲リストフォント ]
\r
2394 else if( str3.Equals( "SelectListFontName" ) )
\r
2396 this.str選曲リストフォント = str4;
\r
2398 else if( str3.Equals( "SelectListFontSize" ) )
\r
2400 this.n選曲リストフォントのサイズdot = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 0x3e7, this.n選曲リストフォントのサイズdot );
\r
2402 else if( str3.Equals( "SelectListFontItalic" ) )
\r
2404 this.b選曲リストフォントを斜体にする = C変換.bONorOFF( str4[ 0 ] );
\r
2406 else if( str3.Equals( "SelectListFontBold" ) )
\r
2408 this.b選曲リストフォントを太字にする = C変換.bONorOFF( str4[ 0 ] );
\r
2411 else if( str3.Equals( "ChipVolume" ) )
\r
2413 this.n手動再生音量 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 100, this.n手動再生音量 );
\r
2415 else if( str3.Equals( "AutoChipVolume" ) )
\r
2417 this.n自動再生音量 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 100, this.n自動再生音量 );
\r
2419 else if( str3.Equals( "StoicMode" ) )
\r
2421 this.bストイックモード = C変換.bONorOFF( str4[ 0 ] );
\r
2423 else if( str3.Equals( "ShowLagTime" ) ) // #25370 2011.6.3 yyagi
\r
2425 this.nShowLagType = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, this.nShowLagType );
\r
2427 else if ( str3.Equals( "JudgeDispPriority" ) )
\r
2429 this.e判定表示優先度 = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度 );
\r
2431 else if ( str3.Equals( "AutoResultCapture" ) ) // #25399 2011.6.9 yyagi
\r
2433 this.bIsAutoResultCapture = C変換.bONorOFF( str4[ 0 ] );
\r
2435 else if ( str3.Equals( "TimeStretch" ) ) // #23664 2013.2.24 yyagi
\r
2437 this.bTimeStretch = C変換.bONorOFF( str4[ 0 ] );
\r
2439 #region [ AdjustTime ]
\r
2440 else if( str3.Equals( "InputAdjustTimeDrums" ) ) // #23580 2011.1.3 yyagi
\r
2442 this.nInputAdjustTimeMs.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs.Drums );
\r
2444 else if( str3.Equals( "InputAdjustTimeGuitar" ) ) // #23580 2011.1.3 yyagi
\r
2446 this.nInputAdjustTimeMs.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs.Guitar );
\r
2448 else if( str3.Equals( "InputAdjustTimeBass" ) ) // #23580 2011.1.3 yyagi
\r
2450 this.nInputAdjustTimeMs.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs.Bass );
\r
2452 else if ( str3.Equals( "JudgeLinePosOffsetDrums" ) ) // #31602 2013.6.23 yyagi
\r
2454 this.nJudgeLinePosOffset.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Drums );
\r
2456 else if ( str3.Equals( "JudgeLinePosOffsetGuitar" ) ) // #31602 2013.6.23 yyagi
\r
2458 this.nJudgeLinePosOffset.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Guitar );
\r
2460 else if ( str3.Equals( "JudgeLinePosOffsetBass" ) ) // #31602 2013.6.23 yyagi
\r
2462 this.nJudgeLinePosOffset.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Bass );
\r
2464 else if ( str3.Equals( "JudgeLinePosModeGuitar" ) ) // #33891 2014.6.26 yyagi
\r
2466 this.e判定位置.Guitar = (E判定位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.e判定位置.Guitar );
\r
2468 else if ( str3.Equals( "JudgeLinePosModeBass" ) ) // #33891 2014.6.26 yyagi
\r
2470 this.e判定位置.Bass = (E判定位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.e判定位置.Bass );
\r
2473 else if( str3.Equals( "BufferedInput" ) )
\r
2475 this.bバッファ入力を行う = C変換.bONorOFF( str4[ 0 ] );
\r
2477 else if ( str3.Equals( "PolyphonicSounds" ) ) // #28228 2012.5.1 yyagi
\r
2479 this.nPoliphonicSounds = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 1, 8, this.nPoliphonicSounds );
\r
2481 #region [ VelocityMin ]
\r
2482 else if ( str3.Equals( "LCVelocityMin" ) ) // #23857 2010.12.12 yyagi
\r
2484 this.nVelocityMin.LC = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.LC );
\r
2486 else if( str3.Equals( "HHVelocityMin" ) )
\r
2488 this.nVelocityMin.HH = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.HH );
\r
2490 else if( str3.Equals( "SDVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2492 this.nVelocityMin.SD = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.SD );
\r
2494 else if( str3.Equals( "BDVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2496 this.nVelocityMin.BD = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.BD );
\r
2498 else if( str3.Equals( "HTVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2500 this.nVelocityMin.HT = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.HT );
\r
2502 else if( str3.Equals( "LTVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2504 this.nVelocityMin.LT = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.LT );
\r
2506 else if( str3.Equals( "FTVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2508 this.nVelocityMin.FT = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.FT );
\r
2510 else if( str3.Equals( "CYVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2512 this.nVelocityMin.CY = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.CY );
\r
2514 else if( str3.Equals( "RDVelocityMin" ) ) // #23857 2011.1.31 yyagi
\r
2516 this.nVelocityMin.RD = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 127, this.nVelocityMin.RD );
\r
2519 //else if ( str3.Equals( "NoMP3Streaming" ) )
\r
2521 // this.bNoMP3Streaming = C変換.bONorOFF( str4[ 0 ] );
\r
2525 //-----------------------------
\r
2529 //-----------------------------
\r
2530 case Eセクション種別.Log:
\r
2532 if( str3.Equals( "OutputLog" ) )
\r
2534 this.bログ出力 = C変換.bONorOFF( str4[ 0 ] );
\r
2536 else if( str3.Equals( "TraceCreatedDisposed" ) )
\r
2538 this.bLog作成解放ログ出力 = C変換.bONorOFF( str4[ 0 ] );
\r
2540 else if( str3.Equals( "TraceDTXDetails" ) )
\r
2542 this.bLogDTX詳細ログ出力 = C変換.bONorOFF( str4[ 0 ] );
\r
2544 else if( str3.Equals( "TraceSongSearch" ) )
\r
2546 this.bLog曲検索ログ出力 = C変換.bONorOFF( str4[ 0 ] );
\r
2550 //-----------------------------
\r
2553 #region [ [PlayOption] ]
\r
2554 //-----------------------------
\r
2555 case Eセクション種別.PlayOption:
\r
2557 if( str3.Equals( "Dark" ) )
\r
2559 this.eDark = (Eダークモード) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eDark );
\r
2561 else if( str3.Equals( "DrumsGraph" ) ) // #24074 2011.01.23 addikanick
\r
2563 this.bGraph.Drums = C変換.bONorOFF( str4[ 0 ] );
\r
2565 #region [ Sudden ]
\r
2566 else if( str3.Equals( "DrumsSudden" ) )
\r
2568 this.bSudden.Drums = C変換.bONorOFF( str4[ 0 ] );
\r
2570 else if( str3.Equals( "GuitarSudden" ) )
\r
2572 this.bSudden.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2574 else if( str3.Equals( "BassSudden" ) )
\r
2576 this.bSudden.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2579 #region [ Hidden ]
\r
2580 else if( str3.Equals( "DrumsHidden" ) )
\r
2582 this.bHidden.Drums = C変換.bONorOFF( str4[ 0 ] );
\r
2584 else if( str3.Equals( "GuitarHidden" ) )
\r
2586 this.bHidden.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2588 else if( str3.Equals( "BassHidden" ) )
\r
2590 this.bHidden.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2593 #region [ Invisible ]
\r
2594 else if ( str3.Equals( "DrumsInvisible" ) )
\r
2596 this.eInvisible.Drums = (EInvisible) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eInvisible.Drums );
\r
2598 else if ( str3.Equals( "GuitarInvisible" ) )
\r
2600 this.eInvisible.Guitar = (EInvisible) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eInvisible.Guitar );
\r
2602 else if ( str3.Equals( "BassInvisible" ) )
\r
2604 this.eInvisible.Bass = (EInvisible) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.eInvisible.Bass );
\r
2606 //else if ( str3.Equals( "InvisibleDisplayTimeMs" ) )
\r
2608 // this.nDisplayTimesMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999999, (int) this.nDisplayTimesMs );
\r
2610 //else if ( str3.Equals( "InvisibleFadeoutTimeMs" ) )
\r
2612 // this.nFadeoutTimeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 9999999, (int) this.nFadeoutTimeMs );
\r
2615 else if ( str3.Equals( "DrumsReverse" ) )
\r
2617 this.bReverse.Drums = C変換.bONorOFF( str4[ 0 ] );
\r
2619 else if( str3.Equals( "GuitarReverse" ) )
\r
2621 this.bReverse.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2623 else if( str3.Equals( "BassReverse" ) )
\r
2625 this.bReverse.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2627 else if( str3.Equals( "GuitarRandom" ) )
\r
2629 this.eRandom.Guitar = (Eランダムモード) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.eRandom.Guitar );
\r
2631 else if( str3.Equals( "BassRandom" ) )
\r
2633 this.eRandom.Bass = (Eランダムモード) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.eRandom.Bass );
\r
2635 else if( str3.Equals( "GuitarLight" ) )
\r
2637 this.bLight.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2639 else if( str3.Equals( "BassLight" ) )
\r
2641 this.bLight.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2643 else if( str3.Equals( "GuitarLeft" ) )
\r
2645 this.bLeft.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2647 else if( str3.Equals( "BassLeft" ) )
\r
2649 this.bLeft.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2651 else if( str3.Equals( "DrumsPosition" ) )
\r
2653 this.判定文字表示位置.Drums = (E判定文字表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 2, (int) this.判定文字表示位置.Drums );
\r
2655 else if( str3.Equals( "GuitarPosition" ) )
\r
2657 this.判定文字表示位置.Guitar = (E判定文字表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.判定文字表示位置.Guitar );
\r
2659 else if( str3.Equals( "BassPosition" ) )
\r
2661 this.判定文字表示位置.Bass = (E判定文字表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.判定文字表示位置.Bass );
\r
2663 else if( str3.Equals( "DrumsScrollSpeed" ) )
\r
2665 this.n譜面スクロール速度.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x7cf, this.n譜面スクロール速度.Drums );
\r
2667 else if( str3.Equals( "GuitarScrollSpeed" ) )
\r
2669 this.n譜面スクロール速度.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x7cf, this.n譜面スクロール速度.Guitar );
\r
2671 else if( str3.Equals( "BassScrollSpeed" ) )
\r
2673 this.n譜面スクロール速度.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x7cf, this.n譜面スクロール速度.Bass );
\r
2675 else if( str3.Equals( "PlaySpeed" ) )
\r
2677 this.n演奏速度 = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 5, 40, this.n演奏速度 );
\r
2679 else if( str3.Equals( "ComboPosition" ) )
\r
2681 this.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 3, (int) this.ドラムコンボ文字の表示位置 );
\r
2683 //else if ( str3.Equals( "JudgeDispPriorityDrums" ) )
\r
2685 // this.e判定表示優先度.Drums = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Drums );
\r
2687 //else if ( str3.Equals( "JudgeDispPriorityGuitar" ) )
\r
2689 // this.e判定表示優先度.Guitar = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Guitar );
\r
2691 //else if ( str3.Equals( "JudgeDispPriorityBass" ) )
\r
2693 // this.e判定表示優先度.Bass = (E判定表示優先度) C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1, (int) this.e判定表示優先度.Bass );
\r
2695 else if ( str3.Equals( "Risky" ) ) // #23559 2011.6.23 yyagi
\r
2697 this.nRisky = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 10, this.nRisky );
\r
2699 else if ( str3.Equals( "DrumsTight" ) ) // #29500 2012.9.11 kairera0467
\r
2701 this.bTight = C変換.bONorOFF( str4[ 0 ] );
\r
2705 //-----------------------------
\r
2708 #region [ [ViewerOption] ]
\r
2709 //-----------------------------
\r
2710 case Eセクション種別.ViewerOption:
\r
2712 if ( str3.Equals( "ViewerDrumsScrollSpeed" ) )
\r
2714 this.nViewerScrollSpeed.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1999, this.nViewerScrollSpeed.Drums );
\r
2716 else if ( str3.Equals( "ViewerGuitarScrollSpeed" ) )
\r
2718 this.nViewerScrollSpeed.Guitar = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1999, this.nViewerScrollSpeed.Guitar );
\r
2720 else if ( str3.Equals( "ViewerBassScrollSpeed" ) )
\r
2722 this.nViewerScrollSpeed.Bass = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 1999, this.nViewerScrollSpeed.Bass );
\r
2724 else if ( str3.Equals( "ViewerVSyncWait" ) )
\r
2726 this.bViewerVSyncWait = C変換.bONorOFF( str4[ 0 ] );
\r
2728 else if ( str3.Equals( "ViewerShowDebugStatus" ) )
\r
2730 this.bViewerShowDebugStatus = C変換.bONorOFF( str4[ 0 ] );
\r
2732 else if ( str3.Equals( "ViewerTimeStretch" ) )
\r
2734 this.bViewerTimeStretch = C変換.bONorOFF( str4[ 0 ] );
\r
2736 else if ( str3.Equals( "ViewerGuitar" ) )
\r
2738 this.bViewerGuitar有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2740 else if ( str3.Equals( "ViewerDrums" ) )
\r
2742 this.bViewerDrums有効 = C変換.bONorOFF( str4[ 0 ] );
\r
2746 //-----------------------------
\r
2749 #region [ [AutoPlay] ]
\r
2750 //-----------------------------
\r
2751 case Eセクション種別.AutoPlay:
\r
2752 if( str3.Equals( "LC" ) )
\r
2754 this.bAutoPlay.LC = C変換.bONorOFF( str4[ 0 ] );
\r
2756 if( str3.Equals( "HH" ) )
\r
2758 this.bAutoPlay.HH = C変換.bONorOFF( str4[ 0 ] );
\r
2760 else if( str3.Equals( "SD" ) )
\r
2762 this.bAutoPlay.SD = C変換.bONorOFF( str4[ 0 ] );
\r
2764 else if( str3.Equals( "BD" ) )
\r
2766 this.bAutoPlay.BD = C変換.bONorOFF( str4[ 0 ] );
\r
2768 else if( str3.Equals( "HT" ) )
\r
2770 this.bAutoPlay.HT = C変換.bONorOFF( str4[ 0 ] );
\r
2772 else if( str3.Equals( "LT" ) )
\r
2774 this.bAutoPlay.LT = C変換.bONorOFF( str4[ 0 ] );
\r
2776 else if( str3.Equals( "FT" ) )
\r
2778 this.bAutoPlay.FT = C変換.bONorOFF( str4[ 0 ] );
\r
2780 else if( str3.Equals( "CY" ) )
\r
2782 this.bAutoPlay.CY = C変換.bONorOFF( str4[ 0 ] );
\r
2784 //else if( str3.Equals( "Guitar" ) )
\r
2786 // this.bAutoPlay.Guitar = C変換.bONorOFF( str4[ 0 ] );
\r
2788 else if ( str3.Equals( "GuitarR" ) )
\r
2790 this.bAutoPlay.GtR = C変換.bONorOFF( str4[ 0 ] );
\r
2792 else if ( str3.Equals( "GuitarG" ) )
\r
2794 this.bAutoPlay.GtG = C変換.bONorOFF( str4[ 0 ] );
\r
2796 else if ( str3.Equals( "GuitarB" ) )
\r
2798 this.bAutoPlay.GtB = C変換.bONorOFF( str4[ 0 ] );
\r
2800 else if ( str3.Equals( "GuitarPick" ) )
\r
2802 this.bAutoPlay.GtPick = C変換.bONorOFF( str4[ 0 ] );
\r
2804 else if ( str3.Equals( "GuitarWailing" ) )
\r
2806 this.bAutoPlay.GtW = C変換.bONorOFF( str4[ 0 ] );
\r
2808 //else if ( str3.Equals( "Bass" ) )
\r
2810 // this.bAutoPlay.Bass = C変換.bONorOFF( str4[ 0 ] );
\r
2812 else if ( str3.Equals( "BassR" ) )
\r
2814 this.bAutoPlay.BsR = C変換.bONorOFF( str4[ 0 ] );
\r
2816 else if ( str3.Equals( "BassG" ) )
\r
2818 this.bAutoPlay.BsG = C変換.bONorOFF( str4[ 0 ] );
\r
2820 else if ( str3.Equals( "BassB" ) )
\r
2822 this.bAutoPlay.BsB = C変換.bONorOFF( str4[ 0 ] );
\r
2824 else if ( str3.Equals( "BassPick" ) )
\r
2826 this.bAutoPlay.BsPick = C変換.bONorOFF( str4[ 0 ] );
\r
2828 else if ( str3.Equals( "BassWailing" ) )
\r
2830 this.bAutoPlay.BsW = C変換.bONorOFF( str4[ 0 ] );
\r
2833 //-----------------------------
\r
2836 #region [ [HitRange] ]
\r
2837 //-----------------------------
\r
2838 case Eセクション種別.HitRange:
\r
2839 if( str3.Equals( "Perfect" ) )
\r
2841 this.nヒット範囲ms.Perfect = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Perfect );
\r
2843 else if( str3.Equals( "Great" ) )
\r
2845 this.nヒット範囲ms.Great = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Great );
\r
2847 else if( str3.Equals( "Good" ) )
\r
2849 this.nヒット範囲ms.Good = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Good );
\r
2851 else if( str3.Equals( "Poor" ) )
\r
2853 this.nヒット範囲ms.Poor = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, 0, 0x3e7, this.nヒット範囲ms.Poor );
\r
2856 //-----------------------------
\r
2859 #region [ [GUID] ]
\r
2860 //-----------------------------
\r
2861 case Eセクション種別.GUID:
\r
2862 if( str3.Equals( "JoystickID" ) )
\r
2864 this.tJoystickIDの取得( str4 );
\r
2867 //-----------------------------
\r
2870 #region [ [DrumsKeyAssign] ]
\r
2871 //-----------------------------
\r
2872 case Eセクション種別.DrumsKeyAssign:
\r
2874 if( str3.Equals( "HH" ) )
\r
2876 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HH );
\r
2878 else if( str3.Equals( "SD" ) )
\r
2880 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.SD );
\r
2882 else if( str3.Equals( "BD" ) )
\r
2884 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.BD );
\r
2886 else if( str3.Equals( "HT" ) )
\r
2888 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HT );
\r
2890 else if( str3.Equals( "LT" ) )
\r
2892 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.LT );
\r
2894 else if( str3.Equals( "FT" ) )
\r
2896 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.FT );
\r
2898 else if( str3.Equals( "CY" ) )
\r
2900 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.CY );
\r
2902 else if( str3.Equals( "HO" ) )
\r
2904 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HHO );
\r
2906 else if( str3.Equals( "RD" ) )
\r
2908 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.RD );
\r
2910 else if( str3.Equals( "LC" ) )
\r
2912 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.LC );
\r
2914 else if( str3.Equals( "HP" ) ) // #27029 2012.1.4 from
\r
2916 this.tキーの読み出しと設定( str4, this.KeyAssign.Drums.HP ); //
\r
2920 //-----------------------------
\r
2923 #region [ [GuitarKeyAssign] ]
\r
2924 //-----------------------------
\r
2925 case Eセクション種別.GuitarKeyAssign:
\r
2927 if( str3.Equals( "R" ) )
\r
2929 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.R );
\r
2931 else if( str3.Equals( "G" ) )
\r
2933 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.G );
\r
2935 else if( str3.Equals( "B" ) )
\r
2937 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.B );
\r
2939 else if( str3.Equals( "Pick" ) )
\r
2941 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Pick );
\r
2943 else if( str3.Equals( "Wail" ) )
\r
2945 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Wail );
\r
2947 else if( str3.Equals( "Decide" ) )
\r
2949 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Decide );
\r
2951 else if( str3.Equals( "Cancel" ) )
\r
2953 this.tキーの読み出しと設定( str4, this.KeyAssign.Guitar.Cancel );
\r
2957 //-----------------------------
\r
2960 #region [ [BassKeyAssign] ]
\r
2961 //-----------------------------
\r
2962 case Eセクション種別.BassKeyAssign:
\r
2963 if( str3.Equals( "R" ) )
\r
2965 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.R );
\r
2967 else if( str3.Equals( "G" ) )
\r
2969 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.G );
\r
2971 else if( str3.Equals( "B" ) )
\r
2973 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.B );
\r
2975 else if( str3.Equals( "Pick" ) )
\r
2977 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Pick );
\r
2979 else if( str3.Equals( "Wail" ) )
\r
2981 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Wail );
\r
2983 else if( str3.Equals( "Decide" ) )
\r
2985 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Decide );
\r
2987 else if( str3.Equals( "Cancel" ) )
\r
2989 this.tキーの読み出しと設定( str4, this.KeyAssign.Bass.Cancel );
\r
2992 //-----------------------------
\r
2995 #region [ [SystemKeyAssign] ]
\r
2996 //-----------------------------
\r
2997 case Eセクション種別.SystemKeyAssign:
\r
2998 if( str3.Equals( "Capture" ) )
\r
3000 this.tキーの読み出しと設定( str4, this.KeyAssign.System.Capture );
\r
3003 //-----------------------------
\r
3006 #region [ [Temp] ]
\r
3007 //-----------------------------
\r
3008 case Eセクション種別.Temp: // #27029 2012.1.5 from
\r
3009 if( str3.Equals( "BackupOf1BD_HHGroup" ) )
\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
3014 else if( str3.Equals( "BackupOf1BD_HitSoundPriorityHH" ) )
\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
3020 //-----------------------------
\r
3027 catch ( Exception exception )
\r
3029 Trace.TraceError( exception.Message );
\r
3037 /// ギターとベースのキーアサイン入れ替え
\r
3039 //public void SwapGuitarBassKeyAssign() // #24063 2011.1.16 yyagi
\r
3041 // for ( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )
\r
3043 // CKeyAssign.STKEYASSIGN t; //= new CConfigIni.CKeyAssign.STKEYASSIGN();
\r
3044 // for ( int k = 0; k < 16; k++ )
\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
3051 // this.bIsSwappedGuitarBass = !bIsSwappedGuitarBass;
\r
3057 #region [ private ]
\r
3058 //-----------------
\r
3059 private enum Eセクション種別
\r
3076 private bool _bDrums有効;
\r
3077 private bool _bGuitar有効;
\r
3078 private bool bConfigIniが存在している;
\r
3079 private string ConfigIniファイル名;
\r
3081 private void tJoystickIDの取得( string strキー記述 )
\r
3083 string[] strArray = strキー記述.Split( new char[] { ',' } );
\r
3084 if( strArray.Length >= 2 )
\r
3087 if( ( int.TryParse( strArray[ 0 ], out result ) && ( result >= 0 ) ) && ( result <= 9 ) )
\r
3089 if( this.dicJoystick.ContainsKey( result ) )
\r
3091 this.dicJoystick.Remove( result );
\r
3093 this.dicJoystick.Add( result, strArray[ 1 ] );
\r
3097 private void tキーアサインを全部クリアする()
\r
3099 this.KeyAssign = new CKeyAssign();
\r
3100 for( int i = 0; i <= (int)EKeyConfigPart.SYSTEM; i++ )
\r
3102 for( int j = 0; j <= (int)EKeyConfigPad.Capture; j++ )
\r
3104 this.KeyAssign[ i ][ j ] = new CKeyAssign.STKEYASSIGN[ 16 ];
\r
3105 for( int k = 0; k < 16; k++ )
\r
3107 this.KeyAssign[ i ][ j ][ k ] = new CKeyAssign.STKEYASSIGN( E入力デバイス.不明, 0, 0 );
\r
3112 private void tキーの書き出し( StreamWriter sw, CKeyAssign.STKEYASSIGN[] assign )
\r
3115 for( int i = 0; i < 0x10; i++ )
\r
3117 if( assign[ i ].入力デバイス == E入力デバイス.不明 )
\r
3126 switch( assign[ i ].入力デバイス )
\r
3128 case E入力デバイス.キーボード:
\r
3132 case E入力デバイス.MIDI入力:
\r
3136 case E入力デバイス.ジョイパッド:
\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
3147 private void tキーの読み出しと設定( string strキー記述, CKeyAssign.STKEYASSIGN[] assign )
\r
3149 string[] strArray = strキー記述.Split( new char[] { ',' } );
\r
3150 for( int i = 0; ( i < strArray.Length ) && ( i < 0x10 ); i++ )
\r
3155 string str = strArray[ i ].Trim().ToUpper();
\r
3156 if ( str.Length >= 3 )
\r
3158 e入力デバイス = E入力デバイス.不明;
\r
3159 switch ( str[ 0 ] )
\r
3162 e入力デバイス = E入力デバイス.ジョイパッド;
\r
3166 e入力デバイス = E入力デバイス.キーボード;
\r
3173 e入力デバイス = E入力デバイス.MIDI入力;
\r
3177 e入力デバイス = E入力デバイス.マウス;
\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
3188 this.t指定した入力が既にアサイン済みである場合はそれを全削除する( e入力デバイス, id, code );
\r
3189 assign[ i ].入力デバイス = e入力デバイス;
\r
3190 assign[ i ].ID = id;
\r
3191 assign[ i ].コード = code;
\r
3195 private void tデフォルトのキーアサインに設定する()
\r
3197 this.tキーアサインを全部クリアする();
\r
3199 string strDefaultKeyAssign = @"
\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
3207 FT=K023,M041,M043,M045
\r
3208 CY=K022,M049,M052,M055,M057,M091
\r
3210 RD=K020,M051,M053,M059,M089
\r
3219 Pick=K0115,K046,J06
\r
3229 Pick=K0103,K0100,J08
\r
3237 t文字列から読み込み( strDefaultKeyAssign );
\r
3239 //-----------------
\r