OSDN Git Service

#26338 Dr/Gt/Bsの演奏排他チャンネルを実装。(片方の再生で、もう片方の再生を上書きする)
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 12 Dec 2011 14:41:15 +0000 (14:41 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 12 Dec 2011 14:41:15 +0000 (14:41 +0000)
仮にチャンネル 0x84~0x89 を、それぞれ HH(HO/HC), CY, RD, LC, Gt, Bsの排他チャンネルとしてある。
次のバージョンで正式なチャンネル番号を決めます。(今回はDTXCの変更が間に合わないので、現在のDTXCで編集できるchに仮置きしました)

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@267 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CAct演奏GuitarWailingBonus.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsWailingBonus.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsレーンフラッシュD.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs
DTXManiaプロジェクト/コード/全体/CConfigIni.cs
DTXManiaプロジェクト/コード/全体/C定数.cs

index 96f6516..f4fbe7a 100644 (file)
@@ -1517,9 +1517,10 @@ namespace DTXMania
                public string strフォルダ名;\r
                public string TITLE;\r
 #if TEST_NOTEOFFMODE\r
-               public bool bHH演奏で直前のHHを消音する;\r
-               public bool bGUITAR演奏で直前のGUITARを消音する;\r
-               public bool bBASS演奏で直前のBASSを消音する;\r
+               public STLANEVALUE<bool> b演奏で直前の音を消音する;\r
+//             public bool bHH演奏で直前のHHを消音する;\r
+//             public bool bGUITAR演奏で直前のGUITARを消音する;\r
+//             public bool bBASS演奏で直前のBASSを消音する;\r
 #endif\r
                // コンストラクタ\r
 \r
@@ -2410,7 +2411,7 @@ namespace DTXMania
                {\r
                        if( pChip.n整数値・内部番号 >= 0 )\r
                        {\r
-                               if( ( nLane < 0 ) || ( nLane > 10 ) )\r
+                               if( ( nLane < (int) Eレーン.LC ) || ( (int) Eレーン.BGM < nLane ) )\r
                                {\r
                                        throw new ArgumentOutOfRangeException();\r
                                }\r
index 3bb7691..327a7b8 100644 (file)
@@ -224,8 +224,8 @@ namespace DTXMania
                        this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;\r
                        this.L最後に再生したHHの実WAV番号 = new List<int>( 16 );\r
                        this.n最後に再生したHHのチャンネル番号 = 0;\r
-                       this.n最後に再生したギターの実WAV番号 = -1;\r
-                       this.n最後に再生したベースの実WAV番号 = -1;\r
+                       this.n最後に再生した実WAV番号.Guitar = -1;\r
+                       this.n最後に再生した実WAV番号.Bass = -1;\r
                        for ( int i = 0; i < 50; i++ )\r
                        {\r
                                this.n最後に再生したBGMの実WAV番号[ i ] = -1;\r
@@ -513,16 +513,18 @@ namespace DTXMania
                protected readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
                protected readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
                protected readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a };\r
-               protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };\r
-               protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
+               protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };        // パッド画像のヒット処理用\r
+               protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };        \r
                protected STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;\r
                protected STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;\r
                protected int n現在のトップChip = -1;\r
                protected int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];\r
                protected int n最後に再生したHHのチャンネル番号;\r
                protected List<int> L最後に再生したHHの実WAV番号;            // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
-               protected int n最後に再生したギターの実WAV番号;\r
-               protected int n最後に再生したベースの実WAV番号;\r
+               protected STLANEVALUE<int> n最後に再生した実WAV番号;  // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
+                                                                                                                               //                                                      into "n最後に再生した実WAV番号";\r
+//             protected int n最後に再生した実WAV番号.GUITAR;\r
+//             protected int n最後に再生した実WAV番号.BASS;\r
        \r
                protected STDGBVALUE<Queue<CDTX.CChip>> queWailing;\r
                protected STDGBVALUE<CDTX.CChip> r現在の歓声Chip;\r
