OSDN Git Service

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