From a169d2530caa7541d1565ecd789495d16bd53aee Mon Sep 17 00:00:00 2001 From: yyagi Date: Mon, 12 Dec 2011 14:41:15 +0000 Subject: [PATCH] =?utf8?q?#26338=20Dr/Gt/Bs=E3=81=AE=E6=BC=94=E5=A5=8F?= =?utf8?q?=E6=8E=92=E4=BB=96=E3=83=81=E3=83=A3=E3=83=B3=E3=83=8D=E3=83=AB?= =?utf8?q?=E3=82=92=E5=AE=9F=E8=A3=85=E3=80=82(=E7=89=87=E6=96=B9=E3=81=AE?= =?utf8?q?=E5=86=8D=E7=94=9F=E3=81=A7=E3=80=81=E3=82=82=E3=81=86=E7=89=87?= =?utf8?q?=E6=96=B9=E3=81=AE=E5=86=8D=E7=94=9F=E3=82=92=E4=B8=8A=E6=9B=B8?= =?utf8?q?=E3=81=8D=E3=81=99=E3=82=8B)=20=E4=BB=AE=E3=81=AB=E3=83=81?= =?utf8?q?=E3=83=A3=E3=83=B3=E3=83=8D=E3=83=AB=200x84=EF=BD=9E0x89=20?= =?utf8?q?=E3=82=92=E3=80=81=E3=81=9D=E3=82=8C=E3=81=9E=E3=82=8C=20HH(HO/H?= =?utf8?q?C),=20CY,=20RD,=20LC,=20Gt,=20Bs=E3=81=AE=E6=8E=92=E4=BB=96?= =?utf8?q?=E3=83=81=E3=83=A3=E3=83=B3=E3=83=8D=E3=83=AB=E3=81=A8=E3=81=97?= =?utf8?q?=E3=81=A6=E3=81=82=E3=82=8B=E3=80=82=20=E6=AC=A1=E3=81=AE?= =?utf8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3=E3=81=A7=E6=AD=A3?= =?utf8?q?=E5=BC=8F=E3=81=AA=E3=83=81=E3=83=A3=E3=83=B3=E3=83=8D=E3=83=AB?= =?utf8?q?=E7=95=AA=E5=8F=B7=E3=82=92=E6=B1=BA=E3=82=81=E3=81=BE=E3=81=99?= =?utf8?q?=E3=80=82(=E4=BB=8A=E5=9B=9E=E3=81=AFDTXC=E3=81=AE=E5=A4=89?= =?utf8?q?=E6=9B=B4=E3=81=8C=E9=96=93=E3=81=AB=E5=90=88=E3=82=8F=E3=81=AA?= =?utf8?q?=E3=81=84=E3=81=AE=E3=81=A7=E3=80=81=E7=8F=BE=E5=9C=A8=E3=81=AED?= =?utf8?q?TXC=E3=81=A7=E7=B7=A8=E9=9B=86=E3=81=A7=E3=81=8D=E3=82=8Bch?= =?utf8?q?=E3=81=AB=E4=BB=AE=E7=BD=AE=E3=81=8D=E3=81=97=E3=81=BE=E3=81=97?= =?utf8?q?=E3=81=9F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@267 16f42ceb-6dc6-49c8-ba94-f2d53467949d --- .../コード/スコア、曲/CDTX.cs | 9 +- .../07.演奏/CStage演奏画面共通.cs | 262 +++++++++------------ .../CAct演奏GuitarWailingBonus.cs | 2 +- .../ギター画面/CStage演奏ギター画面.cs | 18 +- .../ドラム画面/CAct演奏DrumsWailingBonus.cs | 2 +- .../CAct演奏DrumsチップファイアD.cs | 8 +- .../CAct演奏DrumsレーンフラッシュD.cs | 2 +- .../ドラム画面/CStage演奏ドラム画面.cs | 24 +- .../コード/全体/CConfigIni.cs | 52 ++-- .../コード/全体/C定数.cs | 103 +++++++- 10 files changed, 272 insertions(+), 210 deletions(-) diff --git a/DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs b/DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs index 96f6516e..f4fbe7a8 100644 --- a/DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs +++ b/DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs @@ -1517,9 +1517,10 @@ namespace DTXMania public string strフォルダ名; public string TITLE; #if TEST_NOTEOFFMODE - public bool bHH演奏で直前のHHを消音する; - public bool bGUITAR演奏で直前のGUITARを消音する; - public bool bBASS演奏で直前のBASSを消音する; + public STLANEVALUE b演奏で直前の音を消音する; +// public bool bHH演奏で直前のHHを消音する; +// public bool bGUITAR演奏で直前のGUITARを消音する; +// public bool bBASS演奏で直前のBASSを消音する; #endif // コンストラクタ @@ -2410,7 +2411,7 @@ namespace DTXMania { if( pChip.n整数値・内部番号 >= 0 ) { - if( ( nLane < 0 ) || ( nLane > 10 ) ) + if( ( nLane < (int) Eレーン.LC ) || ( (int) Eレーン.BGM < nLane ) ) { throw new ArgumentOutOfRangeException(); } diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs index 3bb7691b..327a7b80 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs @@ -224,8 +224,8 @@ namespace DTXMania this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1; this.L最後に再生したHHの実WAV番号 = new List( 16 ); this.n最後に再生したHHのチャンネル番号 = 0; - this.n最後に再生したギターの実WAV番号 = -1; - this.n最後に再生したベースの実WAV番号 = -1; + this.n最後に再生した実WAV番号.Guitar = -1; + this.n最後に再生した実WAV番号.Bass = -1; for ( int i = 0; i < 50; i++ ) { this.n最後に再生したBGMの実WAV番号[ i ] = -1; @@ -513,16 +513,18 @@ namespace DTXMania protected readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 }; protected readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 }; protected readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a }; - protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 }; - protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 }; + protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 }; // パッド画像のヒット処理用 + protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 }; protected STDGBVALUE nヒット数・Auto含まない; protected STDGBVALUE nヒット数・Auto含む; protected int n現在のトップChip = -1; protected int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ]; protected int n最後に再生したHHのチャンネル番号; protected List L最後に再生したHHの実WAV番号; // #23921 2011.1.4 yyagi: change "int" to "List", for recording multiple wav No. - protected int n最後に再生したギターの実WAV番号; - protected int n最後に再生したベースの実WAV番号; + protected STLANEVALUE n最後に再生した実WAV番号; // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS" + // into "n最後に再生した実WAV番号"; +// protected int n最後に再生した実WAV番号.GUITAR; +// protected int n最後に再生した実WAV番号.BASS; protected STDGBVALUE> queWailing; protected STDGBVALUE r現在の歓声Chip; @@ -808,25 +810,55 @@ namespace DTXMania } protected void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 ) { + // mute sound (auto) + // 4A: HH + // 4B: CY + // 4C: RD + // 4D: LC + // 2A: Gt + // AA: Bs + // + if ( pChip != null ) { + bool overwrite = false; switch ( part ) { case E楽器パート.DRUMS: + #region [ DRUMS ] { int index = pChip.nチャンネル番号; - if ( ( index >= 0x11 ) && ( index <= 0x1a ) ) + if ( ( 0x11 <= index ) && ( index <= 0x1a ) ) { index -= 0x11; } - else + else if ( ( 0x31 <= index ) && ( index <= 0x3a ) ) { - if ( ( index < 0x31 ) || ( index > 0x3a ) ) - { - return; - } index -= 0x31; } + // mute sound (auto) + // 4A: 84: HH (HO/HC) + // 4B: 85: CY + // 4C: 86: RD + // 4D: 87: LC + // 2A: 88: Gt + // AA: 89: Bs + else if ( 0x84 == index ) // 仮に今だけ追加 HHは消音処理があるので overwriteフラグ系の処理は改めて不要 + { + index = 0; + } + else if ( ( 0x85 <= index ) && ( index <= 0x87 ) ) // 仮に今だけ追加 + { + // CY RD LC + int[] ch = { 0x16, 0x19, 0x1A }; + pChip.nチャンネル番号 = ch[ pChip.nチャンネル番号 - 0x85 ]; + index = pChip.nチャンネル番号 - 0x11; + overwrite = true; + } + else + { + return; + } int nLane = this.nチャンネル0Atoレーン07[ index ]; if ( ( nLane == 1 ) && // 今回演奏するのがHC or HO ( index == 0 || ( index == 7 && this.n最後に再生したHHのチャンネル番号 != 0x18 && this.n最後に再生したHHのチャンネル番号 != 0x38 ) ) @@ -841,7 +873,7 @@ namespace DTXMania { // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。 #if TEST_NOTEOFFMODE // 2011.1.1 yyagi test - if (CDTXMania.DTX.bHH演奏で直前のHHを消音する) + if (CDTXMania.DTX.b演奏で直前の音を消音する.HH) { #endif for ( int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++ ) // #23921 2011.1.4 yyagi @@ -857,7 +889,7 @@ namespace DTXMania this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号; } #if TEST_NOTEOFFMODE // 2011.1.4 yyagi test - if (CDTXMania.DTX.bHH演奏で直前のHHを消音する) + if (CDTXMania.DTX.b演奏で直前の音を消音する.HH) { #endif if ( index == 0 || index == 7 || index == 0x20 || index == 0x27 ) // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく @@ -874,32 +906,44 @@ namespace DTXMania #if TEST_NOTEOFFMODE // 2011.1.4 yyagi test } #endif + if ( overwrite ) + { + CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号[index] ); + } CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ ); + this.n最後に再生した実WAV番号[ nLane ] = pChip.n整数値・内部番号; // nLaneでなくindexにすると、LC(1A-11=09)とギター(enumで09)がかぶってLC音が消されるので注意 return; } + #endregion case E楽器パート.GUITAR: + #region [ GUITAR ] #if TEST_NOTEOFFMODE // 2011.1.1 yyagi test - if (CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する) { + if (CDTXMania.DTX.b演奏で直前の音を消音する.Guitar) { #endif - CDTXMania.DTX.tWavの再生停止( this.n最後に再生したギターの実WAV番号 ); + CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号.Guitar ); #if TEST_NOTEOFFMODE } #endif - CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 ); - this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号; + CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, (int) Eレーン.Guitar, n音量, bモニタ, b音程をずらして再生 ); + this.n最後に再生した実WAV番号.Guitar = pChip.n整数値・内部番号; return; - + #endregion case E楽器パート.BASS: + #region [ BASS ] #if TEST_NOTEOFFMODE - if (CDTXMania.DTX.bBASS演奏で直前のBASSを消音する) { + if (CDTXMania.DTX.b演奏で直前の音を消音する.Bass) { #endif - CDTXMania.DTX.tWavの再生停止( this.n最後に再生したベースの実WAV番号 ); + CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号.Bass ); #if TEST_NOTEOFFMODE } #endif - CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生 ); - this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号; + CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, (int) Eレーン.Bass, n音量, bモニタ, b音程をずらして再生 ); + this.n最後に再生した実WAV番号.Bass = pChip.n整数値・内部番号; return; + #endregion + + default: + break; } } } @@ -1538,8 +1582,7 @@ namespace DTXMania pChip.bHit = true; if ( configIni.bBGM音を発声する ) { - // yyagi: 10レーン目(RD?)でBGMを再生するよりは、あまり使われないFTレーンを使った方が負荷が軽くならないか? - dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); + dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int) Eレーン.BGM, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); } } break; @@ -1762,12 +1805,6 @@ namespace DTXMania case 0x81: case 0x82: case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: case 0x90: case 0x91: case 0x92: @@ -1777,12 +1814,51 @@ namespace DTXMania if ( configIni.bBGM音を発声する ) { dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] ); - dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); + dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int) Eレーン.BGM, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号; } } break; #endregion + + + #region [ 84-89: 仮: override sound ] // #26338 2011.11.8 yyagi + case 0x84: // HH (HO/HC) + case 0x85: // CY + case 0x86: // RD + case 0x87: // LC + case 0x88: // Guitar + case 0x89: // Bass + // mute sound (auto) + // 4A: 84: HH (HO/HC) + // 4B: 85: CY + // 4C: 86: RD + // 4D: 87: LC + // 2A: 88: Gt + // AA: 89: Bs + + // CDTXMania.DTX.tWavの再生停止( this.n最後に再生した実WAV番号.Guitar ); + // CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 ); + // this.n最後に再生した実WAV番号.Guitar = pChip.n整数値・内部番号; + + // protected void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 ) + if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) ) + { + pChip.bHit = true; + E楽器パート[] p = { E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.GUITAR, E楽器パート.BASS }; + + E楽器パート pp = p[ pChip.nチャンネル番号 - 0x84 ]; + +// if ( pp == E楽器パート.DRUMS ) { // pChip.nチャンネル番号= ..... HHとか、ドラムの場合は変える。 +// // HC CY RD LC +// int[] ch = { 0x11, 0x16, 0x19, 0x1A }; +// pChip.nチャンネル番号 = ch[ pChip.nチャンネル番号 - 0x84 ]; +// } + this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, pp, dTX.nモニタを考慮した音量( pp ) ); + } + break; + #endregion + #region [ a0-a7: ベース演奏 ] case 0xa0: // ベース演奏 case 0xa1: @@ -1906,7 +1982,7 @@ namespace DTXMania { pChip.bHit = true; } - if ( configIni.bAutoPlay[ ((int) Eドラムレーン.GT - 1) + indexInst ] ) // このような、バグの入りやすい書き方(GT/BSのindex値が他と異なる)はいずれ見直したい + if ( configIni.bAutoPlay[ ((int) Eレーン.Guitar - 1) + indexInst ] ) // このような、バグの入りやすい書き方(GT/BSのindex値が他と異なる)はいずれ見直したい { pChip.bHit = true; // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay. this.actWailingBonus.Start( inst, this.r現在の歓声Chip[indexInst] ); @@ -2159,7 +2235,7 @@ namespace DTXMania int R = ( inst == E楽器パート.GUITAR ) ? 0 : 3; int G = R + 1; int B = R + 2; - if ( bIsAutoPlay[ (int)Eドラムレーン.CY + indexInst ] ) + if ( bIsAutoPlay[ (int) Eレーン.Guitar - 1 + indexInst ] ) // このような、バグの入りやすい書き方(GT/BSのindex値が他と異なる)はいずれ見直したい { CDTX.CChip chip = this.r次に来る指定楽器Chipを更新して返す(inst); if ( chip != null ) @@ -2284,124 +2360,6 @@ namespace DTXMania } } } - -// ダメージ/回復計算は、全部CAct演奏ゲージ共通クラスに隠蔽 -//#if true // DAMAGELEVELTUNING -//#region [ DAMAGELEVELTUNING ] -// // ---------------------------------- -// public float[ , ] fDamageGaugeDelta = { // #23625 2011.1.10 ickw_284: tuned damage/recover factors -// // drums, guitar, bass -// { 0.004f, 0.006f, 0.006f }, -// { 0.002f, 0.003f, 0.003f }, -// { 0.000f, 0.000f, 0.000f }, -// { -0.020f, -0.030f, -0.030f }, -// { -0.050f, -0.050f, -0.050f } -// }; -// public float[] fDamageLevelFactor = { -// 0.5f, 1.0f, 1.5f -// }; -// // ---------------------------------- -//#endregion -//#endif - -// protected void t判定にあわせてゲージを増減する( E楽器パート screenmode, E楽器パート part, E判定 e今回の判定 ) -// { -// double fDamage; -// int nRisky = this.nRisky_InitialVar; - -//#if true // DAMAGELEVELTUNING -// switch ( e今回の判定 ) -// { -// case E判定.Perfect: -// case E判定.Great: -// case E判定.Good: -// fDamage = ( nRisky > 0 ) ? 0 : fDamageGaugeDelta[ (int) e今回の判定, (int) part ]; -// break; -// case E判定.Poor: -// case E判定.Miss: -// if ( nRisky > 0 ) -// { -// fDamage = -1.0 / nRisky; -// nRiskyTime--; -// } -// else -// { -// fDamage = fDamageGaugeDelta[ (int) e今回の判定, (int) part ]; -// } -// if ( e今回の判定 == E判定.Miss && nRisky == 0 ) -// { -// fDamage *= fDamageLevelFactor[ (int) CDTXMania.ConfigIni.eダメージレベル ]; -// } -// break; - -// default: -// fDamage = 0.0f; -// break; -// } -//#else // before applying #23625 modifications -// switch (e今回の判定) -// { -// case E判定.Perfect: -// fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015; -// break; - -// case E判定.Great: -// fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009; -// break; - -// case E判定.Good: -// fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003; -// break; - -// case E判定.Poor: -// fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0; -// break; - -// case E判定.Miss: -// fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035; -// switch( CDTXMania.ConfigIni.eダメージレベル ) -// { -// case Eダメージレベル.少ない: -// fDamage *= 0.6; -// break; - -// case Eダメージレベル.普通: -// fDamage *= 1.0; -// break; - -// case Eダメージレベル.大きい: -// fDamage *= 1.6; -// break; -// } -// break; - -// default: -// fDamage = 0.0; -// break; -// } -//#endif -// if ( screenmode == E楽器パート.DRUMS ) // ドラム演奏画面なら、ギター/ベースのダメージも全部ドラムのゲージに集約する -// { -// part = E楽器パート.DRUMS; -// this.actGauge.db現在のゲージ値[ (int) part ] += fDamage; -// } -// else -// { -// if ( nRisky > 0 ) // ギター画面且つRISKYなら、ギターとベースのゲージをセットで減少 -// { -// this.actGauge.db現在のゲージ値[ (int) E楽器パート.GUITAR ] += fDamage; -// this.actGauge.db現在のゲージ値[ (int) E楽器パート.BASS ] += fDamage; -// } -// else -// { -// this.actGauge.db現在のゲージ値[ (int) part ] += fDamage; -// } -// } - -// if ( this.actGauge.db現在のゲージ値[ (int) part ] > 1.0 ) // RISKY時は決してゲージが増加しないので、ギタレボモード時のギター/ベース両チェックはしなくて良い -// this.actGauge.db現在のゲージ値[ (int) part ] = 1.0; -// } -// //----------------- #endregion } } diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CAct演奏GuitarWailingBonus.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CAct演奏GuitarWailingBonus.cs index 3bd59c46..f2e241d5 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CAct演奏GuitarWailingBonus.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CAct演奏GuitarWailingBonus.cs @@ -31,7 +31,7 @@ namespace DTXMania { if( r歓声Chip != null ) { - CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, 10, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); + CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, (int) Eレーン.BGM, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); return; } CDTXMania.Skin.sound歓声音.n位置・次に鳴るサウンド = ( part == E楽器パート.GUITAR ) ? -50 : 50; diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs index 1fbc3233..e5307cbb 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ギター画面/CStage演奏ギター画面.cs @@ -459,22 +459,22 @@ namespace DTXMania switch ( pChip.n整数値 ) { case 0x04: // HH消音あり(従来同等) - CDTXMania.DTX.bHH演奏で直前のHHを消音する = true; + CDTXMania.DTX.b演奏で直前の音を消音する.HH = true; break; case 0x05: // HH消音無し - CDTXMania.DTX.bHH演奏で直前のHHを消音する = false; + CDTXMania.DTX.b演奏で直前の音を消音する.HH = false; break; case 0x06: // ギター消音あり(従来同等) - CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = true; + CDTXMania.DTX.b演奏で直前の音を消音する.Guitar = true; break; case 0x07: // ギター消音無し - CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = false; + CDTXMania.DTX.b演奏で直前の音を消音する.Guitar = false; break; case 0x08: // ベース消音あり(従来同等) - CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = true; + CDTXMania.DTX.b演奏で直前の音を消音する.Bass = true; break; case 0x09: // ベース消音無し - CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = false; + CDTXMania.DTX.b演奏で直前の音を消音する.Bass = false; break; } #endif @@ -546,15 +546,15 @@ namespace DTXMania if ( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) ) { pChip.bHit = true; - if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) ) + if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0xA0 ) ) { this.actChipFireGB.Start( 3 ); } - if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) ) + if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0xA0 ) ) { this.actChipFireGB.Start( 4 ); } - if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) ) + if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0xA0 ) ) { this.actChipFireGB.Start( 5 ); } diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsWailingBonus.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsWailingBonus.cs index 80fe989a..4673d3af 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsWailingBonus.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsWailingBonus.cs @@ -36,7 +36,7 @@ namespace DTXMania { if( r歓声Chip != null ) { - CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, 10, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); + CDTXMania.DTX.tチップの再生( r歓声Chip, CDTXMania.Timer.nシステム時刻, (int) Eレーン.BGM, CDTXMania.DTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); return; } CDTXMania.Skin.sound歓声音.t再生する(); diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs index 63792a1d..9ab1a2b5 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsチップファイアD.cs @@ -19,19 +19,19 @@ namespace DTXMania // メソッド - public void Start( Eドラムレーン lane ) + public void Start( Eレーン lane ) { this.Start( lane, false, false, false ); } - public void Start( Eドラムレーン lane, bool bフィルイン ) + public void Start( Eレーン lane, bool bフィルイン ) { this.Start( lane, bフィルイン, false, false ); } - public void Start( Eドラムレーン lane, bool bフィルイン, bool b大波 ) + public void Start( Eレーン lane, bool bフィルイン, bool b大波 ) { this.Start( lane, bフィルイン, b大波, false ); } - public void Start( Eドラムレーン lane, bool bフィルイン, bool b大波, bool b細波 ) + public void Start( Eレーン lane, bool bフィルイン, bool b大波, bool b細波 ) { if( this.tx火花 != null ) { diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsレーンフラッシュD.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsレーンフラッシュD.cs index 8f7fe0a7..c4dca496 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsレーンフラッシュD.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CAct演奏DrumsレーンフラッシュD.cs @@ -54,7 +54,7 @@ namespace DTXMania // メソッド - public void Start( Eドラムレーン lane, float f強弱度合い ) + public void Start( Eレーン lane, float f強弱度合い ) { int num = (int) ( ( 1f - f強弱度合い ) * 55f ); this.ct進行[ (int) lane ] = new CCounter( num, 100, 4, CDTXMania.Timer ); diff --git a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs index e8ca53f6..64ef1296 100644 --- a/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs +++ b/DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs @@ -293,14 +293,14 @@ namespace DTXMania return false; } this.tチップのヒット処理( nHitTime, pChip ); - this.actLaneFlushD.Start( (Eドラムレーン) nLane, ( (float) n強弱度合い0to127 ) / 127f ); + this.actLaneFlushD.Start( (Eレーン) nLane, ( (float) n強弱度合い0to127 ) / 127f ); this.actPad.Hit( nPad ); if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) ) { bool flag = this.bフィルイン中; bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip ); // bool flag3 = flag2; - this.actChipFireD.Start( (Eドラムレーン) nLane, flag, flag2, flag2 ); + this.actChipFireD.Start( (Eレーン) nLane, flag, flag2, flag2 ); } if( CDTXMania.ConfigIni.bドラム打音を発声する ) { @@ -1443,7 +1443,7 @@ namespace DTXMania #region [ *** ] //----------------------------- - this.actLaneFlushD.Start( (Eドラムレーン) this.nパッド0Atoレーン07[ nPad ], ( (float) event2.nVelocity ) / 127f ); + this.actLaneFlushD.Start( (Eレーン) this.nパッド0Atoレーン07[ nPad ], ( (float) event2.nVelocity ) / 127f ); this.actPad.Hit( this.nパッド0Atoパッド08[ nPad ] ); if( !CDTXMania.ConfigIni.bドラム打音を発声する ) { @@ -1893,11 +1893,11 @@ namespace DTXMania if ( ( configIni.bAutoPlay[ indexSevenLanes ] && !pChip.bHit ) && ( pChip.nバーからの距離dot.Drums < 0 ) ) { pChip.bHit = true; - this.actLaneFlushD.Start( (Eドラムレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f ); + this.actLaneFlushD.Start( (Eレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f ); bool flag = this.bフィルイン中; bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip ); //bool flag3 = flag2; - this.actChipFireD.Start( (Eドラムレーン) indexSevenLanes, flag, flag2, flag2 ); + this.actChipFireD.Start( (Eレーン) indexSevenLanes, flag, flag2, flag2 ); this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] ); this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) ); this.tチップのヒット処理( pChip.n発声時刻ms, pChip ); @@ -2093,7 +2093,7 @@ namespace DTXMania { if ( this.r現在の歓声Chip.Drums != null ) { - dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); + dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, (int) Eレーン.BGM, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) ); } else { @@ -2104,22 +2104,22 @@ namespace DTXMania break; #if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST case 0x04: // HH消音あり(従来同等) - CDTXMania.DTX.bHH演奏で直前のHHを消音する = true; + CDTXMania.DTX.b演奏で直前の音を消音する.HH = true; break; case 0x05: // HH消音無し - CDTXMania.DTX.bHH演奏で直前のHHを消音する = false; + CDTXMania.DTX.b演奏で直前の音を消音する.HH = false; break; case 0x06: // ギター消音あり(従来同等) - CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = true; + CDTXMania.DTX.b演奏で直前の音を消音する.Gutiar = true; break; case 0x07: // ギター消音無し - CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = false; + CDTXMania.DTX.b演奏で直前の音を消音する.Gutiar = false; break; case 0x08: // ベース消音あり(従来同等) - CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = true; + CDTXMania.DTX.b演奏で直前の音を消音する.Bass = true; break; case 0x09: // ベース消音無し - CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = false; + CDTXMania.DTX.b演奏で直前の音を消音する.Bass = false; break; #endif } diff --git a/DTXManiaプロジェクト/コード/全体/CConfigIni.cs b/DTXManiaプロジェクト/コード/全体/CConfigIni.cs index 558ce6c2..5f5bf54a 100644 --- a/DTXManiaプロジェクト/コード/全体/CConfigIni.cs +++ b/DTXManiaプロジェクト/コード/全体/CConfigIni.cs @@ -606,87 +606,95 @@ namespace DTXMania public bool LT; public bool FT; public bool CY; + public bool RD; public bool Guitar; public bool Bass; public bool this[ int index ] { get { - switch ( index ) + switch( index ) { - case (int) Eドラムレーン.LC: + case (int) Eレーン.LC: return this.LC; - case (int) Eドラムレーン.HH: + case (int) Eレーン.HH: return this.HH; - case (int) Eドラムレーン.SD: + case (int) Eレーン.SD: return this.SD; - case (int) Eドラムレーン.BD: + case (int) Eレーン.BD: return this.BD; - case (int) Eドラムレーン.HT: + case (int) Eレーン.HT: return this.HT; - case (int) Eドラムレーン.LT: + case (int) Eレーン.LT: return this.LT; - case (int) Eドラムレーン.FT: + case (int) Eレーン.FT: return this.FT; - case (int) Eドラムレーン.CY: + case (int) Eレーン.CY: return this.CY; - case (int) Eドラムレーン.GT: + case (int) Eレーン.RD: + return this.RD; + + case (int) Eレーン.Guitar: return this.Guitar; - case (int) Eドラムレーン.BS: + case (int) Eレーン.Bass: return this.Bass; } throw new IndexOutOfRangeException(); } set { - switch ( index ) + switch( index ) { - case (int) Eドラムレーン.LC: + case (int) Eレーン.LC: this.LC = value; return; - case (int) Eドラムレーン.HH: + case (int) Eレーン.HH: this.HH = value; return; - case (int) Eドラムレーン.SD: + case (int) Eレーン.SD: this.SD = value; return; - case (int) Eドラムレーン.BD: + case (int) Eレーン.BD: this.BD = value; return; - case (int) Eドラムレーン.HT: + case (int) Eレーン.HT: this.HT = value; return; - case (int) Eドラムレーン.LT: + case (int) Eレーン.LT: this.LT = value; return; - case (int) Eドラムレーン.FT: + case (int) Eレーン.FT: this.FT = value; return; - case (int) Eドラムレーン.CY: + case (int) Eレーン.CY: + this.CY = value; + return; + + case (int) Eレーン.RD: this.CY = value; return; - case (int) Eドラムレーン.CY + 1: + case (int) Eレーン.Guitar: this.Guitar = value; return; - case (int) Eドラムレーン.CY + 2: + case (int) Eレーン.Bass: this.Bass = value; return; } diff --git a/DTXManiaプロジェクト/コード/全体/C定数.cs b/DTXManiaプロジェクト/コード/全体/C定数.cs index 149779b4..89a5b6ab 100644 --- a/DTXManiaプロジェクト/コード/全体/C定数.cs +++ b/DTXManiaプロジェクト/コード/全体/C定数.cs @@ -178,9 +178,9 @@ namespace DTXMania RIGHT, OFF } - internal enum Eドラムレーン + internal enum Eレーン { - LC, + LC = 0, HH, SD, BD, @@ -188,8 +188,10 @@ namespace DTXMania LT, FT, CY, - GT, // AUTOレーン判定を容易にするため、便宜上定義しておく - BS + RD, // 将来の独立レーン化/独立AUTO設定を見越して追加 + Guitar, // AUTOレーン判定を容易にするため、便宜上定義しておく + Bass, + BGM } internal enum Eログ出力 { @@ -270,6 +272,99 @@ namespace DTXMania } } + /// + /// レーンの値を扱う汎用の構造体。列挙型"Eドラムレーン"に準拠。 + /// + /// 値の型。 + [StructLayout( LayoutKind.Sequential )] + public struct STLANEVALUE + { + public T LC; + public T HH; + public T SD; + public T BD; + public T HT; + public T LT; + public T FT; + public T CY; + public T RD; + public T Guitar; + public T Bass; + public T BGM; + + public T this[ int index ] + { + get + { + switch ( index ) + { + case (int) Eレーン.LC: + return this.LC; + case (int) Eレーン.HH: + return this.HH; + case (int) Eレーン.SD: + return this.SD; + case (int) Eレーン.BD: + return this.BD; + case (int) Eレーン.HT: + return this.HT; + case (int) Eレーン.LT: + return this.LT; + case (int) Eレーン.FT: + return this.FT; + case (int) Eレーン.CY: + return this.CY; + case (int) Eレーン.RD: + return this.RD; + case (int) Eレーン.Guitar: + return this.Guitar; + case (int) Eレーン.Bass: + return this.Bass; + } + throw new IndexOutOfRangeException(); + } + set + { + switch ( index ) + { + case (int) Eレーン.LC: + this.LC = value; + return; + case (int) Eレーン.HH: + this.HH = value; + return; + case (int) Eレーン.SD: + this.SD = value; + return; + case (int) Eレーン.BD: + this.BD = value; + return; + case (int) Eレーン.HT: + this.HT = value; + return; + case (int) Eレーン.LT: + this.LT = value; + return; + case (int) Eレーン.FT: + this.FT = value; + return; + case (int) Eレーン.CY: + this.CY = value; + return; + case (int) Eレーン.RD: + this.RD = value; + return; + case (int) Eレーン.Guitar: + this.Guitar = value; + return; + case (int) Eレーン.Bass: + this.Bass = value; + return; + } + throw new IndexOutOfRangeException(); + } + } + } internal class C定数 { -- 2.11.0