@@ -808,25 +810,55 @@ namespace DTXMania
                }\r
                protected void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )\r
                {\r
+                       // mute sound (auto)\r
+                       // 4A: HH\r
+                       // 4B: CY\r
+                       // 4C: RD\r
+                       // 4D: LC\r
+                       // 2A: Gt\r
+                       // AA: Bs\r
+                       //\r
+\r
                        if ( pChip != null )\r
                        {\r
+                               bool overwrite = false;\r
                                switch ( part )\r
                                {\r
                                        case E楽器パート.DRUMS:\r
+                                       #region [ DRUMS ]\r
                                                {\r
                                                        int index = pChip.nチャンネル番号;\r
-                                                       if ( ( index >= 0x11 ) && ( index <= 0x1a ) )\r
+                                                       if ( ( 0x11 <= index ) && ( index <= 0x1a ) )\r
                                                        {\r
                                                                index -= 0x11;\r
                                                        }\r
-                                                       else\r
+                                                       else if ( ( 0x31 <= index ) && ( index <= 0x3a ) )\r
                                                        {\r
-                                                               if ( ( index < 0x31 ) || ( index > 0x3a ) )\r
-                                                               {\r
-                                                                       return;\r
-                                                               }\r
                                                                index -= 0x31;\r
                                                        }\r
+                                                       // mute sound (auto)\r
+                                                       // 4A: 84: HH (HO/HC)\r
+                                                       // 4B: 85: CY\r
+                                                       // 4C: 86: RD\r
+                                                       // 4D: 87: LC\r
+                                                       // 2A: 88: Gt\r
+                                                       // AA: 89: Bs\r
+                                                       else if ( 0x84 == index )       // 仮に今だけ追加 HHは消音処理があるので overwriteフラグ系の処理は改めて不要\r
+                                                       {\r
+                                                               index = 0;\r
+                                                       }\r
+                                                       else if ( ( 0x85 <= index ) && ( index <= 0x87 ) )      // 仮に今だけ追加\r
+                                                       {\r
+                                                               //            CY    RD    LC\r
+                                                               int[] ch = { 0x16, 0x19, 0x1A };\r
+                                                               pChip.nチャンネル番号 = ch[ pChip.nチャンネル番号 - 0x85 ];\r
+                                                               index = pChip.nチャンネル番号 - 0x11;\r
+                                                               overwrite = true;\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               return;\r
+                                                       }\r
                                                        int nLane = this.nチャンネル0Atoレーン07[ index ];\r
                                                        if ( ( nLane == 1 ) &&  // 今回演奏するのがHC or HO\r
                                                                ( index == 0 || ( index == 7 && this.n最後に再生したHHのチャンネル番号 != 0x18 && this.n最後に再生したHHのチャンネル番号 != 0x38 ) )\r
@@ -841,7 +873,7 @@ namespace DTXMania
                                                        {\r
                                                                // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。\r
 #if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                                               if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)\r
+                                                               if (CDTXMania.DTX.b演奏で直前の音を消音する.HH)\r
                                                                {\r
 #endif\r
                                                                for ( int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++ )          // #23921 2011.1.4 yyagi\r
@@ -857,7 +889,7 @@ namespace DTXMania
                                                                this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号;\r
                                                        }\r
 #if TEST_NOTEOFFMODE   // 2011.1.4 yyagi test\r
-                                                       if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)\r
+                                                       if (CDTXMania.DTX.b演奏で直前の音を消音する.HH)\r
                                                        {\r
 #endif\r
                                                        if ( index == 0 || index == 7 || index == 0x20 || index == 0x27 )                       // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく\r
@@ -874,32 +906,44 @@ namespace DTXMania
 #if TEST_NOTEOFFMODE   // 2011.1.4 yyagi test\r
                                                        }\r
 #endif\r
+                                                       if ( overwrite )\r
+                                                       {\r
+                                                               CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号[index] );\r
+                                                       }\r
                                                        CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ );\r
+                                                       this.n最後に再生した実WAV番号[ nLane ] = pChip.n整数値・内部番号;             // nLaneでなくindexにすると、LC(1A-11=09)とギター(enumで09)がかぶってLC音が消されるので注意\r
                                                        return;\r
                                                }\r
+                                       #endregion\r
                                        case E楽器パート.GUITAR:\r
+                                       #region [ GUITAR ]\r
 #if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                               if (CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する) {\r
+                                               if (CDTXMania.DTX.b演奏で直前の音を消音する.Guitar) {\r
 #endif\r
-                                               CDTXMania.DTX.tWavの再生停止( this.n最後に再生したギターの実WAV番号 );\r
+                                               CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号.Guitar );\r
 #if TEST_NOTEOFFMODE\r
                                                }\r
 #endif\r
-                                               CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 );\r
-                                               this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号;\r
+                                               CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, (int) Eレーン.Guitar, n音量, bモニタ, b音程をずらして再生 );\r
+                                               this.n最後に再生した実WAV番号.Guitar = pChip.n整数値・内部番号;\r
                                                return;\r
-\r
+                                       #endregion\r
                                        case E楽器パート.BASS:\r
+                                       #region [ BASS ]\r
 #if TEST_NOTEOFFMODE\r
