OSDN Git Service

#25253 Guitar/Bass wailings are avilable AFTER the wailng chips come.
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CStage演奏ドラム画面.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Runtime.InteropServices;\r
5 using System.Drawing;\r
6 using System.Drawing.Imaging;\r
7 using System.IO;\r
8 using System.Diagnostics;\r
9 using SlimDX;\r
10 using SlimDX.Direct3D9;\r
11 using FDK;\r
12 \r
13 namespace DTXMania\r
14 {\r
15         internal class CStage演奏ドラム画面 : CStage演奏画面共通\r
16         {\r
17                 // コンストラクタ\r
18 \r
19                 public CStage演奏ドラム画面()\r
20                 {\r
21                         //this.nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };\r
22                         base.eステージID = CStage.Eステージ.演奏;\r
23                         base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
24                         base.b活性化してない = true;\r
25                         base.list子Activities.Add( this.actPad = new CAct演奏Drumsパッド() );\r
26                         base.list子Activities.Add( this.actCombo = new CAct演奏DrumsコンボDGB() );\r
27                         base.list子Activities.Add( this.actDANGER = new CAct演奏DrumsDanger() );\r
28                         base.list子Activities.Add( this.actChipFireD = new CAct演奏DrumsチップファイアD() );\r
29             base.list子Activities.Add( this.actChipFireGB = new CAct演奏DrumsチップファイアGB());\r
30             base.list子Activities.Add( this.actGauge = new CAct演奏Drumsゲージ() );\r
31             base.list子Activities.Add( this.actGraph = new CAct演奏Drumsグラフ() ); // #24074 2011.01.23 add ikanick\r
32                         base.list子Activities.Add( this.actJudgeString = new CAct演奏Drums判定文字列() );\r
33                         base.list子Activities.Add( this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD() );\r
34                         base.list子Activities.Add( this.actLaneFlushGB = new CAct演奏DrumsレーンフラッシュGB() );\r
35                         base.list子Activities.Add( this.actRGB = new CAct演奏DrumsRGB() );\r
36                         base.list子Activities.Add( this.actScore = new CAct演奏Drumsスコア() );\r
37                         base.list子Activities.Add( this.actStatusPanels = new CAct演奏Drumsステータスパネル() );\r
38                         base.list子Activities.Add( this.actWailingBonus = new CAct演奏DrumsWailingBonus() );\r
39                         base.list子Activities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() );\r
40                         base.list子Activities.Add( this.actAVI = new CAct演奏AVI() );\r
41                         base.list子Activities.Add( this.actBGA = new CAct演奏BGA() );\r
42                         base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() );\r
43                         base.list子Activities.Add( this.actStageFailed = new CAct演奏ステージ失敗() );\r
44                         base.list子Activities.Add( this.actPlayInfo = new CAct演奏演奏情報() );\r
45                         base.list子Activities.Add( this.actFI = new CActFIFOBlack() );\r
46                         base.list子Activities.Add( this.actFO = new CActFIFOBlack() );\r
47                         base.list子Activities.Add( this.actFOClear = new CActFIFOWhite() );\r
48                 }\r
49 \r
50 \r
51                 // メソッド\r
52 \r
53                 public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums, out CScoreIni.C演奏記録 Guitar, out CScoreIni.C演奏記録 Bass, out CDTX.CChip[] r空打ちドラムチップ )\r
54                 {\r
55                         //Drums = new CScoreIni.C演奏記録();\r
56                         //Guitar = new CScoreIni.C演奏記録();\r
57                         //Bass = new CScoreIni.C演奏記録();\r
58 \r
59                         base.t演奏結果を格納する・ドラム( out Drums );\r
60                         base.t演奏結果を格納する・ギター( out Guitar );\r
61                         base.t演奏結果を格納する・ベース( out Bass );\r
62 \r
63                         #region [Drums処理(注釈化)]\r
64                         //if( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード )\r
65                         //{\r
66                         //    Drums.nスコア = this.actScore.Get( E楽器パート.DRUMS );\r
67                         //    Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Drums, CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.actCombo.n現在のコンボ数.Drums最高値 );\r
68                         //    Drums.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );\r
69                         //    Drums.nPerfect数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Perfect : this.nヒット数・Auto含まない.Drums.Perfect;\r
70                         //    Drums.nGreat数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Great : this.nヒット数・Auto含まない.Drums.Great;\r
71                         //    Drums.nGood数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Good : this.nヒット数・Auto含まない.Drums.Good;\r
72                         //    Drums.nPoor数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Poor : this.nヒット数・Auto含まない.Drums.Poor;\r
73                         //    Drums.nMiss数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Miss : this.nヒット数・Auto含まない.Drums.Miss;\r
74                         //    Drums.n最大コンボ数 = this.actCombo.n現在のコンボ数.Drums最高値;\r
75                         //    Drums.n全チップ数 = CDTXMania.DTX.n可視チップ数.Drums;\r
76                         //    for( int i = 0; i < 10; i++ )\r
77                         //    {\r
78                         //        Drums.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
79                         //    }\r
80                         //    Drums.bTight = CDTXMania.ConfigIni.bTight;\r
81                         //    for( int i = 0; i < 3; i++ )\r
82                         //    {\r
83                         //        Drums.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
84                         //        Drums.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
85                         //        Drums.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
86                         //        Drums.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
87                         //        Drums.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
88                         //        Drums.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
89                         //        Drums.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
90                         //    }\r
91                         //    Drums.eDark = CDTXMania.ConfigIni.eDark;\r
92                         //    Drums.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
93                         //    Drums.n演奏速度分母 = 20;\r
94                         //    Drums.eHHGroup = CDTXMania.ConfigIni.eHHGroup;\r
95                         //    Drums.eFTGroup = CDTXMania.ConfigIni.eFTGroup;\r
96                         //    Drums.eCYGroup = CDTXMania.ConfigIni.eCYGroup;\r
97                         //    Drums.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;\r
98                         //    Drums.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;\r
99                         //    Drums.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;\r
100                         //    Drums.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;\r
101                         //    Drums.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;\r
102                         //    Drums.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;\r
103                         //    Drums.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;\r
104                         //    Drums.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Drums;\r
105                         //    Drums.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Drums;\r
106                         //    Drums.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Drums;\r
107                         //    Drums.b演奏にマウスを使用した = this.b演奏にマウスを使った.Drums;\r
108                         //    Drums.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;\r
109                         //    Drums.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;\r
110                         //    Drums.nGoodになる範囲ms = CDTXMania.nGood範囲ms;\r
111                         //    Drums.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;\r
112                         //    Drums.strDTXManiaのバージョン = CDTXMania.VERSION;\r
113                         //    Drums.最終更新日時 = DateTime.Now.ToString();\r
114                         //    Drums.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Drums );\r
115                         //}\r
116                         #endregion\r
117                         #region [Guitar処理(注釈化)]\r
118                         //if( CDTXMania.DTX.bチップがある.Guitar )\r
119                         //{\r
120                         //    Guitar.nスコア = this.actScore.Get( E楽器パート.GUITAR );\r
121                         //    Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Guitar, CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.actCombo.n現在のコンボ数.Guitar最高値 );\r
122                         //    Guitar.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss );\r
123                         //    Guitar.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Perfect : this.nヒット数・Auto含まない.Guitar.Perfect;\r
124                         //    Guitar.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Great : this.nヒット数・Auto含まない.Guitar.Great;\r
125                         //    Guitar.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Good : this.nヒット数・Auto含まない.Guitar.Good;\r
126                         //    Guitar.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Poor : this.nヒット数・Auto含まない.Guitar.Poor;\r
127                         //    Guitar.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Miss : this.nヒット数・Auto含まない.Guitar.Miss;\r
128                         //    Guitar.n最大コンボ数 = this.actCombo.n現在のコンボ数.Guitar最高値;\r
129                         //    Guitar.n全チップ数 = CDTXMania.DTX.n可視チップ数.Guitar;\r
130                         //    for( int i = 0; i < 10; i++ )\r
131                         //    {\r
132                         //        Guitar.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
133                         //    }\r
134                         //    Guitar.bTight = CDTXMania.ConfigIni.bTight;\r
135                         //    for( int i = 0; i < 3; i++ )\r
136                         //    {\r
137                         //        Guitar.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
138                         //        Guitar.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
139                         //        Guitar.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
140                         //        Guitar.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
141                         //        Guitar.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
142                         //        Guitar.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
143                         //        Guitar.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
144                         //    }\r
145                         //    Guitar.eDark = CDTXMania.ConfigIni.eDark;\r
146                         //    Guitar.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
147                         //    Guitar.n演奏速度分母 = 20;\r
148                         //    Guitar.eHHGroup = CDTXMania.ConfigIni.eHHGroup;\r
149                         //    Guitar.eFTGroup = CDTXMania.ConfigIni.eFTGroup;\r
150                         //    Guitar.eCYGroup = CDTXMania.ConfigIni.eCYGroup;\r
151                         //    Guitar.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;\r
152                         //    Guitar.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;\r
153                         //    Guitar.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;\r
154                         //    Guitar.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;\r
155                         //    Guitar.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;\r
156                         //    Guitar.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;\r
157                         //    Guitar.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;\r
158                         //    Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;\r
159                         //    Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;\r
160                         //    Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;\r
161                         //    Guitar.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;\r
162                         //    Guitar.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;\r
163                         //    Guitar.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;\r
164                         //    Guitar.nGoodになる範囲ms = CDTXMania.nGood範囲ms;\r
165                         //    Guitar.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;\r
166                         //    Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;\r
167                         //    Guitar.最終更新日時 = DateTime.Now.ToString();\r
168                         //    Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Guitar );\r
169                         //}\r
170                         #endregion\r
171                         #region [Bass処理(注釈化)]\r
172                         //if( CDTXMania.DTX.bチップがある.Bass )\r
173                         //{\r
174                         //    Bass.nスコア = this.actScore.Get( E楽器パート.BASS );\r
175                         //    Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Bass, CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.actCombo.n現在のコンボ数.Bass最高値 );\r
176                         //    Bass.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss );\r
177                         //    Bass.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Perfect : this.nヒット数・Auto含まない.Bass.Perfect;\r
178                         //    Bass.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Great : this.nヒット数・Auto含まない.Bass.Great;\r
179                         //    Bass.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Good : this.nヒット数・Auto含まない.Bass.Good;\r
180                         //    Bass.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Poor : this.nヒット数・Auto含まない.Bass.Poor;\r
181                         //    Bass.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Miss : this.nヒット数・Auto含まない.Bass.Miss;\r
182                         //    Bass.n最大コンボ数 = this.actCombo.n現在のコンボ数.Bass最高値;\r
183                         //    Bass.n全チップ数 = CDTXMania.DTX.n可視チップ数.Bass;\r
184                         //    for( int i = 0; i < 10; i++ )\r
185                         //    {\r
186                         //        Bass.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
187                         //    }\r
188                         //    Bass.bTight = CDTXMania.ConfigIni.bTight;\r
189                         //    for( int i = 0; i < 3; i++ )\r
190                         //    {\r
191                         //        Bass.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
192                         //        Bass.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
193                         //        Bass.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
194                         //        Bass.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
195                         //        Bass.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
196                         //        Bass.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
197                         //        Bass.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
198                         //    }\r
199                         //    Bass.eDark = CDTXMania.ConfigIni.eDark;\r
200                         //    Bass.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
201                         //    Bass.n演奏速度分母 = 20;\r
202                         //    Bass.eHHGroup = CDTXMania.ConfigIni.eHHGroup;\r
203                         //    Bass.eFTGroup = CDTXMania.ConfigIni.eFTGroup;\r
204                         //    Bass.eCYGroup = CDTXMania.ConfigIni.eCYGroup;\r
205                         //    Bass.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;\r
206                         //    Bass.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;\r
207                         //    Bass.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;\r
208                         //    Bass.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;\r
209                         //    Bass.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;\r
210                         //    Bass.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;\r
211                         //    Bass.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;\r
212                         //    Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass;                  // #24280 2011.1.29 yyagi\r
213                         //    Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass;                            //\r
214                         //    Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass;            //\r
215                         //    Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass;                                      //\r
216                         //    Bass.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;\r
217                         //    Bass.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;\r
218                         //    Bass.nGoodになる範囲ms = CDTXMania.nGood範囲ms;\r
219                         //    Bass.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;\r
220                         //    Bass.strDTXManiaのバージョン = CDTXMania.VERSION;\r
221                         //    Bass.最終更新日時 = DateTime.Now.ToString();\r
222                         //    Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Bass );\r
223                         //}\r
224                         #endregion\r
225 \r
226                         r空打ちドラムチップ = new CDTX.CChip[ 10 ];\r
227                         for ( int i = 0; i < 10; i++ )\r
228                         {\r
229                                 r空打ちドラムチップ[ i ] = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) i );\r
230                                 if( r空打ちドラムチップ[ i ] == null )\r
231                                 {\r
232                                         r空打ちドラムチップ[ i ] = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( CDTXMania.Timer.n現在時刻, this.nパッド0Atoチャンネル0A[ i ], this.nInputAdjustTimeMs.Drums );\r
233                                 }\r
234                         }\r
235 \r
236 //                      if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass )         // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
237 //                      {\r
238 //                              CScoreIni.C演奏記録 t;\r
239 //                              t = Guitar;\r
240 //                              Guitar = Bass;\r
241 //                              Bass = t;\r
242 //                      \r
243 //                              CDTXMania.DTX.SwapGuitarBassInfos();                    // 譜面情報も元に戻す\r
244 //                      }\r
245                 }\r
246 \r
247 \r
248                 // CStage 実装\r
249 \r
250                 public override void On活性化()\r
251                 {\r
252                         //this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
253                         this.bフィルイン中 = false;\r
254                         //this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;\r
255                         // this.n最後に再生したHHの実WAV番号 = -1;                                   // #23921 2011.1.4 yyagi\r
256                         //this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
257 \r
258                         //this.n最後に再生したHHのチャンネル番号 = 0;\r
259                         //this.n最後に再生したギターの実WAV番号 = -1;\r
260                         //this.n最後に再生したベースの実WAV番号 = -1;\r
261                         //for( int i = 0; i < 50; i++ )\r
262                         //{\r
263                         //    this.n最後に再生したBGMの実WAV番号[ i ] = -1;\r
264                         //}\r
265                         //this.r次にくるギターChip = null;\r
266                         //this.r次にくるベースChip = null;\r
267                         //for( int j = 0; j < 10; j++ )\r
268                         //{\r
269                         //    this.r現在の空うちドラムChip[ j ] = null;\r
270                         //}\r
271                         //this.r現在の空うちギターChip = null;\r
272                         //this.r現在の空うちベースChip = null;\r
273                         //for ( int k = 0; k < 3; k++ )\r
274                         //{\r
275                         //    for ( int n = 0; n < 5; n++ )\r
276                         //    {\r
277                         //        this.nヒット数・Auto含まない[ k ] = new STHITCOUNTOFRANK();\r
278                         //        this.nヒット数・Auto含む[ k ] = new STHITCOUNTOFRANK();\r
279                         //    }\r
280                         //    this.queWailing[ k ] = new Queue<CDTX.CChip>();\r
281                         //    this.r現在の歓声Chip[ k ] = null;\r
282                         //}\r
283                         //for( int m = 0; m < 3; m++ )\r
284                         //{\r
285                         //    this.b演奏にキーボードを使った[ m ] = false;\r
286                         //    this.b演奏にジョイパッドを使った[ m ] = false;\r
287                         //    this.b演奏にMIDI入力を使った[ m ] = false;\r
288                         //    this.b演奏にマウスを使った[ m ] = false;\r
289                         //}\r
290                         //this.bAUTOでないチップが1つでもバーを通過した = false;\r
291                         base.On活性化();\r
292                         //this.tステータスパネルの選択();\r
293                         //this.tパネル文字列の設定();\r
294 \r
295                         // this.nInputAdjustTimeMs.Drums = CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums;                // #23580 2011.1.3 yyagi\r
296                         // this.nInputAdjustTimeMs.Guitar = CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar;              //        2011.1.7 ikanick 修正\r
297                         // this.nInputAdjustTimeMs.Bass = CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass;                  //\r
298                         //this.bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay;                                                                     // #24239 2011.1.23 yyagi\r
299 \r
300             Cスコア cスコア = CDTXMania.stage選曲.r確定されたスコア;            // #24074 2011.01.23 add ikanick\r
301             this.actGraph.dbグラフ値目標_渡 = cスコア.譜面情報.最大スキル[0];\r
302 \r
303                         //if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass )       // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
304                         //{\r
305                         //    CDTXMania.DTX.SwapGuitarBassInfos();\r
306                         //}\r
307                 }\r
308                 public override void On非活性化()\r
309                 {\r
310                         //this.L最後に再生したHHの実WAV番号.Clear(); // #23921 2011.1.4 yyagi\r
311                         //this.L最後に再生したHHの実WAV番号 = null;  //\r
312                         //for( int i = 0; i < 3; i++ )\r
313                         //{\r
314                         //    this.queWailing[ i ] = null;\r
315                         //}\r
316                         //this.ctWailingチップ模様アニメ = null;\r
317                         //this.ctチップ模様アニメ.Drums = null;\r
318                         //this.ctチップ模様アニメ.Guitar = null;\r
319                         //this.ctチップ模様アニメ.Bass = null;\r
320                         base.On非活性化();\r
321                 }\r
322                 public override void OnManagedリソースの作成()\r
323                 {\r
324                         if( !base.b活性化してない )\r
325                         {\r
326                                 //this.t背景テクスチャの生成();\r
327                                 this.txチップ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chips.png" ) );\r
328                                 this.txヒットバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar.png" ) );\r
329                                 this.txヒットバーGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar guitar.png" ) );\r
330                                 //this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );\r
331                                 this.txレーンフレームGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums lane parts guitar.png" ) );\r
332                                 if( this.txレーンフレームGB != null )\r
333                                 {\r
334                                         this.txレーンフレームGB.n透明度 = 0xff - CDTXMania.ConfigIni.n背景の透過度;\r
335                                 }\r
336                                 base.OnManagedリソースの作成();\r
337                         }\r
338                 }\r
339                 public override void OnManagedリソースの解放()\r
340                 {\r
341                         if( !base.b活性化してない )\r
342                         {\r
343                                 //CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
344                                 CDTXMania.tテクスチャの解放( ref this.txヒットバー );\r
345                                 CDTXMania.tテクスチャの解放( ref this.txヒットバーGB );\r
346                                 CDTXMania.tテクスチャの解放( ref this.txチップ );\r
347                                 CDTXMania.tテクスチャの解放( ref this.txレーンフレームGB );\r
348                                 //CDTXMania.tテクスチャの解放( ref this.txWailing枠 );\r
349                                 base.OnManagedリソースの解放();\r
350                         }\r
351                 }\r
352                 public override int On進行描画()\r
353                 {\r
354                         if( !base.b活性化してない )\r
355                         {\r
356                                 bool flag = false;\r
357                                 bool flag2 = false;\r
358                                 if( base.b初めての進行描画 )\r
359                                 {\r
360                                         CDTXMania.Timer.tリセット();\r
361                                         this.ctチップ模様アニメ.Drums = new CCounter( 0, 0x30, 10, CDTXMania.Timer );\r
362                                         this.ctチップ模様アニメ.Guitar = new CCounter( 0, 0x17, 20, CDTXMania.Timer );\r
363                                         this.ctチップ模様アニメ.Bass = new CCounter( 0, 0x17, 20, CDTXMania.Timer );\r
364                                         this.ctWailingチップ模様アニメ = new CCounter( 0, 4, 50, CDTXMania.Timer );\r
365                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
366                                         this.actFI.tフェードイン開始();\r
367                                         base.b初めての進行描画 = false;\r
368                                 }\r
369                                 if( ( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( this.actGauge.db現在のゲージ値.Drums <= -0.1 ) ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
370                                 {\r
371                                         this.actStageFailed.Start();\r
372                                         CDTXMania.DTX.t全チップの再生停止();\r
373                                         base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
374                                 }\r
375                                 this.t進行描画・背景();\r
376                                 this.t進行描画・MIDIBGM();\r
377                                 this.t進行描画・パネル文字列();\r
378                                 this.t進行描画・スコア();\r
379                                 this.t進行描画・AVI();\r
380                                 this.t進行描画・BGA();\r
381                                 this.t進行描画・ステータスパネル();\r
382                                 this.t進行描画・ギターベースフレーム();\r
383                                 this.t進行描画・レーンフラッシュGB();\r
384                 this.t進行描画・ギターベース判定ライン();\r
385                 this.t進行描画・ゲージ();\r
386                 this.t進行描画・グラフ();   // #24074 2011.01.23 add ikanick\r
387                                 this.t進行描画・レーンフラッシュD();\r
388                                 this.t進行描画・DANGER();\r
389                                 this.t進行描画・判定ライン();\r
390                                 this.t進行描画・RGBボタン();\r
391                                 this.t進行描画・判定文字列1・通常位置指定の場合();\r
392                                 this.t進行描画・コンボ();\r
393                                 this.t進行描画・WailingBonus();\r
394                                 this.t進行描画・譜面スクロール速度();\r
395                                 this.t進行描画・チップアニメ();\r
396                                 flag = this.t進行描画・チップ(E楽器パート.DRUMS);\r
397                                 this.t進行描画・演奏情報();\r
398                                 this.t進行描画・ドラムパッド();\r
399                                 this.t進行描画・判定文字列2・判定ライン上指定の場合();\r
400                                 this.t進行描画・Wailing枠();\r
401                                 this.t進行描画・チップファイアD();\r
402                                 this.t進行描画・チップファイアGB();\r
403                                 this.t進行描画・STAGEFAILED();\r
404                                 flag2 = this.t進行描画・フェードイン・アウト();\r
405                                 if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
406                                 {\r
407                                         this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;\r
408                                         base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;\r
409                                         this.actFOClear.tフェードアウト開始();\r
410                                 }\r
411                                 if( flag2 )\r
412                                 {\r
413                                         return (int) this.eフェードアウト完了時の戻り値;\r
414                                 }\r
415 \r
416                                 // キー入力\r
417 \r
418                                 if( CDTXMania.act現在入力を占有中のプラグイン == null )\r
419                                         this.tキー入力();\r
420                         }\r
421                         return 0;\r
422                 }\r
423 \r
424 \r
425                 // その他\r
426 \r
427                 #region [ private ]\r
428                 //-----------------\r
429                 //private class STHITCOUNTOFRANK\r
430                 //{\r
431                 //    // Fields\r
432                 //    public int Good;\r
433                 //    public int Great;\r
434                 //    public int Miss;\r
435                 //    public int Perfect;\r
436                 //    public int Poor;\r
437 \r
438                 //    // Properties\r
439                 //    public int this[ int index ]\r
440                 //    {\r
441                 //        get\r
442                 //        {\r
443                 //            switch( index )\r
444                 //            {\r
445                 //                case 0:\r
446                 //                    return this.Perfect;\r
447 \r
448                 //                case 1:\r
449                 //                    return this.Great;\r
450 \r
451                 //                case 2:\r
452                 //                    return this.Good;\r
453 \r
454                 //                case 3:\r
455                 //                    return this.Poor;\r
456 \r
457                 //                case 4:\r
458                 //                    return this.Miss;\r
459                 //            }\r
460                 //            throw new IndexOutOfRangeException();\r
461                 //        }\r
462                 //        set\r
463                 //        {\r
464                 //            switch( index )\r
465                 //            {\r
466                 //                case 0:\r
467                 //                    this.Perfect = value;\r
468                 //                    return;\r
469 \r
470                 //                case 1:\r
471                 //                    this.Great = value;\r
472                 //                    return;\r
473 \r
474                 //                case 2:\r
475                 //                    this.Good = value;\r
476                 //                    return;\r
477 \r
478                 //                case 3:\r
479                 //                    this.Poor = value;\r
480                 //                    return;\r
481 \r
482                 //                case 4:\r
483                 //                    this.Miss = value;\r
484                 //                    return;\r
485                 //            }\r
486                 //            throw new IndexOutOfRangeException();\r
487                 //        }\r
488                 //    }\r
489                 //}\r
490 \r
491                 //[StructLayout( LayoutKind.Sequential )]\r
492                 //private struct STKARAUCHI\r
493                 //{\r
494                 //    public CDTX.CChip HH;\r
495                 //    public CDTX.CChip SD;\r
496                 //    public CDTX.CChip BD;\r
497                 //    public CDTX.CChip HT;\r
498                 //    public CDTX.CChip LT;\r
499                 //    public CDTX.CChip FT;\r
500                 //    public CDTX.CChip CY;\r
501                 //    public CDTX.CChip HHO;\r
502                 //    public CDTX.CChip RD;\r
503                 //    public CDTX.CChip LC;\r
504                 //    public CDTX.CChip this[ int index ]\r
505                 //    {\r
506                 //        get\r
507                 //        {\r
508                 //            switch( index )\r
509                 //            {\r
510                 //                case 0:\r
511                 //                    return this.HH;\r
512 \r
513                 //                case 1:\r
514                 //                    return this.SD;\r
515 \r
516                 //                case 2:\r
517                 //                    return this.BD;\r
518 \r
519                 //                case 3:\r
520                 //                    return this.HT;\r
521 \r
522                 //                case 4:\r
523                 //                    return this.LT;\r
524 \r
525                 //                case 5:\r
526                 //                    return this.FT;\r
527 \r
528                 //                case 6:\r
529                 //                    return this.CY;\r
530 \r
531                 //                case 7:\r
532                 //                    return this.HHO;\r
533 \r
534                 //                case 8:\r
535                 //                    return this.RD;\r
536 \r
537                 //                case 9:\r
538                 //                    return this.LC;\r
539                 //            }\r
540                 //            throw new IndexOutOfRangeException();\r
541                 //        }\r
542                 //        set\r
543                 //        {\r
544                 //            switch( index )\r
545                 //            {\r
546                 //                case 0:\r
547                 //                    this.HH = value;\r
548                 //                    return;\r
549 \r
550                 //                case 1:\r
551                 //                    this.SD = value;\r
552                 //                    return;\r
553 \r
554                 //                case 2:\r
555                 //                    this.BD = value;\r
556                 //                    return;\r
557 \r
558                 //                case 3:\r
559                 //                    this.HT = value;\r
560                 //                    return;\r
561 \r
562                 //                case 4:\r
563                 //                    this.LT = value;\r
564                 //                    return;\r
565 \r
566                 //                case 5:\r
567                 //                    this.FT = value;\r
568                 //                    return;\r
569 \r
570                 //                case 6:\r
571                 //                    this.CY = value;\r
572                 //                    return;\r
573 \r
574                 //                case 7:\r
575                 //                    this.HHO = value;\r
576                 //                    return;\r
577 \r
578                 //                case 8:\r
579                 //                    this.RD = value;\r
580                 //                    return;\r
581 \r
582                 //                case 9:\r
583                 //                    this.LC = value;\r
584                 //                    return;\r
585                 //            }\r
586                 //            throw new IndexOutOfRangeException();\r
587                 //        }\r
588                 //    }\r
589                 //}\r
590 \r
591                 //private CAct演奏AVI actAVI;\r
592                 //private CAct演奏BGA actBGA;\r
593                 private CAct演奏DrumsチップファイアD actChipFireD;\r
594                 //private CAct演奏DrumsチップファイアGB actChipFireGB;\r
595                 //private CAct演奏DrumsコンボDGB actCombo;\r
596                 //private CAct演奏DrumsDanger actDANGER;\r
597                 //private CActFIFOBlack actFI;\r
598                 //private CActFIFOBlack actFO;\r
599                 //private CActFIFOWhite actFOClear;\r
600                 //private CAct演奏Drumsゲージ actGauge;\r
601                 private CAct演奏Drumsグラフ actGraph;   // #24074 2011.01.23 add ikanick\r
602                 //private CAct演奏Drums判定文字列 actJudgeString;\r
603                 //private CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
604                 //private CAct演奏DrumsレーンフラッシュGB actLaneFlushGB;\r
605                 private CAct演奏Drumsパッド actPad;\r
606                 //private CAct演奏パネル文字列 actPanel;\r
607                 //private CAct演奏演奏情報 actPlayInfo;\r
608                 //private CAct演奏DrumsRGB actRGB;\r
609                 //private CAct演奏Drumsスコア actScore;\r
610                 //private CAct演奏ステージ失敗 actStageFailed;\r
611                 //private CAct演奏Drumsステータスパネル actStatusPanels;\r
612                 //private CAct演奏DrumsWailingBonus actWailingBonus;\r
613                 //private CAct演奏スクロール速度 act譜面スクロール速度;\r
614                 //private bool bPAUSE;\r
615                 private bool bフィルイン中;\r
616                 //private STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
617                 //private STDGBVALUE<bool> b演奏にキーボードを使った;\r
618                 //private STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
619                 //private STDGBVALUE<bool> b演奏にマウスを使った;\r
620                 //private CCounter ctWailingチップ模様アニメ;\r
621                 //private STDGBVALUE<CCounter> ctチップ模様アニメ;\r
622                 private readonly Eパッド[] eチャンネルtoパッド = new Eパッド[]\r
623                 {\r
624                         Eパッド.HH, Eパッド.SD, Eパッド.BD, Eパッド.HT,\r
625                         Eパッド.LT, Eパッド.CY, Eパッド.FT, Eパッド.HHO,\r
626                         Eパッド.RD, Eパッド.UNKNOWN, Eパッド.UNKNOWN, Eパッド.LC\r
627                 };\r
628                 //private E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
629                 //private readonly int[,] nBGAスコープチャンネルマップ;\r
630                 //private readonly int[,] nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };\r
631                 //private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
632                 //private readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
633                 private readonly int[] nチャンネルtoX座標 = new int[] { 0x4c, 110, 0x91, 0xc0, 0xe2, 0x126, 260, 0x4f, 300, 0x23 };\r
634                 //private readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a };\r
635                 //private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };\r
636                 //private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
637                 //private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;\r
638                 //private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;\r
639                 // private int n現在のトップChip = -1;\r
640                 //private int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];\r
641                 //private int n最後に再生したHHのチャンネル番号;\r
642                 //private List<int> L最後に再生したHHの実WAV番号;            // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
643                 //private int n最後に再生したギターの実WAV番号;\r
644                 //private int n最後に再生したベースの実WAV番号;\r
645                 //private STDGBVALUE<Queue<CDTX.CChip>> queWailing;\r
646                 //private STDGBVALUE<CDTX.CChip> r現在の歓声Chip;\r
647                 //private CDTX.CChip r現在の空うちギターChip;\r
648                 //private STKARAUCHI r現在の空うちドラムChip;\r
649                 //private CDTX.CChip r現在の空うちベースChip;\r
650                 //private CDTX.CChip r次にくるギターChip;\r
651                 //private CDTX.CChip r次にくるベースChip;\r
652                 //private CTexture txWailing枠;\r
653                 //private CTexture txチップ;\r
654                 //private CTexture txヒットバー;\r
655                 private CTexture txヒットバーGB;\r
656                 private CTexture txレーンフレームGB;\r
657                 //private CTexture tx背景;\r
658                 // private STDGBVALUE<int> nInputAdjustTimeMs;                  // #23580 2011.1.3 yyagi\r
659                 //private CConfigIni.STAUTOPLAY bIsAutoPlay;                    // #24239 2011.1.23 yyagi\r
660 \r
661                 private bool bフィルイン区間の最後のChipである( CDTX.CChip pChip )\r
662                 {\r
663                         if( pChip == null )\r
664                         {\r
665                                 return false;\r
666                         }\r
667                         int num = pChip.n発声位置;\r
668                         for( int i = CDTXMania.DTX.listChip.IndexOf( pChip ) + 1; i < CDTXMania.DTX.listChip.Count; i++ )\r
669                         {\r
670                                 pChip = CDTXMania.DTX.listChip[ i ];\r
671                                 if( ( pChip.nチャンネル番号 == 0x53 ) && ( pChip.n整数値 == 2 ) )\r
672                                 {\r
673                                         return true;\r
674                                 }\r
675                                 if( ( ( pChip.nチャンネル番号 >= 0x11 ) && ( pChip.nチャンネル番号 <= 0x19 ) ) && ( ( pChip.n発声位置 - num ) > 0x18 ) )\r
676                                 {\r
677                                         return false;\r
678                                 }\r
679                         }\r
680                         return true;\r
681                 }\r
682 //        private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
683 //        {\r
684 //            if( pChip != null )\r
685 //            {\r
686 //                pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms );              // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
687 //                int nDeltaTime = Math.Abs( pChip.nLag);\r
688 ////Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
689 //                if( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
690 //                {\r
691 //                    return E判定.Perfect;\r
692 //                }\r
693 //                if( nDeltaTime <= CDTXMania.nGreat範囲ms )\r
694 //                {\r
695 //                    return E判定.Great;\r
696 //                }\r
697 //                if( nDeltaTime <= CDTXMania.nGood範囲ms )\r
698 //                {\r
699 //                    return E判定.Good;\r
700 //                }\r
701 //                if( nDeltaTime <= CDTXMania.nPoor範囲ms )\r
702 //                {\r
703 //                    return E判定.Poor;\r
704 //                }\r
705 //            }\r
706 //            return E判定.Miss;\r
707 //        }\r
708                 //private CDTX.CChip r空うちChip( E楽器パート part, Eパッド pad )\r
709                 //{\r
710                 //    switch( part )\r
711                 //    {\r
712                 //        case E楽器パート.DRUMS:\r
713                 //            switch( pad )\r
714                 //            {\r
715                 //                case Eパッド.HH:\r
716                 //                    if( this.r現在の空うちドラムChip.HH != null )\r
717                 //                    {\r
718                 //                        return this.r現在の空うちドラムChip.HH;\r
719                 //                    }\r
720                 //                    if( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける )\r
721                 //                    {\r
722                 //                        if( CDTXMania.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける )\r
723                 //                        {\r
724                 //                            return this.r現在の空うちドラムChip.HHO;\r
725                 //                        }\r
726                 //                        if( this.r現在の空うちドラムChip.HHO != null )\r
727                 //                        {\r
728                 //                            return this.r現在の空うちドラムChip.HHO;\r
729                 //                        }\r
730                 //                    }\r
731                 //                    return this.r現在の空うちドラムChip.LC;\r
732 \r
733                 //                case Eパッド.SD:\r
734                 //                    return this.r現在の空うちドラムChip.SD;\r
735 \r
736                 //                case Eパッド.BD:\r
737                 //                    return this.r現在の空うちドラムChip.BD;\r
738 \r
739                 //                case Eパッド.HT:\r
740                 //                    return this.r現在の空うちドラムChip.HT;\r
741 \r
742                 //                case Eパッド.LT:\r
743                 //                    if( this.r現在の空うちドラムChip.LT != null )\r
744                 //                    {\r
745                 //                        return this.r現在の空うちドラムChip.LT;\r
746                 //                    }\r
747                 //                    if( CDTXMania.ConfigIni.eFTGroup == EFTGroup.共通 )\r
748                 //                    {\r
749                 //                        return this.r現在の空うちドラムChip.FT;\r
750                 //                    }\r
751                 //                    return null;\r
752 \r
753                 //                case Eパッド.FT:\r
754                 //                    if( this.r現在の空うちドラムChip.FT != null )\r
755                 //                    {\r
756                 //                        return this.r現在の空うちドラムChip.FT;\r
757                 //                    }\r
758                 //                    if( CDTXMania.ConfigIni.eFTGroup == EFTGroup.共通 )\r
759                 //                    {\r
760                 //                        return this.r現在の空うちドラムChip.LT;\r
761                 //                    }\r
762                 //                    return null;\r
763 \r
764                 //                case Eパッド.CY:\r
765                 //                    if( this.r現在の空うちドラムChip.CY != null )\r
766                 //                    {\r
767                 //                        return this.r現在の空うちドラムChip.CY;\r
768                 //                    }\r
769                 //                    if( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 )\r
770                 //                    {\r
771                 //                        return this.r現在の空うちドラムChip.RD;\r
772                 //                    }\r
773                 //                    return null;\r
774 \r
775                 //                case Eパッド.HHO:\r
776                 //                    if( this.r現在の空うちドラムChip.HHO != null )\r
777                 //                    {\r
778                 //                        return this.r現在の空うちドラムChip.HHO;\r
779                 //                    }\r
780                 //                    if( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける )\r
781                 //                    {\r
782                 //                        if( CDTXMania.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける )\r
783                 //                        {\r
784                 //                            return this.r現在の空うちドラムChip.HH;\r
785                 //                        }\r
786                 //                        if( this.r現在の空うちドラムChip.HH != null )\r
787                 //                        {\r
788                 //                            return this.r現在の空うちドラムChip.HH;\r
789                 //                        }\r
790                 //                    }\r
791                 //                    return this.r現在の空うちドラムChip.LC;\r
792 \r
793                 //                case Eパッド.RD:\r
794                 //                    if( this.r現在の空うちドラムChip.RD != null )\r
795                 //                    {\r
796                 //                        return this.r現在の空うちドラムChip.RD;\r
797                 //                    }\r
798                 //                    if( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 )\r
799                 //                    {\r
800                 //                        return this.r現在の空うちドラムChip.CY;\r
801                 //                    }\r
802                 //                    return null;\r
803 \r
804                 //                case Eパッド.LC:\r
805                 //                    if( this.r現在の空うちドラムChip.LC != null )\r
806                 //                    {\r
807                 //                        return this.r現在の空うちドラムChip.LC;\r
808                 //                    }\r
809                 //                    if( ( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける ) && ( CDTXMania.ConfigIni.eHHGroup != EHHGroup.全部共通 ) )\r
810                 //                    {\r
811                 //                        return null;\r
812                 //                    }\r
813                 //                    if( this.r現在の空うちドラムChip.HH != null )\r
814                 //                    {\r
815                 //                        return this.r現在の空うちドラムChip.HH;\r
816                 //                    }\r
817                 //                    return this.r現在の空うちドラムChip.HHO;\r
818                 //            }\r
819                 //            break;\r
820 \r
821                 //        case E楽器パート.GUITAR:\r
822                 //            return this.r現在の空うちギターChip;\r
823 \r
824                 //        case E楽器パート.BASS:\r
825                 //            return this.r現在の空うちベースChip;\r
826                 //    }\r
827                 //    return null;\r
828                 //}\r
829                 //private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag, int nInputAdjustTime )\r
830                 //{\r
831                 //    nTime += nInputAdjustTime;                                                // #24239 2011.1.23 yyagi InputAdjust\r
832         \r
833                 //    int num5;\r
834                 //    if( this.n現在のトップChip == -1 )\r
835                 //    {\r
836                 //        return null;\r
837                 //    }\r
838                 //    int count = CDTXMania.DTX.listChip.Count;\r
839                 //    int num4 = num5 = this.n現在のトップChip;\r
840                 //    if( this.n現在のトップChip >= count )\r
841                 //    {\r
842                 //        num4 = num5 = count - 1;\r
843                 //    }\r
844                 //    int num2 = num4;\r
845                 //    while( num2 < count )\r
846                 //    {\r
847                 //        CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
848                 //        if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )\r
849                 //        {\r
850                 //            if( chip.n発声時刻ms > nTime )\r
851                 //            {\r
852                 //                break;\r
853                 //            }\r
854                 //            num5 = num2;\r
855                 //        }\r
856                 //        else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
857                 //        {\r
858                 //            if( chip.n発声時刻ms > nTime )\r
859                 //            {\r
860                 //                break;\r
861                 //            }\r
862                 //            num5 = num2;\r
863                 //        }\r
864                 //        else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 0xa0 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
865                 //        {\r
866                 //            if( chip.n発声時刻ms > nTime )\r
867                 //            {\r
868                 //                break;\r
869                 //            }\r
870                 //            num5 = num2;\r
871                 //        }\r
872                 //        num2++;\r
873                 //    }\r
874                 //    int num3 = num5;\r
875                 //    while( num3 >= 0 )\r
876                 //    {\r
877                 //        CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
878                 //        if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )\r
879                 //        {\r
880                 //            if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
881                 //            {\r
882                 //                break;\r
883                 //            }\r
884                 //        }\r
885                 //        else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )\r
886                 //        {\r
887                 //            if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 0x28 ) )\r
888                 //            {\r
889                 //                break;\r
890                 //            }\r
891                 //        }\r
892                 //        else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 0xa0 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 0xa0 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )\r
893                 //        {\r
894                 //            break;\r
895                 //        }\r
896                 //        num3--;\r
897                 //    }\r
898                 //    if( ( num2 == count ) && ( num3 < 0 ) )\r
899                 //    {\r
900                 //        return null;\r
901                 //    }\r
902                 //    if( num2 == count )\r
903                 //    {\r
904                 //        return CDTXMania.DTX.listChip[ num3 ];\r
905                 //    }\r
906                 //    if( num3 < 0 )\r
907                 //    {\r
908                 //        return CDTXMania.DTX.listChip[ num2 ];\r
909                 //    }\r
910                 //    CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];\r
911                 //    CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];\r
912                 //    int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
913                 //    int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );\r
914                 //    if( num6 >= num7 )\r
915                 //    {\r
916                 //        return chip4;\r
917                 //    }\r
918                 //    return chip3;\r
919                 //}\r
920                 //private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime )\r
921                 //{\r
922                 //      return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, nInputAdjustTime, 0 );\r
923                 //}\r
924                 //private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime, int n検索範囲時間ms )\r
925                 //{\r
926                 //    nTime += nInputAdjustTime;\r
927 \r
928                 //    int num5;\r
929                 //    int num6;\r
930                 //    if( this.n現在のトップChip == -1 )\r
931                 //    {\r
932                 //        return null;\r
933                 //    }\r
934                 //    int count = CDTXMania.DTX.listChip.Count;\r
935                 //    int num4 = num5 = this.n現在のトップChip;\r
936                 //    if( this.n現在のトップChip >= count )\r
937                 //    {\r
938                 //        num4 = num5 = count - 1;\r
939                 //    }\r
940                 //    int num2 = num4;\r
941                 //    while( num2 < count )\r
942                 //    {\r
943                 //        CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
944                 //        if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )\r
945                 //        {\r
946                 //            if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
947                 //            {\r
948                 //                if( chip.n発声時刻ms > nTime )\r
949                 //                {\r
950                 //                    break;\r
951                 //                }\r
952                 //                num5 = num2;\r
953                 //            }\r
954                 //        }\r
955                 //        else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
956                 //        {\r
957                 //            if( chip.n発声時刻ms > nTime )\r
958                 //            {\r
959                 //                break;\r
960                 //            }\r
961                 //            num5 = num2;\r
962                 //        }\r
963                 //        else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
964                 //        {\r
965                 //            if( chip.n発声時刻ms > nTime )\r
966                 //            {\r
967                 //                break;\r
968                 //            }\r
969                 //            num5 = num2;\r
970                 //        }\r
971                 //        num2++;\r
972                 //    }\r
973                 //    int num3 = num5;\r
974                 //    while( num3 >= 0 )\r
975                 //    {\r
976                 //        CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
977                 //        if( ( ( ( !chip2.bHit && ( nChannelFlag >= 0x11 ) ) && ( ( nChannelFlag <= 0x1a ) && ( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) )\r
978                 //        {\r
979                 //            break;\r
980                 //        }\r
981                 //        num3--;\r
982                 //    }\r
983                 //    if( ( num2 == count ) && ( num3 < 0 ) )\r
984                 //    {\r
985                 //        return null;\r
986                 //    }\r
987                 //    CDTX.CChip chip3 = null;\r
988                 //    if( num2 == count )\r
989                 //    {\r
990                 //        chip3 = CDTXMania.DTX.listChip[ num3 ];\r
991                 //        num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
992                 //    }\r
993                 //    else if( num3 < 0 )\r
994                 //    {\r
995                 //        chip3 = CDTXMania.DTX.listChip[ num2 ];\r
996                 //        num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
997                 //    }\r
998                 //    else\r
999                 //    {\r
1000                 //        int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
1001                 //        int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
1002                 //        if( num7 < num8 )\r
1003                 //        {\r
1004                 //            chip3 = CDTXMania.DTX.listChip[ num2 ];\r
1005                 //            num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
1006                 //        }\r
1007                 //        else\r
1008                 //        {\r
1009                 //            chip3 = CDTXMania.DTX.listChip[ num3 ];\r
1010                 //            num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
1011                 //        }\r
1012                 //    }\r
1013                 //    if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )\r
1014                 //    {\r
1015                 //        return null;\r
1016                 //    }\r
1017                 //    return chip3;\r
1018                 //}\r
1019                 //private CDTX.CChip r次にくるギターChipを更新して返す()\r
1020                 //{\r
1021                 //    int nInputAdjustTime = this.bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;\r
1022                 //    this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, nInputAdjustTime, 500 );\r
1023                 //    return this.r次にくるギターChip;\r
1024                 //}\r
1025                 //private CDTX.CChip r次にくるベースChipを更新して返す()\r
1026                 //{\r
1027                 //    int nInputAdjustTime = this.bIsAutoPlay.Bass? 0 : this.nInputAdjustTimeMs.Bass;\r
1028                 //    this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, nInputAdjustTime, 500 );\r
1029                 //    return this.r次にくるベースChip;\r
1030                 //}\r
1031                 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part )\r
1032                 //{\r
1033                 //    this.tサウンド再生( rChip, n再生開始システム時刻ms, part, CDTXMania.ConfigIni.n手動再生音量, false, false );\r
1034                 //}\r
1035                 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量 )\r
1036                 //{\r
1037                 //    this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, false, false );\r
1038                 //}\r
1039                 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ )\r
1040                 //{\r
1041                 //    this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, bモニタ, false );\r
1042                 //}\r
1043 //        private void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )\r
1044 //        {\r
1045 //            if( pChip != null )\r
1046 //            {\r
1047 //                switch( part )\r
1048 //                {\r
1049 //                    case E楽器パート.DRUMS:\r
1050 //                        {\r
1051 //                            int index = pChip.nチャンネル番号;\r
1052 //                            if ( ( index >= 0x11 ) && ( index <= 0x1a ) )\r
1053 //                            {\r
1054 //                                index -= 0x11;\r
1055 //                            }\r
1056 //                            else\r
1057 //                            {\r
1058 //                                if ( ( index < 0x31 ) || ( index > 0x3a ) )\r
1059 //                                {\r
1060 //                                    return;\r
1061 //                                }\r
1062 //                                index -= 0x31;\r
1063 //                            }\r
1064 //                            int nLane = this.nチャンネル0Atoレーン07[ index ];\r
1065 //                            if( ( nLane == 1 ) &&     // 今回演奏するのがHC or HO\r
1066 //                                ( index == 0 || ( index == 7 && this.n最後に再生したHHのチャンネル番号 != 0x18 && this.n最後に再生したHHのチャンネル番号 != 0x38 ) )\r
1067 //                                // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない\r
1068 //                            )\r
1069 //                            {\r
1070 //                        // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。\r
1071 //#if TEST_NOTEOFFMODE  // 2011.1.1 yyagi test\r
1072 //                                if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)\r
1073 //                                {\r
1074 //#endif\r
1075 //                                    for (int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++)              // #23921 2011.1.4 yyagi\r
1076 //                                    {\r
1077 //                                        // CDTXMania.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号);\r
1078 //                                        CDTXMania.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号[i]);   // #23921 yyagi ストック分全て消音する\r
1079 //                                    }\r
1080 //                                    this.L最後に再生したHHの実WAV番号.Clear();\r
1081 //#if TEST_NOTEOFFMODE  // 2011.1.1 yyagi test\r
1082 //                                }\r
1083 //#endif\r
1084 //                                //this.n最後に再生したHHの実WAV番号 = pChip.n整数値・内部番号;\r
1085 //                                this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号;\r
1086 //                            }\r
1087 //#if TEST_NOTEOFFMODE  // 2011.1.4 yyagi test\r
1088 //                            if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)\r
1089 //                            {\r
1090 //#endif\r
1091 //                                if (index == 7 || index == 0x27)                                              // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく\r
1092 //                                {\r
1093 //                                    if (this.L最後に再生したHHの実WAV番号.Count >= 16)     // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える\r
1094 //                                    {                                                                                                 // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
1095 //                                        this.L最後に再生したHHの実WAV番号.RemoveAt(0);\r
1096 //                                    }\r
1097 //                                    if (this.L最後に再生したHHの実WAV番号.IndexOf(pChip.n整数値・内部番号) < 0)    // チップ音がまだストックされてなければ\r
1098 //                                    {\r
1099 //                                        this.L最後に再生したHHの実WAV番号.Add(pChip.n整数値・内部番号);                    // ストックする\r
1100 //                                    }\r
1101 //                                }\r
1102 //#if TEST_NOTEOFFMODE  // 2011.1.4 yyagi test\r
1103 //                            }\r
1104 //#endif\r
1105 //                            CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ );\r
1106 //                            return;\r
1107 //                        }\r
1108 //                    case E楽器パート.GUITAR:\r
1109 //#if TEST_NOTEOFFMODE  // 2011.1.1 yyagi test\r
1110 //                        if (CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する) {\r
1111 //#endif\r
1112 //                            CDTXMania.DTX.tWavの再生停止(this.n最後に再生したギターの実WAV番号);\r
1113 //#if TEST_NOTEOFFMODE\r
1114 //                        }\r
1115 //#endif\r
1116 //                        CDTXMania.DTX.tチップの再生(pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生);\r
1117 //                        this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号;\r
1118 //                        return;\r
1119 \r
1120 //                    case E楽器パート.BASS:\r
1121 //#if TEST_NOTEOFFMODE\r
1122 //                        if (CDTXMania.DTX.bBASS演奏で直前のBASSを消音する) {\r
1123 //#endif\r
1124 //                            CDTXMania.DTX.tWavの再生停止(this.n最後に再生したベースの実WAV番号);\r
1125 //#if TEST_NOTEOFFMODE\r
1126 //                        }\r
1127 //#endif\r
1128 //                        CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生 );\r
1129 //                        this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号;\r
1130 //                        return;\r
1131 //                }\r
1132 //            }\r
1133 //        }\r
1134                 //private void tステータスパネルの選択()\r
1135                 //{\r
1136                 //    if( CDTXMania.bコンパクトモード )\r
1137                 //    {\r
1138                 //        this.actStatusPanels.tラベル名からステータスパネルを決定する( null );\r
1139                 //    }\r
1140                 //    else if( CDTXMania.stage選曲.r確定された曲 != null )\r
1141                 //    {\r
1142                 //        this.actStatusPanels.tラベル名からステータスパネルを決定する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] );\r
1143                 //    }\r
1144                 //}\r
1145                 protected override E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )\r
1146                 {\r
1147                         E判定 eJudgeResult = tチップのヒット処理( nHitTime, pChip, E楽器パート.DRUMS );\r
1148                         // #24074 2011.01.23 add ikanick\r
1149                         this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );\r
1150                         return eJudgeResult;\r
1151                 }\r
1152                 //private E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )\r
1153                 //{\r
1154                 //    pChip.bHit = true;\r
1155                 //    bool bPChipIsAutoPlay = false;\r
1156                 //    if ( (\r
1157                 //            ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && CDTXMania.ConfigIni.bAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||\r
1158                 //            ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && CDTXMania.ConfigIni.bAutoPlay.Guitar )\r
1159                 //        ) ||\r
1160                 //            ( ( pChip.e楽器パート == E楽器パート.BASS ) && CDTXMania.ConfigIni.bAutoPlay.Bass )\r
1161                 //      )\r
1162                 //    {\r
1163                 //        bPChipIsAutoPlay = true;\r
1164                 //    }\r
1165                 //    else\r
1166                 //    {\r
1167                 //        this.bAUTOでないチップが1つでもバーを通過した = true;\r
1168                 //    }\r
1169                 //    E判定 eJudgeResult = E判定.Auto;\r
1170                 //    switch (pChip.e楽器パート)\r
1171                 //    {\r
1172                 //        case E楽器パート.DRUMS:\r
1173                 //            {\r
1174                 //                int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? 0 : this.nInputAdjustTimeMs.Drums;\r
1175                 //                eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
1176                 //                this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? E判定.Auto : eJudgeResult, pChip.nLag );\r
1177                 //            }\r
1178                 //            break;\r
1179 \r
1180                 //        case E楽器パート.GUITAR:\r
1181                 //            {\r
1182                 //                int nInputAdjustTime = bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;\r
1183                 //                eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
1184                 //                this.actJudgeString.Start( 10, bIsAutoPlay.Guitar ? E判定.Auto : eJudgeResult, pChip.nLag );\r
1185                 //            }\r
1186                 //            break;\r
1187 \r
1188                 //        case E楽器パート.BASS:\r
1189                 //            {\r
1190                 //                int nInputAdjustTime = bIsAutoPlay.Bass ? 0 : this.nInputAdjustTimeMs.Bass;\r
1191                 //                eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
1192                 //                this.actJudgeString.Start( 11, bIsAutoPlay.Bass ? E判定.Auto : eJudgeResult, pChip.nLag );\r
1193                 //            }\r
1194                 //            break;\r
1195                 //    }\r
1196                 //    if( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) )\r
1197                 //    {\r
1198                 //        this.t判定にあわせてゲージを増減する( E楽器パート.DRUMS, pChip.e楽器パート, eJudgeResult );\r
1199                 //    }\r
1200                 //    switch( pChip.e楽器パート )\r
1201                 //    {\r
1202                 //        case E楽器パート.DRUMS:\r
1203                 //            switch ( eJudgeResult )\r
1204                 //            {\r
1205                 //                case E判定.Miss:\r
1206                 //                case E判定.Bad:\r
1207                 //                    this.nヒット数・Auto含む.Drums.Miss++;\r
1208                 //                    if ( !bPChipIsAutoPlay )\r
1209                 //                    {\r
1210                 //                        this.nヒット数・Auto含まない.Drums.Miss++;\r
1211                 //                    }\r
1212                 //                    break;\r
1213                 //                default:\r
1214                 //                    this.nヒット数・Auto含む.Drums[ (int) eJudgeResult ]++;\r
1215                 //                    if ( !bPChipIsAutoPlay )\r
1216                 //                    {\r
1217                 //                        this.nヒット数・Auto含まない.Drums[ (int) eJudgeResult ]++;\r
1218                 //                    }\r
1219                 //                    break;\r
1220                 //            }\r
1221 \r
1222                 //            if (CDTXMania.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay)\r
1223                 //            {\r
1224                 //                switch (eJudgeResult)\r
1225                 //                {\r
1226                 //                    case E判定.Perfect:\r
1227                 //                    case E判定.Great:\r
1228                 //                    case E判定.Good:\r
1229                 //                        this.actCombo.n現在のコンボ数.Drums++;\r
1230                 //                        break;\r
1231 \r
1232                 //                    default:\r
1233                 //                        this.actCombo.n現在のコンボ数.Drums = 0;\r
1234                 //                        break;\r
1235                 //                }\r
1236                 //            }\r
1237                 //            break;\r
1238 \r
1239                 //        case E楽器パート.GUITAR:\r
1240                 //            switch( eJudgeResult )\r
1241                 //            {\r
1242                 //                case E判定.Miss:\r
1243                 //                case E判定.Bad:\r
1244                 //                    this.nヒット数・Auto含む.Guitar.Miss++;\r
1245                 //                    if ( !bIsAutoPlay.Guitar )\r
1246                 //                    {\r
1247                 //                        this.nヒット数・Auto含まない.Guitar.Miss++;\r
1248                 //                    }\r
1249                 //                       break;\r
1250                 //                default:    // #24068 2011.1.10 ikanick changed\r
1251                 //                    this.nヒット数・Auto含む.Guitar[ (int) eJudgeResult ]++;\r
1252                 //                    if ( !bIsAutoPlay.Guitar )\r
1253                 //                    {\r
1254                 //                        this.nヒット数・Auto含まない.Guitar[ (int) eJudgeResult ]++;\r
1255                 //                    }\r
1256                 //                    break;\r
1257                 //            }\r
1258                 //            switch (eJudgeResult)\r
1259                 //            {\r
1260                 //                case E判定.Perfect:\r
1261                 //                case E判定.Great:\r
1262                 //                case E判定.Good:\r
1263                 //                    this.actCombo.n現在のコンボ数.Guitar++;\r
1264                 //                    break;\r
1265 \r
1266                 //                default:\r
1267                 //                    this.actCombo.n現在のコンボ数.Guitar = 0;\r
1268                 //                    break;\r
1269                 //            }\r
1270                 //            break;\r
1271 \r
1272                 //        case E楽器パート.BASS:\r
1273                 //            switch( eJudgeResult )\r
1274                 //            {\r
1275                 //                case E判定.Miss:\r
1276                 //                case E判定.Bad:\r
1277                 //                    this.nヒット数・Auto含む.Bass.Miss++;\r
1278                 //                    if ( !bIsAutoPlay.Bass )\r
1279                 //                    {\r
1280                 //                        this.nヒット数・Auto含まない.Bass.Miss++;\r
1281                 //                    }\r
1282                 //                    break;\r
1283                 //                default:    // #24068 2011.1.10 ikanick changed\r
1284                 //                    this.nヒット数・Auto含む.Bass[ (int) eJudgeResult ]++;\r
1285                 //                    if ( !bIsAutoPlay.Bass )\r
1286                 //                    {\r
1287                 //                        this.nヒット数・Auto含まない.Bass[ (int) eJudgeResult ]++;\r
1288                 //                    }\r
1289                 //                    break;\r
1290                 //            }\r
1291 \r
1292                 //            switch( eJudgeResult )\r
1293                 //            {\r
1294                 //                case E判定.Perfect:\r
1295                 //                case E判定.Great:\r
1296                 //                case E判定.Good:\r
1297                 //                    this.actCombo.n現在のコンボ数.Bass++;\r
1298                 //                    break;\r
1299 \r
1300                 //                default:\r
1301                 //                    this.actCombo.n現在のコンボ数.Bass = 0;\r
1302                 //                    break;\r
1303                 //            }\r
1304                 //            break;\r
1305 \r
1306                 //        default:\r
1307                 //            break;\r
1308                 //    }\r
1309                 //    if( ( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) ) )\r
1310                 //    {\r
1311                 //        int nCombos = 0;\r
1312                 //        switch (pChip.e楽器パート) {\r
1313                 //            case E楽器パート.DRUMS:\r
1314                 //                nCombos = this.actCombo.n現在のコンボ数.Drums;\r
1315                 //                break;\r
1316                 //            case E楽器パート.GUITAR:\r
1317                 //                nCombos = this.actCombo.n現在のコンボ数.Guitar;\r
1318                 //                break;\r
1319                 //            case E楽器パート.BASS:\r
1320                 //                nCombos = this.actCombo.n現在のコンボ数.Bass;\r
1321                 //                break;\r
1322                 //        }\r
1323                 //        long nScore = this.actScore.Get( pChip.e楽器パート );\r
1324                 //        long[] numArray = new long[] { 350L, 200L, 50L, 0L };\r
1325                 //        if( ( nCombos <= 500 ) || ( eJudgeResult == E判定.Good ) )\r
1326                 //        {\r
1327                 //            nScore += numArray[ (int) eJudgeResult ] * nCombos;\r
1328                 //        }\r
1329                 //        else if( ( eJudgeResult == E判定.Perfect ) || ( eJudgeResult == E判定.Great ) )\r
1330                 //        {\r
1331                 //            nScore += numArray[ (int) eJudgeResult ] * 500L;\r
1332                 //        }\r
1333                 //        this.actScore.Set( pChip.e楽器パート, nScore );\r
1334                 //    }\r
1335                 //    // #24074 2011.01.23 add ikanick\r
1336                 //    this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );\r
1337 \r
1338                 //    return eJudgeResult;\r
1339                 //}\r
1340                 protected override void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )\r
1341                 {\r
1342                         this.tチップのヒット処理・BadならびにTight時のMiss( part, 0, E楽器パート.DRUMS );\r
1343                 }\r
1344                 protected override void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )\r
1345                 {\r
1346                         this.tチップのヒット処理・BadならびにTight時のMiss( part, nLane, E楽器パート.DRUMS );\r
1347                 }\r
1348                 //private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )\r
1349                 //{\r
1350                 //    this.bAUTOでないチップが1つでもバーを通過した = true;\r
1351                 //    this.t判定にあわせてゲージを増減する( E楽器パート.DRUMS, part, E判定.Miss );\r
1352                 //    switch( part )\r
1353                 //    {\r
1354                 //        case E楽器パート.DRUMS:\r
1355                 //            if( ( nLane >= 0 ) && ( nLane <= 7 ) )\r
1356                 //            {\r
1357                 //                this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss, 999 );\r
1358                 //            }\r
1359                 //            this.actCombo.n現在のコンボ数.Drums = 0;\r
1360                 //            return;\r
1361 \r
1362                 //        case E楽器パート.GUITAR:\r
1363                 //            this.actJudgeString.Start( 10, E判定.Bad, 999 );\r
1364                 //            this.actCombo.n現在のコンボ数.Guitar = 0;\r
1365                 //            return;\r
1366 \r
1367                 //        case E楽器パート.BASS:\r
1368                 //            this.actJudgeString.Start( 11, E判定.Bad, 999 );\r
1369                 //            this.actCombo.n現在のコンボ数.Bass = 0;\r
1370                 //            return;\r
1371                 //    }\r
1372                 //}\r
1373                 private bool tドラムヒット処理( long nHitTime, Eパッド type, CDTX.CChip pChip, int n強弱度合い0to127 )\r
1374                 {\r
1375                         if( pChip == null )\r
1376                         {\r
1377                                 return false;\r
1378                         }\r
1379                         int index = pChip.nチャンネル番号;\r
1380                         if ( ( index >= 0x11 ) && ( index <= 0x1a ) )\r
1381                         {\r
1382                                 index -= 0x11;\r
1383                         }\r
1384                         else if ( ( index >= 0x31 ) && ( index <= 0x3a ) )\r
1385                         {\r
1386                                 index -= 0x31;\r
1387                         }\r
1388                         int num2 = this.nチャンネル0Atoレーン07[ index ];\r
1389                         int nLane = this.nチャンネル0Atoパッド08[ index ];\r
1390                         bool bPChipIsAutoPlay = bIsAutoPlay[ num2 ];\r
1391                         int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;\r
1392                         E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
1393                         if( e判定 == E判定.Miss )\r
1394                         {\r
1395                                 return false;\r
1396                         }\r
1397                         this.tチップのヒット処理( nHitTime, pChip );\r
1398                         this.actLaneFlushD.Start( (Eドラムレーン) num2, ( (float) n強弱度合い0to127 ) / 127f );\r
1399                         this.actPad.Hit( nLane );\r
1400                         if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )\r
1401                         {\r
1402                                 bool flag = this.bフィルイン中;\r
1403                                 bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );\r
1404                                 bool flag3 = flag2;\r
1405                                 this.actChipFireD.Start( (Eドラムレーン) num2, flag, flag2, flag3 );\r
1406                         }\r
1407                         if( CDTXMania.ConfigIni.bドラム打音を発声する )\r
1408                         {\r
1409                                 CDTX.CChip rChip = null;\r
1410                                 bool flag4 = true;\r
1411                                 if( ( ( type == Eパッド.HH ) || ( type == Eパッド.HHO ) ) || ( type == Eパッド.LC ) )\r
1412                                 {\r
1413                                         flag4 = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
1414                                 }\r
1415                                 else if( ( type == Eパッド.LT ) || ( type == Eパッド.FT ) )\r
1416                                 {\r
1417                                         flag4 = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
1418                                 }\r
1419                                 else if( ( type == Eパッド.CY ) || ( type == Eパッド.RD ) )\r
1420                                 {\r
1421                                         flag4 = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
1422                                 }\r
1423                                 if( flag4 )\r
1424                                 {\r
1425                                         rChip = pChip;\r
1426                                 }\r
1427                                 else\r
1428                                 {\r
1429                                         Eパッド hH = type;\r
1430                                         if( !CDTXMania.DTX.bチップがある.HHOpen && ( type == Eパッド.HHO ) )\r
1431                                         {\r
1432                                                 hH = Eパッド.HH;\r
1433                                         }\r
1434                                         if( !CDTXMania.DTX.bチップがある.Ride && ( type == Eパッド.RD ) )\r
1435                                         {\r
1436                                                 hH = Eパッド.CY;\r
1437                                         }\r
1438                                         if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( type == Eパッド.LC ) )\r
1439                                         {\r
1440                                                 hH = Eパッド.HH;\r
1441                                         }\r
1442                                         rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nHitTime, this.nパッド0Atoチャンネル0A[ (int) hH ], nInputAdjustTime );\r
1443                                         if( rChip == null )\r
1444                                         {\r
1445                                                 rChip = pChip;\r
1446                                         }\r
1447                                 }\r
1448                                 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );\r
1449                         }\r
1450                         return true;\r
1451                 }\r
1452                 //private void tパネル文字列の設定()\r
1453                 //{\r
1454                 //    this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );\r
1455                 //}\r
1456                 //private void tキー入力()\r
1457                 //{\r
1458                 //    IInputDevice keyboard = CDTXMania.Input管理.Keyboard;\r
1459                 //    if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F1 ) &&\r
1460                 //        ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift) ) )\r
1461                 //    { // shift+f1 (pause)\r
1462                 //        this.bPAUSE = !this.bPAUSE;\r
1463                 //        if( this.bPAUSE )\r
1464                 //        {\r
1465                 //            CDTXMania.Timer.t一時停止();\r
1466                 //            CDTXMania.DTX.t全チップの再生一時停止();\r
1467                 //        }\r
1468                 //        else\r
1469                 //        {\r
1470                 //            CDTXMania.Timer.t再開();\r
1471                 //            CDTXMania.DTX.t全チップの再生再開();\r
1472                 //        }\r
1473                 //    }\r
1474                 //    if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
1475                 //    {\r
1476                 //        this.t入力処理・ドラム();\r
1477                 //        this.t入力処理・ギター();\r
1478                 //        this.t入力処理・ベース();\r
1479                 //        if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )\r
1480                 //        {     // shift + UpArrow (BGMAdjust)\r
1481                 //            CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl) ) ? 1 : 10 );\r
1482                 //            CDTXMania.DTX.tWave再生位置自動補正();\r
1483                 //        }\r
1484                 //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )\r
1485                 //        {     // shift + DownArrow (BGMAdjust)\r
1486                 //            CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl ) ) ? -1 : -10 );\r
1487                 //            CDTXMania.DTX.tWave再生位置自動補正();\r
1488                 //        }\r
1489                 //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) )\r
1490                 //        {     // UpArrow(scrollspeed up)\r
1491                 //            CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 1999 );\r
1492                 //        }\r
1493                 //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) )\r
1494                 //        {     // DownArrow (scrollspeed down)\r
1495                 //            CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );\r
1496                 //        }\r
1497                 //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Delete ) )\r
1498                 //        {     // del (debug info)\r
1499                 //            CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;\r
1500                 //        }\r
1501                 //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.LeftArrow ) )          // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
1502                 //        {\r
1503                 //            ChangeInputAdjustTimeInPlaying( keyboard, -1 );\r
1504                 //        }\r
1505                 //        else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) )                // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
1506                 //        {\r
1507                 //            ChangeInputAdjustTimeInPlaying( keyboard, +1 );\r
1508                 //        }\r
1509                 //        else if ( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )\r
1510                 //        {     // escape (exit)\r
1511                 //            this.actFO.tフェードアウト開始();\r
1512                 //            base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
1513                 //            this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;\r
1514                 //        }\r
1515                 //    }\r
1516                 //}\r
1517 \r
1518                 protected override void ドラムスクロール速度アップ()\r
1519                 {\r
1520                         CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 1999 );\r
1521                 }\r
1522                 protected override void ドラムスクロール速度ダウン()\r
1523                 {\r
1524                         CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );\r
1525                 }\r
1526 \r
1527         \r
1528                 protected override void t進行描画・AVI()\r
1529                 {\r
1530                         base.t進行描画・AVI( 0x152, 0x39 );\r
1531                 }\r
1532                 protected override void t進行描画・BGA()\r
1533                 {\r
1534                         base.t進行描画・BGA( 0x152, 0x39 );\r
1535                 }\r
1536                 protected override void t進行描画・DANGER()\r
1537                 {\r
1538                     this.actDANGER.t進行描画( this.actGauge.db現在のゲージ値.Drums < 0.3, false, false );\r
1539                 }\r
1540                 //private void t進行描画・MIDIBGM()\r
1541                 //{\r
1542                 //    if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )\r
1543                 //    {\r
1544                 //        CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
1545                 //    }\r
1546                 //}\r
1547                 //private void t進行描画・RGBボタン()\r
1548                 //{\r
1549                 //    if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )\r
1550                 //    {\r
1551                 //        this.actRGB.On進行描画();\r
1552                 //    }\r
1553                 //}\r
1554                 //private void t進行描画・STAGEFAILED()\r
1555                 //{\r
1556                 //    if( ( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( ( this.actStageFailed.On進行描画() != 0 ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
1557                 //    {\r
1558                 //        this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
1559                 //        base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
1560                 //        this.actFO.tフェードアウト開始();\r
1561                 //    }\r
1562                 //}\r
1563                 //private void t進行描画・WailingBonus()\r
1564                 //{\r
1565                 //    if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
1566                 //    {\r
1567                 //        this.actWailingBonus.On進行描画();\r
1568                 //    }\r
1569                 //}\r
1570                 protected override void t進行描画・Wailing枠()\r
1571                 {\r
1572                         base.t進行描画・Wailing枠( 0x24b, 0x1de,\r
1573                                 CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45,\r
1574                                 CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45\r
1575                         );\r
1576                 }\r
1577                 private void t進行描画・ギターベースフレーム()\r
1578                 {\r
1579                         if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )\r
1580                         {\r
1581                                 if( CDTXMania.DTX.bチップがある.Guitar )\r
1582                                 {\r
1583                                         for( int i = 0; i < 0x163; i += 0x80 )\r
1584                                         {\r
1585                                                 Rectangle rectangle = new Rectangle( 0, 0, 0x6d, 0x80 );\r
1586                                                 if( ( i + 0x80 ) > 0x163 )\r
1587                                                 {\r
1588                                                         rectangle.Height -= ( i + 0x80 ) - 0x163;\r
1589                                                 }\r
1590                                                 if( this.txレーンフレームGB != null )\r
1591                                                 {\r
1592                                                         this.txレーンフレームGB.t2D描画( CDTXMania.app.Device, 0x1fb, 0x39 + i, rectangle );\r
1593                                                 }\r
1594                                         }\r
1595                                 }\r
1596                                 if( CDTXMania.DTX.bチップがある.Bass )\r
1597                                 {\r
1598                                         for( int j = 0; j < 0x163; j += 0x80 )\r
1599                                         {\r
1600                                                 Rectangle rectangle2 = new Rectangle( 0, 0, 0x6d, 0x80 );\r
1601                                                 if( ( j + 0x80 ) > 0x163 )\r
1602                                                 {\r
1603                                                         rectangle2.Height -= ( j + 0x80 ) - 0x163;\r
1604                                                 }\r
1605                                                 if( this.txレーンフレームGB != null )\r
1606                                                 {\r
1607                                                         this.txレーンフレームGB.t2D描画( CDTXMania.app.Device, 0x18e, 0x39 + j, rectangle2 );\r
1608                                                 }\r
1609                                         }\r
1610                                 }\r
1611                         }\r
1612                 }\r
1613                 private void t進行描画・ギターベース判定ライン()                // yyagi: ギタレボモードとは座標が違うだけですが、まとめづらかったのでそのまま放置してます。\r
1614                 {\r
1615                         if ( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )\r
1616                         {\r
1617                                 if ( CDTXMania.DTX.bチップがある.Guitar )\r
1618                                 {\r
1619                                         int y = ( CDTXMania.ConfigIni.bReverse.Guitar ? 0x176 : 0x5f ) - 3;\r
1620                                         for ( int i = 0; i < 3; i++ )\r
1621                                         {\r
1622                                                 if ( this.txヒットバーGB != null )\r
1623                                                 {\r
1624                                                         this.txヒットバーGB.t2D描画( CDTXMania.app.Device, 0x1fd + ( 0x1a * i ), y );\r
1625                                                         this.txヒットバーGB.t2D描画( CDTXMania.app.Device, ( 0x1fd + ( 0x1a * i ) ) + 0x10, y, new Rectangle( 0, 0, 10, 0x10 ) );\r
1626                                                 }\r
1627                                         }\r
1628                                 }\r
1629                                 if ( CDTXMania.DTX.bチップがある.Bass )\r
1630                                 {\r
1631                                         int y = ( CDTXMania.ConfigIni.bReverse.Bass ? 0x176 : 0x5f ) - 3;\r
1632                                         for ( int j = 0; j < 3; j++ )\r
1633                                         {\r
1634                                                 if ( this.txヒットバーGB != null )\r
1635                                                 {\r
1636                                                         this.txヒットバーGB.t2D描画( CDTXMania.app.Device, 400 + ( 0x1a * j ), y );\r
1637                                                         this.txヒットバーGB.t2D描画( CDTXMania.app.Device, ( 400 + ( 0x1a * j ) ) + 0x10, y, new Rectangle( 0, 0, 10, 0x10 ) );\r
1638                                                 }\r
1639                                         }\r
1640                                 }\r
1641                         }\r
1642                 }\r
1643                 //private void t進行描画・ゲージ()\r
1644                 //{\r
1645                 //    if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
1646                 //    {\r
1647                 //        this.actGauge.On進行描画();\r
1648                 //    }\r
1649                 //}\r
1650         // #24074 2011.01.23 add ikanick\r
1651         private void t進行描画・グラフ()        \r
1652         {\r
1653                         if ( !CDTXMania.ConfigIni.bストイックモード && !CDTXMania.ConfigIni.bドラムが全部オートプレイである && CDTXMania.ConfigIni.bGraph.Drums )\r
1654                         {\r
1655                 this.actGraph.On進行描画();\r
1656             }\r
1657         }\r
1658         //------------------------------------------------\r
1659                 //private void t進行描画・コンボ()\r
1660                 //{\r
1661                 //    this.actCOMBO.On進行描画();\r
1662                 //}\r
1663                 //private void t進行描画・スコア()\r
1664                 //{\r
1665                 //    this.actScore.On進行描画();\r
1666                 //}\r
1667                 //private void t進行描画・ステータスパネル()\r
1668                 //{\r
1669                 //    this.actStatusPanels.On進行描画();\r
1670                 //}\r
1671 //        private bool t進行描画・チップ(E楽器パート ePlayMode)\r
1672 //        {\r
1673 //            if( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
1674 //            {\r
1675 //                return true;\r
1676 //            }\r
1677 //            if( ( this.n現在のトップChip == -1 ) || ( this.n現在のトップChip >= CDTXMania.DTX.listChip.Count ) )\r
1678 //            {\r
1679 //                return true;\r
1680 //            }\r
1681 //            int nCurrentTopChip = this.n現在のトップChip;\r
1682 //            if( nCurrentTopChip == -1 )\r
1683 //            {\r
1684 //                return true;\r
1685 //            }\r
1686 \r
1687 //            //double speed = 264.0;   // BPM150の時の1小節の長さ[dot]\r
1688 //            double speed = 234.0;     // BPM150の時の1小節の長さ[dot]\r
1689 \r
1690 //            double ScrollSpeedDrums  = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums  + 1.0 ) * 0.5 *       37.5 * speed / 60000.0;\r
1691 //            double ScrollSpeedGuitar = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;\r
1692 //            double ScrollSpeedBass   = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Bass   + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;\r
1693 \r
1694 //            CDTX dTX = CDTXMania.DTX;\r
1695 //            CConfigIni configIni = CDTXMania.ConfigIni;\r
1696 //            while( nCurrentTopChip < dTX.listChip.Count )\r
1697 //            {\r
1698 //                CDTX.CChip pChip = dTX.listChip[ nCurrentTopChip ];\r
1699 //                pChip.nバーからの距離dot.Drums = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedDrums );\r
1700 //                pChip.nバーからの距離dot.Guitar = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedGuitar );\r
1701 //                pChip.nバーからの距離dot.Bass = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedBass );\r
1702 //                if( Math.Min( Math.Min( pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar ), pChip.nバーからの距離dot.Bass ) > 450 )\r
1703 //                {\r
1704 //                    break;\r
1705 //                }\r
1706 //                if( ( ( nCurrentTopChip == this.n現在のトップChip ) && ( pChip.nバーからの距離dot.Drums < -65 ) ) && pChip.bHit )\r
1707 //                {\r
1708 //                    this.n現在のトップChip++;\r
1709 //                    nCurrentTopChip = this.n現在のトップChip;\r
1710 //                    continue;\r
1711 //                }\r
1712 \r
1713 //                bool bPChipIsAutoPlay = false;\r
1714 //                if ((\r
1715 //                        ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]]) ||\r
1716 //                        ((pChip.e楽器パート == E楽器パート.GUITAR) && CDTXMania.ConfigIni.bAutoPlay.Guitar)\r
1717 //                    ) ||\r
1718 //                        ((pChip.e楽器パート == E楽器パート.BASS) && CDTXMania.ConfigIni.bAutoPlay.Bass)\r
1719 //                  )\r
1720 ////                            if ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])\r
1721 //                {\r
1722 //                    bPChipIsAutoPlay = true;\r
1723 //                }\r
1724 \r
1725 //                int nInputAdjustTime = 0;\r
1726 //                if (bPChipIsAutoPlay)\r
1727 //                {\r
1728 //                    //nInputAdjustTime = 0;\r
1729 //                }\r
1730 //                else if (pChip.e楽器パート == E楽器パート.UNKNOWN)\r
1731 //                {\r
1732 //                    //nInputAdjustTime = 0;\r
1733 //                }\r
1734 //                else\r
1735 //                {\r
1736 //                    nInputAdjustTime = this.nInputAdjustTimeMs[(int)pChip.e楽器パート];\r
1737 //                }\r
1738 \r
1739 //                if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&\r
1740 //                    ( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) )\r
1741 //                {\r
1742 //                    this.tチップのヒット処理( CDTXMania.Timer.n現在時刻, pChip );\r
1743 //                }\r
1744 //                switch( pChip.nチャンネル番号 )\r
1745 //                {\r
1746 //                    case 0x01:        // BGM\r
1747 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1748 //                        {\r
1749 //                            pChip.bHit = true;\r
1750 //                            if( configIni.bBGM音を発声する )\r
1751 //                            {\r
1752 //                                dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
1753 //                            }\r
1754 //                        }\r
1755 //                        break;\r
1756 \r
1757 //                    case 0x03:        // BPM変更\r
1758 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1759 //                        {\r
1760 //                            pChip.bHit = true;\r
1761 //                            this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;\r
1762 //                        }\r
1763 //                        break;\r
1764 \r
1765 //                    case 0x04:        // レイヤーBGA\r
1766 //                    case 0x07:\r
1767 //                    case 0x55:\r
1768 //                    case 0x56:\r
1769 //                    case 0x57:\r
1770 //                    case 0x58:\r
1771 //                    case 0x59:\r
1772 //                    case 0x60:\r
1773 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1774 //                        {\r
1775 //                            pChip.bHit = true;\r
1776 //                            if( configIni.bBGA有効 )\r
1777 //                            {\r
1778 //                                switch( pChip.eBGA種別 )\r
1779 //                                {\r
1780 //                                    case EBGA種別.BMPTEX:\r
1781 //                                        if( pChip.rBMPTEX != null )\r
1782 //                                        {\r
1783 //                                            this.actBGA.Start( pChip.nチャンネル番号, null, pChip.rBMPTEX, pChip.rBMPTEX.tx画像.sz画像サイズ.Width, pChip.rBMPTEX.tx画像.sz画像サイズ.Height, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\r
1784 //                                        }\r
1785 //                                        break;\r
1786 \r
1787 //                                    case EBGA種別.BGA:\r
1788 //                                        if( ( pChip.rBGA != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )\r
1789 //                                        {\r
1790 //                                            this.actBGA.Start( pChip.nチャンネル番号, pChip.rBMP, pChip.rBMPTEX, pChip.rBGA.pt画像側右下座標.X - pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側右下座標.Y - pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt表示座標.X, pChip.rBGA.pt表示座標.Y, 0, 0, 0 );\r
1791 //                                        }\r
1792 //                                        break;\r
1793 \r
1794 //                                    case EBGA種別.BGAPAN:\r
1795 //                                        if( ( pChip.rBGAPan != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )\r
1796 //                                        {\r
1797 //                                            this.actBGA.Start( pChip.nチャンネル番号, pChip.rBMP, pChip.rBMPTEX, pChip.rBGAPan.sz開始サイズ.Width, pChip.rBGAPan.sz開始サイズ.Height, pChip.rBGAPan.sz終了サイズ.Width, pChip.rBGAPan.sz終了サイズ.Height, pChip.rBGAPan.pt画像側開始位置.X, pChip.rBGAPan.pt画像側開始位置.Y, pChip.rBGAPan.pt画像側終了位置.X, pChip.rBGAPan.pt画像側終了位置.Y, pChip.rBGAPan.pt表示側開始位置.X, pChip.rBGAPan.pt表示側開始位置.Y, pChip.rBGAPan.pt表示側終了位置.X, pChip.rBGAPan.pt表示側終了位置.Y, pChip.n総移動時間 );\r
1798 //                                        }\r
1799 //                                        break;\r
1800 \r
1801 //                                    default:\r
1802 //                                        if( pChip.rBMP != null )\r
1803 //                                        {\r
1804 //                                            this.actBGA.Start( pChip.nチャンネル番号, pChip.rBMP, null, pChip.rBMP.n幅, pChip.rBMP.n高さ, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\r
1805 //                                        }\r
1806 //                                        break;\r
1807 //                                }\r
1808 //                            }\r
1809 //                        }\r
1810 //                        break;\r
1811 \r
1812 //                    case 0x08:        // BPM変更(拡張)\r
1813 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1814 //                        {\r
1815 //                            pChip.bHit = true;\r
1816 //                            if( dTX.listBPM.ContainsKey( pChip.n整数値・内部番号 ) )\r
1817 //                            {\r
1818 //                                this.actPlayInfo.dbBPM = ( dTX.listBPM[ pChip.n整数値・内部番号 ].dbBPM値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;\r
1819 //                            }\r
1820 //                        }\r
1821 //                        break;\r
1822 \r
1823 //                    case 0x11:        // ドラム演奏\r
1824 //                    case 0x12:\r
1825 //                    case 0x13:\r
1826 //                    case 0x14:\r
1827 //                    case 0x15:\r
1828 //                    case 0x16:\r
1829 //                    case 0x17:\r
1830 //                    case 0x18:\r
1831 //                    case 0x19:\r
1832 //                    case 0x1a:\r
1833 //                        this.t進行描画・チップ・ドラムス( configIni, ref dTX, ref pChip );\r
1834 //                        break;\r
1835 \r
1836 //                    case 0x1f:        // フィルインサウンド(ドラム)\r
1837 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1838 //                        {\r
1839 //                            pChip.bHit = true;\r
1840 //                            this.r現在の歓声Chip.Drums = pChip;\r
1841 //                        }\r
1842 //                        break;\r
1843 \r
1844 //                    case 0x20:        // ギター演奏\r
1845 //                    case 0x21:\r
1846 //                    case 0x22:\r
1847 //                    case 0x23:\r
1848 //                    case 0x24:\r
1849 //                    case 0x25:\r
1850 //                    case 0x26:\r
1851 //                    case 0x27:\r
1852 //                        this.t進行描画・チップ・ギター( configIni, ref dTX, ref pChip );\r
1853 //                        break;\r
1854 \r
1855 //                    case 0x28:        // ウェイリング(ギター)\r
1856 //                        this.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );\r
1857 //                        break;\r
1858 \r
1859 //                    case 0x2f:        // ウェイリングサウンド(ギター)\r
1860 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
1861 //                        {\r
1862 //                            pChip.bHit = true;\r
1863 //                            this.r現在の歓声Chip.Guitar = pChip;\r
1864 //                        }\r
1865 //                        break;\r
1866 \r
1867 //                    case 0x31:        // 不可視チップ配置(ドラム)\r
1868 //                    case 0x32:\r
1869 //                    case 0x33:\r
1870 //                    case 0x34:\r
1871 //                    case 0x35:\r
1872 //                    case 0x36:\r
1873 //                    case 0x37:\r
1874 //                    case 0x38:\r
1875 //                    case 0x39:\r
1876 //                    case 0x3a:\r
1877 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1878 //                        {\r
1879 //                            pChip.bHit = true;\r
1880 //                        }\r
1881 //                        break;\r
1882 \r
1883 //                    case 0x50:        // 小節線\r
1884 //                        {\r
1885 //                            int n小節番号plus1 = pChip.n発声位置 / 384;\r
1886 //                            if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1887 //                            {\r
1888 //                                pChip.bHit = true;\r
1889 //                                this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;\r
1890 //                                if( configIni.bWave再生位置自動調整機能有効 )\r
1891 //                                {\r
1892 //                                    dTX.tWave再生位置自動補正();\r
1893 //                                }\r
1894 //                            }\r
1895 //                            if( configIni.bDrums有効 && ePlayMode == E楽器パート.DRUMS)        // Drumsでのみ表示\r
1896 //                            {\r
1897 //                                if( configIni.b演奏情報を表示する && ( configIni.eDark == Eダークモード.OFF ) )\r
1898 //                                {\r
1899 //                                    int n小節番号 = n小節番号plus1 - 1;\r
1900 //                                    CDTXMania.act文字コンソール.tPrint( 0x14d, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 0x11 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 0x11 ), C文字コンソール.Eフォント種別.白, n小節番号.ToString() );\r
1901 //                                }\r
1902 //                                if( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )\r
1903 //                                {\r
1904 //                                    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, 0x1bc, 0x128, 2 ) );\r
1905 //                                }\r
1906 //                            }\r
1907 //                            if( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )\r
1908 //                            {\r
1909 //                                int y = configIni.bReverse.Guitar ? ( ( 0x176 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Guitar ) - 1 );\r
1910 //                                if( ( dTX.bチップがある.Guitar && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )\r
1911 //                                {\r
1912 //                                    this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fb, y, new Rectangle( 0, 450, 0x4e, 1 ) );\r
1913 //                                }\r
1914 //                                y = configIni.bReverse.Bass ? ( ( 0x176 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Bass ) - 1 );\r
1915 //                                if( ( dTX.bチップがある.Bass && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )\r
1916 //                                {\r
1917 //                                    this.txチップ.t2D描画( CDTXMania.app.Device, 0x18e, y, new Rectangle( 0, 450, 0x4e, 1 ) );\r
1918 //                                }\r
1919 //                            }\r
1920 //                            break;\r
1921 //                        }\r
1922 //                    case 0x51:        // 拍線\r
1923 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1924 //                        {\r
1925 //                            pChip.bHit = true;\r
1926 //                        }\r
1927 //                        if( ( ePlayMode == E楽器パート.DRUMS ) && ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 && ( this.txチップ != null ) )\r
1928 //                        {\r
1929 //                            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
1930 //                        }\r
1931 //                        break;\r
1932 \r
1933 //                    case 0x52:        // MIDIコーラス\r
1934 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1935 //                        {\r
1936 //                            pChip.bHit = true;\r
1937 //                        }\r
1938 //                        break;\r
1939 \r
1940 //                    case 0x53:        // フィルイン\r
1941 //                        this.t進行描画・チップ・フィルイン( configIni, ref dTX, ref pChip );\r
1942 //                        break;\r
1943 \r
1944 //                    case 0x54:        // 動画再生\r
1945 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1946 //                        {\r
1947 //                            pChip.bHit = true;\r
1948 //                            if( configIni.bAVI有効 )\r
1949 //                            {\r
1950 //                                switch( pChip.eAVI種別 )\r
1951 //                                {\r
1952 //                                    case EAVI種別.AVI:\r
1953 //                                        if( pChip.rAVI != null )\r
1954 //                                        {\r
1955 //                                            this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, 0x116, 0x163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pChip.n発声時刻ms );\r
1956 //                                        }\r
1957 //                                        break;\r
1958 \r
1959 //                                    case EAVI種別.AVIPAN:\r
1960 //                                        if( pChip.rAVIPan != null )\r
1961 //                                        {\r
1962 //                                            this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, pChip.rAVIPan.sz開始サイズ.Width, pChip.rAVIPan.sz開始サイズ.Height, pChip.rAVIPan.sz終了サイズ.Width, pChip.rAVIPan.sz終了サイズ.Height, pChip.rAVIPan.pt動画側開始位置.X, pChip.rAVIPan.pt動画側開始位置.Y, pChip.rAVIPan.pt動画側終了位置.X, pChip.rAVIPan.pt動画側終了位置.Y, pChip.rAVIPan.pt表示側開始位置.X, pChip.rAVIPan.pt表示側開始位置.Y, pChip.rAVIPan.pt表示側終了位置.X, pChip.rAVIPan.pt表示側終了位置.Y, pChip.n総移動時間, pChip.n発声時刻ms );\r
1963 //                                        }\r
1964 //                                        break;\r
1965 //                                }\r
1966 //                            }\r
1967 //                        }\r
1968 //                        break;\r
1969 \r
1970 //                    case 0x61:        case 0x62:      case 0x63:      case 0x64:      // 自動再生(BGM, SE)\r
1971 //                    case 0x65:        case 0x66:      case 0x67:      case 0x68:\r
1972 //                    case 0x69:        case 0x70:      case 0x71:      case 0x72:\r
1973 //                    case 0x73:        case 0x74:      case 0x75:      case 0x76:\r
1974 //                    case 0x77:        case 0x78:      case 0x79:      case 0x80:\r
1975 //                    case 0x81:        case 0x82:      case 0x83:      case 0x84:\r
1976 //                    case 0x85:        case 0x86:      case 0x87:      case 0x88:\r
1977 //                    case 0x89:        case 0x90:      case 0x91:      case 0x92:\r
1978 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1979 //                        {\r
1980 //                            pChip.bHit = true;\r
1981 //                            if( configIni.bBGM音を発声する )\r
1982 //                            {\r
1983 //                                dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] );\r
1984 //                                dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
1985 //                                this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号;\r
1986 //                            }\r
1987 //                        }\r
1988 //                        break;\r
1989 \r
1990 //                    case 0xa0:        // ベース演奏\r
1991 //                    case 0xa1:\r
1992 //                    case 0xa2:\r
1993 //                    case 0xa3:\r
1994 //                    case 0xa4:\r
1995 //                    case 0xa5:\r
1996 //                    case 0xa6:\r
1997 //                    case 0xa7:\r
1998 //                        this.t進行描画・チップ・ベース( configIni, ref dTX, ref pChip );\r
1999 //                        break;\r
2000 \r
2001 //                    case 0xa8:        // ウェイリング(ベース)\r
2002 //                        this.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip );\r
2003 //                        break;\r
2004 \r
2005 //                    case 0xaf:        // ウェイリングサウンド(ベース)\r
2006 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
2007 //                        {\r
2008 //                            pChip.bHit = true;\r
2009 //                            this.r現在の歓声Chip.Bass = pChip;\r
2010 //                        }\r
2011 //                        break;\r
2012 \r
2013 //                    case 0xb1:        // 空打ち音設定(ドラム)\r
2014 //                    case 0xb2:\r
2015 //                    case 0xb3:\r
2016 //                    case 0xb4:\r
2017 //                    case 0xb5:\r
2018 //                    case 0xb6:\r
2019 //                    case 0xb7:\r
2020 //                    case 0xb8:\r
2021 //                    case 0xb9:\r
2022 //                    case 0xbc:\r
2023 //                        this.t進行描画・チップ・空打ち音設定・ドラム( configIni, ref dTX, ref pChip );\r
2024 //                        break;\r
2025 \r
2026 //                    case 0xba:        // 空打ち音設定(ギター)\r
2027 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
2028 //                        {\r
2029 //                            pChip.bHit = true;\r
2030 //                            this.r現在の空うちギターChip = pChip;\r
2031 //                            pChip.nチャンネル番号 = 0x20;\r
2032 //                        }\r
2033 //                        break;\r
2034 \r
2035 //                    case 0xbb:        // 空打ち音設定(ベース)\r
2036 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
2037 //                        {\r
2038 //                            pChip.bHit = true;\r
2039 //                            this.r現在の空うちベースChip = pChip;\r
2040 //                            pChip.nチャンネル番号 = 0xA0;\r
2041 //                        }\r
2042 //                        break;\r
2043 \r
2044 //                    case 0xc4:        case 0xc7:      case 0xd5:      case 0xd6:      // BGA画像入れ替え\r
2045 //                    case 0xd7:        case 0xd8:      case 0xd9:      case 0xe0:\r
2046 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
2047 //                        {\r
2048 //                            pChip.bHit = true;\r
2049 //                            if( ( configIni.bBGA有効 && ( pChip.eBGA種別 == EBGA種別.BMP ) ) || ( pChip.eBGA種別 == EBGA種別.BMPTEX ) )\r
2050 //                            {\r
2051 //                                for( int i = 0; i < 8; i++ )\r
2052 //                                {\r
2053 //                                    if( this.nBGAスコープチャンネルマップ[ 0, i ] == pChip.nチャンネル番号 )\r
2054 //                                    {\r
2055 //                                        this.actBGA.ChangeScope( this.nBGAスコープチャンネルマップ[ 1, i ], pChip.rBMP, pChip.rBMPTEX );\r
2056 //                                    }\r
2057 //                                }\r
2058 //                            }\r
2059 //                        }\r
2060 //                        break;\r
2061 \r
2062 //                    default:\r
2063 //                        if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
2064 //                        {\r
2065 //                            pChip.bHit = true;\r
2066 //                        }\r
2067 //                        break;\r
2068 //                }\r
2069 \r
2070 //                nCurrentTopChip++;\r
2071 //            }\r
2072 //            return false;\r
2073 //        }\r
2074                 //private void t進行描画・チップアニメ()\r
2075                 //{\r
2076                 //    for ( int i = 0; i < 3; i++ )\r
2077                 //    {\r
2078                 //        this.ctチップ模様アニメ[ i ].t進行Loop();\r
2079                 //    }\r
2080                 //    this.ctWailingチップ模様アニメ.t進行Loop();\r
2081                 //}\r
2082                 private void t進行描画・チップファイアD()\r
2083                 {\r
2084                         this.actChipFireD.On進行描画();\r
2085                 }\r
2086                 //private void t進行描画・チップファイアGB()\r
2087                 //{\r
2088                 //    this.actChipFireGB.On進行描画();\r
2089                 //}\r
2090                 private void t進行描画・ドラムパッド()\r
2091                 {\r
2092                         if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )\r
2093                         {\r
2094                                 this.actPad.On進行描画();\r
2095                         }\r
2096                 }\r
2097                 protected override void t進行描画・パネル文字列()\r
2098                 {\r
2099                         base.t進行描画・パネル文字列( 0x150, 0x1ab );\r
2100                 }\r
2101                 //private bool t進行描画・フェードイン・アウト()\r
2102                 //{\r
2103                 //    switch( base.eフェーズID )\r
2104                 //    {\r
2105                 //        case CStage.Eフェーズ.共通_フェードイン:\r
2106                 //            if( this.actFI.On進行描画() != 0 )\r
2107                 //            {\r
2108                 //                base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
2109                 //            }\r
2110                 //            break;\r
2111 \r
2112                 //        case CStage.Eフェーズ.共通_フェードアウト:\r
2113                 //        case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:\r
2114                 //            if( this.actFO.On進行描画() != 0 )\r
2115                 //            {\r
2116                 //                return true;\r
2117                 //            }\r
2118                 //            break;\r
2119 \r
2120                 //        case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:\r
2121                 //            if( this.actFOClear.On進行描画() == 0 )\r
2122                 //            {\r
2123                 //                break;\r
2124                 //            }\r
2125                 //            return true;\r
2126                 //    }\r
2127                 //    return false;\r
2128                 //}\r
2129                 //private void t進行描画・レーンフラッシュD()\r
2130                 //{\r
2131                 //    if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
2132                 //    {\r
2133                 //        this.actLaneFlushD.On進行描画();\r
2134                 //    }\r
2135                 //}\r
2136                 //private void t進行描画・レーンフラッシュGB()\r
2137                 //{\r
2138                 //    if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )\r
2139                 //    {\r
2140                 //        this.actLaneFlushGB.On進行描画();\r
2141                 //    }\r
2142                 //}\r
2143                 protected override void t進行描画・演奏情報()\r
2144                 {\r
2145                         base.t進行描画・演奏情報( 0x152, 0x39 );\r
2146                 }\r
2147                 //private void t進行描画・背景()\r
2148                 //{\r
2149                 //    if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )\r
2150                 //    {\r
2151                 //        if( this.tx背景 != null )\r
2152                 //        {\r
2153                 //            this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
2154                 //        }\r
2155                 //    }\r
2156                 //    else\r
2157                 //    {\r
2158                 //        CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );\r
2159                 //    }\r
2160                 //}\r
2161                 //private void t進行描画・判定ライン()\r
2162                 //{\r
2163                 //    if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )\r
2164                 //    {\r
2165                 //        int y = CDTXMania.ConfigIni.bReverse.Drums ? 0x35 : 0x1a3;\r
2166                 //        for( int i = 0x20; i < 0x14f; i += 8 )\r
2167                 //        {\r
2168                 //            if( this.txヒットバー != null )\r
2169                 //            {\r
2170                 //                this.txヒットバー.t2D描画( CDTXMania.app.Device, i, y, new Rectangle( 0, 0, ( ( i + 8 ) >= 0x14f ) ? ( 7 - ( ( i + 8 ) - 0x14f ) ) : 8, 8 ) );\r
2171                 //            }\r
2172                 //        }\r
2173                 //    }\r
2174                 //}\r
2175                 //private void t進行描画・判定文字列1・通常位置指定の場合()\r
2176                 //{\r
2177                 //    if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) != E判定文字表示位置.判定ライン上または横 )\r
2178                 //    {\r
2179                 //        this.actJudgeString.On進行描画();\r
2180                 //    }\r
2181                 //}\r
2182                 //private void t進行描画・判定文字列2・判定ライン上指定の場合()\r
2183                 //{\r
2184                 //    if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) == E判定文字表示位置.判定ライン上または横 )\r
2185                 //    {\r
2186                 //        this.actJudgeString.On進行描画();\r
2187                 //    }\r
2188                 //}\r
2189                 //private void t進行描画・譜面スクロール速度()\r
2190                 //{\r
2191                 //    this.act譜面スクロール速度.On進行描画();\r
2192                 //}\r
2193                 //private void t入力メソッド記憶( E楽器パート part )\r
2194                 //{\r
2195                 //    if( CDTXMania.Pad.st検知したデバイス.Keyboard )\r
2196                 //    {\r
2197                 //        this.b演奏にキーボードを使った[ (int) part ] = true;\r
2198                 //    }\r
2199                 //    if( CDTXMania.Pad.st検知したデバイス.Joypad )\r
2200                 //    {\r
2201                 //        this.b演奏にジョイパッドを使った[ (int) part ] = true;\r
2202                 //    }\r
2203                 //    if( CDTXMania.Pad.st検知したデバイス.MIDIIN )\r
2204                 //    {\r
2205                 //        this.b演奏にMIDI入力を使った[ (int) part ] = true;\r
2206                 //    }\r
2207                 //    if( CDTXMania.Pad.st検知したデバイス.Mouse )\r
2208                 //    {\r
2209                 //        this.b演奏にマウスを使った[ (int) part ] = true;\r
2210                 //    }\r
2211                 //}\r
2212                 //protected override void t入力処理・ギター()\r
2213                 //{\r
2214                 //    if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )\r
2215                 //    {\r
2216                 //        CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );\r
2217                 //    }\r
2218                 //    if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.R ) )\r
2219                 //    {\r
2220                 //        CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );\r
2221                 //    }\r
2222 \r
2223                 //    if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )\r
2224                 //    {\r
2225                 //        if ( bIsAutoPlay.Guitar )\r
2226                 //        {\r
2227                 //            CDTX.CChip chip = this.r次にくるギターChipを更新して返す();\r
2228                 //            if( chip != null )\r
2229                 //            {\r
2230                 //                if( ( chip.nチャンネル番号 & 4 ) != 0 )\r
2231                 //                {\r
2232                 //                    this.actLaneFlushGB.Start( 0 );\r
2233                 //                    this.actRGB.Push( 0 );\r
2234                 //                }\r
2235                 //                if( ( chip.nチャンネル番号 & 2 ) != 0 )\r
2236                 //                {\r
2237                 //                    this.actLaneFlushGB.Start( 1 );\r
2238                 //                    this.actRGB.Push( 1 );\r
2239                 //                }\r
2240                 //                if( ( chip.nチャンネル番号 & 1 ) != 0 )\r
2241                 //                {\r
2242                 //                    this.actLaneFlushGB.Start( 2 );\r
2243                 //                    this.actRGB.Push( 2 );\r
2244                 //                }\r
2245                 //            }\r
2246                 //        }\r
2247                 //        else\r
2248                 //        {\r
2249                 //            int flagR = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.R) ? 4 : 0;\r
2250                 //            this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2251                 //            int flagG = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) ? 2 : 0;\r
2252                 //            this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2253                 //            int flagB = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.B ) ? 1 : 0;\r
2254                 //            this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2255                 //            int flagRGB =  flagR | flagG  | flagB;\r
2256                 //            if( flagR != 0 )\r
2257                 //            {\r
2258                 //                this.actLaneFlushGB.Start( 0 );\r
2259                 //                this.actRGB.Push( 0 );\r
2260                 //            }\r
2261                 //            if( flagG != 0 )\r
2262                 //            {\r
2263                 //                this.actLaneFlushGB.Start( 1 );\r
2264                 //                this.actRGB.Push( 1 );\r
2265                 //            }\r
2266                 //            if( flagB != 0 )\r
2267                 //            {\r
2268                 //                this.actLaneFlushGB.Start( 2 );\r
2269                 //                this.actRGB.Push( 2 );\r
2270                 //            }\r
2271                 //            List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Pick );\r
2272                 //            if( ( events != null ) && ( events.Count > 0 ) )\r
2273                 //            {\r
2274                 //                this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2275                 //                foreach( STInputEvent event2 in events )\r
2276                 //                {\r
2277                 //                    CDTX.CChip chip4;\r
2278                 //                    if( !event2.b押された )\r
2279                 //                    {\r
2280                 //                        continue;\r
2281                 //                    }\r
2282                 //                    long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2283                 //                    CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar );\r
2284                 //                    E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs.Guitar );\r
2285                 //                    if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == flagRGB ) ) && ( e判定 != E判定.Miss ) )\r
2286                 //                    {\r
2287                 //                        if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
2288                 //                        {\r
2289                 //                            this.actChipFireGB.Start( 0 );\r
2290                 //                        }\r
2291                 //                        if( ( flagG != 0 ) || ( flagRGB == 0 ) )\r
2292                 //                        {\r
2293                 //                            this.actChipFireGB.Start( 1 );\r
2294                 //                        }\r
2295                 //                        if( ( flagB != 0 ) || ( flagRGB == 0 ) )\r
2296                 //                        {\r
2297                 //                            this.actChipFireGB.Start( 2 );\r
2298                 //                        }\r
2299                 //                        this.tチップのヒット処理( nTime, pChip );\r
2300                 //                        this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );\r
2301                 //                        CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );\r
2302                 //                        if( item != null )\r
2303                 //                        {\r
2304                 //                            this.queWailing.Guitar.Enqueue( item );\r
2305                 //                        }\r
2306                 //                        continue;\r
2307                 //                    }\r
2308                 //                    if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
2309                 //                    {\r
2310                 //                        this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
2311                 //                    }\r
2312                 //                    if( !CDTXMania.ConfigIni.bLight.Guitar )\r
2313                 //                    {\r
2314                 //                        this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.GUITAR );\r
2315                 //                    }\r
2316                 //                }\r
2317                 //            }\r
2318                 //            List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
2319                 //            if( ( list2 != null ) && ( list2.Count > 0 ) )\r
2320                 //            {\r
2321                 //                foreach( STInputEvent event3 in list2 )\r
2322                 //                {\r
2323                 //                    CDTX.CChip chip5;\r
2324                 //                    if( !event3.b押された )\r
2325                 //                    {\r
2326                 //                        continue;\r
2327                 //                    }\r
2328                 //                    long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2329                 //                    while( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )\r
2330                 //                    {\r
2331                 //                        if( ( num6 - chip5.n発声時刻ms ) <= 800 )         // #24245 2011.1.26 yyagi: 800 -> 1000\r
2332                 //                        {\r
2333                 //                            chip5.bHit = true;\r
2334                 //                            this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
2335                 //                            if( !bIsAutoPlay.Guitar )\r
2336                 //                            {\r
2337                 //                                int nCombo = ( this.actCombo.n現在のコンボ数.Guitar < 500 ) ? this.actCombo.n現在のコンボ数.Guitar : 500;\r
2338                 //                                this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( nCombo * 3000L ) );              // #24245 2011.1.26 yyagi changed DRUMS->GUITAR, add nCombo conditions\r
2339                 //                            }\r
2340                 //                        }\r
2341                 //                    }\r
2342                 //                }\r
2343                 //            }\r
2344                 //        }\r
2345                 //    }\r
2346                 //}\r
2347                 protected override void t入力処理・ドラム()\r
2348                 {\r
2349                         for( int nPad = 0; nPad < 10; nPad++ )\r
2350                         {\r
2351                                 List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.DRUMS, (Eパッド) nPad );\r
2352 \r
2353                                 if( ( events != null ) && ( events.Count != 0 ) )\r
2354                                 {\r
2355                                         this.t入力メソッド記憶( E楽器パート.DRUMS );\r
2356 \r
2357                                         #region [ 打ち分けグループ調整 ]\r
2358                                         //-----------------------------\r
2359                                         EHHGroup eHHGroup = CDTXMania.ConfigIni.eHHGroup;\r
2360                                         EFTGroup eFTGroup = CDTXMania.ConfigIni.eFTGroup;\r
2361                                         ECYGroup eCYGroup = CDTXMania.ConfigIni.eCYGroup;\r
2362                                         if( !CDTXMania.DTX.bチップがある.Ride && ( eCYGroup == ECYGroup.打ち分ける ) )\r
2363                                         {\r
2364                                                 eCYGroup = ECYGroup.共通;\r
2365                                         }\r
2366                                         if( !CDTXMania.DTX.bチップがある.HHOpen && ( eHHGroup == EHHGroup.全部打ち分ける ) )\r
2367                                         {\r
2368                                                 eHHGroup = EHHGroup.左シンバルのみ打ち分ける;\r
2369                                         }\r
2370                                         if( !CDTXMania.DTX.bチップがある.HHOpen && ( eHHGroup == EHHGroup.ハイハットのみ打ち分ける ) )\r
2371                                         {\r
2372                                                 eHHGroup = EHHGroup.全部共通;\r
2373                                         }\r
2374                                         if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( eHHGroup == EHHGroup.全部打ち分ける ) )\r
2375                                         {\r
2376                                                 eHHGroup = EHHGroup.ハイハットのみ打ち分ける;\r
2377                                         }\r
2378                                         if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( eHHGroup == EHHGroup.左シンバルのみ打ち分ける ) )\r
2379                                         {\r
2380                                                 eHHGroup = EHHGroup.全部共通;\r
2381                                         }\r
2382                                         //-----------------------------\r
2383                                         #endregion\r
2384 \r
2385                                         foreach( STInputEvent event2 in events )\r
2386                                         {\r
2387                                                 #region [ 変数宣言 ]\r
2388                                                 //-----------------------------\r
2389                                                 int num3;\r
2390                                                 int num4;\r
2391                                                 int num5;\r
2392                                                 int num6;\r
2393                                                 int num7;\r
2394                                                 int num8;\r
2395                                                 int num9;\r
2396                                                 int num10;\r
2397                                                 int num11;\r
2398                                                 int num12;\r
2399                                                 int num13;\r
2400                                                 int num14;\r
2401                                                 int num15;\r
2402                                                 int num16;\r
2403                                                 //-----------------------------\r
2404                                                 #endregion\r
2405 \r
2406                                                 if( !event2.b押された )\r
2407                                                         continue;\r
2408 \r
2409                                                 long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2410                                                 int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ (int)nPad ] ] ? 0 : nInputAdjustTimeMs.Drums;\r
2411 \r
2412                                                 bool flag = false;\r
2413 \r
2414 \r
2415                                                 #region [ switch( ( (Eパッド) nPad ) ) ]\r
2416                                                 //-----------------------------\r
2417                                                 switch( ( (Eパッド) nPad ) )\r
2418                                                 {\r
2419                                                         case Eパッド.HH:\r
2420                                                                 #region [ *** ]\r
2421                                                                 //-----------------------------\r
2422                                                                 {\r
2423                                                                         if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
2424                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2425 \r
2426                                                                         CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HiHat Close\r
2427                                                                         CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HiHat Open\r
2428                                                                         CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC\r
2429                                                                         E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;\r
2430                                                                         E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;\r
2431                                                                         E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
2432                                                                         switch ( eHHGroup )\r
2433                                                                         {\r
2434                                                                                 case EHHGroup.ハイハットのみ打ち分ける:\r
2435                                                                                         #region [ *** ]\r
2436                                                                                         //-----------------------------\r
2437                                                                                         if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
2438                                                                                         {\r
2439                                                                                                 if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
2440                                                                                                 {\r
2441                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2442                                                                                                 }\r
2443                                                                                                 else if ( chipHC.n発声位置 > chipLC.n発声位置 )\r
2444                                                                                                 {\r
2445                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2446                                                                                                 }\r
2447                                                                                                 else\r
2448                                                                                                 {\r
2449                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2450                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2451                                                                                                 }\r
2452                                                                                                 flag = true;\r
2453                                                                                         }\r
2454                                                                                         else if ( e判定HC != E判定.Miss )\r
2455                                                                                         {\r
2456                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2457                                                                                                 flag = true;\r
2458                                                                                         }\r
2459                                                                                         else if ( e判定LC != E判定.Miss )\r
2460                                                                                         {\r
2461                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2462                                                                                                 flag = true;\r
2463                                                                                         }\r
2464                                                                                         if ( !flag )\r
2465                                                                                                 break;\r
2466                                                                                         continue;\r
2467                                                                                 //-----------------------------\r
2468                                                                                         #endregion\r
2469 \r
2470                                                                                 case EHHGroup.左シンバルのみ打ち分ける:\r
2471                                                                                         #region [ *** ]\r
2472                                                                                         //-----------------------------\r
2473                                                                                         if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
2474                                                                                         {\r
2475                                                                                                 if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
2476                                                                                                 {\r
2477                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2478                                                                                                 }\r
2479                                                                                                 else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
2480                                                                                                 {\r
2481                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2482                                                                                                 }\r
2483                                                                                                 else\r
2484                                                                                                 {\r
2485                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2486                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2487                                                                                                 }\r
2488                                                                                                 flag = true;\r
2489                                                                                         }\r
2490                                                                                         else if ( e判定HC != E判定.Miss )\r
2491                                                                                         {\r
2492                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2493                                                                                                 flag = true;\r
2494                                                                                         }\r
2495                                                                                         else if ( e判定HO != E判定.Miss )\r
2496                                                                                         {\r
2497                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2498                                                                                                 flag = true;\r
2499                                                                                         }\r
2500                                                                                         if ( !flag )\r
2501                                                                                                 break;\r
2502                                                                                         continue;\r
2503                                                                                 //-----------------------------\r
2504                                                                                         #endregion\r
2505 \r
2506                                                                                 case EHHGroup.全部共通:\r
2507                                                                                         #region [ *** ]\r
2508                                                                                         //-----------------------------\r
2509                                                                                         if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
2510                                                                                         {\r
2511                                                                                                 CDTX.CChip chip4;\r
2512                                                                                                 CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
2513                                                                                                 if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
2514                                                                                                 {\r
2515                                                                                                         chip4 = chipArray[ 1 ];\r
2516                                                                                                         chipArray[ 1 ] = chipArray[ 2 ];\r
2517                                                                                                         chipArray[ 2 ] = chip4;\r
2518                                                                                                 }\r
2519                                                                                                 if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
2520                                                                                                 {\r
2521                                                                                                         chip4 = chipArray[ 0 ];\r
2522                                                                                                         chipArray[ 0 ] = chipArray[ 1 ];\r
2523                                                                                                         chipArray[ 1 ] = chip4;\r
2524                                                                                                 }\r
2525                                                                                                 if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
2526                                                                                                 {\r
2527                                                                                                         chip4 = chipArray[ 1 ];\r
2528                                                                                                         chipArray[ 1 ] = chipArray[ 2 ];\r
2529                                                                                                         chipArray[ 2 ] = chip4;\r
2530                                                                                                 }\r
2531                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );\r
2532                                                                                                 if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
2533                                                                                                 {\r
2534                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 1 ], event2.nVelocity );\r
2535                                                                                                 }\r
2536                                                                                                 if ( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )\r
2537                                                                                                 {\r
2538                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );\r
2539                                                                                                 }\r
2540                                                                                                 flag = true;\r
2541                                                                                         }\r
2542                                                                                         else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
2543                                                                                         {\r
2544                                                                                                 if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
2545                                                                                                 {\r
2546                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2547                                                                                                 }\r
2548                                                                                                 else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
2549                                                                                                 {\r
2550                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2551                                                                                                 }\r
2552                                                                                                 else\r
2553                                                                                                 {\r
2554                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2555                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2556                                                                                                 }\r
2557                                                                                                 flag = true;\r
2558                                                                                         }\r
2559                                                                                         else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
2560                                                                                         {\r
2561                                                                                                 if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
2562                                                                                                 {\r
2563                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2564                                                                                                 }\r
2565                                                                                                 else if ( chipHC.n発声位置 > chipLC.n発声位置 )\r
2566                                                                                                 {\r
2567                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2568                                                                                                 }\r
2569                                                                                                 else\r
2570                                                                                                 {\r
2571                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2572                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2573                                                                                                 }\r
2574                                                                                                 flag = true;\r
2575                                                                                         }\r
2576                                                                                         else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
2577                                                                                         {\r
2578                                                                                                 if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
2579                                                                                                 {\r
2580                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2581                                                                                                 }\r
2582                                                                                                 else if ( chipHO.n発声位置 > chipLC.n発声位置 )\r
2583                                                                                                 {\r
2584                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2585                                                                                                 }\r
2586                                                                                                 else\r
2587                                                                                                 {\r
2588                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2589                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2590                                                                                                 }\r
2591                                                                                                 flag = true;\r
2592                                                                                         }\r
2593                                                                                         else if ( e判定HC != E判定.Miss )\r
2594                                                                                         {\r
2595                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2596                                                                                                 flag = true;\r
2597                                                                                         }\r
2598                                                                                         else if ( e判定HO != E判定.Miss )\r
2599                                                                                         {\r
2600                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
2601                                                                                                 flag = true;\r
2602                                                                                         }\r
2603                                                                                         else if ( e判定LC != E判定.Miss )\r
2604                                                                                         {\r
2605                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
2606                                                                                                 flag = true;\r
2607                                                                                         }\r
2608                                                                                         if ( !flag )\r
2609                                                                                                 break;\r
2610                                                                                         continue;\r
2611                                                                                 //-----------------------------\r
2612                                                                                         #endregion\r
2613 \r
2614                                                                                 default:\r
2615                                                                                         #region [ *** ]\r
2616                                                                                         //-----------------------------\r
2617                                                                                         if ( e判定HC != E判定.Miss )\r
2618                                                                                         {\r
2619                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
2620                                                                                                 flag = true;\r
2621                                                                                         }\r
2622                                                                                         if ( !flag )\r
2623                                                                                                 break;\r
2624                                                                                         continue;\r
2625                                                                                 //-----------------------------\r
2626                                                                                         #endregion\r
2627                                                                         }\r
2628                                                                         if ( !flag )\r
2629                                                                                 break;\r
2630                                                                         continue;\r
2631                                                                 }\r
2632                                                         //-----------------------------\r
2633                                                                 #endregion\r
2634 \r
2635                                                         case Eパッド.SD:\r
2636                                                                 #region [ *** ]\r
2637                                                                 //-----------------------------\r
2638                                                                 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.SD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
2639                                                                         continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2640                                                                 if( !this.tドラムヒット処理(nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip(nTime, 0x12, nInputAdjustTime ), event2.nVelocity ) )\r
2641                                                                         break;\r
2642                                                                 continue;\r
2643                                                         //-----------------------------\r
2644                                                                 #endregion\r
2645 \r
2646                                                         case Eパッド.BD:\r
2647                                                                 #region [ *** ]\r
2648                                                                 //-----------------------------\r
2649                                                                 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.BD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
2650                                                                         continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2651                                                                 if ( !this.tドラムヒット処理( nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip( nTime, 0x13, nInputAdjustTime ), event2.nVelocity ) )\r
2652                                                                         break;\r
2653                                                                 continue;\r
2654                                                         //-----------------------------\r
2655                                                                 #endregion\r
2656 \r
2657                                                         case Eパッド.HT:\r
2658                                                                 #region [ *** ]\r
2659                                                                 //-----------------------------\r
2660                                                                 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HT)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
2661                                                                         continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2662                                                                 if ( this.tドラムヒット処理( nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip( nTime, 20, nInputAdjustTime ), event2.nVelocity ) )\r
2663                                                                         continue;\r
2664                                                                 break;\r
2665                                                         //-----------------------------\r
2666                                                                 #endregion\r
2667 \r
2668                                                         case Eパッド.LT:\r
2669                                                                 #region [ *** ]\r
2670                                                                 //-----------------------------\r
2671                                                                 {\r
2672                                                                         if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LT )  // #23857 2010.12.12 yyagi: to support VelocityMin\r
2673                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2674                                                                         CDTX.CChip chipLT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15, nInputAdjustTime ); // LT\r
2675                                                                         CDTX.CChip chipFT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17, nInputAdjustTime ); // FT\r
2676                                                                         E判定 e判定LT = ( chipLT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLT, nInputAdjustTime ) : E判定.Miss;\r
2677                                                                         E判定 e判定FT = ( chipFT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipFT, nInputAdjustTime ) : E判定.Miss;\r
2678                                                                         switch ( eFTGroup )\r
2679                                                                         {\r
2680                                                                                 case EFTGroup.打ち分ける:\r
2681                                                                                         #region [ *** ]\r
2682                                                                                         //-----------------------------\r
2683                                                                                         if ( e判定LT != E判定.Miss )\r
2684                                                                                         {\r
2685                                                                                                 this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
2686                                                                                                 flag = true;\r
2687                                                                                         }\r
2688                                                                                         break;\r
2689                                                                                 //-----------------------------\r
2690                                                                                         #endregion\r
2691 \r
2692                                                                                 case EFTGroup.共通:\r
2693                                                                                         #region [ *** ]\r
2694                                                                                         //-----------------------------\r
2695                                                                                         if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
2696                                                                                         {\r
2697                                                                                                 if ( chipLT.n発声位置 < chipFT.n発声位置 )\r
2698                                                                                                 {\r
2699                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
2700                                                                                                 }\r
2701                                                                                                 else if ( chipLT.n発声位置 > chipFT.n発声位置 )\r
2702                                                                                                 {\r
2703                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
2704                                                                                                 }\r
2705                                                                                                 else\r
2706                                                                                                 {\r
2707                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
2708                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
2709                                                                                                 }\r
2710                                                                                                 flag = true;\r
2711                                                                                         }\r
2712                                                                                         else if ( e判定LT != E判定.Miss )\r
2713                                                                                         {\r
2714                                                                                                 this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
2715                                                                                                 flag = true;\r
2716                                                                                         }\r
2717                                                                                         else if ( e判定FT != E判定.Miss )\r
2718                                                                                         {\r
2719                                                                                                 this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
2720                                                                                                 flag = true;\r
2721                                                                                         }\r
2722                                                                                         break;\r
2723                                                                                 //-----------------------------\r
2724                                                                                         #endregion\r
2725                                                                         }\r
2726                                                                         if ( !flag )\r
2727                                                                                 break;\r
2728                                                                         continue;\r
2729                                                                 }\r
2730                                                         //-----------------------------\r
2731                                                                 #endregion\r
2732 \r
2733                                                         case Eパッド.FT:\r
2734                                                                 #region [ *** ]\r
2735                                                                 //-----------------------------\r
2736                                                                 {\r
2737                                                                         if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.FT )  // #23857 2010.12.12 yyagi: to support VelocityMin\r
2738                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2739                                                                         CDTX.CChip chipLT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15, nInputAdjustTime ); // LT\r
2740                                                                         CDTX.CChip chipFT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17, nInputAdjustTime ); // FT\r
2741                                                                         E判定 e判定LT = ( chipLT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLT, nInputAdjustTime ) : E判定.Miss;\r
2742                                                                         E判定 e判定FT = ( chipFT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipFT, nInputAdjustTime ) : E判定.Miss;\r
2743                                                                         switch ( eFTGroup )\r
2744                                                                         {\r
2745                                                                                 case EFTGroup.打ち分ける:\r
2746                                                                                         #region [ *** ]\r
2747                                                                                         //-----------------------------\r
2748                                                                                         if ( e判定FT != E判定.Miss )\r
2749                                                                                         {\r
2750                                                                                                 this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
2751                                                                                                 flag = true;\r
2752                                                                                         }\r
2753                                                                                         //-----------------------------\r
2754                                                                                         #endregion\r
2755                                                                                         break;\r
2756 \r
2757                                                                                 case EFTGroup.共通:\r
2758                                                                                         #region [ *** ]\r
2759                                                                                         //-----------------------------\r
2760                                                                                         if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
2761                                                                                         {\r
2762                                                                                                 if ( chipLT.n発声位置 < chipFT.n発声位置 )\r
2763                                                                                                 {\r
2764                                                                                                         this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
2765                                                                                                 }\r
2766                                                                                                 else if ( chipLT.n発声位置 > chipFT.n発声位置 )\r
2767                                                                                                 {\r
2768                                                                                                         this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
2769                                                                                                 }\r
2770                                                                                                 else\r
2771                                                                                                 {\r
2772                                                                                                         this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
2773                                                                                                         this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
2774                                                                                                 }\r
2775                                                                                                 flag = true;\r
2776                                                                                         }\r
2777                                                                                         else if ( e判定LT != E判定.Miss )\r
2778                                                                                         {\r
2779                                                                                                 this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
2780                                                                                                 flag = true;\r
2781                                                                                         }\r
2782                                                                                         else if ( e判定FT != E判定.Miss )\r
2783                                                                                         {\r
2784                                                                                                 this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
2785                                                                                                 flag = true;\r
2786                                                                                         }\r
2787                                                                                         //-----------------------------\r
2788                                                                                         #endregion\r
2789                                                                                         break;\r
2790                                                                         }\r
2791                                                                         if ( !flag )\r
2792                                                                                 break;\r
2793                                                                         continue;\r
2794                                                                 }\r
2795                                                         //-----------------------------\r
2796                                                                 #endregion\r
2797 \r
2798                                                         case Eパッド.CY:\r
2799                                                                 #region [ *** ]\r
2800                                                                 //-----------------------------\r
2801                                                                 {\r
2802                                                                         if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.CY)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
2803                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2804                                                                         CDTX.CChip chipCY = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ); // CY\r
2805                                                                         CDTX.CChip chipRD = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ); // RD\r
2806                                                                         CDTX.CChip chipLC = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ) : null;\r
2807                                                                         E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
2808                                                                         E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
2809                                                                         E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
2810                                                                         CDTX.CChip[] chipArray4 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
2811                                                                         E判定[] e判定Array2 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
2812                                                                         num8 = 0;\r
2813                                                                         while( num8 < 2 )\r
2814                                                                         {\r
2815                                                                                 num9 = 2;\r
2816                                                                                 while( num9 > num8 )\r
2817                                                                                 {\r
2818                                                                                         if( ( chipArray4[ num9 - 1 ] == null ) || ( ( chipArray4[ num9 ] != null ) && ( chipArray4[ num9 - 1 ].n発声位置 > chipArray4[ num9 ].n発声位置 ) ) )\r
2819                                                                                         {\r
2820                                                                                                 CDTX.CChip chip22 = chipArray4[ num9 - 1 ];\r
2821                                                                                                 chipArray4[ num9 - 1 ] = chipArray4[ num9 ];\r
2822                                                                                                 chipArray4[ num9 ] = chip22;\r
2823                                                                                                 E判定 e判定20 = e判定Array2[ num9 - 1 ];\r
2824                                                                                                 e判定Array2[ num9 - 1 ] = e判定Array2[ num9 ];\r
2825                                                                                                 e判定Array2[ num9 ] = e判定20;\r
2826                                                                                         }\r
2827                                                                                         num9--;\r
2828                                                                                 }\r
2829                                                                                 num8++;\r
2830                                                                         }\r
2831                                                                         switch( eCYGroup )\r
2832                                                                         {\r
2833                                                                                 case ECYGroup.打ち分ける:\r
2834                                                                                         if( !CDTXMania.ConfigIni.bシンバルフリー )\r
2835                                                                                         {\r
2836                                                                                                 if( e判定CY != E判定.Miss )\r
2837                                                                                                 {\r
2838                                                                                                         this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
2839                                                                                                         flag = true;\r
2840                                                                                                 }\r
2841                                                                                                 if( !flag )\r
2842                                                                                                         break;\r
2843                                                                                                 continue;\r
2844                                                                                         }\r
2845                                                                                         num10 = 0;\r
2846                                                                                         while( num10 < 3 )\r
2847                                                                                         {\r
2848                                                                                                 if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chipCY ) || ( chipArray4[ num10 ] == chipLC ) ) )\r
2849                                                                                                 {\r
2850                                                                                                         this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num10 ], event2.nVelocity );\r
2851                                                                                                         flag = true;\r
2852                                                                                                         break;\r
2853                                                                                                 }\r
2854                                                                                                 num10++;\r
2855                                                                                         }\r
2856                                                                                         if( e判定CY != E判定.Miss )\r
2857                                                                                         {\r
2858                                                                                                 this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
2859                                                                                                 flag = true;\r
2860                                                                                         }\r
2861                                                                                         if( !flag )\r
2862                                                                                                 break;\r
2863                                                                                         continue;\r
2864 \r
2865                                                                                 case ECYGroup.共通:\r
2866                                                                                         if( !CDTXMania.ConfigIni.bシンバルフリー )\r
2867                                                                                         {\r
2868                                                                                                 num12 = 0;\r
2869                                                                                                 while( num12 < 3 )\r
2870                                                                                                 {\r
2871                                                                                                         if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chipCY ) || ( chipArray4[ num12 ] == chipRD ) ) )\r
2872                                                                                                         {\r
2873                                                                                                                 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num12 ], event2.nVelocity );\r
2874                                                                                                                 flag = true;\r
2875                                                                                                                 break;\r
2876                                                                                                         }\r
2877                                                                                                         num12++;\r
2878                                                                                                 }\r
2879                                                                                                 if( !flag )\r
2880                                                                                                         break;\r
2881                                                                                                 continue;\r
2882                                                                                         }\r
2883                                                                                         num11 = 0;\r
2884                                                                                         while( num11 < 3 )\r
2885                                                                                         {\r
2886                                                                                                 if( e判定Array2[ num11 ] != E判定.Miss )\r
2887                                                                                                 {\r
2888                                                                                                         this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num11 ], event2.nVelocity );\r
2889                                                                                                         flag = true;\r
2890                                                                                                         break;\r
2891                                                                                                 }\r
2892                                                                                                 num11++;\r
2893                                                                                         }\r
2894                                                                                         if( !flag )\r
2895                                                                                                 break;\r
2896                                                                                         continue;\r
2897                                                                         }\r
2898                                                                         if( !flag )\r
2899                                                                                 break;\r
2900                                                                         continue;\r
2901                                                                 }\r
2902                                                         //-----------------------------\r
2903                                                                 #endregion\r
2904 \r
2905                                                         case Eパッド.HHO:\r
2906                                                                 #region [ *** ]\r
2907                                                                 //-----------------------------\r
2908                                                                 {\r
2909                                                                         if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
2910                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
2911 \r
2912                                                                         CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HC\r
2913                                                                         CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HO\r
2914                                                                         CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC\r
2915                                                                         E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;\r
2916                                                                         E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;\r
2917                                                                         E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
2918                                                                         switch ( eHHGroup )\r
2919                                                                         {\r
2920                                                                                 case EHHGroup.全部打ち分ける:\r
2921                                                                                         if ( e判定HO != E判定.Miss )\r
2922                                                                                         {\r
2923                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2924                                                                                                 flag = true;\r
2925                                                                                         }\r
2926                                                                                         if ( !flag )\r
2927                                                                                                 break;\r
2928                                                                                         continue;\r
2929 \r
2930                                                                                 case EHHGroup.ハイハットのみ打ち分ける:\r
2931                                                                                         if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
2932                                                                                         {\r
2933                                                                                                 if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
2934                                                                                                 {\r
2935                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2936                                                                                                 }\r
2937                                                                                                 else if ( chipHO.n発声位置 > chipLC.n発声位置 )\r
2938                                                                                                 {\r
2939                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
2940                                                                                                 }\r
2941                                                                                                 else\r
2942                                                                                                 {\r
2943                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2944                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
2945                                                                                                 }\r
2946                                                                                                 flag = true;\r
2947                                                                                         }\r
2948                                                                                         else if ( e判定HO != E判定.Miss )\r
2949                                                                                         {\r
2950                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2951                                                                                                 flag = true;\r
2952                                                                                         }\r
2953                                                                                         else if ( e判定LC != E判定.Miss )\r
2954                                                                                         {\r
2955                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
2956                                                                                                 flag = true;\r
2957                                                                                         }\r
2958                                                                                         if ( !flag )\r
2959                                                                                                 break;\r
2960                                                                                         continue;\r
2961 \r
2962                                                                                 case EHHGroup.左シンバルのみ打ち分ける:\r
2963                                                                                         if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
2964                                                                                         {\r
2965                                                                                                 if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
2966                                                                                                 {\r
2967                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
2968                                                                                                 }\r
2969                                                                                                 else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
2970                                                                                                 {\r
2971                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2972                                                                                                 }\r
2973                                                                                                 else\r
2974                                                                                                 {\r
2975                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
2976                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2977                                                                                                 }\r
2978                                                                                                 flag = true;\r
2979                                                                                         }\r
2980                                                                                         else if ( e判定HC != E判定.Miss )\r
2981                                                                                         {\r
2982                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
2983                                                                                                 flag = true;\r
2984                                                                                         }\r
2985                                                                                         else if ( e判定HO != E判定.Miss )\r
2986                                                                                         {\r
2987                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
2988                                                                                                 flag = true;\r
2989                                                                                         }\r
2990                                                                                         if ( !flag )\r
2991                                                                                                 break;\r
2992                                                                                         continue;\r
2993 \r
2994                                                                                 case EHHGroup.全部共通:\r
2995                                                                                         if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
2996                                                                                         {\r
2997                                                                                                 CDTX.CChip chip8;\r
2998                                                                                                 CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
2999                                                                                                 if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
3000                                                                                                 {\r
3001                                                                                                         chip8 = chipArray2[ 1 ];\r
3002                                                                                                         chipArray2[ 1 ] = chipArray2[ 2 ];\r
3003                                                                                                         chipArray2[ 2 ] = chip8;\r
3004                                                                                                 }\r
3005                                                                                                 if ( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )\r
3006                                                                                                 {\r
3007                                                                                                         chip8 = chipArray2[ 0 ];\r
3008                                                                                                         chipArray2[ 0 ] = chipArray2[ 1 ];\r
3009                                                                                                         chipArray2[ 1 ] = chip8;\r
3010                                                                                                 }\r
3011                                                                                                 if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
3012                                                                                                 {\r
3013                                                                                                         chip8 = chipArray2[ 1 ];\r
3014                                                                                                         chipArray2[ 1 ] = chipArray2[ 2 ];\r
3015                                                                                                         chipArray2[ 2 ] = chip8;\r
3016                                                                                                 }\r
3017                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );\r
3018                                                                                                 if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )\r
3019                                                                                                 {\r
3020                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );\r
3021                                                                                                 }\r
3022                                                                                                 if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )\r
3023                                                                                                 {\r
3024                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );\r
3025                                                                                                 }\r
3026                                                                                                 flag = true;\r
3027                                                                                         }\r
3028                                                                                         else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
3029                                                                                         {\r
3030                                                                                                 if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
3031                                                                                                 {\r
3032                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
3033                                                                                                 }\r
3034                                                                                                 else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
3035                                                                                                 {\r
3036                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
3037                                                                                                 }\r
3038                                                                                                 else\r
3039                                                                                                 {\r
3040                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
3041                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
3042                                                                                                 }\r
3043                                                                                                 flag = true;\r
3044                                                                                         }\r
3045                                                                                         else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
3046                                                                                         {\r
3047                                                                                                 if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
3048                                                                                                 {\r
3049                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
3050                                                                                                 }\r
3051                                                                                                 else if ( chipHC.n発声位置 > chipLC.n発声位置 )\r
3052                                                                                                 {\r
3053                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
3054                                                                                                 }\r
3055                                                                                                 else\r
3056                                                                                                 {\r
3057                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
3058                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
3059                                                                                                 }\r
3060                                                                                                 flag = true;\r
3061                                                                                         }\r
3062                                                                                         else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
3063                                                                                         {\r
3064                                                                                                 if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
3065                                                                                                 {\r
3066                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
3067                                                                                                 }\r
3068                                                                                                 else if ( chipHO.n発声位置 > chipLC.n発声位置 )\r
3069                                                                                                 {\r
3070                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
3071                                                                                                 }\r
3072                                                                                                 else\r
3073                                                                                                 {\r
3074                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
3075                                                                                                         this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
3076                                                                                                 }\r
3077                                                                                                 flag = true;\r
3078                                                                                         }\r
3079                                                                                         else if ( e判定HC != E判定.Miss )\r
3080                                                                                         {\r
3081                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
3082                                                                                                 flag = true;\r
3083                                                                                         }\r
3084                                                                                         else if ( e判定HO != E判定.Miss )\r
3085                                                                                         {\r
3086                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
3087                                                                                                 flag = true;\r
3088                                                                                         }\r
3089                                                                                         else if ( e判定LC != E判定.Miss )\r
3090                                                                                         {\r
3091                                                                                                 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
3092                                                                                                 flag = true;\r
3093                                                                                         }\r
3094                                                                                         if ( !flag )\r
3095                                                                                                 break;\r
3096                                                                                         continue;\r
3097                                                                         }\r
3098                                                                         if ( !flag )\r
3099                                                                                 break;\r
3100                                                                         continue;\r
3101                                                                 }\r
3102                                                         //-----------------------------\r
3103                                                                 #endregion\r
3104 \r
3105                                                         case Eパッド.RD:\r
3106                                                                 #region [ *** ]\r
3107                                                                 //-----------------------------\r
3108                                                                 {\r
3109                                                                         if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.RD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
3110                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
3111                                                                         CDTX.CChip chipCY = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ); // CY\r
3112                                                                         CDTX.CChip chipRD = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ); // RD\r
3113                                                                         CDTX.CChip chipLC = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ) : null;\r
3114                                                                         E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
3115                                                                         E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
3116                                                                         E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
3117                                                                         CDTX.CChip[] chipArray5 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
3118                                                                         E判定[] e判定Array3 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
3119                                                                         num13 = 0;\r
3120                                                                         while( num13 < 2 )\r
3121                                                                         {\r
3122                                                                                 num14 = 2;\r
3123                                                                                 while( num14 > num13 )\r
3124                                                                                 {\r
3125                                                                                         if( ( chipArray5[ num14 - 1 ] == null ) || ( ( chipArray5[ num14 ] != null ) && ( chipArray5[ num14 - 1 ].n発声位置 > chipArray5[ num14 ].n発声位置 ) ) )\r
3126                                                                                         {\r
3127                                                                                                 CDTX.CChip chip26 = chipArray5[ num14 - 1 ];\r
3128                                                                                                 chipArray5[ num14 - 1 ] = chipArray5[ num14 ];\r
3129                                                                                                 chipArray5[ num14 ] = chip26;\r
3130                                                                                                 E判定 e判定24 = e判定Array3[ num14 - 1 ];\r
3131                                                                                                 e判定Array3[ num14 - 1 ] = e判定Array3[ num14 ];\r
3132                                                                                                 e判定Array3[ num14 ] = e判定24;\r
3133                                                                                         }\r
3134                                                                                         num14--;\r
3135                                                                                 }\r
3136                                                                                 num13++;\r
3137                                                                         }\r
3138                                                                         switch( eCYGroup )\r
3139                                                                         {\r
3140                                                                                 case ECYGroup.打ち分ける:\r
3141                                                                                         if( e判定RD != E判定.Miss )\r
3142                                                                                         {\r
3143                                                                                                 this.tドラムヒット処理( nTime, Eパッド.RD, chipRD, event2.nVelocity );\r
3144                                                                                                 flag = true;\r
3145                                                                                         }\r
3146                                                                                         break;\r
3147 \r
3148                                                                                 case ECYGroup.共通:\r
3149                                                                                         if( !CDTXMania.ConfigIni.bシンバルフリー )\r
3150                                                                                         {\r
3151                                                                                                 num16 = 0;\r
3152                                                                                                 while( num16 < 3 )\r
3153                                                                                                 {\r
3154                                                                                                         if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chipCY ) || ( chipArray5[ num16 ] == chipRD ) ) )\r
3155                                                                                                         {\r
3156                                                                                                                 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num16 ], event2.nVelocity );\r
3157                                                                                                                 flag = true;\r
3158                                                                                                                 break;\r
3159                                                                                                         }\r
3160                                                                                                         num16++;\r
3161                                                                                                 }\r
3162                                                                                                 break;\r
3163                                                                                         }\r
3164                                                                                         num15 = 0;\r
3165                                                                                         while( num15 < 3 )\r
3166                                                                                         {\r
3167                                                                                                 if( e判定Array3[ num15 ] != E判定.Miss )\r
3168                                                                                                 {\r
3169                                                                                                         this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num15 ], event2.nVelocity );\r
3170                                                                                                         flag = true;\r
3171                                                                                                         break;\r
3172                                                                                                 }\r
3173                                                                                                 num15++;\r
3174                                                                                         }\r
3175                                                                                         break;\r
3176                                                                         }\r
3177                                                                         if( flag )\r
3178                                                                         {\r
3179                                                                                 continue;\r
3180                                                                         }\r
3181                                                                         break;\r
3182                                                                 }\r
3183                                                         //-----------------------------\r
3184                                                                 #endregion\r
3185 \r
3186                                                         case Eパッド.LC:\r
3187                                                                 #region [ *** ]\r
3188                                                                 //-----------------------------\r
3189                                                                 {\r
3190                                                                         if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LC)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
3191                                                                                 continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
3192                                                                         CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HC\r
3193                                                                         CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HO\r
3194                                                                         CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC\r
3195                                                                         CDTX.CChip chipCY = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ) : null;\r
3196                                                                         CDTX.CChip chipRD = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ) : null;\r
3197                                                                         E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;\r
3198                                                                         E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;\r
3199                                                                         E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
3200                                                                         E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
3201                                                                         E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
3202                                                                         CDTX.CChip[] chipArray3 = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
3203                                                                         E判定[]  e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
3204                                                                         num3 = 0;\r
3205                                                                         while( num3 < 4 )\r
3206                                                                         {\r
3207                                                                                 num4 = 4;\r
3208                                                                                 while( num4 > num3 )\r
3209                                                                                 {\r
3210                                                                                         if( ( chipArray3[ num4 - 1 ] == null ) || ( ( chipArray3[ num4 ] != null ) && ( chipArray3[ num4 - 1 ].n発声位置 > chipArray3[ num4 ].n発声位置 ) ) )\r
3211                                                                                         {\r
3212                                                                                                 CDTX.CChip chip14 = chipArray3[ num4 - 1 ];\r
3213                                                                                                 chipArray3[ num4 - 1 ] = chipArray3[ num4 ];\r
3214                                                                                                 chipArray3[ num4 ] = chip14;\r
3215                                                                                                 E判定 e判定12 = e判定Array[ num4 - 1 ];\r
3216                                                                                                 e判定Array[ num4 - 1 ] = e判定Array[ num4 ];\r
3217                                                                                                 e判定Array[ num4 ] = e判定12;\r
3218                                                                                         }\r
3219                                                                                         num4--;\r
3220                                                                                 }\r
3221                                                                                 num3++;\r
3222                                                                         }\r
3223                                                                         switch( eHHGroup )\r
3224                                                                         {\r
3225                                                                                 case EHHGroup.全部打ち分ける:\r
3226                                                                                 case EHHGroup.左シンバルのみ打ち分ける:\r
3227                                                                                         if( !CDTXMania.ConfigIni.bシンバルフリー )\r
3228                                                                                         {\r
3229                                                                                                 if( e判定LC != E判定.Miss )\r
3230                                                                                                 {\r
3231                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LC, chipLC, event2.nVelocity );\r
3232                                                                                                         flag = true;\r
3233                                                                                                 }\r
3234                                                                                                 if( !flag )\r
3235                                                                                                         break;\r
3236                                                                                                 continue;\r
3237                                                                                         }\r
3238                                                                                         num5 = 0;\r
3239                                                                                         while( num5 < 5 )\r
3240                                                                                         {\r
3241                                                                                                 if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chipLC ) || ( chipArray3[ num5 ] == chipCY ) ) || ( ( chipArray3[ num5 ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
3242                                                                                                 {\r
3243                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num5 ], event2.nVelocity );\r
3244                                                                                                         flag = true;\r
3245                                                                                                         break;\r
3246                                                                                                 }\r
3247                                                                                                 num5++;\r
3248                                                                                         }\r
3249                                                                                         if( !flag )\r
3250                                                                                                 break;\r
3251                                                                                         continue;\r
3252 \r
3253                                                                                 case EHHGroup.ハイハットのみ打ち分ける:\r
3254                                                                                 case EHHGroup.全部共通:\r
3255                                                                                         if( !CDTXMania.ConfigIni.bシンバルフリー )\r
3256                                                                                         {\r
3257                                                                                                 num7 = 0;\r
3258                                                                                                 while( num7 < 5 )\r
3259                                                                                                 {\r
3260                                                                                                         if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chipLC ) || ( chipArray3[ num7 ] == chipHC ) ) || ( chipArray3[ num7 ] == chipHO ) ) )\r
3261                                                                                                         {\r
3262                                                                                                                 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num7 ], event2.nVelocity );\r
3263                                                                                                                 flag = true;\r
3264                                                                                                                 break;\r
3265                                                                                                         }\r
3266                                                                                                         num7++;\r
3267                                                                                                 }\r
3268                                                                                                 if( !flag )\r
3269                                                                                                         break;\r
3270                                                                                                 continue;\r
3271                                                                                         }\r
3272                                                                                         num6 = 0;\r
3273                                                                                         while( num6 < 5 )\r
3274                                                                                         {\r
3275                                                                                                 if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
3276                                                                                                 {\r
3277                                                                                                         this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num6 ], event2.nVelocity );\r
3278                                                                                                         flag = true;\r
3279                                                                                                         break;\r
3280                                                                                                 }\r
3281                                                                                                 num6++;\r
3282                                                                                         }\r
3283                                                                                         if( !flag )\r
3284                                                                                                 break;\r
3285                                                                                         continue;\r
3286                                                                         }\r
3287                                                                         if( !flag )\r
3288                                                                                 break;\r
3289 \r
3290                                                                         break;\r
3291                                                                 }\r
3292                                                         //-----------------------------\r
3293                                                                 #endregion\r
3294                                                 }\r
3295                                                 //-----------------------------\r
3296                                                 #endregion\r
3297 \r
3298                                                 #region [ *** ]\r
3299                                                 //-----------------------------\r
3300                                                 this.actLaneFlushD.Start( (Eドラムレーン) this.nパッド0Atoレーン07[ nPad ], ( (float) event2.nVelocity ) / 127f );\r
3301                                                 this.actPad.Hit( this.nパッド0Atoパッド08[ nPad ] );\r
3302                                                 if( !CDTXMania.ConfigIni.bドラム打音を発声する )\r
3303                                                 {\r
3304                                                         if( CDTXMania.ConfigIni.bTight )\r
3305                                                         {\r
3306                                                                 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );\r
3307                                                         }\r
3308                                                         continue;\r
3309                                                 }\r
3310                                                 CDTX.CChip rChip = null;\r
3311                                                 rChip = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) nPad );\r
3312                                                 if( rChip != null )\r
3313                                                 {\r
3314                                                         this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );\r
3315 \r
3316                                                         if( CDTXMania.ConfigIni.bTight )\r
3317                                                         {\r
3318                                                                 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );\r
3319                                                         }\r
3320                                                         continue;\r
3321                                                 }\r
3322                                                 //-----------------------------\r
3323                                                 #endregion\r
3324 \r
3325                                                 #region [ switch( ( (Eパッド) i ) ) ]\r
3326                                                 //-----------------------------\r
3327                                                 switch( ( (Eパッド) nPad ) )\r
3328                                                 {\r
3329                                                         case Eパッド.HH:\r
3330                                                                 #region [ *** ]\r
3331                                                                 //-----------------------------\r
3332                                                                 {\r
3333                                                                         CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );\r
3334                                                                         CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );\r
3335                                                                         CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );\r
3336                                                                         switch ( CDTXMania.ConfigIni.eHHGroup )\r
3337                                                                         {\r
3338                                                                                 case EHHGroup.ハイハットのみ打ち分ける:\r
3339                                                                                         rChip = ( chipHC != null ) ? chipHC : chipLC;\r
3340                                                                                         break;\r
3341 \r
3342                                                                                 case EHHGroup.左シンバルのみ打ち分ける:\r
3343                                                                                         rChip = ( chipHC != null ) ? chipHC : chipHO;\r
3344                                                                                         break;\r
3345 \r
3346                                                                                 case EHHGroup.全部共通:\r
3347                                                                                         if ( chipHC != null )\r
3348                                                                                         {\r
3349                                                                                                 rChip = chipHC;\r
3350                                                                                         }\r
3351                                                                                         else if ( chipHO == null )\r
3352                                                                                         {\r
3353                                                                                                 rChip = chipLC;\r
3354                                                                                         }\r
3355                                                                                         else if ( chipLC == null )\r
3356                                                                                         {\r
3357                                                                                                 rChip = chipHO;\r
3358                                                                                         }\r
3359                                                                                         else if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
3360                                                                                         {\r
3361                                                                                                 rChip = chipHO;\r
3362                                                                                         }\r
3363                                                                                         else\r
3364                                                                                         {\r
3365                                                                                                 rChip = chipLC;\r
3366                                                                                         }\r
3367                                                                                         break;\r
3368 \r
3369                                                                                 default:\r
3370                                                                                         rChip = chipHC;\r
3371                                                                                         break;\r
3372                                                                         }\r
3373                                                                 }\r
3374                                                                 //-----------------------------\r
3375                                                                 #endregion\r
3376                                                                 break;\r
3377 \r
3378                                                         case Eパッド.LT:\r
3379                                                                 #region [ *** ]\r
3380                                                                 //-----------------------------\r
3381                                                                 {\r
3382                                                                         CDTX.CChip chipLT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ], nInputAdjustTime );\r
3383                                                                         CDTX.CChip chipFT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ], nInputAdjustTime );\r
3384                                                                         if ( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )\r
3385                                                                                 rChip = ( chipLT != null ) ? chipLT : chipFT;\r
3386                                                                         else\r
3387                                                                                 rChip = chipLT;\r
3388                                                                 }\r
3389                                                                 //-----------------------------\r
3390                                                                 #endregion\r
3391                                                                 break;\r
3392 \r
3393                                                         case Eパッド.FT:\r
3394                                                                 #region [ *** ]\r
3395                                                                 //-----------------------------\r
3396                                                                 {\r
3397                                                                         CDTX.CChip chipLT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ], nInputAdjustTime );\r
3398                                                                         CDTX.CChip chipFT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ], nInputAdjustTime );\r
3399                                                                         if ( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )\r
3400                                                                                 rChip = ( chipFT != null ) ? chipFT : chipLT;\r
3401                                                                         else\r
3402                                                                                 rChip = chipFT;\r
3403                                                                 }\r
3404                                                                 //-----------------------------\r
3405                                                                 #endregion\r
3406                                                                 break;\r
3407 \r
3408                                                         case Eパッド.CY:\r
3409                                                                 #region [ *** ]\r
3410                                                                 //-----------------------------\r
3411                                                                 {\r
3412                                                                         CDTX.CChip chipCY = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ], nInputAdjustTime );\r
3413                                                                         CDTX.CChip chipRD = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ], nInputAdjustTime );\r
3414                                                                         if ( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )\r
3415                                                                                 rChip = ( chipCY != null ) ? chipCY : chipRD;\r
3416                                                                         else\r
3417                                                                                 rChip = chipCY;\r
3418                                                                 }\r
3419                                                                 //-----------------------------\r
3420                                                                 #endregion\r
3421                                                                 break;\r
3422 \r
3423                                                         case Eパッド.HHO:\r
3424                                                                 #region [ *** ]\r
3425                                                                 //-----------------------------\r
3426                                                                 {\r
3427                                                                         CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );\r
3428                                                                         CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );\r
3429                                                                         CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );\r
3430                                                                         switch ( CDTXMania.ConfigIni.eHHGroup )\r
3431                                                                         {\r
3432                                                                                 case EHHGroup.全部打ち分ける:\r
3433                                                                                         rChip = chipHO;\r
3434                                                                                         break;\r
3435 \r
3436                                                                                 case EHHGroup.ハイハットのみ打ち分ける:\r
3437                                                                                         rChip = ( chipHO != null ) ? chipHO : chipLC;\r
3438                                                                                         break;\r
3439 \r
3440                                                                                 case EHHGroup.左シンバルのみ打ち分ける:\r
3441                                                                                         rChip = ( chipHO != null ) ? chipHO : chipHC;\r
3442                                                                                         break;\r
3443 \r
3444                                                                                 case EHHGroup.全部共通:\r
3445                                                                                         if ( chipHO != null )\r
3446                                                                                         {\r
3447                                                                                                 rChip = chipHO;\r
3448                                                                                         }\r
3449                                                                                         else if ( chipHC == null )\r
3450                                                                                         {\r
3451                                                                                                 rChip = chipLC;\r
3452                                                                                         }\r
3453                                                                                         else if ( chipLC == null )\r
3454                                                                                         {\r
3455                                                                                                 rChip = chipHC;\r
3456                                                                                         }\r
3457                                                                                         else if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
3458                                                                                         {\r
3459                                                                                                 rChip = chipHC;\r
3460                                                                                         }\r
3461                                                                                         else\r
3462                                                                                         {\r
3463                                                                                                 rChip = chipLC;\r
3464                                                                                         }\r
3465                                                                                         break;\r
3466                                                                         }\r
3467                                                                 }\r
3468                                                                 //-----------------------------\r
3469                                                                 #endregion\r
3470                                                                 break;\r
3471 \r
3472                                                         case Eパッド.RD:\r
3473                                                                 #region [ *** ]\r
3474                                                                 //-----------------------------\r
3475                                                                 {\r
3476                                                                         CDTX.CChip chipCY = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ], nInputAdjustTime );\r
3477                                                                         CDTX.CChip chipRD = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ], nInputAdjustTime );\r
3478                                                                         if ( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )\r
3479                                                                                 rChip = ( chipRD != null ) ? chipRD : chipCY;\r
3480                                                                         else\r
3481                                                                                 rChip = chipRD;\r
3482                                                                 }\r
3483                                                                 //-----------------------------\r
3484                                                                 #endregion\r
3485                                                                 break;\r
3486 \r
3487                                                         case Eパッド.LC:\r
3488                                                                 #region [ *** ]\r
3489                                                                 //-----------------------------\r
3490                                                                 {\r
3491                                                                         CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );\r
3492                                                                         CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );\r
3493                                                                         CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );\r
3494                                                                         switch ( CDTXMania.ConfigIni.eHHGroup )\r
3495                                                                         {\r
3496                                                                                 case EHHGroup.全部打ち分ける:\r
3497                                                                                 case EHHGroup.左シンバルのみ打ち分ける:\r
3498                                                                                         rChip = chipLC;\r
3499                                                                                         break;\r
3500 \r
3501                                                                                 case EHHGroup.ハイハットのみ打ち分ける:\r
3502                                                                                 case EHHGroup.全部共通:\r
3503                                                                                         if ( chipLC != null )\r
3504                                                                                         {\r
3505                                                                                                 rChip = chipLC;\r
3506                                                                                         }\r
3507                                                                                         else if ( chipHC == null )\r
3508                                                                                         {\r
3509                                                                                                 rChip = chipHO;\r
3510                                                                                         }\r
3511                                                                                         else if ( chipHO == null )\r
3512                                                                                         {\r
3513                                                                                                 rChip = chipHC;\r
3514                                                                                         }\r
3515                                                                                         else if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
3516                                                                                         {\r
3517                                                                                                 rChip = chipHC;\r
3518                                                                                         }\r
3519                                                                                         else\r
3520                                                                                         {\r
3521                                                                                                 rChip = chipHO;\r
3522                                                                                         }\r
3523                                                                                         break;\r
3524                                                                         }\r
3525                                                                 }\r
3526                                                                 //-----------------------------\r
3527                                                                 #endregion\r
3528                                                                 break;\r
3529 \r
3530                                                         default:\r
3531                                                                 #region [ *** ]\r
3532                                                                 //-----------------------------\r
3533                                                                 rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ nPad ], nInputAdjustTime );\r
3534                                                                 //-----------------------------\r
3535                                                                 #endregion\r
3536                                                                 break;\r
3537                                                 }\r
3538                                                 //-----------------------------\r
3539                                                 #endregion\r
3540 \r
3541                                                 #region [ *** ]\r
3542                                                 //-----------------------------\r
3543                                                 if( rChip != null )\r
3544                                                 {\r
3545                                                         this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );\r
3546                                                 }\r
3547                                                 if( CDTXMania.ConfigIni.bTight )\r
3548                                                 {\r
3549                                                         this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );\r
3550                                                 }\r
3551                                                 //-----------------------------\r
3552                                                 #endregion\r
3553                                                 continue;\r
3554                                         }\r
3555                                 }\r
3556                         }\r
3557                 }\r
3558                 //protected override void t入力処理・ベース()\r
3559                 //{\r
3560                 //    if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )\r
3561                 //    {\r
3562                 //        CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );\r
3563                 //    }\r
3564                 //    if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.R ) )\r
3565                 //    {\r
3566                 //        CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );\r
3567                 //    }\r
3568 \r
3569                 //    if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )\r
3570                 //    {\r
3571                 //        if( bIsAutoPlay.Bass )\r
3572                 //        {\r
3573                 //            CDTX.CChip chip = this.r次にくるベースChipを更新して返す();\r
3574                 //            if( chip != null )\r
3575                 //            {\r
3576                 //                if( ( chip.nチャンネル番号 & 4 ) != 0 )\r
3577                 //                {\r
3578                 //                    this.actLaneFlushGB.Start( 3 );\r
3579                 //                    this.actRGB.Push( 3 );\r
3580                 //                }\r
3581                 //                if( ( chip.nチャンネル番号 & 2 ) != 0 )\r
3582                 //                {\r
3583                 //                    this.actLaneFlushGB.Start( 4 );\r
3584                 //                    this.actRGB.Push( 4 );\r
3585                 //                }\r
3586                 //                if( ( chip.nチャンネル番号 & 1 ) != 0 )\r
3587                 //                {\r
3588                 //                    this.actLaneFlushGB.Start( 5 );\r
3589                 //                    this.actRGB.Push( 5 );\r
3590                 //                }\r
3591                 //            }\r
3592                 //        }\r
3593                 //        else\r
3594                 //        {\r
3595                 //            int flagR = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.R ) ? 4 : 0;\r
3596                 //            this.t入力メソッド記憶( E楽器パート.BASS );\r
3597                 //            int flagG = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.G ) ? 2 : 0;\r
3598                 //            this.t入力メソッド記憶( E楽器パート.BASS );\r
3599                 //            int flagB = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.B ) ? 1 : 0;\r
3600                 //            this.t入力メソッド記憶( E楽器パート.BASS );\r
3601                 //            int flagRGB = flagR | flagG | flagB;\r
3602                 //            if( flagR != 0 )\r
3603                 //            {\r
3604                 //                this.actLaneFlushGB.Start( 3 );\r
3605                 //                this.actRGB.Push( 3 );\r
3606                 //            }\r
3607                 //            if( flagG != 0 )\r
3608                 //            {\r
3609                 //                this.actLaneFlushGB.Start( 4 );\r
3610                 //                this.actRGB.Push( 4 );\r
3611                 //            }\r
3612                 //            if( flagB != 0 )\r
3613                 //            {\r
3614                 //                this.actLaneFlushGB.Start( 5 );\r
3615                 //                this.actRGB.Push( 5 );\r
3616                 //            }\r
3617                 //            List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Pick );\r
3618                 //            if( ( events != null ) && ( events.Count > 0 ) )\r
3619                 //            {\r
3620                 //                foreach( STInputEvent event2 in events )\r
3621                 //                {\r
3622                 //                    CDTX.CChip chip4;\r
3623                 //                    if( !event2.b押された )\r
3624                 //                    {\r
3625                 //                        continue;\r
3626                 //                    }\r
3627                 //                    this.t入力メソッド記憶( E楽器パート.BASS );\r
3628                 //                    long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
3629                 //                    CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf, this.nInputAdjustTimeMs.Bass );\r
3630                 //                    E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs.Bass );\r
3631                 //                    if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == flagRGB ) ) && ( e判定 != E判定.Miss ) )\r
3632                 //                    {\r
3633                 //                        if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
3634                 //                        {\r
3635                 //                            this.actChipFireGB.Start( 3 );\r
3636                 //                        }\r
3637                 //                        if( ( flagG != 0 ) || ( flagRGB == 0 ) )\r
3638                 //                        {\r
3639                 //                            this.actChipFireGB.Start( 4 );\r
3640                 //                        }\r
3641                 //                        if( ( flagB != 0 ) || ( flagRGB == 0 ) )\r
3642                 //                        {\r
3643                 //                            this.actChipFireGB.Start( 5 );\r
3644                 //                        }\r
3645                 //                        this.tチップのヒット処理( nTime, pChip );\r
3646                 //                        this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, e判定 == E判定.Poor );\r
3647                 //                        CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, this.nInputAdjustTimeMs.Bass, 140 );\r
3648                 //                        if( item != null )\r
3649                 //                        {\r
3650                 //                            this.queWailing.Bass.Enqueue( item );\r
3651                 //                        }\r
3652                 //                        continue;\r
3653                 //                    }\r
3654                 //                    if ( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
3655                 //                    {\r
3656                 //                        this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
3657                 //                    }\r
3658                 //                    if( !CDTXMania.ConfigIni.bLight.Bass )\r
3659                 //                    {\r
3660                 //                        this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.BASS );\r
3661                 //                    }\r
3662                 //                }\r
3663                 //            }\r
3664                 //            List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
3665                 //            if( ( list2 != null ) && ( list2.Count > 0 ) )\r
3666                 //            {\r
3667                 //                foreach( STInputEvent event3 in list2 )\r
3668                 //                {\r
3669                 //                    CDTX.CChip chip5;\r
3670                 //                    if( !event3.b押された )\r
3671                 //                    {\r
3672                 //                        continue;\r
3673                 //                    }\r
3674                 //                    long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
3675                 //                    while( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )\r
3676                 //                    {\r
3677                 //                        if( ( num6 - chip5.n発声時刻ms ) <= 1000 )                // #24245 2011.1.26 yyagi: 800 -> 1000\r
3678                 //                        {\r
3679                 //                            chip5.bHit = true;\r
3680                 //                            this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
3681                 //                            if( !bIsAutoPlay.Bass )\r
3682                 //                            {\r
3683                 //                                int nCombo = ( this.actCombo.n現在のコンボ数.Bass < 500 ) ? this.actCombo.n現在のコンボ数.Bass : 500;\r
3684                 //                                this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( nCombo * 3000L ) );          // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions\r
3685                 //                            }\r
3686                 //                        }\r
3687                 //                    }\r
3688                 //                }\r
3689                 //            }\r
3690                 //        }\r
3691                 //    }\r
3692                 //}\r
3693 \r
3694                 protected override void t背景テクスチャの生成()\r
3695                 {\r
3696                         Rectangle bgrect = new Rectangle( 338, 57, 278, 355 );\r
3697                         string DefaultBgFilename = @"Graphics\ScreenPlayDrums background.jpg";\r
3698                         string BgFilename = "";\r
3699                         if ( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )\r
3700                         {\r
3701                                 BgFilename = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;\r
3702                         }\r
3703                         base.t背景テクスチャの生成( DefaultBgFilename, bgrect, BgFilename );\r
3704                 }\r
3705                 //private void t背景テクスチャの生成()\r
3706                 //{\r
3707                 //    Bitmap image = null;\r
3708                 //    string path = "";\r
3709                 //    bool flag = true;\r
3710                 //    if( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )\r
3711                 //    {\r
3712                 //        path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;\r
3713                 //        if( File.Exists( path ) )\r
3714                 //        {\r
3715                 //            try\r
3716                 //            {\r
3717                 //                Bitmap bitmap2 = null;\r
3718                 //                bitmap2 = new Bitmap( path );\r
3719                 //                if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )\r
3720                 //                {\r
3721                 //                    this.tx背景 = null;\r
3722                 //                    return;\r
3723                 //                }\r
3724                 //                Bitmap bitmap3 = new Bitmap( 640, 480 );\r
3725                 //                Graphics graphics = Graphics.FromImage( bitmap3 );\r
3726                 //                for( int i = 0; i < 480; i += bitmap2.Size.Height )\r
3727                 //                {\r
3728                 //                    for( int j = 0; j < 640; j += bitmap2.Size.Width )\r
3729                 //                    {\r
3730                 //                        graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );\r
3731                 //                    }\r
3732                 //                }\r
3733                 //                graphics.Dispose();\r
3734                 //                bitmap2.Dispose();\r
3735                 //                image = new Bitmap( CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" ) );\r
3736                 //                graphics = Graphics.FromImage( image );\r
3737                 //                ColorMatrix matrix2 = new ColorMatrix();\r
3738                 //                matrix2.Matrix00 = 1f;\r
3739                 //                matrix2.Matrix11 = 1f;\r
3740                 //                matrix2.Matrix22 = 1f;\r
3741                 //                matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;\r
3742                 //                matrix2.Matrix44 = 1f;\r
3743                 //                ColorMatrix newColorMatrix = matrix2;\r
3744                 //                ImageAttributes imageAttr = new ImageAttributes();\r
3745                 //                imageAttr.SetColorMatrix( newColorMatrix );\r
3746                 //                graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );\r
3747                 //                imageAttr.Dispose();\r
3748                 //                graphics.DrawImage( bitmap3, new Rectangle( 0x152, 0x39, 0x116, 0x163 ), 0x152, 0x39, 0x116, 0x163, GraphicsUnit.Pixel );\r
3749                 //                graphics.Dispose();\r
3750                 //                bitmap3.Dispose();\r
3751                 //                flag = false;\r
3752                 //            }\r
3753                 //            catch\r
3754                 //            {\r
3755                 //                Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
3756                 //            }\r
3757                 //        }\r
3758                 //    }\r
3759                 //    if( flag )\r
3760                 //    {\r
3761                 //        path = CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" );\r
3762                 //        try\r
3763                 //        {\r
3764                 //            image = new Bitmap( path );\r
3765                 //        }\r
3766                 //        catch\r
3767                 //        {\r
3768                 //            Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
3769                 //            this.tx背景 = null;\r
3770                 //            return;\r
3771                 //        }\r
3772                 //    }\r
3773                 //    if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )\r
3774                 //    {\r
3775                 //        Graphics graphics2 = Graphics.FromImage( image );\r
3776                 //        graphics2.FillRectangle( Brushes.Black, 0x152, 0x39, 0x116, 0x163 );\r
3777                 //        graphics2.Dispose();\r
3778                 //    }\r
3779                 //    try\r
3780                 //    {\r
3781                 //        this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
3782                 //    }\r
3783                 //    catch( CTextureCreateFailedException )\r
3784                 //    {\r
3785                 //        Trace.TraceError( "背景テクスチャの生成に失敗しました。" );\r
3786                 //        this.tx背景 = null;\r
3787                 //    }\r
3788                 //    image.Dispose();\r
3789                 //}\r
3790 \r
3791 \r
3792 //#if true              // DAMAGELEVELTUNING\r
3793 //        // ----------------------------------\r
3794 //        public float[,] fDamageGaugeDelta = {                 // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
3795 //            // drums,   guitar,  bass\r
3796 //            {  0.004f,  0.006f,  0.006f  },\r
3797 //            {  0.002f,  0.003f,  0.003f  },\r
3798 //            {  0.000f,  0.000f,  0.000f  },\r
3799 //            { -0.020f, -0.030f,       -0.030f  },\r
3800 //            { -0.050f, -0.050f, -0.050f  }\r
3801 //        };\r
3802 //        public float[] fDamageLevelFactor = {\r
3803 //            0.5f, 1.0f, 1.5f\r
3804 //        };\r
3805 //        // ----------------------------------\r
3806 //#endif\r
3807 \r
3808 //        private void t判定にあわせてゲージを増減する( E楽器パート part, E判定 e今回の判定 )\r
3809 //        {\r
3810 //            double fDamage;\r
3811 \r
3812 //#if true      // DAMAGELEVELTUNING\r
3813 //            switch (e今回の判定)\r
3814 //            {\r
3815 //                case E判定.Perfect:\r
3816 //                case E判定.Great:\r
3817 //                case E判定.Good:\r
3818 //                case E判定.Poor:\r
3819 //                    fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
3820 //                    break;\r
3821 //                case E判定.Miss:\r
3822 //                    fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
3823 //                    switch (CDTXMania.ConfigIni.eダメージレベル)\r
3824 //                    {\r
3825 //                        case Eダメージレベル.少ない:\r
3826 //                        case Eダメージレベル.普通:\r
3827 //                        case Eダメージレベル.大きい:\r
3828 //                            fDamage *= fDamageLevelFactor[(int)CDTXMania.ConfigIni.eダメージレベル];\r
3829 //                            break;\r
3830 //                    }\r
3831 //                    break;\r
3832 \r
3833 //                default:\r
3834 //                    fDamage = 0.0f;\r
3835 //                    break;\r
3836 //            }\r
3837 //#else                                                                                                 // before applying #23625 modifications\r
3838 //            switch (e今回の判定)\r
3839 //            {\r
3840 //                case E判定.Perfect:\r
3841 //                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;\r
3842 //                    break;\r
3843 \r
3844 //                case E判定.Great:\r
3845 //                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;\r
3846 //                    break;\r
3847 \r
3848 //                case E判定.Good:\r
3849 //                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;\r
3850 //                    break;\r
3851 \r
3852 //                case E判定.Poor:\r
3853 //                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;\r
3854 //                    break;\r
3855 \r
3856 //                case E判定.Miss:\r
3857 //                    fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;\r
3858 //                    switch( CDTXMania.ConfigIni.eダメージレベル )\r
3859 //                    {\r
3860 //                        case Eダメージレベル.少ない:\r
3861 //                            fDamage *= 0.6;\r
3862 //                            break;\r
3863 \r
3864 //                        case Eダメージレベル.普通:\r
3865 //                            fDamage *= 1.0;\r
3866 //                            break;\r
3867 \r
3868 //                        case Eダメージレベル.大きい:\r
3869 //                            fDamage *= 1.6;\r
3870 //                            break;\r
3871 //                    }\r
3872 //                    break;\r
3873 \r
3874 //                default:\r
3875 //                    fDamage = 0.0;\r
3876 //                    break;\r
3877 //            }\r
3878 //#endif\r
3879 //            this.actGauge.db現在のゲージ値 += fDamage;\r
3880 \r
3881 //            if( this.actGauge.db現在のゲージ値 > 1.0 )\r
3882 //                this.actGauge.db現在のゲージ値 = 1.0;\r
3883 //        }\r
3884                 //-----------------\r
3885 \r
3886                 protected override void t進行描画・チップ・ドラムス( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
3887                 {\r
3888                         if ( configIni.bDrums有効 )\r
3889                         {\r
3890                                 if ( configIni.bSudden.Drums )\r
3891                                 {\r
3892                                         if ( pChip.nバーからの距離dot.Drums < 200 )\r
3893                                         {\r
3894                                                 pChip.b可視 = true;\r
3895                                                 pChip.n透明度 = 0xff;\r
3896                                         }\r
3897                                         else if ( pChip.nバーからの距離dot.Drums < 250 )\r
3898                                         {\r
3899                                                 pChip.b可視 = true;\r
3900                                                 pChip.n透明度 = 0xff - ( (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 200 ) ) * 255.0 ) / 50.0 ) );\r
3901                                         }\r
3902                                         else\r
3903                                         {\r
3904                                                 pChip.b可視 = false;\r
3905                                                 pChip.n透明度 = 0;\r
3906                                         }\r
3907                                 }\r
3908                                 if ( configIni.bHidden.Drums )\r
3909                                 {\r
3910                                         if ( pChip.nバーからの距離dot.Drums < 100 )\r
3911                                         {\r
3912                                                 pChip.b可視 = false;\r
3913                                         }\r
3914                                         else if ( pChip.nバーからの距離dot.Drums < 150 )\r
3915                                         {\r
3916                                                 pChip.b可視 = true;\r
3917                                                 pChip.n透明度 = (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 100 ) ) * 255.0 ) / 50.0 );\r
3918                                         }\r
3919                                 }\r
3920                                 if ( !pChip.bHit && pChip.b可視 )\r
3921                                 {\r
3922                                         if ( this.txチップ != null )\r
3923                                         {\r
3924                                                 this.txチップ.n透明度 = pChip.n透明度;\r
3925                                         }\r
3926                                         int x = this.nチャンネルtoX座標[ pChip.nチャンネル番号 - 0x11 ];\r
3927                                         int num8 = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );\r
3928                                         if ( this.txチップ != null )\r
3929                                         {\r
3930                                                 this.txチップ.vc拡大縮小倍率 = new Vector3( (float) pChip.dbチップサイズ倍率, (float) pChip.dbチップサイズ倍率, 1f );\r
3931                                         }\r
3932                                         int num9 = this.ctチップ模様アニメ.Drums.n現在の値;\r
3933                                         switch ( pChip.nチャンネル番号 )\r
3934                                         {\r
3935                                                 case 0x11:\r
3936                                                         x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3937                                                         if ( this.txチップ != null )\r
3938                                                         {\r
3939                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );\r
3940                                                         }\r
3941                                                         break;\r
3942 \r
3943                                                 case 0x12:\r
3944                                                         x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3945                                                         if ( this.txチップ != null )\r
3946                                                         {\r
3947                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );\r
3948                                                         }\r
3949                                                         break;\r
3950 \r
3951                                                 case 0x13:\r
3952                                                         x = ( x + 0x16 ) - ( (int) ( ( 44.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3953                                                         if ( this.txチップ != null )\r
3954                                                         {\r
3955                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );\r
3956                                                         }\r
3957                                                         break;\r
3958 \r
3959                                                 case 0x14:\r
3960                                                         x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3961                                                         if ( this.txチップ != null )\r
3962                                                         {\r
3963                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );\r
3964                                                         }\r
3965                                                         break;\r
3966 \r
3967                                                 case 0x15:\r
3968                                                         x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3969                                                         if ( this.txチップ != null )\r
3970                                                         {\r
3971                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );\r
3972                                                         }\r
3973                                                         break;\r
3974 \r
3975                                                 case 0x16:\r
3976                                                         x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3977                                                         if ( this.txチップ != null )\r
3978                                                         {\r
3979                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
3980                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
3981                                                         }\r
3982                                                         break;\r
3983 \r
3984                                                 case 0x17:\r
3985                                                         x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3986                                                         if ( this.txチップ != null )\r
3987                                                         {\r
3988                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );\r
3989                                                         }\r
3990                                                         break;\r
3991 \r
3992                                                 case 0x18:\r
3993                                                         x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
3994                                                         if ( this.txチップ != null )\r
3995                                                         {\r
3996                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
3997                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
3998                                                         }\r
3999                                                         break;\r
4000 \r
4001                                                 case 0x19:\r
4002                                                         x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
4003                                                         if ( this.txチップ != null )\r
4004                                                         {\r
4005                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
4006                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
4007                                                         }\r
4008                                                         break;\r
4009 \r
4010                                                 case 0x1a:\r
4011                                                         x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
4012                                                         if ( this.txチップ != null )\r
4013                                                         {\r
4014                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
4015                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
4016                                                         }\r
4017                                                         break;\r
4018                                         }\r
4019                                         if ( this.txチップ != null )\r
4020                                         {\r
4021                                                 this.txチップ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f );\r
4022                                                 this.txチップ.n透明度 = 0xff;\r
4023                                         }\r
4024                                 }\r
4025 \r
4026                                 int indexSevenLanes = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ];\r
4027                                 if ( ( configIni.bAutoPlay[ indexSevenLanes ] && !pChip.bHit ) && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
4028                                 {\r
4029                                         pChip.bHit = true;\r
4030                                         this.actLaneFlushD.Start( (Eドラムレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f );\r
4031                                         bool flag = this.bフィルイン中;\r
4032                                         bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );\r
4033                                         bool flag3 = flag2;\r
4034                                         this.actChipFireD.Start( (Eドラムレーン) indexSevenLanes, flag, flag2, flag3 );\r
4035                                         this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] );\r
4036                                         this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );\r
4037                                         this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r
4038                                 }\r
4039                                 //break;\r
4040                                 return;\r
4041                         }       // end of "if configIni.bDrums有効"\r
4042                         if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
4043                         {\r
4044                                 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );\r
4045                                 pChip.bHit = true;\r
4046                         }\r
4047                 }\r
4048                 protected override void t進行描画・チップ・ギター( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4049                 {\r
4050                         if ( configIni.bGuitar有効 )\r
4051                         {\r
4052                                 if ( configIni.bSudden.Guitar )\r
4053                                 {\r
4054                                         pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;\r
4055                                 }\r
4056                                 if ( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )\r
4057                                 {\r
4058                                         pChip.b可視 = false;\r
4059                                 }\r
4060                                 if ( !pChip.bHit && pChip.b可視 )\r
4061                                 {\r
4062                                         int nバーからの距離 = configIni.bReverse.Guitar ? ( 0x176 - pChip.nバーからの距離dot.Guitar ) : ( 0x5f + pChip.nバーからの距離dot.Guitar );\r
4063                                         if ( ( nバーからの距離 > 0x39 ) && ( nバーからの距離 < 0x19c ) )\r
4064                                         {\r
4065                                                 int nアニメカウンタ現在の値 = this.ctチップ模様アニメ.Guitar.n現在の値;\r
4066                                                 if ( pChip.nチャンネル番号 == 0x20 )\r
4067                                                 {\r
4068                                                         if ( this.txチップ != null )\r
4069                                                         {\r
4070                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, nバーからの距離 - 2, new Rectangle( 0x10c, 0x90 + ( ( nアニメカウンタ現在の値 % 5 ) * 6 ), 0x4c, 6 ) );\r
4071                                                         }\r
4072                                                 }\r
4073                                                 else if ( !configIni.bLeft.Guitar )\r
4074                                                 {\r
4075                                                         Rectangle rectangle = new Rectangle( 0x10c, nアニメカウンタ現在の値 * 6, 0x18, 6 );\r
4076                                                         if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
4077                                                         {\r
4078                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, nバーからの距離 - 3, rectangle );\r
4079                                                         }\r
4080                                                         rectangle.X += 0x18;\r
4081                                                         if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
4082                                                         {\r
4083                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x217, nバーからの距離 - 3, rectangle );\r
4084                                                         }\r
4085                                                         rectangle.X += 0x18;\r
4086                                                         if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
4087                                                         {\r
4088                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x231, nバーからの距離 - 3, rectangle );\r
4089                                                         }\r
4090                                                 }\r
4091                                                 else\r
4092                                                 {\r
4093                                                         Rectangle rectangle2 = new Rectangle( 0x10c, nアニメカウンタ現在の値 * 6, 0x18, 6 );\r
4094                                                         if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
4095                                                         {\r
4096                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x231, nバーからの距離 - 3, rectangle2 );\r
4097                                                         }\r
4098                                                         rectangle2.X += 0x18;\r
4099                                                         if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
4100                                                         {\r
4101                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x217, nバーからの距離 - 3, rectangle2 );\r
4102                                                         }\r
4103                                                         rectangle2.X += 0x18;\r
4104                                                         if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
4105                                                         {\r
4106                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, nバーからの距離 - 3, rectangle2 );\r
4107                                                         }\r
4108                                                 }\r
4109                                         }\r
4110                                 }\r
4111                                 if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
4112                                 {\r
4113                                         pChip.bHit = true;\r
4114                                         if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )\r
4115                                         {\r
4116                                                 this.actChipFireGB.Start( 0 );\r
4117                                         }\r
4118                                         if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )\r
4119                                         {\r
4120                                                 this.actChipFireGB.Start( 1 );\r
4121                                         }\r
4122                                         if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )\r
4123                                         {\r
4124                                                 this.actChipFireGB.Start( 2 );\r
4125                                         }\r
4126                                         this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );\r
4127                                         this.r次にくるギターChip = null;\r
4128                                         this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r
4129                                 }\r
4130                                 //break;\r
4131                                 return;\r
4132                         }       // end of "if configIni.bDrums有効"\r
4133                         if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
4134                         {\r
4135                                 pChip.bHit = true;\r
4136                                 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );\r
4137                         }\r
4138                 }\r
4139                 protected override void t進行描画・チップ・ギター・ウェイリング( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4140                 {\r
4141                         if ( configIni.bGuitar有効 )\r
4142                         {\r
4143                                 //if ( configIni.bSudden.Guitar )\r
4144                                 //{\r
4145                                 //    pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;\r
4146                                 //}\r
4147                                 //if ( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )\r
4148                                 //{\r
4149                                 //    pChip.b可視 = false;\r
4150                                 //}\r
4151 \r
4152                                 // 後日、以下の部分を何とかCStage演奏画面共通.csに移したい。\r
4153                                 if ( !pChip.bHit && pChip.b可視 )\r
4154                                 {\r
4155                                         int num14 = 0x19;\r
4156                                         int num15 = configIni.bReverse.Guitar ? ( 0x176 - pChip.nバーからの距離dot.Guitar ) : ( 0x5f + pChip.nバーからの距離dot.Guitar );\r
4157                                         int num16 = num15 - 0x39;\r
4158                                         int num17 = 0;\r
4159                                         if ( ( num16 < ( 0x163 + num14 ) ) && ( num16 > -num14 ) )\r
4160                                         {\r
4161                                                 int num18 = this.ctWailingチップ模様アニメ.n現在の値;\r
4162                                                 Rectangle rectangle5 = new Rectangle( 0x10c + ( num18 * 20 ), 0xae, 20, 50 );\r
4163                                                 if ( num16 < num14 )\r
4164                                                 {\r
4165                                                         rectangle5.Y += num14 - num16;\r
4166                                                         rectangle5.Height -= num14 - num16;\r
4167                                                         num17 = num14 - num16;\r
4168                                                 }\r
4169                                                 if ( num16 > ( 0x163 - num14 ) )\r
4170                                                 {\r
4171                                                         rectangle5.Height -= num16 - ( 0x163 - num14 );\r
4172                                                 }\r
4173                                                 if ( ( rectangle5.Bottom > rectangle5.Top ) && ( this.txチップ != null ) )\r
4174                                                 {\r
4175                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x24c, ( num15 - num14 ) + num17, rectangle5 );\r
4176                                                 }\r
4177                                         }\r
4178                                 }\r
4179                                 //    if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
4180                                 //    {\r
4181                                 //        if ( pChip.nバーからの距離dot.Guitar < -234 )  // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec). \r
4182                                 //        {\r
4183                                 //            pChip.bHit = true;\r
4184                                 //        }\r
4185                                 //        if ( configIni.bAutoPlay.Guitar )\r
4186                                 //        {\r
4187                                 //            pChip.bHit = true;                                                // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.\r
4188                                 //            this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
4189                                 //        }\r
4190                                 //    }\r
4191                                 //    return;\r
4192                                 //}\r
4193                                 //pChip.bHit = true;\r
4194                         }\r
4195                         base.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );\r
4196                 }\r
4197                 protected override void t進行描画・チップ・フィルイン( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4198                 {\r
4199                         if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
4200                         {\r
4201                                 pChip.bHit = true;\r
4202                                 switch ( pChip.n整数値 )\r
4203                                 {\r
4204                                         case 0x01:      // フィルイン開始\r
4205                                                 if ( configIni.bフィルイン有効 )\r
4206                                                 {\r
4207                                                         this.bフィルイン中 = true;\r
4208                                                 }\r
4209                                                 break;\r
4210 \r
4211                                         case 0x02:      // フィルイン終了\r
4212                                                 if ( configIni.bフィルイン有効 )\r
4213                                                 {\r
4214                                                         this.bフィルイン中 = false;\r
4215                                                 }\r
4216                                                 if ( ( ( this.actCombo.n現在のコンボ数.Drums > 0 ) || configIni.bドラムが全部オートプレイである ) && configIni.b歓声を発声する )\r
4217                                                 {\r
4218                                                         if ( this.r現在の歓声Chip.Drums != null )\r
4219                                                         {\r
4220                                                                 dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
4221                                                         }\r
4222                                                         else\r
4223                                                         {\r
4224                                                                 CDTXMania.Skin.sound歓声音.n位置・次に鳴るサウンド = 0;\r
4225                                                                 CDTXMania.Skin.sound歓声音.t再生する();\r
4226                                                         }\r
4227                                                 }\r
4228                                                 break;\r
4229 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
4230                                                                 case 0x04:      // HH消音あり(従来同等)\r
4231                                                                         CDTXMania.DTX.bHH演奏で直前のHHを消音する = true;\r
4232                                                                         break;\r
4233                                                                 case 0x05:      // HH消音無し\r
4234                                                                         CDTXMania.DTX.bHH演奏で直前のHHを消音する = false;\r
4235                                                                         break;\r
4236                                                                 case 0x06:      // ギター消音あり(従来同等)\r
4237                                                                         CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = true;\r
4238                                                                         break;\r
4239                                                                 case 0x07:      // ギター消音無し\r
4240                                                                         CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = false;\r
4241                                                                         break;\r
4242                                                                 case 0x08:      // ベース消音あり(従来同等)\r
4243                                                                         CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = true;\r
4244                                                                         break;\r
4245                                                                 case 0x09:      // ベース消音無し\r
4246                                                                         CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = false;\r
4247                                                                         break;\r
4248 #endif\r
4249                                 }\r
4250                         }\r
4251                 }\r
4252                 protected override void t進行描画・チップ・ベース( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4253                 {\r
4254                         if ( configIni.bGuitar有効 )\r
4255                         {\r
4256                                 if ( configIni.bSudden.Bass )\r
4257                                 {\r
4258                                         pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;\r
4259                                 }\r
4260                                 if ( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )\r
4261                                 {\r
4262                                         pChip.b可視 = false;\r
4263                                 }\r
4264                                 if ( !pChip.bHit && pChip.b可視 )\r
4265                                 {\r
4266                                         int num12 = configIni.bReverse.Bass ? ( 0x176 - pChip.nバーからの距離dot.Bass ) : ( 0x5f + pChip.nバーからの距離dot.Bass );\r
4267                                         if ( ( num12 > 0x39 ) && ( num12 < 0x19c ) )\r
4268                                         {\r
4269                                                 int num13 = this.ctチップ模様アニメ.Bass.n現在の値;\r
4270                                                 if ( pChip.nチャンネル番号 == 160 )\r
4271                                                 {\r
4272                                                         if ( this.txチップ != null )\r
4273                                                         {\r
4274                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 2, new Rectangle( 0x10c, 0x90 + ( ( num13 % 5 ) * 6 ), 0x4c, 6 ) );\r
4275                                                         }\r
4276                                                 }\r
4277                                                 else if ( !configIni.bLeft.Bass )\r
4278                                                 {\r
4279                                                         Rectangle rectangle3 = new Rectangle( 0x10c, num13 * 6, 0x18, 6 );\r
4280                                                         if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
4281                                                         {\r
4282                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 3, rectangle3 );\r
4283                                                         }\r
4284                                                         rectangle3.X += 0x18;\r
4285                                                         if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
4286                                                         {\r
4287                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1aa, num12 - 3, rectangle3 );\r
4288                                                         }\r
4289                                                         rectangle3.X += 0x18;\r
4290                                                         if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
4291                                                         {\r
4292                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1c4, num12 - 3, rectangle3 );\r
4293                                                         }\r
4294                                                 }\r
4295                                                 else\r
4296                                                 {\r
4297                                                         Rectangle rectangle4 = new Rectangle( 0x10c, num13 * 6, 0x18, 6 );\r
4298                                                         if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
4299                                                         {\r
4300                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1c4, num12 - 3, rectangle4 );\r
4301                                                         }\r
4302                                                         rectangle4.X += 0x18;\r
4303                                                         if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
4304                                                         {\r
4305                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1aa, num12 - 3, rectangle4 );\r
4306                                                         }\r
4307                                                         rectangle4.X += 0x18;\r
4308                                                         if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
4309                                                         {\r
4310                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 3, rectangle4 );\r
4311                                                         }\r
4312                                                 }\r
4313                                         }\r
4314                                 }\r
4315                                 if ( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
4316                                 {\r
4317                                         pChip.bHit = true;\r
4318                                         if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
4319                                         {\r
4320                                                 this.actChipFireGB.Start( 3 );\r
4321                                         }\r
4322                                         if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
4323                                         {\r
4324                                                 this.actChipFireGB.Start( 4 );\r
4325                                         }\r
4326                                         if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
4327                                         {\r
4328                                                 this.actChipFireGB.Start( 5 );\r
4329                                         }\r
4330                                         this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );\r
4331                                         this.r次にくるベースChip = null;\r
4332                                         this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r
4333                                 }\r
4334                                 return;\r
4335                         }\r
4336                         if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
4337                         {\r
4338                                 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );\r
4339                                 pChip.bHit = true;\r
4340                         }\r
4341                 }\r
4342                 protected override void t進行描画・チップ・ベース・ウェイリング( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4343                 {\r
4344                         if ( configIni.bGuitar有効 )\r
4345                         {\r
4346                                 //if ( configIni.bSudden.Bass )\r
4347                                 //{\r
4348                                 //    pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;\r
4349                                 //}\r
4350                                 //if ( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )\r
4351                                 //{\r
4352                                 //    pChip.b可視 = false;\r
4353                                 //}\r
4354 \r
4355                                 //\r
4356                                 // 後日、以下の部分を何とかCStage演奏画面共通.csに移したい。\r
4357                                 //\r
4358                                 if ( !pChip.bHit && pChip.b可視 )\r
4359                                 {\r
4360                                         int[] y_base = { 0x5f, 0x176 };\r
4361 \r
4362                                         const int num15 = 0x19;\r
4363                                         int y = configIni.bReverse.Bass ? ( y_base[1] - pChip.nバーからの距離dot.Bass ) : ( y_base[1] + pChip.nバーからの距離dot.Bass );\r
4364                                         int num17 = y - 0x39;\r
4365                                         int num18 = 0;\r
4366                                         if ( ( num17 < ( 0x163 + num15 ) ) && ( num17 > -num15 ) )\r
4367                                         {\r
4368                                                 int c = this.ctWailingチップ模様アニメ.n現在の値;\r
4369                                                 Rectangle rectangle6 = new Rectangle( 0x10c + ( c * 20 ), 0xae, 20, 50 );\r
4370                                                 if ( num17 < num15 )\r
4371                                                 {\r
4372                                                         rectangle6.Y += num15 - num17;\r
4373                                                         rectangle6.Height -= num15 - num17;\r
4374                                                         num18 = num15 - num17;\r
4375                                                 }\r
4376                                                 if ( num17 > ( 0x163 - num15 ) )\r
4377                                                 {\r
4378                                                         rectangle6.Height -= num17 - ( 0x163 - num15 );\r
4379                                                 }\r
4380                                                 if ( ( rectangle6.Bottom > rectangle6.Top ) && ( this.txチップ != null ) )\r
4381                                                 {\r
4382                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x1df, ( y - num15 ) + num18, rectangle6 );\r
4383                                                 }\r
4384                                         }\r
4385                                 }\r
4386                                 //    if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
4387                                 //    {\r
4388                                 //        if ( pChip.nバーからの距離dot.Bass < -234 )    // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec).\r
4389                                 //        {\r
4390                                 //            pChip.bHit = true;\r
4391                                 //        }\r
4392                                 //        if ( configIni.bAutoPlay.Bass )\r
4393                                 //        {\r
4394                                 //            this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
4395                                 //            pChip.bHit = true;                                                // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.\r
4396                                 //        }\r
4397                                 //    }\r
4398                                 //    return;\r
4399                                 //}\r
4400                                 //pChip.bHit = true;\r
4401                         }\r
4402                                 base.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip);\r
4403                 }\r
4404                 protected override void t進行描画・チップ・空打ち音設定・ドラム( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4405                 {\r
4406                         if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
4407                         {\r
4408                                 pChip.bHit = true;\r
4409                                 this.r現在の空うちドラムChip[ (int) this.eチャンネルtoパッド[ pChip.nチャンネル番号 - 0xb1 ] ] = pChip;\r
4410                                 pChip.nチャンネル番号 = ( pChip.nチャンネル番号 != 0xbc ) ? ( ( pChip.nチャンネル番号 - 0xb1 ) + 0x11 ) : 0x1a;\r
4411                         }\r
4412                 }\r
4413                 protected override void t進行描画・チップ・小節線( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )\r
4414                 {\r
4415                         int n小節番号plus1 = pChip.n発声位置 / 384;\r
4416                         if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
4417                         {\r
4418                                 pChip.bHit = true;\r
4419                                 this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;\r
4420                                 if ( configIni.bWave再生位置自動調整機能有効 )\r
4421                                 {\r
4422                                         dTX.tWave再生位置自動補正();\r
4423                                 }\r
4424                         }\r
4425                         if ( configIni.bDrums有効 )\r
4426                         {\r
4427                                 if ( configIni.b演奏情報を表示する && ( configIni.eDark == Eダークモード.OFF ) )\r
4428                                 {\r
4429                                         int n小節番号 = n小節番号plus1 - 1;\r
4430                                         CDTXMania.act文字コンソール.tPrint( 0x14d, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 0x11 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 0x11 ), C文字コンソール.Eフォント種別.白, n小節番号.ToString() );\r
4431                                 }\r
4432                                 if ( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )\r
4433                                 {\r
4434                                         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, 0x1bc, 0x128, 2 ) );\r
4435                                 }\r
4436                         }\r
4437                         if ( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )\r
4438                         {\r
4439                                 int y = configIni.bReverse.Guitar ? ( ( 0x176 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Guitar ) - 1 );\r
4440                                 if ( ( dTX.bチップがある.Guitar && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )\r
4441                                 {\r
4442                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fb, y, new Rectangle( 0, 450, 0x4e, 1 ) );\r
4443                                 }\r
4444                                 y = configIni.bReverse.Bass ? ( ( 0x176 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Bass ) - 1 );\r
4445                                 if ( ( dTX.bチップがある.Bass && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )\r
4446                                 {\r
4447                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x18e, y, new Rectangle( 0, 450, 0x4e, 1 ) );\r
4448                                 }\r
4449                         }\r
4450                 }\r
4451                 #endregion\r
4452         }\r
4453 }\r