1 using System.Collections.Generic;
\r
2 using System.Threading;
\r
3 using System.Runtime.Serialization;
\r
10 /// DataContract はフィールドまたはプロパティを XML にシリアライズできます。
\r
11 /// DataMember が付いているメンバだけがシリアライズされます。シリアライズ可能な型については MSDN を参照してください。
\r
12 /// DataMember が付いていないメンバはデシリアライズ時に別途指定される既定値になります。
\r
13 /// これらは OnDeserialized 属性がついたメソッドで処理します。
\r
16 /// ・新しいバージョンで EnumMember, DataMember の 変数名を変更しないでください。
\r
17 /// 変更しても以前の値を保持したい場合は Name プロパティ (EnumMember の場合 Value プロパティ) に前の名前を入力してください。
\r
18 /// (例 : [DataMember(Name="old_hoge")]。
\r
19 /// ・DataMember の 型を変更しないでください。
\r
20 /// ・使用しなくなった DataMember を削除しないでください。
\r
21 /// ・デシリアライズで例外が起きた場合 Config.xml はリセットされます。
\r
23 /// ---- 新しくオプションを追加する場合 ----
\r
24 /// ・変数名は原則英語としてください。
\r
25 /// ・DTXMania の新しいバージョンで DataMember を追加する場合 Order 属性値を設定してください。
\r
26 /// 値は他の DataMember の Order 値の中でもっとも大きい値 +1 (無い場合 1 あるいは DTXMania のバージョン) としてください。
\r
27 /// (例: [DataMember(Order=1 / Order=105 etc.. )]public OptionInteger new_hoge;
\r
28 /// 異なる DataMember が同じ Order 値を持っていても構いません。
\r
29 /// ・DataMember に関連する型には原則 DataContract が必要です (enum など)。
\r
30 /// これがないと正しくシリアライズ / デシリアライズできません。
\r
31 /// ・メンバは Deserializing メソッドでインスタンスを生成してください。
\r
32 /// ・DefaultDeserializer で説明文や制約を設定 (Initialize メソッド) してください。
\r
33 /// ラベルや説明文は xml には書き出されませんので、デシリアライズ後にこの処理が必要です。
\r
34 /// このとき Initialize しようとしている値が null でないかチェックして、
\r
35 /// null であれば必ず Deserializing メソッド内と同様にインスタンスを生成してください。
\r
36 /// ・CActConfigList で新しく追加した項目を list に追加してください。
\r
39 public class CConfigXml : IExtensibleDataObject
\r
41 public static readonly int AssignableCodes = 16;
\r
44 /// ExtensibleDataObject はラウンドトリップを有効にします。
\r
45 /// 前のバージョンの DTXMania で新しい Config.xml を読み込んだ時でも
\r
46 /// デシリアライズされなかったメンバの情報は失われません。
\r
48 private ExtensionDataObject extobj;
\r
49 public ExtensionDataObject ExtensionData
\r
62 public COptionBool bFullAVI;
\r
64 public COptionBool bAVI;
\r
66 public COptionBool bBGA;
\r
68 public COptionBool bBGMPlay;
\r
70 public COptionBool bLog;
\r
72 public COptionBool bLogDTX;
\r
74 public COptionBool bLogEnumerateSongs;
\r
76 public COptionBool bLogCreateRelease;
\r
78 public COptionEnum<EJudgeDisplayPriority> eJudgePriority;
\r
80 public COptionBool bScoreIni;
\r
82 public COptionBool bStageFailed;
\r
84 // #29500 2012.9.11 kairera0467 TIGHTモード
\r
85 public COptionBool bTight;
\r
87 public COptionBool bWaveAdjust;
\r
89 public COptionBool bCymbalFree;
\r
91 public COptionBool bStoicMode;
\r
93 public COptionBool bDrumsHitSound;
\r
95 public COptionBool bFillin;
\r
97 public COptionBool bRandSubBox;
\r
99 public COptionBool bDebugInfo;
\r
101 public COptionBool bAudience;
\r
103 public COptionBool bVSyncWait;
\r
105 public COptionBool bItalicFontSongSelect;
\r
107 public COptionBool bBoldFontSongSelect;
\r
109 public COptionBool bFullScreen;
\r
111 public COptionBool bViewerVSyncWait;
\r
113 public COptionBool bViewerShowDebugStatus;
\r
115 public COptionBool bViewerTimeStretch;
\r
117 public COptionBool bViewerDrumsActive;
\r
119 public COptionBool bViewerGuitarActive;
\r
121 public COptionBool bBufferedInput;
\r
123 // #25399 2011.6.9 yyagi リザルト画像自動保存機能ON/OFF
\r
124 public COptionBool bIsAutoResultCapture;
\r
126 // #28200 2012.5.1 yyagi System Menuの利用可否切替(使用可)
\r
127 public COptionBool bIsEnabledSystemMenu;
\r
129 // #28195 2012.5.6 yyagi box.defによるスキン切替機能を使用するか否か
\r
130 public COptionBool bUseBoxDefSkin;
\r
131 public bool bConfigIniが存在している;
\r
133 public COptionBool bLoadSoundSpeed;
\r
135 // #26752 2011.11.26 ダブルクリックでのフルスクリーンモード移行を許可
\r
136 public COptionBool bIsAllowedDoubleClickFullscreen;
\r
138 // #33689 2014.6.6 yyagi 演奏タイマーの種類,初期値はfalse (FDKのタイマー。FROM氏考案の独自タイマー)
\r
139 public COptionBool bUseOSTimer;
\r
142 public COptionBool bDynamicBassMixerManagement;
\r
144 // #23664 2013.2.24 yyagi ピッチ変更無しで再生速度を変更するかどうか,初期値はfalse (再生速度変更を、ピッチ変更にて行う)
\r
145 public COptionBool bTimeStretch;
\r
149 public COptionInteger nBGAlpha;
\r
151 public Coordinates.CRect rcWindow;
\r
153 public Coordinates.CRect rcViewerWindow;
\r
155 public COptionInteger nMasterVolume;
\r
157 public COptionInteger nSleepUnfocusMs;
\r
159 public COptionInteger nSleepPerFrameMs;
\r
161 public COptionInteger nPlaySpeed;
\r
163 public COptionInteger nPreSoundWeightMs;
\r
165 public COptionInteger nPreImageWeightMs;
\r
167 public COptionInteger nAutoVolume;
\r
169 public COptionInteger nChipVolume;
\r
171 public COptionInteger nFontSizeDotSongSelect;
\r
173 // #23559 2011.6.20 yyagi Riskyでの残ミス数。0で閉店
\r
174 public COptionInteger nRisky;
\r
176 // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップ再表示期間
\r
177 public COptionInteger nChipDisplayTimeMs;
\r
179 // #32072 2013.10.24 yyagi Semi-Invisibleでの、チップフェードアウト時間
\r
180 public COptionInteger nChipFadeoutTimeMs;
\r
182 // #28228 2012.5.1 yyagi レーン毎の最大同時発音数
\r
183 // #24820 2013.1.15 yyagi 初期値を4から2に変更。BASS.net使用時の負荷軽減のため。
\r
184 // #24820 2013.1.17 yyagi 初期値を4に戻した。動的なミキサー制御がうまく動作しているため。
\r
185 public COptionInteger nPoliphonicSounds;
\r
187 // #24820 2013.1.15 yyagi WASAPIのバッファサイズ 初期値は50(0で自動設定)
\r
188 public COptionInteger nWASAPIBufferSizeMs;
\r
192 public COptionEnum<ECYGroup> eCYGroup;
\r
194 public COptionEnum<EDark> eDark;
\r
196 public COptionEnum<EFTGroup> eFTGroup;
\r
198 public COptionEnum<EHHGroup> eHHGroup;
\r
200 // #27029 2012.1.4 from HHPedalとBassPedalのグルーピング
\r
201 public COptionEnum<EBDGroup> eBDGroup;
\r
203 public COptionEnum<EHitSoundPriority> eHitSoundPriorityCY;
\r
205 public COptionEnum<EHitSoundPriority> eHitSoundPriorityFT;
\r
207 public COptionEnum<EHitSoundPriority> eHitSoundPriorityHH;
\r
209 public COptionEnum<EActiveInstrument> eActiveInst;
\r
211 // #25370 2011.6.3 yyagi ズレ時間表示
\r
212 public COptionEnum<EShowLagType> nShowLagType;
\r
214 // #24820 2012.12.23 yyagi 初期値はACM | #31927 2013.8.25 yyagi OSにより初期値変更
\r
215 // 出力サウンドデバイス(0=ACM(にしたいが設計がきつそうならDirectShow), 1=ASIO, 2=WASAPI)
\r
216 public COptionEnum<ESoundDeviceTypeForConfig> nSoundDeviceType;
\r
218 // #27029 2012.1.5 from:
\r
219 // BDGroup が FP|BD→FP&BD に変化した際に自動変化するパラメータの値のバックアップ。FP&BD→FP|BD の時に元に戻す。
\r
220 // これらのバックアップ値は、BDGroup が FP&BD 状態の時にのみ Config.ini に出力され、BDGroup が FP|BD に戻ったら Config.ini から消える。
\r
221 public COptionEnum<EHHGroup> Backup1BDHHGroup;
\r
223 public COptionEnum<EHitSoundPriority> Backup1BDPriotiry;
\r
225 public COptionEnum<EDamage> eDamageLevel;
\r
228 public COptionString strDTXManiaVersion;
\r
230 public COptionString strSongDataPath;
\r
232 public COptionString strFontSongSelect;
\r
234 // #28195 2012.5.2 yyagi 使用中のSkinサブフォルダ名
\r
235 public COptionString strSystemSkinSubfolderPath;
\r
238 // #24820 2013.1.17 yyagi ASIOデバイス
\r
239 public COptionStringList strASIODevice;
\r
242 public STDGBSValue<COptionBool> bLight;
\r
244 public STDGBSValue<COptionBool> bReverse;
\r
246 public STDGBSValue<COptionBool> bGraph;
\r
248 public STDGBSValue<COptionBool> bEmphasizePlaySound;
\r
250 public STDGBSValue<COptionEnum<EAutoGhostData>> eAutoGhost;
\r
252 public STDGBSValue<COptionEnum<ETargetGhostData>> eTargetGhost;
\r
254 public STDGBSValue<COptionEnum<ERandom>> eRandom;
\r
256 public STDGBSValue<COptionEnum<ESudHidInv>> eSudHidInv;
\r
258 public STDGBSValue<COptionInteger> nMinComboDisp;
\r
260 public STDGBSValue<COptionInteger> nScrollSpeed;
\r
263 public STDGBSValue<COptionInteger> nInputAdjustTimeMs;
\r
266 public STDGBSValue<COptionInteger> nJudgeLinePosOffset;
\r
268 public STDGBSValue<COptionInteger> nViewerScrollSpeed;
\r
271 public STDGBSValue<COptionFloat> fJudgeLinePosOffsetBase;
\r
274 public COptionPadBool bAutoPlay;
\r
277 // #23857 2011.1.31 yyagi VelocityMin
\r
278 public STPadValue<COptionInteger> nVelocityMin;
\r
280 public STPadValue<COptionKeyAssign[]> KeyAssign;
\r
282 public STJudgeValue<COptionInteger> nHitRange;
\r
284 public COptionDictionary<int, string> dicJoystick;
\r
287 public STDGBSValue<COptionBool> bDisplayCombo;
\r
289 public STDGBSValue<COptionBool> bDisplayJudge;
\r
292 /// 楽器左端座標。ここを基準に各パーツを配置する。
\r
295 public STDGBSValue<STInstValue<COptionInteger>> cdInstX;
\r
297 public STInstValue<COptionInteger> cdDebugX;
\r
299 public STInstValue<COptionInteger> cdDebugY;
\r
301 public STInstValue<COptionInteger> cdMovieX;
\r
303 public STInstValue<COptionInteger> cdMovieY;
\r
305 public STDGBSValue<STInstValue<COptionInteger>> cdComboX;
\r
307 public STDGBSValue<STInstValue<COptionInteger>> cdComboY;
\r
309 public STDGBSValue<COptionInteger> cdJudgeLineY;
\r
311 public STDGBSValue<COptionInteger> cdJudgeY;
\r
313 public STLaneValue<COptionInteger> cdLaneOrder;
\r
315 public STDGBSValue<COptionInteger> nSuddenFrom;
\r
317 public STDGBSValue<COptionInteger> nHiddenFrom;
\r
320 public int GetLaneX(ELane e)
\r
322 EPart p = EPart.Drums;
\r
323 ELane start = ELane.DrumsLaneMin;
\r
324 ELane end = ELane.DrumsLaneMax;
\r
325 if (e >= ELane.GuitarLaneMin && e < ELane.GuitarLaneMax)
\r
328 start = ELane.GuitarLaneMin;
\r
329 end = ELane.GuitarLaneMax;
\r
331 if (e >= ELane.BassLaneMin && e < ELane.BassLaneMax)
\r
334 start = ELane.BassLaneMin;
\r
335 end = ELane.BassLaneMax;
\r
337 int ret = cdInstX[p][eActiveInst];
\r
338 int order = cdLaneOrder[e];
\r
339 for (ELane t = start; t < end; ++t)
\r
341 if (cdLaneOrder[t] < order)
\r
343 ret += GetLaneW(t);
\r
349 public int GetLaneW(ELane e)
\r
362 public void AdjustLaneOrders(EPart p)
\r
364 ELane min = ELane.DrumsLaneMin;
\r
365 ELane max = ELane.DrumsLaneMax;
\r
366 if (p == EPart.Guitar)
\r
368 min = ELane.GuitarLaneMin;
\r
369 max = ELane.GuitarLaneMax;
\r
371 else if (p == EPart.Bass)
\r
373 min = ELane.BassLaneMin;
\r
374 max = ELane.BassLaneMax;
\r
377 bool[] used = new bool[max - min];
\r
378 for (ELane t = min; t < max; ++t)
\r
380 used[cdLaneOrder[t]] = true;
\r
382 for (int i = 0; i < used.Length; ++i)
\r
386 for (ELane t = min; t < max; ++t)
\r
388 for (ELane t2 = t + 1; t2 < max; ++t2)
\r
390 if (cdLaneOrder[t].Value == cdLaneOrder[t2].Value)
\r
392 cdLaneOrder[t].Value = (int)(min + i);
\r
407 public void Deserializing(StreamingContext sc)
\r
409 // #xxxxx 2011.11.27 yyagi add
\r
410 // #23568 2010.11.04 ikanick add
\r
411 // #34069 2014.7.23 yyagi 初回起動時のwindow sizeは、CDTXMania側で設定する(-> 1280x720にする)
\r
412 // #30675 2013.02.04 ikanick add
\r
413 // #23580 2011.1.3 yyagi
\r
414 // #31602 2013.6.23 yyagi
\r
415 //this.strDTXManiaのバージョン = "Unknown";
\r
418 bFullScreen = new COptionBool(false);
\r
419 bVSyncWait = new COptionBool(true);
\r
420 bStageFailed = new COptionBool(true);
\r
421 bFullAVI = new COptionBool(false);
\r
422 bAVI = new COptionBool(true);
\r
423 bBGA = new COptionBool(true);
\r
424 bFillin = new COptionBool(true);
\r
425 bLogDTX = new COptionBool(true);
\r
426 bLogEnumerateSongs = new COptionBool(false);
\r
427 bLogCreateRelease = new COptionBool(false);
\r
428 bCymbalFree = new COptionBool(false);
\r
429 bStoicMode = new COptionBool(false);
\r
430 bItalicFontSongSelect = new COptionBool(false);
\r
431 bWaveAdjust = new COptionBool(true);
\r
432 bBGMPlay = new COptionBool(true);
\r
433 bDrumsHitSound = new COptionBool(true);
\r
434 bAudience = new COptionBool(true);
\r
435 bScoreIni = new COptionBool(true);
\r
436 bRandSubBox = new COptionBool(true);
\r
437 bBoldFontSongSelect = new COptionBool(true);
\r
438 bDebugInfo = new COptionBool(false);
\r
439 bLog = new COptionBool(true);
\r
440 bAutoPlay = new COptionPadBool();
\r
441 for (EPad pad = EPad.Min; pad < EPad.Max; ++pad)
\r
443 bAutoPlay[pad] = new COptionBool(false);
\r
445 bViewerVSyncWait = new COptionBool(true);
\r
446 bViewerShowDebugStatus = new COptionBool(true);
\r
447 bViewerTimeStretch = new COptionBool(false);
\r
448 bViewerDrumsActive = new COptionBool(true);
\r
449 bViewerGuitarActive = new COptionBool(true);
\r
450 bLoadSoundSpeed = new COptionBool(true);
\r
451 bIsAutoResultCapture = new COptionBool(false);
\r
452 bBufferedInput = new COptionBool(true);
\r
453 bIsAllowedDoubleClickFullscreen = new COptionBool(true);
\r
454 bIsEnabledSystemMenu = new COptionBool(true);
\r
455 bUseBoxDefSkin = new COptionBool(true);
\r
456 bTight = new COptionBool(false);
\r
457 bUseOSTimer = new COptionBool(false);
\r
458 bDynamicBassMixerManagement = new COptionBool(true);
\r
459 bTimeStretch = new COptionBool(false);
\r
460 nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(FDK.COS.bIsVistaOrLater ? ESoundDeviceTypeForConfig.WASAPI : ESoundDeviceTypeForConfig.DSound);
\r
463 strSongDataPath = new COptionString(@".\");
\r
464 strFontSongSelect = new COptionString("MS PGothic");
\r
465 strDTXManiaVersion = new COptionString(CDTXMania.VERSION);
\r
466 strSystemSkinSubfolderPath = new COptionString("");
\r
469 eDamageLevel = new COptionEnum<EDamage>(EDamage.Normal);
\r
470 eJudgePriority = new COptionEnum<EJudgeDisplayPriority>(EJudgeDisplayPriority.Under);
\r
471 eCYGroup = new COptionEnum<ECYGroup>(ECYGroup.None);
\r
472 eDark = new COptionEnum<EDark>(EDark.Off);
\r
473 eFTGroup = new COptionEnum<EFTGroup>(EFTGroup.None);
\r
474 eHHGroup = new COptionEnum<EHHGroup>(EHHGroup.None);
\r
475 eBDGroup = new COptionEnum<EBDGroup>(EBDGroup.None);
\r
476 Backup1BDHHGroup = new COptionEnum<EHHGroup>(EHHGroup.None);
\r
477 Backup1BDPriotiry = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);
\r
478 eHitSoundPriorityCY = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);
\r
479 eHitSoundPriorityFT = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);
\r
480 eHitSoundPriorityHH = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);
\r
481 eJudgePriority = new COptionEnum<EJudgeDisplayPriority>(EJudgeDisplayPriority.Under);
\r
482 eActiveInst = new COptionEnum<EActiveInstrument>(EActiveInstrument.Both);
\r
483 nShowLagType = new COptionEnum<EShowLagType>(EShowLagType.Off);
\r
486 rcWindow = new Coordinates.CRect(100, 100, 1280, 720);
\r
487 nSleepPerFrameMs = new COptionInteger(-1);
\r
488 nSleepUnfocusMs = new COptionInteger(1);
\r
489 nBGAlpha = new COptionInteger(200);
\r
490 nPreSoundWeightMs = new COptionInteger(1000);
\r
491 nPreImageWeightMs = new COptionInteger(100);
\r
492 nFontSizeDotSongSelect = new COptionInteger(20);
\r
493 nAutoVolume = new COptionInteger(80);
\r
494 nChipVolume = new COptionInteger(100);
\r
495 nPlaySpeed = new COptionInteger(20);
\r
497 nHitRange = new STJudgeValue<COptionInteger>();
\r
498 nHitRange.Perfect = new COptionInteger(34);
\r
499 nHitRange.Great = new COptionInteger(67);
\r
500 nHitRange.Good = new COptionInteger(84);
\r
501 nHitRange.Poor = new COptionInteger(117);
\r
503 nVelocityMin = new STPadValue<COptionInteger>();
\r
504 for (EPad pad = EPad.Min; pad < EPad.Max; ++pad)
\r
506 nVelocityMin[pad] = new COptionInteger(0);
\r
508 nVelocityMin.HH.Value = 20;
\r
509 nRisky = new COptionInteger(0);
\r
510 nWASAPIBufferSizeMs = new COptionInteger(50);
\r
511 nChipDisplayTimeMs = new COptionInteger(3000);
\r
512 nChipFadeoutTimeMs = new COptionInteger(2000);
\r
513 rcViewerWindow = new Coordinates.CRect(100, 100, 1280, 720);
\r
514 nMasterVolume = new COptionInteger(100);
\r
515 nPoliphonicSounds = new COptionInteger(4);
\r
518 bEmphasizePlaySound = new STDGBSValue<COptionBool>();
\r
519 bReverse = new STDGBSValue<COptionBool>();
\r
520 bLight = new STDGBSValue<COptionBool>();
\r
521 bGraph = new STDGBSValue<COptionBool>();
\r
522 bDisplayCombo = new STDGBSValue<COptionBool>();
\r
523 bDisplayJudge = new STDGBSValue<COptionBool>();
\r
525 nScrollSpeed = new STDGBSValue<COptionInteger>();
\r
526 nMinComboDisp = new STDGBSValue<COptionInteger>();
\r
527 nInputAdjustTimeMs = new STDGBSValue<COptionInteger>();
\r
528 nJudgeLinePosOffset = new STDGBSValue<COptionInteger>();
\r
529 nSuddenFrom = new STDGBSValue<COptionInteger>();
\r
530 nHiddenFrom = new STDGBSValue<COptionInteger>();
\r
532 eRandom = new STDGBSValue<COptionEnum<ERandom>>();
\r
533 eAutoGhost = new STDGBSValue<COptionEnum<EAutoGhostData>>();
\r
534 eTargetGhost = new STDGBSValue<COptionEnum<ETargetGhostData>>();
\r
535 eSudHidInv = new STDGBSValue<COptionEnum<ESudHidInv>>();
\r
538 for (EPart i = EPart.Drums; i <= EPart.Unknown; i++)
\r
540 bEmphasizePlaySound[i] = new COptionBool(true);
\r
541 bReverse[i] = new COptionBool(false);
\r
542 eRandom[i] = new COptionEnum<ERandom>(ERandom.Off);
\r
543 bLight[i] = new COptionBool(false);
\r
544 bGraph[i] = new COptionBool(false);
\r
545 bDisplayJudge[i] = new COptionBool(true);
\r
546 bDisplayCombo[i] = new COptionBool(true);
\r
548 nScrollSpeed[i] = new COptionInteger(1);
\r
549 nInputAdjustTimeMs[i] = new COptionInteger(0);
\r
550 nJudgeLinePosOffset[i] = new COptionInteger(0);
\r
551 nViewerScrollSpeed[i] = new COptionInteger(1);
\r
552 nMinComboDisp[i] = new COptionInteger(2);
\r
553 nSuddenFrom[i] = new COptionInteger(450); // +100 FI
\r
554 nHiddenFrom[i] = new COptionInteger(225); // +100 FO
\r
556 eAutoGhost[i] = new COptionEnum<EAutoGhostData>(EAutoGhostData.Perfect);
\r
557 eTargetGhost[i] = new COptionEnum<ETargetGhostData>(ETargetGhostData.None);
\r
558 eSudHidInv[i] = new COptionEnum<ESudHidInv>(ESudHidInv.Off);
\r
560 fJudgeLinePosOffsetBase[i] = new COptionFloat(0f);
\r
563 dicJoystick = new COptionDictionary<int, string>();
\r
564 dicJoystick.Value = new Dictionary<int, string>(10);
\r
566 string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();
\r
567 strASIODevice = new COptionStringList(asiodevs.Length > 0 ? asiodevs[0] : null);
\r
570 cdInstX = new STDGBSValue<STInstValue<COptionInteger>>();
\r
571 cdInstX.Drums = new STInstValue<COptionInteger>();
\r
572 cdInstX.Drums.DrOnly = new COptionInteger(SampleFramework.GameWindowSize.Width / 2 - 314);
\r
573 cdInstX.Guitar = new STInstValue<COptionInteger>();
\r
574 cdInstX.Guitar.GBOnly = new COptionInteger(480 - 72 * 4);
\r
575 cdInstX.Bass = new STInstValue<COptionInteger>();
\r
576 cdInstX.Bass.GBOnly = new COptionInteger(SampleFramework.GameWindowSize.Width - 480);
\r
577 cdInstX.Drums.Both = new COptionInteger(cdInstX.Drums.DrOnly);
\r
578 cdInstX.Guitar.Both = new COptionInteger(cdInstX.Guitar.GBOnly);
\r
579 cdInstX.Bass.Both = new COptionInteger(cdInstX.Bass.GBOnly);
\r
581 cdDebugX = new STInstValue<COptionInteger>();
\r
582 cdDebugX.DrOnly = new COptionInteger(450 * 3);
\r
583 cdDebugX.Both = new COptionInteger(450 * 3);
\r
584 cdDebugX.GBOnly = new COptionInteger(cdInstX.Drums.DrOnly);
\r
586 cdDebugY = new STInstValue<COptionInteger>();
\r
587 cdDebugY.Both = new COptionInteger(200);
\r
588 cdDebugY.DrOnly = new COptionInteger(200);
\r
589 cdDebugY.GBOnly = new COptionInteger(200);
\r
591 cdMovieX = new STInstValue<COptionInteger>();
\r
592 cdMovieX.Both = new COptionInteger(619 + 682);
\r
593 cdMovieX.DrOnly = new COptionInteger(619 + 682);
\r
594 cdMovieX.GBOnly = new COptionInteger(682);
\r
596 cdMovieY = new STInstValue<COptionInteger>();
\r
597 cdMovieY.Both = new COptionInteger(128);
\r
598 cdMovieY.DrOnly = new COptionInteger(128);
\r
599 cdMovieY.GBOnly = new COptionInteger(128);
\r
601 cdComboX = new STDGBSValue<STInstValue<COptionInteger>>();
\r
602 cdComboX.Drums = new STInstValue<COptionInteger>();
\r
603 cdComboX.Drums.Both = new COptionInteger(cdInstX.Drums.Both + (72 * 5 + 85 * 2 + 99) / 2);
\r
604 cdComboX.Drums.DrOnly = new COptionInteger(cdInstX.Drums.DrOnly + (72 * 5 + 85 * 2 + 99) / 2);
\r
605 cdComboX.Guitar = new STInstValue<COptionInteger>();
\r
606 cdComboX.Guitar.Both = new COptionInteger(cdInstX.Guitar.Both + 72 * 2);
\r
607 cdComboX.Guitar.GBOnly = new COptionInteger(cdInstX.Guitar.GBOnly + 72 * 2);
\r
608 cdComboX.Bass = new STInstValue<COptionInteger>();
\r
609 cdComboX.Bass.Both = new COptionInteger(cdInstX.Bass.Both + 72 * 2);
\r
610 cdComboX.Bass.GBOnly = new COptionInteger(cdInstX.Bass.GBOnly + 72 * 2);
\r
612 cdComboY = new STDGBSValue<STInstValue<COptionInteger>>();
\r
613 cdComboY.Drums = new STInstValue<COptionInteger>();
\r
614 cdComboY.Drums.Both = new COptionInteger(100);
\r
615 cdComboY.Drums.DrOnly = new COptionInteger(100);
\r
616 cdComboY.Guitar = new STInstValue<COptionInteger>();
\r
617 cdComboY.Guitar.Both = new COptionInteger(700);
\r
618 cdComboY.Guitar.GBOnly = new COptionInteger(700);
\r
619 cdComboY.Bass = new STInstValue<COptionInteger>();
\r
620 cdComboY.Bass.Both = new COptionInteger(700);
\r
621 cdComboY.Bass.GBOnly = new COptionInteger(700);
\r
623 cdJudgeLineY = new STDGBSValue<COptionInteger>();
\r
624 cdJudgeLineY.Drums = new COptionInteger(942);
\r
625 cdJudgeLineY.Guitar = new COptionInteger(138);
\r
626 cdJudgeLineY.Bass = new COptionInteger(138);
\r
628 cdJudgeY = new STDGBSValue<COptionInteger>();
\r
629 cdJudgeY.Drums = new COptionInteger(350);
\r
630 cdJudgeY.Guitar = new COptionInteger(600);
\r
631 cdJudgeY.Bass = new COptionInteger(600);
\r
633 cdLaneOrder = new STLaneValue<COptionInteger>();
\r
634 for (ELane lane = ELane.DrumsLaneMin; lane < ELane.BassLaneMax; ++lane)
\r
636 cdLaneOrder[lane] = new COptionInteger(0);
\r
639 cdLaneOrder.HH.Value = 1;
\r
640 cdLaneOrder.SD.Value = 2;
\r
641 cdLaneOrder.BD.Value = 3;
\r
642 cdLaneOrder.HT.Value = 4;
\r
643 cdLaneOrder.LT.Value = 5;
\r
644 cdLaneOrder.FT.Value = 6;
\r
645 cdLaneOrder.CY.Value = 7;
\r
647 cdLaneOrder.GtG.Value = 1;
\r
648 cdLaneOrder.GtB.Value = 2;
\r
649 cdLaneOrder.GtW.Value = 3;
\r
651 cdLaneOrder.BsG.Value = 1;
\r
652 cdLaneOrder.BsR.Value = 2;
\r
653 cdLaneOrder.BsW.Value = 3;
\r
655 bConfigIniが存在している = System.IO.File.Exists(CDTXMania.Instance.strEXEのあるフォルダ + "Config.xml");
\r
660 /// 保存する必要がない値はここで設定してください。
\r
661 /// 設定しない場合 DataMember 以外のメンバはすべてその型の規定値になります。
\r
663 /// <param name="sc">ストリーミングコンテキスト。使用しません。</param>
\r
665 public void DefaultDeserializer(StreamingContext sc)
\r
668 bFullScreen.Initialize("FullScreen", Properties.Resources.strCfgSysFullScreen);
\r
669 bVSyncWait.Initialize("VSyncWait", Properties.Resources.strCfgSysVSync);
\r
670 bStageFailed.Initialize("StageFailed", Properties.Resources.strCfgSysStageFailed);
\r
671 bFullAVI.Initialize("FullAVI", Properties.Resources.strCfgSysFullAVI);
\r
672 bAVI.Initialize("AVI", Properties.Resources.strCfgSysAVI);
\r
673 bBGA.Initialize("BGA", Properties.Resources.strCfgSysBGA);
\r
674 bLog.Initialize("Log", Properties.Resources.strCfgSysLog);
\r
675 bStoicMode.Initialize("Stoic", Properties.Resources.strCfgSysStoic);
\r
676 bWaveAdjust.Initialize("AdjustWaves", Properties.Resources.strCfgSysAdjustWaves);
\r
677 bBGMPlay.Initialize("BGM", Properties.Resources.strCfgSysBGM);
\r
678 bAudience.Initialize("Audience", Properties.Resources.strCfgSysAudience);
\r
679 bScoreIni.Initialize("SaveRecord", Properties.Resources.strCfgSysSaveScoreIni);
\r
680 bRandSubBox.Initialize("RandSubBox", Properties.Resources.strCfgSysRandSubBox);
\r
681 bAutoPlay.HH.Initialize("HiHat(Close)", Properties.Resources.strCfgDrAutoHHC);
\r
682 bAutoPlay.HHO.Initialize("HiHat(Open)", Properties.Resources.strCfgDrAutoHHO);
\r
683 bAutoPlay.SD.Initialize("Snare", Properties.Resources.strCfgDrAutoSD);
\r
684 bAutoPlay.BD.Initialize("Kick", Properties.Resources.strCfgDrAutoBD);
\r
685 bAutoPlay.HT.Initialize("HighTom", Properties.Resources.strCfgDrAutoHT);
\r
686 bAutoPlay.LT.Initialize("LowTom", Properties.Resources.strCfgDrAutoLT);
\r
687 bAutoPlay.FT.Initialize("FloorTom", Properties.Resources.strCfgDrAutoFT);
\r
688 bAutoPlay.CY.Initialize("Cymbal", Properties.Resources.strCfgAutoCY);
\r
689 bAutoPlay.RD.Initialize("RideCymbal", Properties.Resources.strCfgAutoRD);
\r
690 bAutoPlay.LC.Initialize("LeftCymbal", Properties.Resources.strCfgAutoLCY);
\r
691 bAutoPlay.GtR.Initialize("R", Properties.Resources.strCfgGtAutoR);
\r
692 bAutoPlay.GtG.Initialize("G", Properties.Resources.strCfgGtAutoG);
\r
693 bAutoPlay.GtB.Initialize("B", Properties.Resources.strCfgGtAutoB);
\r
694 bAutoPlay.GtPick.Initialize("Pick", Properties.Resources.strCfgGtAutoPick);
\r
695 bAutoPlay.GtWail.Initialize("Wailing", Properties.Resources.strCfgGtAutoWailing);
\r
696 bAutoPlay.BsR.Initialize("R", Properties.Resources.strCfgBsAutoR);
\r
697 bAutoPlay.BsG.Initialize("G", Properties.Resources.strCfgBsAutoG);
\r
698 bAutoPlay.BsB.Initialize("B", Properties.Resources.strCfgBsAutoB);
\r
699 bAutoPlay.BsPick.Initialize("Pick", Properties.Resources.strCfgBsAutoPick);
\r
700 bAutoPlay.BsWail.Initialize("Wailing", Properties.Resources.strCfgBsAutoWailing);
\r
701 bLoadSoundSpeed.Initialize("SoundLoadLimiter", Properties.Resources.strCfgSysSoundLoadLimiter);
\r
702 bIsAutoResultCapture.Initialize("AutoResultCapture", Properties.Resources.strCfgSysAutoResultCapture);
\r
703 bBufferedInput.Initialize("BufferingInput", Properties.Resources.strCfgSysBufferingInput);
\r
704 bUseBoxDefSkin.Initialize("UseBoxSkin", Properties.Resources.strCfgSysUseBoxDefSkin);
\r
705 bUseOSTimer.Initialize("UseOSTimer", Properties.Resources.strCfgSysUseOSTimer);
\r
706 bTimeStretch.Initialize("TimeStretch", Properties.Resources.strCfgSysTimeStretch);
\r
708 bCymbalFree.Initialize("CymbalFree", Properties.Resources.strCfgDrCymbalFree);
\r
709 bDrumsHitSound.Initialize("DrumsChipSound", Properties.Resources.strCfgDrChipSound);
\r
710 bFillin.Initialize("Fillin", Properties.Resources.strCfgDrFillin);
\r
711 bTight.Initialize("Tight", Properties.Resources.strCfgDrTight);
\r
713 bItalicFontSongSelect.Initialize("", "");
\r
714 bBoldFontSongSelect.Initialize("", "");
\r
715 bLogDTX.Initialize("", "");
\r
716 bLogEnumerateSongs.Initialize("", "");
\r
717 bLogCreateRelease.Initialize("", "");
\r
718 bViewerVSyncWait.Initialize("", "");
\r
719 bViewerShowDebugStatus.Initialize("", "");
\r
720 bViewerTimeStretch.Initialize("", "");
\r
721 bViewerDrumsActive.Initialize("", "");
\r
722 bViewerGuitarActive.Initialize("", "");
\r
723 bIsAllowedDoubleClickFullscreen.Initialize("", "");
\r
724 bIsEnabledSystemMenu.Initialize("", "");
\r
725 bDynamicBassMixerManagement.Initialize("", "");
\r
726 bDebugInfo.Initialize("DebugInfo", Properties.Resources.strCfgSysDebugInfo);
\r
729 nSoundDeviceType.Initialize("SoundDevice", Properties.Resources.strCfgSysSoundDeviceType, typeof(ESoundDeviceTypeForConfig));
\r
730 eDamageLevel.Initialize("DamageLevel", Properties.Resources.strCfgSysDamageLevel, typeof(EDamage));
\r
731 eJudgePriority.Initialize("JudgePriority", Properties.Resources.strCfgSysJudgePriority, typeof(EJudgeDisplayPriority));
\r
732 eCYGroup.Initialize("CY Grouping", Properties.Resources.strCfgDrCYGroup, typeof(ECYGroup));
\r
733 eDark.Initialize("Dark", Properties.Resources.strCfgSysDark, typeof(EDark));
\r
734 eFTGroup.Initialize("FT Grouping", Properties.Resources.strCfgDrFTGroup, typeof(EFTGroup));
\r
735 eHHGroup.Initialize("HH Grouping", Properties.Resources.strCfgDrHHGroup, typeof(EHHGroup));
\r
736 eBDGroup.Initialize("BD Grouping", Properties.Resources.strCfgDrBDGroup, typeof(EBDGroup));
\r
737 Backup1BDHHGroup.Initialize("", "", typeof(EHHGroup));
\r
738 Backup1BDPriotiry.Initialize("", "", typeof(EHitSoundPriority));
\r
739 eHitSoundPriorityCY.Initialize("CY Priority", Properties.Resources.strCfgDrCYPriority, typeof(EHitSoundPriority));
\r
740 eHitSoundPriorityFT.Initialize("FT Priority", Properties.Resources.strCfgDrFTPriority, typeof(EHitSoundPriority));
\r
741 eHitSoundPriorityHH.Initialize("HH Priority", Properties.Resources.strCfgDrHHPriority, typeof(EHitSoundPriority));
\r
742 eJudgePriority.Initialize("Judge Priority", Properties.Resources.strCfgSysJudgePriority, typeof(EJudgeDisplayPriority));
\r
743 eActiveInst.Initialize("PlayMode", Properties.Resources.strCfgSysPlayMode, typeof(EActiveInstrument));
\r
744 nShowLagType.Initialize("ShowLagType", Properties.Resources.strCfgSysShowLagType, typeof(EShowLagType));
\r
747 nSleepPerFrameMs.Initialize("", "");
\r
748 nSleepUnfocusMs.Initialize("", "");
\r
749 nBGAlpha.Initialize("BGAlpha", Properties.Resources.strCfgSysBGAAlpha, 0, 255);
\r
750 nPreSoundWeightMs.Initialize("PreSoundWait", Properties.Resources.strCfgSysPreSoundWait, 0, 10001);
\r
751 nPreImageWeightMs.Initialize("PreImageWait", Properties.Resources.strCfgSysPreImageWait, 0, 10001);
\r
752 nFontSizeDotSongSelect.Initialize("", "", 5);
\r
753 nAutoVolume.Initialize("AutoVolume", Properties.Resources.strCfgSysAutoVolume, 0, 101);
\r
754 nChipVolume.Initialize("ChipVolume", Properties.Resources.strCfgSysChipVolume, 0, 101);
\r
755 nPlaySpeed.Initialize("PlaySpeed", Properties.Resources.strCfgSysPlaySpeed, 5, 41);
\r
756 nPlaySpeed.ValueFormatter = (x) =>
\r
758 return "x" + (x / 20f).ToString("0.000");
\r
760 nHitRange.Perfect.Initialize("", "", 0);
\r
761 nHitRange.Great.Initialize("", "", 0);
\r
762 nHitRange.Good.Initialize("", "", 0);
\r
763 nHitRange.Poor.Initialize("", "", 0);
\r
764 nVelocityMin.LC.Initialize("", "", 0, 128);
\r
765 nVelocityMin.HH.Initialize("", "", 0, 128);
\r
766 nVelocityMin.SD.Initialize("", "", 0, 128);
\r
767 nVelocityMin.BD.Initialize("", "", 0, 128);
\r
768 nVelocityMin.HT.Initialize("", "", 0, 128);
\r
769 nVelocityMin.LT.Initialize("", "", 0, 128);
\r
770 nVelocityMin.FT.Initialize("", "", 0, 128);
\r
771 nVelocityMin.CY.Initialize("", "", 0, 128);
\r
772 nVelocityMin.RD.Initialize("", "", 0, 128);
\r
773 nRisky.Initialize("Risky", Properties.Resources.strCfgSysRisky, 0, 31);
\r
774 nWASAPIBufferSizeMs.Initialize("WASAPIBufSize", Properties.Resources.strCfgSysWASAPIBufSize, 0, 100001);
\r
775 nChipDisplayTimeMs.Initialize("", "", 0);
\r
776 nChipFadeoutTimeMs.Initialize("", "", 0);
\r
778 nMasterVolume.Initialize("MasterVolume", Properties.Resources.strCfgSysMasterVolume, 0, 101);
\r
779 nPoliphonicSounds.Initialize("", "", 1, 11);
\r
782 for (EPart i = EPart.Drums; i <= EPart.Unknown; i++)
\r
784 bEmphasizePlaySound[i].Initialize("ChipSoundMonitor", Properties.Resources.strCfgDgbChipSoundMonitor);
\r
785 bReverse[i].Initialize("Reverse", Properties.Resources.strCfgDgbReverse);
\r
786 eRandom[i].Initialize("Random", Properties.Resources.strCfgDgbRandom, typeof(ERandom));
\r
787 bLight[i].Initialize("Light", Properties.Resources.strCfgDgbLight);
\r
788 bDisplayCombo[i].Initialize("DisplayCombo", Properties.Resources.strCfgDgbDisplayCombo);
\r
789 bDisplayJudge[i].Initialize("DisplayJudge", Properties.Resources.strCfgDgbDisplayJudge);
\r
790 bGraph[i].Initialize("Graph", Properties.Resources.strCfgDgbDisplayGraph);
\r
791 nScrollSpeed[i].Initialize("ScrollSpeed", Properties.Resources.strCfgDgbScrollSpeed, 1, 101);
\r
792 nScrollSpeed[i].ValueFormatter = (x) =>
\r
794 return "x" + (x * 0.5f).ToString("0.0");
\r
796 nInputAdjustTimeMs[i].Initialize("InputAdjust", Properties.Resources.strCfgDgbInputAdjust, -99, 100);
\r
797 nJudgeLinePosOffset[i].Initialize("", "", -SampleFramework.GameWindowSize.Height, SampleFramework.GameWindowSize.Height + 1);
\r
798 nViewerScrollSpeed[i].Initialize("", "", 1, 101);
\r
799 nMinComboDisp[i].Initialize("MinComboDisp", Properties.Resources.strCfgDgbMinComboDisp, 2, 100001);
\r
800 nSuddenFrom[i].Initialize("SudFrom", Properties.Resources.strCfgDgbSuddenFrom, 0, SampleFramework.GameWindowSize.Height + 1);
\r
801 nHiddenFrom[i].Initialize("HidFrom", Properties.Resources.strCfgDgbHiddenFrom, 0, SampleFramework.GameWindowSize.Height + 1);
\r
802 eAutoGhost[i].Initialize("AutoGhost", Properties.Resources.strCfgDgbAutoGhost, typeof(EAutoGhostData));
\r
803 eTargetGhost[i].Initialize("TargetGhost", Properties.Resources.strCfgDgbTargetGhost, typeof(ETargetGhostData));
\r
804 eSudHidInv[i].Initialize("SudHidInv", Properties.Resources.strCfgDgbSudHidInv, typeof(ESudHidInv));
\r
806 fJudgeLinePosOffsetBase[i].Initialize("", "");
\r
809 string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();
\r
810 strASIODevice.Initialize("ASIODevice", Properties.Resources.strCfgSysASIODevice, asiodevs);
\r
813 cdInstX.Drums.Both.Initialize("DrumsX(Both)", Properties.Resources.strCfgDispDrumsXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
814 cdInstX.Drums.DrOnly.Initialize("DrumsX(Dr)", Properties.Resources.strCfgDispDrumsXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
815 cdInstX.Guitar.Both.Initialize("GuitarX(Both)", Properties.Resources.strCfgDispGuitarXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
816 cdInstX.Guitar.GBOnly.Initialize("GuitarX(GB)", Properties.Resources.strCfgDispGuitarXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
817 cdInstX.Bass.Both.Initialize("BassX(Both)", Properties.Resources.strCfgDispBassXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
818 cdInstX.Bass.GBOnly.Initialize("BassX(GB)", Properties.Resources.strCfgDispBassXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
820 cdDebugX.DrOnly.Initialize("DebugX(Dr)", Properties.Resources.strCfgDispDebugXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
821 cdDebugX.Both.Initialize("DebugX(Both)", Properties.Resources.strCfgDispDebugXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
822 cdDebugX.GBOnly.Initialize("DebugX(GB)", Properties.Resources.strCfgDispDebugXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
823 cdDebugY.DrOnly.Initialize("DebugY(Dr)", Properties.Resources.strCfgDispDebugYDr, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
824 cdDebugY.Both.Initialize("DebugY(Both)", Properties.Resources.strCfgDispDebugYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
825 cdDebugY.GBOnly.Initialize("DebugY(GB)", Properties.Resources.strCfgDispDebugYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
827 cdMovieX.DrOnly.Initialize("MovieX(Dr)", Properties.Resources.strCfgDispMovieXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
828 cdMovieX.Both.Initialize("MovieX(Both)", Properties.Resources.strCfgDispMovieXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
829 cdMovieX.GBOnly.Initialize("MovieX(GB)", Properties.Resources.strCfgDispMovieXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
830 cdMovieY.DrOnly.Initialize("MovieY(Dr)", Properties.Resources.strCfgDispMovieYDr, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
831 cdMovieY.Both.Initialize("MovieY(Both)", Properties.Resources.strCfgDispMovieYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
832 cdMovieY.GBOnly.Initialize("MovieY(GB)", Properties.Resources.strCfgDispMovieYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
834 cdComboX.Drums.Both.Initialize("ComboX(Both)", Properties.Resources.strCfgDispDrComboXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
835 cdComboX.Drums.DrOnly.Initialize("ComboX(Dr)", Properties.Resources.strCfgDispDrComboXDr, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
836 cdComboX.Guitar.Both.Initialize("ComboX(Both)", Properties.Resources.strCfgDispGtComboXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
837 cdComboX.Guitar.GBOnly.Initialize("ComboX(GB)", Properties.Resources.strCfgDispGtComboXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
838 cdComboX.Bass.Both.Initialize("ComboX(Both)", Properties.Resources.strCfgDispBsComboXBoth, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
839 cdComboX.Bass.GBOnly.Initialize("ComboX(GB)", Properties.Resources.strCfgDispBsComboXGB, 0, 1 + SampleFramework.GameWindowSize.Width, crdStep);
\r
841 cdComboY.Drums.Both.Initialize("ComboY(Both)", Properties.Resources.strCfgDispDrComboYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
842 cdComboY.Drums.DrOnly.Initialize("ComboY(Dr)", Properties.Resources.strCfgDispDrComboYDr, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
843 cdComboY.Guitar.Both.Initialize("ComboY(Both)", Properties.Resources.strCfgDispGtComboYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
844 cdComboY.Guitar.GBOnly.Initialize("ComboY(GB)", Properties.Resources.strCfgDispGtComboYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
845 cdComboY.Bass.Both.Initialize("ComboY(Both)", Properties.Resources.strCfgDispBsComboYBoth, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
846 cdComboY.Bass.GBOnly.Initialize("ComboY(GB)", Properties.Resources.strCfgDispBsComboYGB, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
848 cdJudgeLineY.Drums.Initialize("JudgeLine", Properties.Resources.strCfgDispDrJudgeLine, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
849 cdJudgeLineY.Guitar.Initialize("JudgeLine", Properties.Resources.strCfgDispGtJudgeLine, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
850 cdJudgeLineY.Bass.Initialize("JudgeLine", Properties.Resources.strCfgDispBsJudgeLine, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
852 cdJudgeY.Drums.Initialize("Judge", Properties.Resources.strCfgDispDrJudge, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
853 cdJudgeY.Guitar.Initialize("Judge", Properties.Resources.strCfgDispGtJudge, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
854 cdJudgeY.Bass.Initialize("Judge", Properties.Resources.strCfgDispBsJudge, 0, 1 + SampleFramework.GameWindowSize.Height, crdStep);
\r
856 cdLaneOrder.LC.Initialize("LC Order", Properties.Resources.strCfgDispLaneOrderLC, 0, 8);
\r
857 cdLaneOrder.HH.Initialize("HH Order", Properties.Resources.strCfgDispLaneOrderHH, 0, 8);
\r
858 cdLaneOrder.SD.Initialize("SD Order", Properties.Resources.strCfgDispLaneOrderSD, 0, 8);
\r
859 cdLaneOrder.BD.Initialize("BD Order", Properties.Resources.strCfgDispLaneOrderBD, 0, 8);
\r
860 cdLaneOrder.HT.Initialize("HT Order", Properties.Resources.strCfgDispLaneOrderHT, 0, 8);
\r
861 cdLaneOrder.LT.Initialize("LT Order", Properties.Resources.strCfgDispLaneOrderLT, 0, 8);
\r
862 cdLaneOrder.FT.Initialize("FT Order", Properties.Resources.strCfgDispLaneOrderFT, 0, 8);
\r
863 cdLaneOrder.CY.Initialize("CY Order", Properties.Resources.strCfgDispLaneOrderCY, 0, 8);
\r
865 cdLaneOrder.GtR.Initialize("R Order", Properties.Resources.strCfgDispLaneOrderGtR, 0, 4);
\r
866 cdLaneOrder.GtG.Initialize("G Order", Properties.Resources.strCfgDispLaneOrderGtG, 0, 4);
\r
867 cdLaneOrder.GtB.Initialize("B Order", Properties.Resources.strCfgDispLaneOrderGtB, 0, 4);
\r
868 cdLaneOrder.GtW.Initialize("W Order", Properties.Resources.strCfgDispLaneOrderGtW, 0, 4);
\r
870 cdLaneOrder.BsR.Initialize("R Order", Properties.Resources.strCfgDispLaneOrderBsR, 0, 4);
\r
871 cdLaneOrder.BsG.Initialize("G Order", Properties.Resources.strCfgDispLaneOrderBsG, 0, 4);
\r
872 cdLaneOrder.BsB.Initialize("B Order", Properties.Resources.strCfgDispLaneOrderBsB, 0, 4);
\r
873 cdLaneOrder.BsW.Initialize("W Order", Properties.Resources.strCfgDispLaneOrderBsW, 0, 4);
\r
875 SetEnterDelegates();
\r
878 public CConfigXml()
\r
880 Deserializing(new StreamingContext());
\r
881 DefaultDeserializer(new StreamingContext());
\r
884 public void SetEnterDelegates()
\r
886 bFullScreen.OnEnterDelegate = () =>
\r
888 CDTXMania.Instance.b次のタイミングで全画面_ウィンドウ切り替えを行う = true;
\r
892 bVSyncWait.OnEnterDelegate = () =>
\r
894 CDTXMania.Instance.b次のタイミングで垂直帰線同期切り替えを行う = true;
\r
897 eBDGroup.OnEnterDelegate = () =>
\r
900 if (eBDGroup == EBDGroup.Group)
\r
902 // #27029 2012.1.5 from: 変更前の状態をバックアップする。
\r
903 Backup1BDHHGroup.Value = eHHGroup;
\r
904 Backup1BDPriotiry.Value = eHitSoundPriorityHH;
\r
906 // HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし
\r
907 if (eHHGroup == EHHGroup.None)
\r
909 eHHGroup.Value = EHHGroup.LC_HH;
\r
911 if (eHHGroup == EHHGroup.HO_HC)
\r
913 eHHGroup.Value = EHHGroup.Group;
\r
916 // HH Priority ... C>P → 変更なし / P>C → C>P
\r
917 if (eHitSoundPriorityHH == EHitSoundPriority.Pad)
\r
919 eHitSoundPriorityHH.Value = EHitSoundPriority.Chip;
\r
924 eHHGroup = Backup1BDHHGroup;
\r
925 eHitSoundPriorityHH = Backup1BDPriotiry;
\r
929 bUseBoxDefSkin.OnEnterDelegate = () =>
\r
931 CSkin.bUseBoxDefSkin = bUseBoxDefSkin;
\r
936 public bool bConfigIniがないかDTXManiaのバージョンが異なる
\r
940 return (!bConfigIniが存在している || !CDTXMania.VERSION.Equals(strDTXManiaVersion));
\r
944 public bool bEnterがキー割り当てのどこにも使用されていない
\r
948 for (EPad j = EPad.Min; j < EPad.Max; j++)
\r
950 for (int k = 0; k < AssignableCodes; k++)
\r
952 if ((KeyAssign[j][k].入力デバイス == EInputDevice.Keyboard) &&
\r
953 (KeyAssign[j][k].コード == (int)SlimDX.DirectInput.Key.Return))
\r
963 public bool bウィンドウモード
\r
967 return !this.bFullScreen;
\r
971 this.bFullScreen.Value = !value;
\r
975 public bool bGuitar有効
\r
979 return eActiveInst == EActiveInstrument.GBOnly || eActiveInst == EActiveInstrument.Both;
\r
983 public bool bDrums有効
\r
987 return eActiveInst == EActiveInstrument.DrOnly || eActiveInst == EActiveInstrument.Both;
\r
991 public bool b楽器有効(EPart inst)
\r
993 if (inst == EPart.Drums)
\r
997 else if (inst == EPart.Guitar || inst == EPart.Bass)
\r
1004 public bool bIsAutoPlay(EPart inst)
\r
1007 if (inst == EPart.Drums)
\r
1009 ret = bAutoPlay.IsAllTrue(EPart.Drums);
\r
1011 else if (inst == EPart.Guitar)
\r
1013 ret = bAutoPlay.IsAllTrue(EPart.Guitar);
\r
1015 else if (inst == EPart.Bass)
\r
1017 ret = bAutoPlay.IsAllTrue(EPart.Bass);
\r
1022 public bool b演奏情報を表示する
\r
1026 return this.bDebugInfo;
\r
1030 this.bDebugInfo.Value = value;
\r
1034 // #24063 2011.1.16 yyagi ギターとベースの切り替え
\r
1035 public bool bIsSwappedGuitarBass
\r
1041 // #24415 2011.2.21 yyagi FLIP中にalt-f4終了で、AUTOフラグがswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ
\r
1042 public bool bIsSwappedGuitarBass_AutoFlagsAreSwapped
\r
1048 // #35417 2015.8.18 yyagi FLIP中にalt-f4終了で、演奏設定がswapした状態でconfig.iniが出力されてしまうことを避けるためのフラグ
\r
1049 public bool bIsSwappedGuitarBass_PlaySettingsAreSwapped
\r
1055 public void SwapGuitarBassInfos_AutoFlags()
\r
1057 Func<EPad, EPad, bool> AutoSwapper = (x, y) =>
\r
1059 bool t = bAutoPlay[y];
\r
1060 bAutoPlay[y].Value = bAutoPlay[x];
\r
1061 bAutoPlay[x].Value = t;
\r
1065 AutoSwapper(EPad.GtR, EPad.BsR);
\r
1066 AutoSwapper(EPad.GtG, EPad.BsG);
\r
1067 AutoSwapper(EPad.GtB, EPad.BsB);
\r
1068 AutoSwapper(EPad.GtWail, EPad.BsWail);
\r
1069 AutoSwapper(EPad.GtPick, EPad.BsPick);
\r
1071 bIsSwappedGuitarBass_AutoFlagsAreSwapped = !bIsSwappedGuitarBass_AutoFlagsAreSwapped;
\r
1074 public void t指定した入力が既にアサイン済みである場合はそれを全削除する(EInputDevice DeviceType, int nID, int nCode)
\r
1076 for (EPad j = EPad.Min; j < EPad.Max; j++)
\r
1078 for (int k = 0; k < AssignableCodes; k++)
\r
1080 if (((KeyAssign[j][k].入力デバイス == DeviceType) &&
\r
1081 (KeyAssign[j][k].ID == nID)) &&
\r
1082 (KeyAssign[j][k].コード == nCode))
\r
1084 for (int m = k; m < AssignableCodes - 1; m++)
\r
1086 KeyAssign[j][m].CopyFrom(KeyAssign[j][m + 1].Value);
\r
1088 KeyAssign[j][AssignableCodes - 1].Reset();
\r
1095 private void ClearKeyAssign()
\r
1097 KeyAssign = new STPadValue<COptionKeyAssign[]>();
\r
1098 for (EPad j = EPad.Min; j < EPad.Max; ++j)
\r
1100 KeyAssign[j] = new COptionKeyAssign[AssignableCodes];
\r
1101 for (int k = 0; k < AssignableCodes; ++k)
\r
1103 KeyAssign[j][k] = new COptionKeyAssign();
\r