-                                               if (CDTXMania.DTX.bBASS演奏で直前のBASSを消音する) {\r
+                                               if (CDTXMania.DTX.b演奏で直前の音を消音する.Bass) {\r
 #endif\r
-                                               CDTXMania.DTX.tWavの再生停止( this.n最後に再生したベースの実WAV番号 );\r
+                                               CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号.Bass );\r
 #if TEST_NOTEOFFMODE\r
                                                }\r
 #endif\r
-                                               CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生 );\r
-                                               this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号;\r
+                                               CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, (int) Eレーン.Bass, n音量, bモニタ, b音程をずらして再生 );\r
+                                               this.n最後に再生した実WAV番号.Bass = pChip.n整数値・内部番号;\r
                                                return;\r
+                                       #endregion\r
+\r
+                                       default:\r
+                                               break;\r
                                }\r
                        }\r
                }\r
@@ -1538,8 +1582,7 @@ namespace DTXMania
                                                        pChip.bHit = true;\r
                                                        if ( configIni.bBGM音を発声する )\r
                                                        {\r
-                                                               // yyagi: 10レーン目(RD?)でBGMを再生するよりは、あまり使われないFTレーンを使った方が負荷が軽くならないか?\r
-                                                               dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
+                                                               dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int) Eレーン.BGM, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
                                                        }\r
                                                }\r
                                                break;\r
@@ -1762,12 +1805,6 @@ namespace DTXMania
                                        case 0x81:\r
                                        case 0x82:\r
                                        case 0x83:\r
-                                       case 0x84:\r
-                                       case 0x85:\r
-                                       case 0x86:\r
-                                       case 0x87:\r
-                                       case 0x88:\r
-                                       case 0x89:\r
                                        case 0x90:\r
                                        case 0x91:\r
                                        case 0x92:\r
@@ -1777,12 +1814,51 @@ namespace DTXMania
                                                        if ( configIni.bBGM音を発声する )\r
                                                        {\r
                                                                dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] );\r
-                                                               dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
+                                                               dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int) Eレーン.BGM, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
                                                                this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号;\r
                                                        }\r
                                                }\r
                                                break;\r
                                        #endregion\r
+\r
+\r
+                                       #region [ 84-89: 仮: override sound ]  // #26338 2011.11.8 yyagi\r
+                                       case 0x84:      // HH (HO/HC)\r
+                                       case 0x85:      // CY\r
+                                       case 0x86:      // RD\r
+                                       case 0x87:      // LC\r
+                                       case 0x88:      // Guitar\r
+                                       case 0x89:      // Bass\r
+                                       // mute sound (auto)\r
+                                       // 4A: 84: HH (HO/HC)\r
+                                       // 4B: 85: CY\r
+                                       // 4C: 86: RD\r
+                                       // 4D: 87: LC\r
+                                       // 2A: 88: Gt\r
+                                       // AA: 89: Bs\r
+\r
+                                       //      CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号.Guitar );\r
+                                       //      CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 );\r
+                                       //      this.n最後に再生した実WAV番号.Guitar = pChip.n整数値・内部番号;\r
+\r
+                                       //      protected void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )\r
+                                               if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
+                                               {\r
+                                                       pChip.bHit = true;\r
+                                                       E楽器パート[] p = { E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.GUITAR, E楽器パート.BASS };\r
+\r
+                                                       E楽器パート pp =  p[ pChip.nチャンネル番号 - 0x84 ];\r
+                                                       \r
+//                                                     if ( pp == E楽器パート.DRUMS ) {                   // pChip.nチャンネル番号= ..... HHとか、ドラムの場合は変える。\r
+//                                                             //            HC    CY    RD    LC\r
+//                                                             int[] ch = { 0x11, 0x16, 0x19, 0x1A };\r
+//                                                             pChip.nチャンネル番号 = ch[ pChip.nチャンネル番号 - 0x84 ]; \r
+//                                                     }\r
+                                                       this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, pp, dTX.nモニタを考慮した音量( pp ) );\r
+                                               }\r
+                                               break;\r
+                                       #endregion\r
+\r
                                        #region [ a0-a7: ベース演奏 ]\r
                                        case 0xa0:      // ベース演奏\r
                                        case 0xa1:\r
@@ -1906,7 +1982,7 @@ namespace DTXMania
                                        {\r
                                                pChip.bHit = true;\r
                                        }\r
