using System.Drawing.Imaging;\r
using System.IO;\r
using System.Diagnostics;\r
+using System.Threading;\r
using SlimDX;\r
using SlimDX.Direct3D9;\r
using FDK;\r
{\r
CDTXMania.DTX.SwapGuitarBassInfos();\r
}\r
+ this.sw = new Stopwatch();\r
}\r
public override void On非活性化()\r
{\r
protected STDGBVALUE<int> nInputAdjustTimeMs; // #23580 2011.1.3 yyagi\r
protected CConfigIni.STAUTOPLAY bIsAutoPlay; // #24239 2011.1.23 yyagi\r
\r
-\r
+ protected Stopwatch sw; // 2011.6.13 最適化検討用のストップウォッチ\r
\r
\r
protected E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
{ // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
this.L最後に再生したHHの実WAV番号.RemoveAt( 0 );\r
}\r
- if ( this.L最後に再生したHHの実WAV番号.IndexOf( pChip.n整数値・内部番号 ) < 0 ) // チップ音がまだストックされてなければ\r
+ if ( !this.L最後に再生したHHの実WAV番号.Contains( pChip.n整数値・内部番号 ) ) // チップ音がまだストックされてなければ\r
{\r
this.L最後に再生したHHの実WAV番号.Add( pChip.n整数値・内部番号 ); // ストックする\r
}\r
{\r
this.bAUTOでないチップが1つでもバーを通過した = true;\r
}\r
+ pChip.bIsAutoPlayed = bPChipIsAutoPlay; // 2011.6.10 yyagi\r
E判定 eJudgeResult = E判定.Auto;\r
switch ( pChip.e楽器パート )\r
{\r
for ( ; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++ )\r
{\r
CDTX.CChip chip = CDTXMania.DTX.listChip[ nIndex_NearestChip_Future ];\r
- if ( ( !chip.bHit && ( nChannel >= 0x11 ) ) && ( nChannel <= 0x1a ) )\r
+ if ( !chip.bHit )\r
{\r
- if ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) )\r
+ if ( ( nChannel >= 0x11 ) && ( nChannel <= 0x1a ) &&\r
+ ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) )\r
+ )\r
{\r
if ( chip.n発声時刻ms > nTime )\r
{\r
}\r
nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
}\r
- }\r
- else if ( !chip.bHit && ( ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
- {\r
- if ( chip.n発声時刻ms > nTime )\r
+ else if ( ( ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
{\r
- break;\r
+ if ( chip.n発声時刻ms > nTime )\r
+ {\r
+ break;\r
+ }\r
+ nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
}\r
- nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
- }\r
- else if ( !chip.bHit && ( ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
- {\r
- if ( chip.n発声時刻ms > nTime )\r
+ else if ( ( ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
{\r
- break;\r
+ if ( chip.n発声時刻ms > nTime )\r
+ {\r
+ break;\r
+ }\r
+ nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
}\r
- nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
}\r
// nIndex_NearestChip_Future++;\r
}\r
for ( ; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past-- )\r
{\r
CDTX.CChip chip = CDTXMania.DTX.listChip[ nIndex_NearestChip_Past ];\r
- if ( ( ( ( !chip.bHit && ( nChannel >= 0x11 ) ) && ( ( nChannel <= 0x1a ) && ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) ) ) ) || ( !chip.bHit && ( ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x2A ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) ) ) || ( !chip.bHit && ( ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) ) )\r
- {\r
- break;\r
- }\r
+ if ( (!chip.bHit) &&\r
+ (\r
+ ( ( nChannel >= 0x11 ) && ( nChannel <= 0x1a ) &&\r
+ ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) )\r
+ )\r
+ ||\r
+ (\r
+ ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) ||\r
+ ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannel ) )\r
+ )\r
+ ||\r
+ (\r
+ ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) ||\r
+ ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) )\r
+ )\r
+ )\r
+ )\r
+ {\r
+ break;\r
+ }\r
// nIndex_NearestChip_Past--;\r
}\r
if ( ( nIndex_NearestChip_Future == count ) && ( nIndex_NearestChip_Past < 0 ) ) // 検索対象が過去未来どちらにも見つからなかった場合\r
}\r
\r
//double speed = 264.0; // BPM150の時の1小節の長さ[dot]\r
- double speed = 234.0; // BPM150の時の1小節の長さ[dot]\r
+ const double speed = 234.0; // BPM150の時の1小節の長さ[dot]\r
\r
double ScrollSpeedDrums = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.0 ) * 0.5 * 37.5 * speed / 60000.0;\r
double ScrollSpeedGuitar = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;\r
bool bPChipIsAutoPlay = false;\r
if ( (\r
( ( pChip.e楽器パート == E楽器パート.DRUMS ) && bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||\r
- ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && bIsAutoPlay.Guitar )\r
- ) ||\r
+ ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && bIsAutoPlay.Guitar ) ) ||\r
( ( pChip.e楽器パート == E楽器パート.BASS ) && bIsAutoPlay.Bass )\r
)\r
// if ((pChip.e楽器パート == E楽器パート.DRUMS) && bIsAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])\r
bPChipIsAutoPlay = true;\r
}\r
\r
- int nInputAdjustTime = 0;\r
- if ( bPChipIsAutoPlay )\r
- {\r
- //nInputAdjustTime = 0;\r
- }\r
- else if ( pChip.e楽器パート == E楽器パート.UNKNOWN )\r
- {\r
- //nInputAdjustTime = 0;\r
- }\r
- else\r
- {\r
- nInputAdjustTime = this.nInputAdjustTimeMs[ (int) pChip.e楽器パート ];\r
- }\r
+ int nInputAdjustTime = ( bPChipIsAutoPlay || (pChip.e楽器パート == E楽器パート.UNKNOWN) )? 0 : this.nInputAdjustTimeMs[ (int) pChip.e楽器パート ];\r
\r
if ( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&\r
( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) )\r
}\r
switch ( pChip.nチャンネル番号 )\r
{\r
+ #region [ 01: BGM ]\r
case 0x01: // BGM\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
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
}\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 03: BPM変更 ]\r
case 0x03: // BPM変更\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 04, 07, 55, 56,57, 58, 59, 60:レイヤーBGA ]\r
case 0x04: // レイヤーBGA\r
case 0x07:\r
case 0x55:\r
}\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 08: BPM変更(拡張) ]\r
case 0x08: // BPM変更(拡張)\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
}\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 11-1a: ドラム演奏 ]\r
case 0x11: // ドラム演奏\r
case 0x12:\r
case 0x13:\r
case 0x1a:\r
this.t進行描画・チップ・ドラムス( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ 1f: フィルインサウンド(ドラム) ]\r
case 0x1f: // フィルインサウンド(ドラム)\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
this.r現在の歓声Chip.Drums = pChip;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 20-27: ギター演奏 ]\r
case 0x20: // ギター演奏\r
case 0x21:\r
case 0x22:\r
case 0x27:\r
this.t進行描画・チップ・ギター( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ 28: ウェイリング(ギター) ]\r
case 0x28: // ウェイリング(ギター)\r
this.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ 2f: ウェイリングサウンド(ギター) ]\r
case 0x2f: // ウェイリングサウンド(ギター)\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
{\r
this.r現在の歓声Chip.Guitar = pChip;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 31-3a: 不可視チップ配置(ドラム) ]\r
case 0x31: // 不可視チップ配置(ドラム)\r
case 0x32:\r
case 0x33:\r
pChip.bHit = true;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 50: 小節線 ]\r
case 0x50: // 小節線\r
{\r
this.t進行描画・チップ・小節線( configIni, ref dTX, ref pChip );\r
break;\r
}\r
+ #endregion\r
+ #region [ 51: 拍線 ]\r
case 0x51: // 拍線\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bf, 0x128, 1 ) );\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 52: MIDIコーラス ]\r
case 0x52: // MIDIコーラス\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
pChip.bHit = true;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 53: フィルイン ]\r
case 0x53: // フィルイン\r
this.t進行描画・チップ・フィルイン( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ 54: 動画再生 ]\r
case 0x54: // 動画再生\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
}\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ 61-92: 自動再生(BGM, SE) ]\r
case 0x61:\r
case 0x62:\r
case 0x63:\r
}\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ a0-a7: ベース演奏 ]\r
case 0xa0: // ベース演奏\r
case 0xa1:\r
case 0xa2:\r
case 0xa7:\r
this.t進行描画・チップ・ベース( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ a8: ウェイリング(ベース) ]\r
case 0xa8: // ウェイリング(ベース)\r
this.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ af: ウェイリングサウンド(ベース) ]\r
case 0xaf: // ウェイリングサウンド(ベース)\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
{\r
this.r現在の歓声Chip.Bass = pChip;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ b1-b9, bc: 空打ち音設定(ドラム) ]\r
case 0xb1: // 空打ち音設定(ドラム)\r
case 0xb2:\r
case 0xb3:\r
case 0xbc:\r
this.t進行描画・チップ・空打ち音設定・ドラム( configIni, ref dTX, ref pChip );\r
break;\r
-\r
+ #endregion\r
+ #region [ ba: 空打ち音設定(ギター) ]\r
case 0xba: // 空打ち音設定(ギター)\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
{\r
pChip.nチャンネル番号 = 0x20;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ bb: 空打ち音設定(ベース) ]\r
case 0xbb: // 空打ち音設定(ベース)\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
{\r
pChip.nチャンネル番号 = 0xA0;\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ c4, c7, d5-d9, e0: BGA画像入れ替え ]\r
case 0xc4:\r
case 0xc7:\r
case 0xd5:\r
}\r
}\r
break;\r
-\r
+ #endregion\r
+ #region [ その他(未定義) ]\r
default:\r
if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
{\r
pChip.bHit = true;\r
}\r
break;\r
+ #endregion \r
}\r
\r
nCurrentTopChip++;\r
\r
protected virtual void t入力処理・ギター()\r
{\r
+ #region [ スクロール速度変更 ]\r
if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )\r
{\r
CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );\r
{\r
CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );\r
}\r
+ #endregion\r
\r
- if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )\r
+ if ( !CDTXMania.ConfigIni.bGuitar有効 || !CDTXMania.DTX.bチップがある.Guitar )\r
{\r
+ return;\r
+ }\r
if ( bIsAutoPlay.Guitar )\r
{\r
CDTX.CChip chip = this.r次にくるギターChipを更新して返す();\r
{\r
foreach ( STInputEvent event2 in events )\r
{\r
- CDTX.CChip chip4;\r
if ( !event2.b押された )\r
{\r
continue;\r
}\r
this.tチップのヒット処理( nTime, pChip );\r
this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );\r
- CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );\r
+ CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0x28, this.nInputAdjustTimeMs.Guitar, 140 );\r
if ( item != null )\r
{\r
this.queWailing.Guitar.Enqueue( item );\r
}\r
continue;\r
}\r
- if ( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
+\r
+ CDTX.CChip chipPicked;\r
+ if ( ( ( chipPicked = this.r現在の空うちギターChip ) != null ) || ( ( chipPicked = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
{\r
- this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
+ this.tサウンド再生( chipPicked, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
}\r
if ( !CDTXMania.ConfigIni.bLight.Guitar )\r
{\r
}\r
}\r
}\r
- List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
- if ( ( list2 != null ) && ( list2.Count > 0 ) )\r
+ List<STInputEvent> list = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
+ if ( ( list != null ) && ( list.Count > 0 ) )\r
{\r
- foreach ( STInputEvent event3 in list2 )\r
+ foreach ( STInputEvent eventWailed in list )\r
{\r
- CDTX.CChip chip5;\r
- if ( !event3.b押された )\r
+ if ( !eventWailed.b押された )\r
{\r
continue;\r
}\r
- long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
- while ( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )\r
+ long nTimeWailed = eventWailed.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
+ CDTX.CChip chipWailing;\r
+ while ( ( this.queWailing.Guitar.Count > 0 ) && ( ( chipWailing = this.queWailing.Guitar.Dequeue() ) != null ) )\r
{\r
- if ( ( num6 - chip5.n発声時刻ms ) <= 1000 ) // #24245 2011.1.26 yyagi: 800 -> 1000\r
+ if ( ( nTimeWailed - chipWailing.n発声時刻ms ) <= 1000 ) // #24245 2011.1.26 yyagi: 800 -> 1000\r
{\r
- chip5.bHit = true;\r
+ chipWailing.bHit = true;\r
this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
if ( !bIsAutoPlay.Guitar )\r
{\r
}\r
}\r
}\r
- }\r
}\r
protected virtual void t入力処理・ベース()\r
{\r
+ #region [ スクロール速度変更 ]\r
if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )\r
{\r
CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );\r
{\r
CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );\r
}\r
+ #endregion\r
\r
- if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )\r
+ if ( !CDTXMania.ConfigIni.bGuitar有効 || !CDTXMania.DTX.bチップがある.Bass )\r
{\r
+ return;\r
+ }\r
if ( bIsAutoPlay.Bass )\r
{\r
CDTX.CChip chip = this.r次にくるベースChipを更新して返す();\r
{\r
foreach ( STInputEvent event2 in events )\r
{\r
- CDTX.CChip chip4;\r
if ( !event2.b押された )\r
{\r
continue;\r
}\r
continue;\r
}\r
- if ( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
+\r
+ CDTX.CChip chipPicked;\r
+ if ( ( ( chipPicked = this.r現在の空うちベースChip ) != null ) || ( ( chipPicked = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
{\r
- this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
+ this.tサウンド再生( chipPicked, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
}\r
if ( !CDTXMania.ConfigIni.bLight.Bass )\r
{\r
}\r
}\r
}\r
- List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
- if ( ( list2 != null ) && ( list2.Count > 0 ) )\r
+ List<STInputEvent> list = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
+ if ( ( list != null ) && ( list.Count > 0 ) )\r
{\r
- foreach ( STInputEvent event3 in list2 )\r
+ foreach ( STInputEvent eventWailed in list )\r
{\r
- CDTX.CChip chip5;\r
- if ( !event3.b押された )\r
+ if ( !eventWailed.b押された )\r
{\r
continue;\r
}\r
- long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
- while ( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )\r
+ long nTimeWailed = eventWailed.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
+ CDTX.CChip chipWailing;\r
+ while ( ( this.queWailing.Bass.Count > 0 ) && ( ( chipWailing = this.queWailing.Bass.Dequeue() ) != null ) )\r
{\r
- if ( ( num6 - chip5.n発声時刻ms ) <= 1000 ) // #24245 2011.1.26 yyagi: 800 -> 1000\r
+ if ( ( nTimeWailed - chipWailing.n発声時刻ms ) <= 1000 ) // #24245 2011.1.26 yyagi: 800 -> 1000\r
{\r
- chip5.bHit = true;\r
+ chipWailing.bHit = true;\r
this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
if ( !bIsAutoPlay.Bass )\r
{\r
}\r
}\r
}\r
- }\r
}\r
\r
#if true // DAMAGELEVELTUNING\r
using System.Drawing.Imaging;\r
using System.IO;\r
using System.Diagnostics;\r
+using System.Threading;\r
using SlimDX;\r
using SlimDX.Direct3D9;\r
using FDK;\r
}\r
public override int On進行描画()\r
{\r
+ base.sw.Start();\r
if( !base.b活性化してない )\r
{\r
- bool flag = false;\r
- bool flag2 = false;\r
+ bool bIsFinishedPlaying = false;\r
+ bool bIsFinishedFadeout = false;\r
if( base.b初めての進行描画 )\r
{\r
CDTXMania.Timer.tリセット();\r
this.t進行描画・WailingBonus();\r
this.t進行描画・譜面スクロール速度();\r
this.t進行描画・チップアニメ();\r
- flag = this.t進行描画・チップ(E楽器パート.DRUMS);\r
+ bIsFinishedPlaying = this.t進行描画・チップ(E楽器パート.DRUMS);\r
this.t進行描画・演奏情報();\r
this.t進行描画・ドラムパッド();\r
this.t進行描画・判定文字列2・判定ライン上指定の場合();\r
this.t進行描画・チップファイアD();\r
this.t進行描画・チップファイアGB();\r
this.t進行描画・STAGEFAILED();\r
- flag2 = this.t進行描画・フェードイン・アウト();\r
- if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
+ bIsFinishedFadeout = this.t進行描画・フェードイン・アウト();\r
+ if( bIsFinishedPlaying && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
{\r
this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;\r
base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;\r
this.actFOClear.tフェードアウト開始();\r
}\r
- if( flag2 )\r
+ if( bIsFinishedFadeout )\r
{\r
+ Debug.WriteLine( "Total On進行描画=" + sw.ElapsedMilliseconds + "ms" );\r
return (int) this.eフェードアウト完了時の戻り値;\r
}\r
\r
if( CDTXMania.act現在入力を占有中のプラグイン == null )\r
this.tキー入力();\r
}\r
+ base.sw.Stop();\r
return 0;\r
}\r
\r
{\r
index -= 0x31;\r
}\r
- int num2 = this.nチャンネル0Atoレーン07[ index ];\r
- int nLane = this.nチャンネル0Atoパッド08[ index ];\r
- bool bPChipIsAutoPlay = bIsAutoPlay[ num2 ];\r
+ int nLane = this.nチャンネル0Atoレーン07[ index ];\r
+ int nPad = this.nチャンネル0Atoパッド08[ index ];\r
+ bool bPChipIsAutoPlay = bIsAutoPlay[ nLane ];\r
int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;\r
E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
if( e判定 == E判定.Miss )\r
return false;\r
}\r
this.tチップのヒット処理( nHitTime, pChip );\r
- this.actLaneFlushD.Start( (Eドラムレーン) num2, ( (float) n強弱度合い0to127 ) / 127f );\r
- this.actPad.Hit( nLane );\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ドラムレーン) num2, flag, flag2, flag3 );\r
+ // bool flag3 = flag2;\r
+ this.actChipFireD.Start( (Eドラムレーン) nLane, flag, flag2, flag2 );\r
}\r
if( CDTXMania.ConfigIni.bドラム打音を発声する )\r
{\r
CDTX.CChip rChip = null;\r
- bool flag4 = true;\r
+ bool bIsChipsoundPriorToPad = true;\r
if( ( ( type == Eパッド.HH ) || ( type == Eパッド.HHO ) ) || ( type == Eパッド.LC ) )\r
{\r
- flag4 = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+ bIsChipsoundPriorToPad = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
}\r
else if( ( type == Eパッド.LT ) || ( type == Eパッド.FT ) )\r
{\r
- flag4 = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+ bIsChipsoundPriorToPad = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
}\r
else if( ( type == Eパッド.CY ) || ( type == Eパッド.RD ) )\r
{\r
- flag4 = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+ bIsChipsoundPriorToPad = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
}\r
- if( flag4 )\r
+ if( bIsChipsoundPriorToPad )\r
{\r
rChip = pChip;\r
}\r
\r
protected override void t進行描画・AVI()\r
{\r
- base.t進行描画・AVI( 0x152, 0x39 );\r
+ base.t進行描画・AVI( 338, 57 );\r
}\r
protected override void t進行描画・BGA()\r
{\r
- base.t進行描画・BGA( 0x152, 0x39 );\r
+ base.t進行描画・BGA( 338, 57 );\r
}\r
protected override void t進行描画・DANGER()\r
{\r
\r
protected override void t進行描画・Wailing枠()\r
{\r
- base.t進行描画・Wailing枠( 0x24b, 0x1de,\r
- CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45,\r
- CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45\r
+ base.t進行描画・Wailing枠( 587, 478,\r
+ CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 69,\r
+ CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 69\r
);\r
}\r
private void t進行描画・ギターベースフレーム()\r
{\r
if( CDTXMania.DTX.bチップがある.Guitar )\r
{\r
- for( int i = 0; i < 0x163; i += 0x80 )\r
+ for( int i = 0; i < 355; i += 0x80 )\r
{\r
Rectangle rectangle = new Rectangle( 0, 0, 0x6d, 0x80 );\r
- if( ( i + 0x80 ) > 0x163 )\r
+ if( ( i + 0x80 ) > 355 )\r
{\r
- rectangle.Height -= ( i + 0x80 ) - 0x163;\r
+ rectangle.Height -= ( i + 0x80 ) - 355;\r
}\r
if( this.txレーンフレームGB != null )\r
{\r
}\r
if( CDTXMania.DTX.bチップがある.Bass )\r
{\r
- for( int j = 0; j < 0x163; j += 0x80 )\r
+ for( int j = 0; j < 355; j += 0x80 )\r
{\r
Rectangle rectangle2 = new Rectangle( 0, 0, 0x6d, 0x80 );\r
- if( ( j + 0x80 ) > 0x163 )\r
+ if( ( j + 0x80 ) > 355 )\r
{\r
- rectangle2.Height -= ( j + 0x80 ) - 0x163;\r
+ rectangle2.Height -= ( j + 0x80 ) - 355;\r
}\r
if( this.txレーンフレームGB != null )\r
{\r
}\r
protected override void t進行描画・パネル文字列()\r
{\r
- base.t進行描画・パネル文字列( 0x150, 0x1ab );\r
+ base.t進行描画・パネル文字列( 336, 427 );\r
}\r
\r
protected override void t進行描画・演奏情報()\r
{\r
- base.t進行描画・演奏情報( 0x152, 0x39 );\r
+ base.t進行描画・演奏情報( 338, 57 );\r
}\r
\r
protected override void t入力処理・ドラム()\r
\r
foreach( STInputEvent event2 in events )\r
{\r
- #region [ 変数宣言 ]\r
- //-----------------------------\r
- int num3;\r
- int num4;\r
- int num5;\r
- int num6;\r
- int num7;\r
- int num8;\r
- int num9;\r
- int num10;\r
- int num11;\r
- int num12;\r
- int num13;\r
- int num14;\r
- int num15;\r
- int num16;\r
- //-----------------------------\r
- #endregion\r
-\r
if( !event2.b押された )\r
continue;\r
\r
long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ (int)nPad ] ] ? 0 : nInputAdjustTimeMs.Drums;\r
\r
- bool flag = false;\r
+ bool bHitted = false;\r
\r
\r
#region [ switch( ( (Eパッド) nPad ) ) ]\r
switch( ( (Eパッド) nPad ) )\r
{\r
case Eパッド.HH:\r
- #region [ *** ]\r
+ #region [ HHとLC(groupingしている場合) のヒット処理 ]\r
//-----------------------------\r
{\r
if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
switch ( eHHGroup )\r
{\r
case EHHGroup.ハイハットのみ打ち分ける:\r
- #region [ *** ]\r
+ #region [ HCとLCのヒット処理 ]\r
//-----------------------------\r
if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定LC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
//-----------------------------\r
#endregion\r
\r
case EHHGroup.左シンバルのみ打ち分ける:\r
- #region [ *** ]\r
+ #region [ HCとHOのヒット処理 ]\r
//-----------------------------\r
if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HO != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
//-----------------------------\r
#endregion\r
\r
case EHHGroup.全部共通:\r
- #region [ *** ]\r
+ #region [ HC,HO,LCのヒット処理 ]\r
//-----------------------------\r
if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
{\r
- CDTX.CChip chip4;\r
+ CDTX.CChip chip;\r
CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
+ // ここから、chipArrayをn発生位置の小さい順に並び替える\r
if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
{\r
- chip4 = chipArray[ 1 ];\r
+ chip = chipArray[ 1 ];\r
chipArray[ 1 ] = chipArray[ 2 ];\r
- chipArray[ 2 ] = chip4;\r
+ chipArray[ 2 ] = chip;\r
}\r
if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
{\r
- chip4 = chipArray[ 0 ];\r
+ chip = chipArray[ 0 ];\r
chipArray[ 0 ] = chipArray[ 1 ];\r
- chipArray[ 1 ] = chip4;\r
+ chipArray[ 1 ] = chip;\r
}\r
if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
{\r
- chip4 = chipArray[ 1 ];\r
+ chip = chipArray[ 1 ];\r
chipArray[ 1 ] = chipArray[ 2 ];\r
- chipArray[ 2 ] = chip4;\r
+ chipArray[ 2 ] = chip;\r
}\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );\r
if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HO != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定LC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
//-----------------------------\r
#endregion\r
\r
default:\r
- #region [ *** ]\r
+ #region [ 全部打ち分け時のヒット処理 ]\r
//-----------------------------\r
if ( e判定HC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
//-----------------------------\r
#endregion\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
}\r
#endregion\r
\r
case Eパッド.SD:\r
- #region [ *** ]\r
+ #region [ SDのヒット処理 ]\r
//-----------------------------\r
if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.SD) // #23857 2010.12.12 yyagi: to support VelocityMin\r
continue; // 電子ドラムによる意図的なクロストークを無効にする\r
#endregion\r
\r
case Eパッド.BD:\r
- #region [ *** ]\r
+ #region [ BDのヒット処理 ]\r
//-----------------------------\r
if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.BD) // #23857 2010.12.12 yyagi: to support VelocityMin\r
continue; // 電子ドラムによる意図的なクロストークを無効にする\r
#endregion\r
\r
case Eパッド.HT:\r
- #region [ *** ]\r
+ #region [ HTのヒット処理 ]\r
//-----------------------------\r
if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HT) // #23857 2010.12.12 yyagi: to support VelocityMin\r
continue; // 電子ドラムによる意図的なクロストークを無効にする\r
#endregion\r
\r
case Eパッド.LT:\r
- #region [ *** ]\r
+ #region [ LTとFT(groupingしている場合)のヒット処理 ]\r
//-----------------------------\r
{\r
if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LT ) // #23857 2010.12.12 yyagi: to support VelocityMin\r
switch ( eFTGroup )\r
{\r
case EFTGroup.打ち分ける:\r
- #region [ *** ]\r
+ #region [ LTのヒット処理 ]\r
//-----------------------------\r
if ( e判定LT != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
break;\r
//-----------------------------\r
#endregion\r
\r
case EFTGroup.共通:\r
- #region [ *** ]\r
+ #region [ LTとFTのヒット処理 ]\r
//-----------------------------\r
if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定LT != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定FT != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
break;\r
//-----------------------------\r
#endregion\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
}\r
#endregion\r
\r
case Eパッド.FT:\r
- #region [ *** ]\r
+ #region [ FTとLT(groupingしている場合)のヒット処理 ]\r
//-----------------------------\r
{\r
if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.FT ) // #23857 2010.12.12 yyagi: to support VelocityMin\r
switch ( eFTGroup )\r
{\r
case EFTGroup.打ち分ける:\r
- #region [ *** ]\r
+ #region [ FTのヒット処理 ]\r
//-----------------------------\r
if ( e判定FT != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
//-----------------------------\r
#endregion\r
break;\r
\r
case EFTGroup.共通:\r
- #region [ *** ]\r
+ #region [ FTとLTのヒット処理 ]\r
//-----------------------------\r
if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定LT != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定FT != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
//-----------------------------\r
#endregion\r
break;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
}\r
#endregion\r
\r
case Eパッド.CY:\r
- #region [ *** ]\r
+ #region [ CY(とLCとRD:groupingしている場合)のヒット処理 ]\r
//-----------------------------\r
{\r
if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.CY) // #23857 2010.12.12 yyagi: to support VelocityMin\r
E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
- CDTX.CChip[] chipArray4 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
- E判定[] e判定Array2 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
- num8 = 0;\r
- while( num8 < 2 )\r
- {\r
- num9 = 2;\r
- while( num9 > num8 )\r
- {\r
- if( ( chipArray4[ num9 - 1 ] == null ) || ( ( chipArray4[ num9 ] != null ) && ( chipArray4[ num9 - 1 ].n発声位置 > chipArray4[ num9 ].n発声位置 ) ) )\r
- {\r
- CDTX.CChip chip22 = chipArray4[ num9 - 1 ];\r
- chipArray4[ num9 - 1 ] = chipArray4[ num9 ];\r
- chipArray4[ num9 ] = chip22;\r
- E判定 e判定20 = e判定Array2[ num9 - 1 ];\r
- e判定Array2[ num9 - 1 ] = e判定Array2[ num9 ];\r
- e判定Array2[ num9 ] = e判定20;\r
- }\r
- num9--;\r
- }\r
- num8++;\r
- }\r
- switch( eCYGroup )\r
+ CDTX.CChip[] chipArray = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
+ E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
+ const int NumOfChips = 3; // chipArray.GetLength(0)\r
+\r
+ //num8 = 0;\r
+ //while( num8 < 2 )\r
+\r
+ // CY/RD/LC群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
+ SortChipsByNTime( chipArray, e判定Array, NumOfChips );\r
+ //for ( int i = 0; i < NumOfChips - 1; i++ )\r
+ //{\r
+ // //num9 = 2;\r
+ // //while( num9 > num8 )\r
+ // for ( int j = NumOfChips - 1; j > i; j-- )\r
+ // {\r
+ // if ( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+ // {\r
+ // // swap\r
+ // CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+ // chipArray[ j - 1 ] = chipArray[ j ];\r
+ // chipArray[ j ] = chipTemp;\r
+ // E判定 e判定Temp = e判定Array[ j - 1 ];\r
+ // e判定Array[ j - 1 ] = e判定Array[ j ];\r
+ // e判定Array[ j ] = e判定Temp;\r
+ // }\r
+ // //num9--;\r
+ // }\r
+ // //num8++;\r
+ //}\r
+ switch ( eCYGroup )\r
{\r
case ECYGroup.打ち分ける:\r
if( !CDTXMania.ConfigIni.bシンバルフリー )\r
if( e判定CY != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
- num10 = 0;\r
- while( num10 < 3 )\r
+ //num10 = 0;\r
+ //while ( num10 < NumOfChips )\r
+ for (int i = 0; i < NumOfChips; i++)\r
{\r
- if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chipCY ) || ( chipArray4[ num10 ] == chipLC ) ) )\r
+ if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] == chipCY ) || ( chipArray[ i ] == chipLC ) ) )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num10 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num10++;\r
+ //num10++;\r
}\r
if( e判定CY != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
\r
case ECYGroup.共通:\r
if( !CDTXMania.ConfigIni.bシンバルフリー )\r
{\r
- num12 = 0;\r
- while( num12 < 3 )\r
+ //num12 = 0;\r
+ //while ( num12 < NumOfChips )\r
+ for (int i = 0; i < NumOfChips; i++)\r
{\r
- if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chipCY ) || ( chipArray4[ num12 ] == chipRD ) ) )\r
+ if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] == chipCY ) || ( chipArray[ i ] == chipRD ) ) )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num12 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num12++;\r
+ //num12++;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
- num11 = 0;\r
- while( num11 < 3 )\r
+ //num11 = 0;\r
+ //while ( num11 < NumOfChips )\r
+ for (int i = 0; i < NumOfChips; i++)\r
{\r
- if( e判定Array2[ num11 ] != E判定.Miss )\r
+ if( e判定Array[ i ] != E判定.Miss )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num11 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num11++;\r
+ //num11++;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
#endregion\r
\r
case Eパッド.HHO:\r
- #region [ *** ]\r
+ #region [ HO(とHCとLC:groupingしている場合)のヒット処理 ]\r
//-----------------------------\r
{\r
if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
if ( e判定HO != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HO != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定LC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HO != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
\r
case EHHGroup.全部共通:\r
if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
{\r
- CDTX.CChip chip8;\r
- CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
- if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
+ CDTX.CChip chip;\r
+ CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
+ // ここから、chipArrayをn発生位置の小さい順に並び替える\r
+ if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
{\r
- chip8 = chipArray2[ 1 ];\r
- chipArray2[ 1 ] = chipArray2[ 2 ];\r
- chipArray2[ 2 ] = chip8;\r
+ chip = chipArray[ 1 ];\r
+ chipArray[ 1 ] = chipArray[ 2 ];\r
+ chipArray[ 2 ] = chip;\r
}\r
- if ( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )\r
+ if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
{\r
- chip8 = chipArray2[ 0 ];\r
- chipArray2[ 0 ] = chipArray2[ 1 ];\r
- chipArray2[ 1 ] = chip8;\r
+ chip = chipArray[ 0 ];\r
+ chipArray[ 0 ] = chipArray[ 1 ];\r
+ chipArray[ 1 ] = chip;\r
}\r
- if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
+ if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
{\r
- chip8 = chipArray2[ 1 ];\r
- chipArray2[ 1 ] = chipArray2[ 2 ];\r
- chipArray2[ 2 ] = chip8;\r
+ chip = chipArray[ 1 ];\r
+ chipArray[ 1 ] = chipArray[ 2 ];\r
+ chipArray[ 2 ] = chip;\r
}\r
- this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );\r
- if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )\r
+ this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray[ 0 ], event2.nVelocity );\r
+ if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );\r
+ this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray[ 1 ], event2.nVelocity );\r
}\r
- if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )\r
+ if ( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );\r
+ this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray[ 2 ], event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
}\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定HO != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
else if ( e判定LC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
}\r
- if ( !flag )\r
+ if ( !bHitted )\r
break;\r
continue;\r
}\r
#endregion\r
\r
case Eパッド.RD:\r
- #region [ *** ]\r
+ #region [ RD(とCYとLC:groupingしている場合)のヒット処理 ]\r
//-----------------------------\r
{\r
if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.RD) // #23857 2010.12.12 yyagi: to support VelocityMin\r
E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
- CDTX.CChip[] chipArray5 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
- E判定[] e判定Array3 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
- num13 = 0;\r
- while( num13 < 2 )\r
- {\r
- num14 = 2;\r
- while( num14 > num13 )\r
- {\r
- if( ( chipArray5[ num14 - 1 ] == null ) || ( ( chipArray5[ num14 ] != null ) && ( chipArray5[ num14 - 1 ].n発声位置 > chipArray5[ num14 ].n発声位置 ) ) )\r
- {\r
- CDTX.CChip chip26 = chipArray5[ num14 - 1 ];\r
- chipArray5[ num14 - 1 ] = chipArray5[ num14 ];\r
- chipArray5[ num14 ] = chip26;\r
- E判定 e判定24 = e判定Array3[ num14 - 1 ];\r
- e判定Array3[ num14 - 1 ] = e判定Array3[ num14 ];\r
- e判定Array3[ num14 ] = e判定24;\r
- }\r
- num14--;\r
- }\r
- num13++;\r
- }\r
+ CDTX.CChip[] chipArray = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
+ E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
+ const int NumOfChips = 3; // chipArray.GetLength(0)\r
+\r
+ //num13 = 0;\r
+ //while( num13 < 2 )\r
+\r
+ // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
+ SortChipsByNTime( chipArray, e判定Array, NumOfChips );\r
+ //for ( int i = 0; i < NumOfChips - 1; i++ )\r
+ //{\r
+ // // num14 = 2;\r
+ // // while( num14 > num13 )\r
+ // for (int j = NumOfChips - 1; j > i; j--)\r
+ // {\r
+ // if( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+ // {\r
+ // CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+ // chipArray[ j - 1 ] = chipArray[ j ];\r
+ // chipArray[ j ] = chipTemp;\r
+ // E判定 e判定Temp = e判定Array[ j - 1 ];\r
+ // e判定Array[ j - 1 ] = e判定Array[ j ];\r
+ // e判定Array[ j ] = e判定Temp;\r
+ // }\r
+ // //num14--;\r
+ // }\r
+ // // num13++;\r
+ //}\r
switch( eCYGroup )\r
{\r
case ECYGroup.打ち分ける:\r
if( e判定RD != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.RD, chipRD, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
break;\r
\r
case ECYGroup.共通:\r
if( !CDTXMania.ConfigIni.bシンバルフリー )\r
{\r
- num16 = 0;\r
- while( num16 < 3 )\r
+ //num16 = 0;\r
+ //while( num16 < 3 )\r
+ for ( int i = 0; i < NumOfChips; i++ )\r
{\r
- if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chipCY ) || ( chipArray5[ num16 ] == chipRD ) ) )\r
+ if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] == chipCY ) || ( chipArray[ i ] == chipRD ) ) )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num16 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num16++;\r
+ //num16++;\r
}\r
break;\r
}\r
- num15 = 0;\r
- while( num15 < 3 )\r
+ //num15 = 0;\r
+ //while( num15 < 3 )\r
+ for (int i = 0; i < NumOfChips; i++)\r
{\r
- if( e判定Array3[ num15 ] != E判定.Miss )\r
+ if( e判定Array[ i ] != E判定.Miss )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num15 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num15++;\r
+ //num15++;\r
}\r
break;\r
}\r
- if( flag )\r
+ if( bHitted )\r
{\r
continue;\r
}\r
#endregion\r
\r
case Eパッド.LC:\r
- #region [ *** ]\r
+ #region [ LC(とHC/HOとCYと:groupingしている場合)のヒット処理 ]\r
//-----------------------------\r
{\r
if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LC) // #23857 2010.12.12 yyagi: to support VelocityMin\r
E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
- CDTX.CChip[] chipArray3 = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
+ CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
E判定[] e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
- num3 = 0;\r
- while( num3 < 4 )\r
- {\r
- num4 = 4;\r
- while( num4 > num3 )\r
- {\r
- if( ( chipArray3[ num4 - 1 ] == null ) || ( ( chipArray3[ num4 ] != null ) && ( chipArray3[ num4 - 1 ].n発声位置 > chipArray3[ num4 ].n発声位置 ) ) )\r
- {\r
- CDTX.CChip chip14 = chipArray3[ num4 - 1 ];\r
- chipArray3[ num4 - 1 ] = chipArray3[ num4 ];\r
- chipArray3[ num4 ] = chip14;\r
- E判定 e判定12 = e判定Array[ num4 - 1 ];\r
- e判定Array[ num4 - 1 ] = e判定Array[ num4 ];\r
- e判定Array[ num4 ] = e判定12;\r
- }\r
- num4--;\r
- }\r
- num3++;\r
- }\r
+ const int NumOfChips = 5; // chipArray.GetLength(0)\r
+\r
+ //num3 = 0;\r
+ //while( num3 < 4 )\r
+\r
+ // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
+ SortChipsByNTime( chipArray, e判定Array, NumOfChips );\r
+ //for ( int i = 0; i < NumOfChips - 1; i++ )\r
+ //{\r
+ // //num4 = 4;\r
+ // //while( num4 > num3 )\r
+ // for ( int j = NumOfChips - 1; j > i; j-- )\r
+ // {\r
+ // if( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+ // {\r
+ // // swap\r
+ // CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+ // chipArray[ j - 1 ] = chipArray[ j ];\r
+ // chipArray[ j ] = chipTemp;\r
+ // E判定 e判定Temp = e判定Array[ j - 1 ];\r
+ // e判定Array[ j - 1 ] = e判定Array[ j ];\r
+ // e判定Array[ j ] = e判定Temp;\r
+ // }\r
+ // //num4--;\r
+ // }\r
+ // //num3++;\r
+ //}\r
switch( eHHGroup )\r
{\r
case EHHGroup.全部打ち分ける:\r
if( e判定LC != E判定.Miss )\r
{\r
this.tドラムヒット処理( nTime, Eパッド.LC, chipLC, event2.nVelocity );\r
- flag = true;\r
+ bHitted = true;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
- num5 = 0;\r
- while( num5 < 5 )\r
+ //num5 = 0;\r
+ //while( num5 < 5 )\r
+ for ( int i = 0; i < NumOfChips; i++ )\r
{\r
- if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chipLC ) || ( chipArray3[ num5 ] == chipCY ) ) || ( ( chipArray3[ num5 ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
+ if( ( e判定Array[ i ] != E判定.Miss ) && ( ( ( chipArray[ i ] == chipLC ) || ( chipArray[ i ] == chipCY ) ) || ( ( chipArray[ i ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num5 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.LC, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num5++;\r
+ //num5++;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
\r
case EHHGroup.全部共通:\r
if( !CDTXMania.ConfigIni.bシンバルフリー )\r
{\r
- num7 = 0;\r
- while( num7 < 5 )\r
+ //num7 = 0;\r
+ //while( num7 < 5 )\r
+ for ( int i = 0; i < NumOfChips; i++ )\r
{\r
- if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chipLC ) || ( chipArray3[ num7 ] == chipHC ) ) || ( chipArray3[ num7 ] == chipHO ) ) )\r
+ if( ( e判定Array[ i ] != E判定.Miss ) && ( ( ( chipArray[ i ] == chipLC ) || ( chipArray[ i ] == chipHC ) ) || ( chipArray[ i ] == chipHO ) ) )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num7 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.LC, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num7++;\r
+ //num7++;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
- num6 = 0;\r
- while( num6 < 5 )\r
+ //num6 = 0;\r
+ //while( num6 < 5 )\r
+ for ( int i = 0; i < NumOfChips; i++ )\r
{\r
- if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
+ if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
{\r
- this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num6 ], event2.nVelocity );\r
- flag = true;\r
+ this.tドラムヒット処理( nTime, Eパッド.LC, chipArray[ i ], event2.nVelocity );\r
+ bHitted = true;\r
break;\r
}\r
- num6++;\r
+ //num6++;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
continue;\r
}\r
- if( !flag )\r
+ if( !bHitted )\r
break;\r
\r
break;\r
}\r
}\r
\r
+ // t入力処理・ドラム()からメソッドを抽出したもの。\r
+ /// <summary>\r
+ /// chipArrayの中を, n発生位置の小さい順に並べる + nullを大きい方に退かす。セットでe判定Arrayも並べ直す。\r
+ /// </summary>\r
+ /// <param name="chipArray">ソート対象chip群</param>\r
+ /// <param name="e判定Array">ソート対象e判定群</param>\r
+ /// <param name="NumOfChips">チップ数</param>\r
+ private static void SortChipsByNTime( CDTX.CChip[] chipArray, E判定[] e判定Array, int NumOfChips )\r
+ {\r
+ for ( int i = 0; i < NumOfChips - 1; i++ )\r
+ {\r
+ //num9 = 2;\r
+ //while( num9 > num8 )\r
+ for ( int j = NumOfChips - 1; j > i; j-- )\r
+ {\r
+ if ( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+ {\r
+ // swap\r
+ CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+ chipArray[ j - 1 ] = chipArray[ j ];\r
+ chipArray[ j ] = chipTemp;\r
+ E判定 e判定Temp = e判定Array[ j - 1 ];\r
+ e判定Array[ j - 1 ] = e判定Array[ j ];\r
+ e判定Array[ j ] = e判定Temp;\r
+ }\r
+ //num9--;\r
+ }\r
+ //num8++;\r
+ }\r
+ }\r
+\r
protected override void t背景テクスチャの生成()\r
{\r
Rectangle bgrect = new Rectangle( 338, 57, 278, 355 );\r
{\r
if ( configIni.bDrums有効 )\r
{\r
+ #region [ Sudden処理 ]\r
if ( configIni.bSudden.Drums )\r
{\r
if ( pChip.nバーからの距離dot.Drums < 200 )\r
pChip.n透明度 = 0;\r
}\r
}\r
+ #endregion\r
+ #region [ Hidden処理 ]\r
if ( configIni.bHidden.Drums )\r
{\r
if ( pChip.nバーからの距離dot.Drums < 100 )\r
pChip.n透明度 = (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 100 ) ) * 255.0 ) / 50.0 );\r
}\r
}\r
+ #endregion\r
if ( !pChip.bHit && pChip.b可視 )\r
{\r
if ( this.txチップ != null )\r
this.txチップ.n透明度 = pChip.n透明度;\r
}\r
int x = this.nチャンネルtoX座標[ pChip.nチャンネル番号 - 0x11 ];\r
- int num8 = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );\r
+ int y = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );\r
if ( this.txチップ != null )\r
{\r
this.txチップ.vc拡大縮小倍率 = new Vector3( (float) pChip.dbチップサイズ倍率, (float) pChip.dbチップサイズ倍率, 1f );\r
x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );\r
}\r
break;\r
\r
x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );\r
}\r
break;\r
\r
x = ( x + 0x16 ) - ( (int) ( ( 44.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );\r
}\r
break;\r
\r
x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );\r
}\r
break;\r
\r
x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );\r
}\r
break;\r
\r
x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
}\r
break;\r
\r
x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );\r
}\r
break;\r
\r
x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
}\r
break;\r
\r
x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
}\r
break;\r
\r
x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
if ( this.txチップ != null )\r
{\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
- this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
+ this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
}\r
break;\r
}\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ドラムレーン) indexSevenLanes, flag, flag2, flag3 );\r
+ //bool flag3 = 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