OSDN Git Service

#xxxxx WAASPI排他だけでなく、WASAPI共有を選べるよう、以前の仕様に戻した。今後のWin10 WASAPI共有対応への布石。なおこれに伴いSoundDev...
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CConfigXml.cs
index 64f85b8..b1f8373 100644 (file)
@@ -5,6 +5,8 @@ using System.Diagnostics;
 using System;\r
 using FDK;\r
 \r
+using SlimDXKey = SlimDX.DirectInput.Key;\r
+\r
 namespace DTXMania\r
 {\r
        /// <summary>\r
@@ -37,7 +39,7 @@ namespace DTXMania
        /// ・CActConfigList で新しく追加した項目を list に追加してください。\r
        /// </summary>\r
        [DataContract]\r
-       public class CConfigXml : IExtensibleDataObject\r
+       public class CConfigXml : IExtensibleDataObject, ICloneable\r
        {\r
                public static readonly int AssignableCodes = 16;\r
 \r
@@ -59,6 +61,16 @@ namespace DTXMania
                        }\r
                }\r
 \r
+               /// <summary>\r
+               /// とりあえずshallow copyによるClone()。\r
+               /// </summary>\r
+               /// <returns>自身を複製したCConfigXmlクラス。</returns>\r
+               public object Clone()\r
+               {\r
+                       return (CConfigXml) MemberwiseClone();\r
+               }\r
+\r
+\r
                [DataMember]\r
                public COptionBool bFullAVI;\r
                [DataMember]\r
@@ -163,8 +175,13 @@ namespace DTXMania
                public COptionInteger nBGAlpha;\r
                [DataMember]\r
                public Coordinates.CRect rcWindow;\r
+\r
+               public Coordinates.CRect rcWindow_backup;                       // Viewerとしての使用時は、Playerとして使用する際のウインドウ情報をバックアップしておき、終了時に復元する\r
+                                                                                                                       // 内部保持するだけの情報であるため、Config.xmlに保存する必要はなく、[DataMember]は不要\r
+\r
                [DataMember]\r
                public Coordinates.CRect rcViewerWindow;\r
+               \r
                [DataMember]\r
                public COptionInteger nMasterVolume;\r
                [DataMember]\r
@@ -252,6 +269,14 @@ namespace DTXMania
                // #24820 2013.1.17 yyagi ASIOデバイス\r
                public COptionStringList strASIODevice;\r
 \r
+               [DataMember( Order = 106 )]\r
+               public COptionEnum<EClickType> eClickType;\r
+               [DataMember( Order = 106 )]\r
+               public COptionInteger nClickHighVolume;\r
+               [DataMember( Order = 106 )]\r
+               public COptionInteger nClickLowVolume;\r
+\r
+\r
                [DataMember]\r
                public STDGBSValue<COptionBool> bLight;\r
                [DataMember]\r
@@ -302,6 +327,8 @@ namespace DTXMania
                [DataMember]\r
                public STDGBSValue<COptionBool> bDisplayJudge;\r
 \r
+\r
+       \r
                /// <summary>\r
                /// 楽器左端座標。ここを基準に各パーツを配置する。\r
                /// </summary>\r
@@ -436,7 +463,7 @@ namespace DTXMania
                        bAVI = new COptionBool(true);\r
                        bBGA = new COptionBool(true);\r
                        bFillin = new COptionBool(true);\r
-                       bLogDTX = new COptionBool(true);\r
+                       bLogDTX = new COptionBool(false);\r
                        bLogEnumerateSongs = new COptionBool(false);\r
                        bLogCreateRelease = new COptionBool(false);\r
                        bCymbalFree = new COptionBool(false);\r
@@ -452,11 +479,16 @@ namespace DTXMania
                        bDebugInfo = new COptionBool(false);\r
                        bLog = new COptionBool(true);\r
                        bAutoPlay = new COptionPadBool();\r
-                       for (EPad pad = EPad.Min; pad < EPad.Max; ++pad)\r
+                       for ( EPad pad = EPad.DrumsPadMin; pad < EPad.DrumsPadMax; ++pad )\r
+                       {\r
+                               bAutoPlay[ pad ] = new COptionBool( false );\r
+                       }\r
+                       for ( EPad pad = EPad.GuitarPadMin; pad < EPad.BassPadMax; ++pad )\r
                        {\r
-                               bAutoPlay[pad] = new COptionBool(false);\r
+                               bAutoPlay[ pad ] = new COptionBool( true );\r
                        }\r
-                       bViewerVSyncWait = new COptionBool(true);\r
+                       bAutoPlay[ EPad.Capture ] = new COptionBool( true );\r
+                       bViewerVSyncWait = new COptionBool( true );\r
                        bViewerShowDebugStatus = new COptionBool(true);\r
                        bViewerTimeStretch = new COptionBool(false);\r
                        bViewerDrumsActive = new COptionBool(true);\r
@@ -471,7 +503,7 @@ namespace DTXMania
                        bUseOSTimer = new COptionBool(false);\r
                        bDynamicBassMixerManagement = new COptionBool(true);\r
                        bTimeStretch = new COptionBool(false);\r