-                                       if ( configIni.bAutoPlay[ ((int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.GT - 1) + indexInst ] )    // このような、バグの入りやすい書き方(GT/BSのindex値が他と異なる)はいずれ見直したい\r
+                                       if ( configIni.bAutoPlay[ ((int) Eã\83¬ã\83¼ã\83³.Guitar - 1) + indexInst ] ) // このような、バグの入りやすい書き方(GT/BSのindex値が他と異なる)はいずれ見直したい\r
                                        {\r
                                                pChip.bHit = true;                                                              // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.\r
                                                this.actWailingBonus.Start( inst, this.r現在の歓声Chip[indexInst] );\r
@@ -2159,7 +2235,7 @@ namespace DTXMania
                        int R = ( inst == E楽器パート.GUITAR ) ? 0 : 3;\r
                        int G = R + 1;\r
                        int B = R + 2;\r
-                       if ( bIsAutoPlay[ (int)Eドラムレーン.CY + indexInst ] )\r
+                       if ( bIsAutoPlay[ (int) Eレーン.Guitar - 1 + indexInst ] )   // このような、バグの入りやすい書き方(GT/BSのindex値が他と異なる)はいずれ見直したい\r
                        {\r
                                CDTX.CChip chip = this.r次に来る指定楽器Chipを更新して返す(inst);\r
                                if ( chip != null )\r
@@ -2284,124 +2360,6 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-\r
-// ダメージ/回復計算は、全部CAct演奏ゲージ共通クラスに隠蔽\r
-//#if true             // DAMAGELEVELTUNING\r
-//#region [ DAMAGELEVELTUNING ]\r
-//        // ----------------------------------\r
-//        public float[ , ] fDamageGaugeDelta = {                      // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
-//            // drums,   guitar,  bass\r
-//            {  0.004f,  0.006f,  0.006f  },\r
-//            {  0.002f,  0.003f,  0.003f  },\r
-//            {  0.000f,  0.000f,  0.000f  },\r
-//            { -0.020f, -0.030f,      -0.030f  },\r
-//            { -0.050f, -0.050f, -0.050f  }\r
-//        };\r
-//        public float[] fDamageLevelFactor = {\r
-//            0.5f, 1.0f, 1.5f\r
-//        };\r
-//        // ----------------------------------\r
-//#endregion\r
-//#endif\r
-\r
-//        protected void t判定にあわせてゲージを増減する( E楽器パート screenmode, E楽器パート part, E判定 e今回の判定 )\r
-//        {\r
-//            double fDamage;\r
-//            int nRisky = this.nRisky_InitialVar;\r
-\r
-//#if true     // DAMAGELEVELTUNING\r
-//            switch ( e今回の判定 )\r
-//            {\r
-//                case E判定.Perfect:\r
-//                case E判定.Great:\r
-//                case E判定.Good:\r
-//                    fDamage = ( nRisky > 0 ) ? 0 : fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
-//                    break;\r
-//                case E判定.Poor:\r
-//                case E判定.Miss:\r
-//                    if ( nRisky > 0 )\r
-//                    {\r
-//                        fDamage = -1.0 / nRisky;\r
-//                        nRiskyTime--;\r
-//                    }\r
-//                    else\r
-//                    {\r
-//                        fDamage = fDamageGaugeDelta[ (int) e今回の判定, (int) part ];\r
-//                    }\r
-//                    if ( e今回の判定 == E判定.Miss && nRisky == 0 )\r
-//                    {\r
-//                        fDamage *= fDamageLevelFactor[ (int) CDTXMania.ConfigIni.eダメージレベル ];\r
-//                    }\r
-//                    break;\r
-\r
-//                default:\r
-//                    fDamage = 0.0f;\r
-//                    break;\r
-//            }\r
-//#else                                                                                                        // before applying #23625 modifications\r
-//            switch (e今回の判定)\r
-//            {\r
-//                case E判定.Perfect:\r
-//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;\r
-//                    break;\r
-\r
-//                case E判定.Great:\r
-//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;\r
-//                    break;\r
-\r
-//                case E判定.Good:\r
-//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;\r
-//                    break;\r
-\r
-//                case E判定.Poor:\r
-//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;\r
-//                    break;\r
-\r
-//                case E判定.Miss:\r
-//                    fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;\r
-//                    switch( CDTXMania.ConfigIni.eダメージレベル )\r
-//                    {\r
-//                        case Eダメージレベル.少ない:\r
-//                            fDamage *= 0.6;\r
-//                            break;\r
-\r
-//                        case Eダメージレベル.普通:\r
-//                            fDamage *= 1.0;\r
-//                            break;\r
-\r
-//                        case Eダメージレベル.大きい:\r
-//                            fDamage *= 1.6;\r
-//                            break;\r
-//                    }\r
-//                    break;\r
-\r
-//                default:\r
-//                    fDamage = 0.0;\r
-//                    break;\r
-//            }\r
-//#endif\r
-//            if ( screenmode == E楽器パート.DRUMS )                      // ドラム演奏画面なら、ギター/ベースのダメージも全部ドラムのゲージに集約する\r
-//            {\r
-//                part = E楽器パート.DRUMS;\r
-//                this.actGauge.db現在のゲージ値[ (int) part ] += fDamage;\r
-//            }\r
-//            else\r
-//            {\r
-//                if ( nRisky > 0 )                                    // ギター画面且つRISKYなら、ギターとベースのゲージをセットで減少\r
-//                {\r
-//                    this.actGauge.db現在のゲージ値[ (int) E楽器パート.GUITAR ] += fDamage;\r
-//                    this.actGauge.db現在のゲージ値[ (int) E楽器パート.BASS   ] += fDamage;\r
-//                }\r
-//                else\r
-//                {\r
-//                    this.actGauge.db現在のゲージ値[ (int) part ] += fDamage;\r
-//                }\r
-//            }\r
-\r
-//            if ( this.actGauge.db現在のゲージ値[ (int) part ] > 1.0 )         // RISKY時は決してゲージが増加しないので、ギタレボモード時のギター/ベース両チェックはしなくて良い\r
-//                this.actGauge.db現在のゲージ値[ (int) part ] = 1.0;\r
-//        }\r
-//        //-----------------\r
         #endregion\r
        }\r
 }\r
index 3bd59c4..f2e241d 100644 (file)
@@ -31,7 +31,7 @@ namespace DTXMania
                                                {\r
                                                        if( r歓声Chip != null )\r
                                                        {\r
-                                                               CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, 10, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
+                                                               CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, (int) Eレーン.BGM, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
                                                                return;\r
                                                        }\r
                                                        CDTXMania.Skin.sound歓声音.n位置・次に鳴るサウンド = ( part == E楽器パート.GUITAR ) ? -50 : 50;\r
index 1fbc323..e5307cb 100644 (file)
@@ -459,22 +459,22 @@ namespace DTXMania
                        switch ( pChip.n整数値 )\r
                        {\r
                                case 0x04:      // HH消音あり(従来同等)\r
-                                       CDTXMania.DTX.bHH演奏で直前のHHを消音する = true;\r
+                                       CDTXMania.DTX.b演奏で直前の音を消音する.HH = true;\r
                                        break;\r
                                case 0x05:      // HH消音無し\r
-                                       CDTXMania.DTX.bHH演奏で直前のHHを消音する = false;\r
+                                       CDTXMania.DTX.b演奏で直前の音を消音する.HH = false;\r
                                        break;\r
                                case 0x06:      // ギター消音あり(従来同等)\r
-                                       CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = true;\r
+                                       CDTXMania.DTX.b演奏で直前の音を消音する.Guitar = true;\r
                                        break;\r
                                case 0x07:      // ギター消音無し\r
-                                       CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = false;\r
+                                       CDTXMania.DTX.b演奏で直前の音を消音する.Guitar = false;\r
                                        break;\r
                                case 0x08:      // ベース消音あり(従来同等)\r
-                                       CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = true;\r
+                                       CDTXMania.DTX.b演奏で直前の音を消音する.Bass = true;\r
                                        break;\r
                                case 0x09:      // ベース消音無し\r
-                                       CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = false;\r
+                                       CDTXMania.DTX.b演奏で直前の音を消音する.Bass = false;\r
                                        break;\r
                        }\r
 #endif\r
@@ -546,15 +546,15 @@ namespace DTXMania
                                if ( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
+                                       if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0xA0 ) )\r
                                        {\r
                                                this.actChipFireGB.Start( 3 );\r
                                        }\r
-                                       if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
+                                       if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0xA0 ) )\r
                                        {\r
                                                this.actChipFireGB.Start( 4 );\r
                                        }\r