-                       nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(FDK.COS.bIsVistaOrLater ? ESoundDeviceTypeForConfig.WASAPI : ESoundDeviceTypeForConfig.DSound);\r
+                       nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(FDK.COS.bIsVistaOrLater ? ESoundDeviceTypeForConfig.WASAPI_Exclusive : ESoundDeviceTypeForConfig.DSound);\r
                        bForceHighPowerPlan = new COptionBool( false );\r
                        bEventDrivenWASAPI = new COptionBool( false );\r
                        bLoadDTXDetail = new COptionBool( false ); \r
@@ -485,12 +517,12 @@ namespace DTXMania
                        // enum\r
                        eDamageLevel = new COptionEnum<EDamage>(EDamage.Normal);\r
                        eJudgePriority = new COptionEnum<EJudgeDisplayPriority>(EJudgeDisplayPriority.Under);\r
-                       eCYGroup = new COptionEnum<ECYGroup>(ECYGroup.None);\r
+                       eCYGroup = new COptionEnum<ECYGroup>(ECYGroup.Off);\r
                        eDark = new COptionEnum<EDark>(EDark.Off);\r
-                       eFTGroup = new COptionEnum<EFTGroup>(EFTGroup.None);\r
-                       eHHGroup = new COptionEnum<EHHGroup>(EHHGroup.None);\r
-                       eBDGroup = new COptionEnum<EBDGroup>(EBDGroup.None);\r
-                       Backup1BDHHGroup = new COptionEnum<EHHGroup>(EHHGroup.None);\r
+                       eFTGroup = new COptionEnum<EFTGroup>(EFTGroup.Off);\r
+                       eHHGroup = new COptionEnum<EHHGroup>(EHHGroup.Off);\r
+                       eBDGroup = new COptionEnum<EBDGroup>(EBDGroup.Off);\r
+                       Backup1BDHHGroup = new COptionEnum<EHHGroup>(EHHGroup.Off);\r
                        Backup1BDPriotiry = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
                        eHitSoundPriorityCY = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
                        eHitSoundPriorityFT = new COptionEnum<EHitSoundPriority>(EHitSoundPriority.Chip);\r
@@ -501,7 +533,8 @@ namespace DTXMania
 \r
                        // integer\r
                        rcWindow = new Coordinates.CRect(100, 100, 1280, 720);\r
-                       nSleepPerFrameMs = new COptionInteger(-1);\r
+                       rcWindow_backup = new Coordinates.CRect( 100, 100, 1280, 720 );\r
+                       nSleepPerFrameMs = new COptionInteger( -1 );\r
                        nSleepUnfocusMs = new COptionInteger(1);\r
                        nBGAlpha = new COptionInteger(100);\r
                        nPreSoundWeightMs = new COptionInteger(1000);\r
@@ -528,10 +561,14 @@ namespace DTXMania
                        nWASAPIBufferSizeMs = new COptionInteger(50);\r
                        nChipDisplayTimeMs = new COptionInteger(3000);\r
                        nChipFadeoutTimeMs = new COptionInteger(2000);\r
-                       rcViewerWindow = new Coordinates.CRect(100, 100, 1280, 720);\r
+                       rcViewerWindow = new Coordinates.CRect(100, 100, 640, 360);\r
                        nMasterVolume = new COptionInteger(100);\r
                        nPolyphonicSounds = new COptionInteger(4);\r
 \r
+                       eClickType = new COptionEnum<EClickType>(EClickType.Off);\r
+                       nClickHighVolume = new COptionInteger(100);\r
+                       nClickLowVolume = new COptionInteger(100);\r
+\r
                        // dgb\r
                        bEmphasizePlaySound = new STDGBSValue<COptionBool>();\r
                        bReverse = new STDGBSValue<COptionBool>();\r
@@ -665,12 +702,14 @@ namespace DTXMania
                        cdLaneOrder.FT.Value = 6;\r
                        cdLaneOrder.CY.Value = 7;\r
 \r
+                       cdLaneOrder.GtR.Value = 0;\r
                        cdLaneOrder.GtG.Value = 1;\r
                        cdLaneOrder.GtB.Value = 2;\r
                        cdLaneOrder.GtW.Value = 3;\r
 \r
+                       cdLaneOrder.BsR.Value = 0;\r
                        cdLaneOrder.BsG.Value = 1;\r
-                       cdLaneOrder.BsR.Value = 2;\r
+                       cdLaneOrder.GtB.Value = 2;\r
                        cdLaneOrder.BsW.Value = 3;\r
 \r
                        bConfigIniが存在している = System.IO.File.Exists(CDTXMania.Instance.strEXEのあるフォルダ + "Config.xml");\r
@@ -720,6 +759,7 @@ namespace DTXMania
                        bAutoPlay.BsB.Initialize( "strCfgBsAutoB" );\r
                        bAutoPlay.BsPick.Initialize( "strCfgBsAutoPick" );\r
                        bAutoPlay.BsWail.Initialize( "strCfgBsAutoWailing" );\r
+                       bAutoPlay.Capture.Initialize( "strCfgCapture" );\r
 \r
                        bLoadSoundSpeed.Initialize( "strCfgSysSoundLoadLimiter" );\r
                        bIsAutoResultCapture.Initialize( "strCfgSysAutoResultCapture" );\r
@@ -769,10 +809,15 @@ namespace DTXMania
                        eActiveInst.Initialize( "strCfgSysPlayMode", typeof(EActiveInstrument));\r
                        nShowLagType.Initialize( "strCfgSysShowLagType", typeof(EShowLagType));\r
 \r
+                       eClickType.Initialize( "strCfgSysClickType", typeof( EClickType ) );\r
+                       nClickHighVolume.Initialize( "strCfgSysClickHighVolume", 0, 101 );\r
+                       nClickLowVolume.Initialize( "strCfgSysClickLowVolume", 0, 101 );\r
+\r
+\r
                        // integer\r
                        nSleepPerFrameMs.Initialize( "strCfgSysSleepPerFrame", -1, 33 );\r
                        nSleepUnfocusMs.Initialize( "strCfgSysSleepUnfocus", 0, 33 );\r
-                       nBGAlpha.Initialize( "strCfgSysBGAAlpha", 0, 255 );\r
+                       nBGAlpha.Initialize( "strCfgSysBGAAlpha", 0, 256 );\r
                        nPreSoundWeightMs.Initialize( "strCfgSysPreSoundWait", 0, 10001);\r
                        nPreImageWeightMs.Initialize( "strCfgSysPreImageWait", 0, 10001);\r
                        nFontSizeDotSongSelect.Initialize("", "", 5);\r
@@ -796,7 +841,7 @@ namespace DTXMania
                        nVelocityMin.FT.Initialize( "strCfgDrFTVelocityMin", 0, 128 );\r
                        nVelocityMin.CY.Initialize( "strCfgDrCYVelocityMin", 0, 128 );\r
                        nVelocityMin.RD.Initialize( "strCfgDrRDVelocityMin", 0, 128 );\r
-                       nRisky.Initialize( "strCfgSysRisky", 0, 31 );\r
+                       nRisky.Initialize( "strCfgSysRisky", 0, 100 );\r
                        nWASAPIBufferSizeMs.Initialize( "strCfgSysWASAPIBufSize", 0, 100001);\r
                        nChipDisplayTimeMs.Initialize("", "", 0);\r
                        nChipFadeoutTimeMs.Initialize("", "", 0);\r
@@ -930,7 +975,7 @@ namespace DTXMania
                                        Backup1BDPriotiry.Value = eHitSoundPriorityHH;\r
 \r
                                        // HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし\r
-                                       if (eHHGroup == EHHGroup.None)\r
+                                       if (eHHGroup == EHHGroup.Off)\r
                                        {\r
                                                eHHGroup.Value = EHHGroup.LC_HH;\r
                                        }\r
@@ -966,7 +1011,7 @@ namespace DTXMania
                                while ( \r
                                                ( CDTXMania.Instance.Pad.bDecidePadIsPressedDGB() ||\r
                                                        ( CDTXMania.Instance.ConfigIni.bEnterがキー割り当てのどこにも使用されていない &&\r
-                                                         CDTXMania.Instance.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Return )\r
+                                                         CDTXMania.Instance.Input管理.Keyboard.bキーが押された( (int) SlimDXKey.Return )\r
                                                        )\r
                                                )\r
                                          )\r
@@ -997,7 +1042,7 @@ namespace DTXMania
                                        for (int k = 0; k < AssignableCodes; k++)\r
                                        {\r
                                                if ((KeyAssign[j][k].入力デバイス == EInputDevice.Keyboard) &&\r
-                                                               (KeyAssign[j][k].コード == (int)SlimDX.DirectInput.Key.Return))\r
+                                                               (KeyAssign[j][k].コード == (int)SlimDXKey.Return))\r
                                                {\r
                                                        return false;\r
                                                }\r
@@ -1250,7 +1295,8 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-const string strDefaultKeyAssign = @"\r
+\r
+               const string strDefaultKeyAssign = @"\r
 HH=K035,M042,M093\r
 SD=K033,M025,M026,M027,M028,M029,M031,M032,M034,M037,M038,M040,M0113\r
 BD=K012,K0126,M033,M035,M036,M0112\r
@@ -1266,15 +1312,15 @@ HP=M044
 GtR=K055\r
 GtG=K056,J012\r
 GtB=K057\r
-GtPick=K0115,K046,J06\r
+GtPick=K0115,K046\r
 GtWail=K0116\r
 GtDecide=K060\r
 GtCancel=K061\r
 \r
 BsR=K090\r
-BsG=K091,J013\r
+BsG=K091\r
 BsB=K092\r
-BsPick=K0103,K0100,J08\r
+BsPick=K0103,K0100\r
 BsWail=K089\r
 BsDecide=K096\r
 BsCancel=K097\r