-                                       if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
+                                       if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0xA0 ) )\r
                                        {\r
                                                this.actChipFireGB.Start( 5 );\r
                                        }\r
index 80fe989..4673d3a 100644 (file)
@@ -36,7 +36,7 @@ namespace DTXMania
                                                {\r
                                                        if( r歓声Chip != null )\r
                                                        {\r
-                                                               CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, 10, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
+                                                               CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, (int) Eレーン.BGM, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
                                                                return;\r
                                                        }\r
                                                        CDTXMania.Skin.sound歓声音.t再生する();\r
index 63792a1..9ab1a2b 100644 (file)
@@ -19,19 +19,19 @@ namespace DTXMania
                \r
                // メソッド\r
 \r
-               public void Start( Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³ lane )\r
+               public void Start( Eレーン lane )\r
                {\r
                        this.Start( lane, false, false, false );\r
                }\r
-               public void Start( Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³ lane, bool bã\83\95ã\82£ã\83«ã\82¤ã\83³ )\r
+               public void Start( Eレーン lane, bool bフィルイン )\r
                {\r
                        this.Start( lane, bフィルイン, false, false );\r
                }\r
-               public void Start( Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³ lane, bool bã\83\95ã\82£ã\83«ã\82¤ã\83³, bool b大波 )\r
+               public void Start( Eレーン lane, bool bフィルイン, bool b大波 )\r
                {\r
                        this.Start( lane, bフィルイン, b大波, false );\r
                }\r
-               public void Start( Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³ lane, bool bã\83\95ã\82£ã\83«ã\82¤ã\83³, bool b大波, bool bç´°æ³¢ )\r
+               public void Start( Eレーン lane, bool bフィルイン, bool b大波, bool b細波 )\r
                {\r
                        if( this.tx火花 != null )\r
                        {\r
index 8f7fe0a..c4dca49 100644 (file)
@@ -54,7 +54,7 @@ namespace DTXMania
                \r
                // メソッド\r
 \r
-               public void Start( Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³ lane, float f強弱度å\90\88ã\81\84 )\r
+               public void Start( Eレーン lane, float f強弱度合い )\r
                {\r
                        int num = (int) ( ( 1f - f強弱度合い ) * 55f );\r
                        this.ct進行[ (int) lane ] = new CCounter( num, 100, 4, CDTXMania.Timer );\r
index e8ca53f..64ef129 100644 (file)
@@ -293,14 +293,14 @@ namespace DTXMania
                                return false;\r
                        }\r
                        this.tチップのヒット処理( nHitTime, pChip );\r
-                       this.actLaneFlushD.Start( (Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³) nLane, ( (float) n強弱度å\90\88ã\81\840to127 ) / 127f );\r
+                       this.actLaneFlushD.Start( (Eレーン) nLane, ( (float) n強弱度合い0to127 ) / 127f );\r
                        this.actPad.Hit( nPad );\r
                        if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )\r
                        {\r
                                bool flag = this.bフィルイン中;\r
                                bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );\r
                                // bool flag3 = flag2;\r
-                               this.actChipFireD.Start( (Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³) nLane, flag, flag2, flag2 );\r
+                               this.actChipFireD.Start( (Eレーン) nLane, flag, flag2, flag2 );\r
                        }\r
                        if( CDTXMania.ConfigIni.bドラム打音を発声する )\r
                        {\r
@@ -1443,7 +1443,7 @@ namespace DTXMania
 \r
                                                #region [ *** ]\r
                                                //-----------------------------\r
-                                               this.actLaneFlushD.Start( (Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³) this.nã\83\91ã\83\83ã\83\890Atoã\83¬ã\83¼ã\83³07[ nPad ], ( (float) event2.nVelocity ) / 127f );\r
+                                               this.actLaneFlushD.Start( (Eレーン) this.nパッド0Atoレーン07[ nPad ], ( (float) event2.nVelocity ) / 127f );\r
                                                this.actPad.Hit( this.nパッド0Atoパッド08[ nPad ] );\r
                                                if( !CDTXMania.ConfigIni.bドラム打音を発声する )\r
                                                {\r
@@ -1893,11 +1893,11 @@ namespace DTXMania
                                if ( ( configIni.bAutoPlay[ indexSevenLanes ] && !pChip.bHit ) && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                {\r
                                        pChip.bHit = true;\r
-                                       this.actLaneFlushD.Start( (Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³) indexSevenLanes, ( (float) CInput管ç\90\86.né\80\9a常é\9f³é\87\8f ) / 127f );\r
+                                       this.actLaneFlushD.Start( (Eレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f );\r
                                        bool flag = this.bフィルイン中;\r
                                        bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );\r
                                        //bool flag3 = flag2;\r
-                                       this.actChipFireD.Start( (Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³) indexSevenLanes, flag, flag2, flag2 );\r
+                                       this.actChipFireD.Start( (Eレーン) indexSevenLanes, flag, flag2, flag2 );\r
                                        this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] );\r
                                        this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );\r
                                        this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r
@@ -2093,7 +2093,7 @@ namespace DTXMania
                                                {\r
                                                        if ( this.r現在の歓声Chip.Drums != null )\r
                                                        {\r
-                                                               dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
+                                                               dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, (int) Eレーン.BGM, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
                                                        }\r
                                                        else\r
                                                        {\r
@@ -2104,22 +2104,22 @@ namespace DTXMania
                                                break;\r
 #if TEST_NOTEOFFMODE   // 2011.1.1 yyagi TEST\r
                                                                case 0x04:      // HH消音あり(従来同等)\r
-                                                                       CDTXMania.DTX.bHH演奏で直前のHHを消音する = true;\r
+                                                                       CDTXMania.DTX.b演奏で直前の音を消音する.HH = true;\r
                                                                        break;\r
                                                                case 0x05:      // HH消音無し\r
-                                                                       CDTXMania.DTX.bHH演奏で直前のHHを消音する = false;\r
+                                                                       CDTXMania.DTX.b演奏で直前の音を消音する.HH = false;\r
                                                                        break;\r
                                                                case 0x06:      // ギター消音あり(従来同等)\r
-                                                                       CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = true;\r
+                                                                       CDTXMania.DTX.b演奏で直前の音を消音する.Gutiar = true;\r
                                                                        break;\r
                                                                case 0x07:      // ギター消音無し\r
-                                                                       CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = false;\r
+                                                                       CDTXMania.DTX.b演奏で直前の音を消音する.Gutiar = false;\r
                                                                        break;\r
                                                                case 0x08:      // ベース消音あり(従来同等)\r
-                                                                       CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = true;\r
+                                                                       CDTXMania.DTX.b演奏で直前の音を消音する.Bass = true;\r
                                                                        break;\r
                                                                case 0x09:      // ベース消音無し\r
-                                                                       CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = false;\r
+                                                                       CDTXMania.DTX.b演奏で直前の音を消音する.Bass = false;\r
                                                                        break;\r
 #endif\r
                                }\r
index 558ce6c..5f5bf54 100644 (file)
@@ -606,87 +606,95 @@ namespace DTXMania
                        public bool LT;\r
                        public bool FT;\r
                        public bool CY;\r
+                       public bool RD;\r
                        public bool Guitar;\r
                        public bool Bass;\r
                        public bool this[ int index ]\r
                        {\r
                                get\r
                                {\r
-                                       switch ( index )\r
+                                       switch( index )\r
                                        {\r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.LC:\r
+                                               case (int) Eレーン.LC:\r
                                                        return this.LC;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.HH:\r
+                                               case (int) Eレーン.HH:\r
                                                        return this.HH;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.SD:\r
+                                               case (int) Eレーン.SD:\r
                                                        return this.SD;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.BD:\r
+                                               case (int) Eレーン.BD:\r
                                                        return this.BD;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.HT:\r
+                                               case (int) Eレーン.HT:\r
                                                        return this.HT;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.LT:\r
+                                               case (int) Eレーン.LT:\r
                                                        return this.LT;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.FT:\r
+                                               case (int) Eレーン.FT:\r
                                                        return this.FT;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.CY:\r
+                                               case (int) Eレーン.CY:\r
                                                        return this.CY;\r
 \r
-                                               case (int) Eドラムレーン.GT:\r
+                                               case (int) Eレーン.RD:\r
+                                                       return this.RD;\r
+\r
+                                               case (int) Eレーン.Guitar:\r
                                                        return this.Guitar;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.BS:\r
+                                               case (int) Eã\83¬ã\83¼ã\83³.Bass:\r
                                                        return this.Bass;\r
                                        }\r
                                        throw new IndexOutOfRangeException();\r
                                }\r
                                set\r
                                {\r
-                                       switch ( index )\r
+                                       switch( index )\r
                                        {\r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.LC:\r
+                                               case (int) Eレーン.LC:\r
                                                        this.LC = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.HH:\r
+                                               case (int) Eレーン.HH:\r
                                                        this.HH = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.SD:\r
+                                               case (int) Eレーン.SD:\r
                                                        this.SD = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.BD:\r
+                                               case (int) Eレーン.BD:\r
                                                        this.BD = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.HT:\r
+                                               case (int) Eレーン.HT:\r
                                                        this.HT = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.LT:\r
+                                               case (int) Eレーン.LT:\r
                                                        this.LT = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.FT:\r
+                                               case (int) Eレーン.FT:\r
                                                        this.FT = value;\r
                                                        return;\r
 \r
-                                               case (int) Eドラムレーン.CY:\r
+                                               case (int) Eレーン.CY:\r
+                                                       this.CY = value;\r
+                                                       return;\r
+\r
+                                               case (int) Eレーン.RD:\r
                                                        this.CY = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.CY + 1:\r
+                                               case (int) Eã\83¬ã\83¼ã\83³.Guitar:\r
                                                        this.Guitar = value;\r
                                                        return;\r
 \r
-                                               case (int) Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³.CY + 2:\r
+                                               case (int) Eã\83¬ã\83¼ã\83³.Bass:\r
                                                        this.Bass = value;\r
                                                        return;\r
                                        }\r
index 149779b..89a5b6a 100644 (file)
@@ -178,9 +178,9 @@ namespace DTXMania
                RIGHT,\r
                OFF\r
        }\r
-       internal enum Eã\83\89ã\83©ã\83 ã\83¬ã\83¼ã\83³\r
+       internal enum Eレーン\r
        {\r
-               LC,\r
+               LC = 0,\r
                HH,\r
                SD,\r
                BD,\r
@@ -188,8 +188,10 @@ namespace DTXMania
                LT,\r
                FT,\r
                CY,\r
-               GT,             // AUTOレーン判定を容易にするため、便宜上定義しておく\r
-               BS\r
+               RD,             // 将来の独立レーン化/独立AUTO設定を見越して追加\r
+               Guitar, // AUTOレーン判定を容易にするため、便宜上定義しておく\r
+               Bass,\r
+               BGM\r
        }\r
        internal enum Eログ出力\r
        {\r
@@ -270,6 +272,99 @@ namespace DTXMania
                }\r
        }\r
 \r
+       /// <summary>\r
+       /// レーンの値を扱う汎用の構造体。列挙型"Eドラムレーン"に準拠。\r
+       /// </summary>\r
+       /// <typeparam name="T">値の型。</typeparam>\r
+       [StructLayout( LayoutKind.Sequential )]\r
+       public struct STLANEVALUE<T>\r
+       {\r
+               public T LC;\r
+               public T HH;\r
+               public T SD;\r
+               public T BD;\r
+               public T HT;\r
+               public T LT;\r
+               public T FT;\r
+               public T CY;\r
+               public T RD;\r
+               public T Guitar;\r
+               public T Bass;\r
+               public T BGM;\r
+\r
+               public T this[ int index ]\r
+               {\r
+                       get\r
+                       {\r
+                               switch ( index )\r
+                               {\r
+                                       case (int) Eレーン.LC:\r
+                                               return this.LC;\r
+                                       case (int) Eレーン.HH:\r
+                                               return this.HH;\r
+                                       case (int) Eレーン.SD:\r
+                                               return this.SD;\r
+                                       case (int) Eレーン.BD:\r
+                                               return this.BD;\r
+                                       case (int) Eレーン.HT:\r
+                                               return this.HT;\r
+                                       case (int) Eレーン.LT:\r
+                                               return this.LT;\r
+                                       case (int) Eレーン.FT:\r
+                                               return this.FT;\r
+                                       case (int) Eレーン.CY:\r
+                                               return this.CY;\r
+                                       case (int) Eレーン.RD:\r
+                                               return this.RD;\r
+                                       case (int) Eレーン.Guitar:\r
+                                               return this.Guitar;\r
+                                       case (int) Eレーン.Bass:\r
+                                               return this.Bass;\r
+                               }\r
+                               throw new IndexOutOfRangeException();\r
+                       }\r
+                       set\r
+                       {\r
+                               switch ( index )\r
+                               {\r
+                                       case (int) Eレーン.LC:\r
+                                               this.LC = value;\r
+                                               return;\r
+                                       case (int) Eレーン.HH:\r
+                                               this.HH = value;\r
+                                               return;\r
+                                       case (int) Eレーン.SD:\r
+                                               this.SD = value;\r
+                                               return;\r
+                                       case (int) Eレーン.BD:\r
+                                               this.BD = value;\r
+                                               return;\r
+                                       case (int) Eレーン.HT:\r
+                                               this.HT = value;\r
+                                               return;\r
+                                       case (int) Eレーン.LT:\r
+                                               this.LT = value;\r
+                                               return;\r
+                                       case (int) Eレーン.FT:\r
+                                               this.FT = value;\r
+                                               return;\r
+                                       case (int) Eレーン.CY:\r
+                                               this.CY = value;\r
+                                               return;\r
+                                       case (int) Eレーン.RD:\r
+                                               this.RD = value;\r
+                                               return;\r
+                                       case (int) Eレーン.Guitar:\r
+                                               this.Guitar = value;\r
+                                               return;\r
+                                       case (int) Eレーン.Bass:\r
+                                               this.Bass = value;\r
+                                               return;\r
+                               }\r
+                               throw new IndexOutOfRangeException();\r
+                       }\r
+               }\r
+       }\r
 \r
        internal class C定数\r
        {\r