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.Direct3D9;\r
10 using FDK;\r
11 \r
12 namespace DTXMania\r
13 {\r
14         internal class CStage演奏ギター画面 : CStage\r
15         {\r
16                 // プロパティ\r
17 \r
18                 public bool bAUTOでないチップが1つでもバーを通過した\r
19                 {\r
20                         get;\r
21                         private set;\r
22                 }\r
23 \r
24 \r
25                 // コンストラクタ\r
26 \r
27                 public CStage演奏ギター画面()\r
28                 {\r
29                         base.eステージID = CStage.Eステージ.演奏;\r
30                         base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
31                         base.b活性化してない = true;\r
32                         base.list子Activities.Add( this.actStageFailed = new CAct演奏ステージ失敗() );\r
33                         base.list子Activities.Add( this.actAVI = new CAct演奏AVI() );\r
34                         base.list子Activities.Add( this.actBGA = new CAct演奏BGA() );\r
35                         base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() );\r
36                         base.list子Activities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() );\r
37                         base.list子Activities.Add( this.actStatusPanels = new CAct演奏Guitarステータスパネル() );\r
38                         base.list子Activities.Add( this.actWailingBonus = new CAct演奏GuitarWailingBonus() );\r
39                         base.list子Activities.Add( this.actScore = new CAct演奏Guitarスコア() );\r
40                         base.list子Activities.Add( this.actRGB = new CAct演奏GuitarRGB() );\r
41                         base.list子Activities.Add( this.actLaneFlushGB = new CAct演奏GuitarレーンフラッシュGB() );\r
42                         base.list子Activities.Add( this.actJudgeString = new CAct演奏Guitar判定文字列() );\r
43                         base.list子Activities.Add( this.actGauge = new CAct演奏Guitarゲージ() );\r
44                         base.list子Activities.Add( this.actCombo = new CAct演奏Guitarコンボ() );\r
45                         base.list子Activities.Add( this.actChipFire = new CAct演奏Guitarチップファイア() );\r
46                         base.list子Activities.Add( this.actPlayInfo = new CAct演奏演奏情報() );\r
47                         base.list子Activities.Add( this.actFI = new CActFIFOBlack() );\r
48                         base.list子Activities.Add( this.actFO = new CActFIFOBlack() );\r
49                         base.list子Activities.Add( this.actFOClear = new CActFIFOWhite() );\r
50                 }\r
51 \r
52 \r
53                 // メソッド\r
54 \r
55                 public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums, out CScoreIni.C演奏記録 Guitar, out CScoreIni.C演奏記録 Bass )\r
56                 {\r
57                         Drums = new CScoreIni.C演奏記録();\r
58                         Guitar = new CScoreIni.C演奏記録();\r
59                         Bass = new CScoreIni.C演奏記録();\r
60                         if( CDTXMania.DTX.bチップがある.Guitar )\r
61                         {\r
62                                 Guitar.nスコア = this.actScore.Get( E楽器パート.GUITAR );\r
63                                 Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Guitar, CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.actCombo.n現在のコンボ数.Guitar最高値 );\r
64                                 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
65                                 Guitar.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Perfect : this.nヒット数・Auto含まない.Guitar.Perfect;\r
66                                 Guitar.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Great : this.nヒット数・Auto含まない.Guitar.Great;\r
67                                 Guitar.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Good : this.nヒット数・Auto含まない.Guitar.Good;\r
68                                 Guitar.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Poor : this.nヒット数・Auto含まない.Guitar.Poor;\r
69                                 Guitar.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Miss : this.nヒット数・Auto含まない.Guitar.Miss;\r
70                                 Guitar.n最大コンボ数 = this.actCombo.n現在のコンボ数.Guitar最高値;\r
71                                 Guitar.n全チップ数 = CDTXMania.DTX.n可視チップ数.Guitar;\r
72                                 for ( int i = 0; i < 10; i++ )\r
73                                 {\r
74                                         Guitar.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
75                                 }\r
76                                 Guitar.bTight = CDTXMania.ConfigIni.bTight;\r
77                                 for( int i = 0; i < 3; i++ )\r
78                                 {\r
79                                         Guitar.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
80                                         Guitar.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
81                                         Guitar.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
82                                         Guitar.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
83                                         Guitar.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
84                                         Guitar.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
85                                         Guitar.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
86                                 }\r
87                                 Guitar.eDark = CDTXMania.ConfigIni.eDark;\r
88                                 Guitar.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
89                                 Guitar.n演奏速度分母 = 20;\r
90                                 Guitar.eHHGroup = CDTXMania.ConfigIni.eHHGroup;\r
91                                 Guitar.eFTGroup = CDTXMania.ConfigIni.eFTGroup;\r
92                                 Guitar.eCYGroup = CDTXMania.ConfigIni.eCYGroup;\r
93                                 Guitar.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;\r
94                                 Guitar.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;\r
95                                 Guitar.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;\r
96                                 Guitar.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;\r
97                                 Guitar.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;\r
98                                 Guitar.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;\r
99                                 Guitar.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;\r
100                                 Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;\r
101                                 Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;\r
102                                 Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;\r
103                                 Guitar.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;\r
104                                 Guitar.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;\r
105                                 Guitar.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;\r
106                                 Guitar.nGoodになる範囲ms = CDTXMania.nGood範囲ms;\r
107                                 Guitar.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;\r
108                                 Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;\r
109                                 Guitar.最終更新日時 = DateTime.Now.ToString();\r
110                                 Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Guitar );\r
111                         }\r
112                         if( CDTXMania.DTX.bチップがある.Bass )\r
113                         {\r
114                                 Bass.nスコア = this.actScore.Get( E楽器パート.BASS );\r
115                                 Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Bass, CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.actCombo.n現在のコンボ数.Bass最高値 );\r
116                                 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
117                                 Bass.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Perfect : this.nヒット数・Auto含まない.Bass.Perfect;\r
118                                 Bass.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Great : this.nヒット数・Auto含まない.Bass.Great;\r
119                                 Bass.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Good : this.nヒット数・Auto含まない.Bass.Good;\r
120                                 Bass.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Poor : this.nヒット数・Auto含まない.Bass.Poor;\r
121                                 Bass.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Miss : this.nヒット数・Auto含まない.Bass.Miss;\r
122                                 Bass.n最大コンボ数 = this.actCombo.n現在のコンボ数.Bass最高値;\r
123                                 Bass.n全チップ数 = CDTXMania.DTX.n可視チップ数.Bass;\r
124                                 for( int i = 0; i < 10; i++ )\r
125                                 {\r
126                                         Bass.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
127                                 }\r
128                                 Bass.bTight = CDTXMania.ConfigIni.bTight;\r
129                                 for( int i = 0; i < 3; i++ )\r
130                                 {\r
131                                         Bass.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
132                                         Bass.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
133                                         Bass.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
134                                         Bass.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
135                                         Bass.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
136                                         Bass.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
137                                         Bass.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
138                                 }\r
139                                 Bass.eDark = CDTXMania.ConfigIni.eDark;\r
140                                 Bass.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
141                                 Bass.n演奏速度分母 = 20;\r
142                                 Bass.eHHGroup = CDTXMania.ConfigIni.eHHGroup;\r
143                                 Bass.eFTGroup = CDTXMania.ConfigIni.eFTGroup;\r
144                                 Bass.eCYGroup = CDTXMania.ConfigIni.eCYGroup;\r
145                                 Bass.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;\r
146                                 Bass.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;\r
147                                 Bass.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;\r
148                                 Bass.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;\r
149                                 Bass.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;\r
150                                 Bass.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;\r
151                                 Bass.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;\r
152                                 Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass;                        // #24280 2011.1.29 yyagi\r
153                                 Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass;                          //\r
154                                 Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass;          //\r
155                                 Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass;                                    //\r
156                                 Bass.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;\r
157                                 Bass.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;\r
158                                 Bass.nGoodになる範囲ms = CDTXMania.nGood範囲ms;\r
159                                 Bass.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;\r
160                                 Bass.strDTXManiaのバージョン = CDTXMania.VERSION;\r
161                                 Bass.最終更新日時 = DateTime.Now.ToString();\r
162                                 Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Bass );\r
163                         }\r
164                         if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass )         // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
165                         {\r
166                                 CScoreIni.C演奏記録 t;\r
167                                 t = Guitar;\r
168                                 Guitar = Bass;\r
169                                 Bass = t;\r
170 \r
171                                 CDTXMania.DTX.SwapGuitarBassInfos();                    // 譜面情報も元に戻す\r
172                         }\r
173                 }\r
174                 \r
175 \r
176                 // CStage 実装\r
177 \r
178                 public override void On活性化()\r
179                 {\r
180                         this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
181                         this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;\r
182                         this.n最後に再生したHHの実WAV番号 = -1;\r
183                         this.n最後に再生したHHのチャンネル番号 = 0;\r
184                         this.n最後に再生したギターの実WAV番号 = -1;\r
185                         this.n最後に再生したベースの実WAV番号 = -1;\r
186                         for( int i = 0; i < 50; i++ )\r
187                         {\r
188                                 this.n最後に再生したBGMの実WAV番号[ i ] = -1;\r
189                         }\r
190                         this.r次にくるギターChip = null;\r
191                         this.r次にくるベースChip = null;\r
192                         for( int j = 0; j < 10; j++ )\r
193                         {\r
194                                 this.r現在の空うちドラムChip[ j ] = null;\r
195                         }\r
196                         this.r現在の空うちギターChip = null;\r
197                         this.r現在の空うちベースChip = null;\r
198                         for( int k = 0; k < 3; k++ )\r
199                         {\r
200                                 for( int n = 0; n < 5; n++ )\r
201                                 {\r
202                                         this.nヒット数・Auto含まない[ k ] = new STHITCOUNTOFRANK();\r
203                                         this.nヒット数・Auto含む[ k ] = new STHITCOUNTOFRANK();\r
204                                 }\r
205                                 this.queWailing[ k ] = new Queue<CDTX.CChip>();\r
206                         }\r
207                         for( int m = 0; m < 3; m++ )\r
208                         {\r
209                                 this.b演奏にキーボードを使った[ m ] = false;\r
210                                 this.b演奏にジョイパッドを使った[ m ] = false;\r
211                                 this.b演奏にMIDI入力を使った[ m ] = false;\r
212                                 this.b演奏にマウスを使った[ m ] = false;\r
213                         }\r
214                         this.bAUTOでないチップが1つでもバーを通過した = false;\r
215                         base.On活性化();\r
216                         this.tステータスパネルの選択();\r
217                         this.tパネル文字列の設定();\r
218 \r
219                         this.nInputAdjustTimeMs.Drums = CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums;           // #23580 2011.1.3 yyagi\r
220             this.nInputAdjustTimeMs.Guitar = CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar;             //        2011.1.7 ikanick 修正\r
221                         this.nInputAdjustTimeMs.Bass = CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass;                     //\r
222                         this.bIsAutoPlay.Drums = false;\r
223                         this.bIsAutoPlay.Guitar = CDTXMania.ConfigIni.bAutoPlay.Guitar;\r
224                         this.bIsAutoPlay.Bass = CDTXMania.ConfigIni.bAutoPlay.Bass;\r
225 \r
226                         if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ) // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
227                         {\r
228                                 CDTXMania.DTX.SwapGuitarBassInfos();\r
229 \r
230                         }\r
231 \r
232                 }\r
233                 public override void OnManagedリソースの作成()\r
234                 {\r
235                         if( !base.b活性化してない )\r
236                         {\r
237                                 this.t背景テクスチャの生成();\r
238                                 this.txチップ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayGuitar chips.png" ) );\r
239                                 this.txヒットバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayGuitar hit-bar.png" ) );\r
240                                 this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );\r
241                                 base.OnManagedリソースの作成();\r
242                         }\r
243                 }\r
244                 public override void OnManagedリソースの解放()\r
245                 {\r
246                         if( !base.b活性化してない )\r
247                         {\r
248                                 CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
249                                 CDTXMania.tテクスチャの解放( ref this.txチップ );\r
250                                 CDTXMania.tテクスチャの解放( ref this.txヒットバー );\r
251                                 CDTXMania.tテクスチャの解放( ref this.txWailing枠 );\r
252                                 base.OnManagedリソースの解放();\r
253                         }\r
254                 }\r
255                 public override int On進行描画()\r
256                 {\r
257                         if( !base.b活性化してない )\r
258                         {\r
259                                 bool flag = false;\r
260                                 bool flag2 = false;\r
261 \r
262                                 if( base.b初めての進行描画 )\r
263                                 {\r
264                                         CDTXMania.Timer.tリセット();\r
265                                         this.ctチップ模様アニメ.Guitar = new CCounter( 0, 0x17, 20, CDTXMania.Timer );\r
266                                         this.ctチップ模様アニメ.Bass = new CCounter( 0, 0x17, 20, CDTXMania.Timer );\r
267                                         this.ctWailingチップ模様アニメ = new CCounter( 0, 4, 50, CDTXMania.Timer );\r
268                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
269                                         this.actFI.tフェードイン開始();\r
270                                         base.b初めての進行描画 = false;\r
271                                 }\r
272                                 if( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
273                                 {\r
274 //                                      bool flag3 = ( CDTXMania.ConfigIni.bAutoPlay.Guitar || !CDTXMania.DTX.bチップがある.Guitar ) || ( this.actGauge.db現在のゲージ値.Guitar <= -0.1 );                         // #23630\r
275 //                                      bool flag4 = ( CDTXMania.ConfigIni.bAutoPlay.Bass || !CDTXMania.DTX.bチップがある.Bass ) || ( this.actGauge.db現在のゲージ値.Bass <= -0.1 );                                       // #23630\r
276                                         bool bFailedGuitar = ((!CDTXMania.DTX.bチップがある.Guitar) || (this.actGauge.db現在のゲージ値.Guitar <= -0.1));           // #23630 2011.11.12 yyagi: deleted AutoPlay condition: not to be failed at once\r
277                                         bool bFailedBass   = ((!CDTXMania.DTX.bチップがある.Bass)   || (this.actGauge.db現在のゲージ値.Bass   <= -0.1));           // #23630 \r
278                                         if (bFailedGuitar && bFailedBass)\r
279                                         {\r
280                                                 this.actStageFailed.Start();\r
281                                                 CDTXMania.DTX.t全チップの再生停止();\r
282                                                 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
283                                         }\r
284                                 }\r
285                                 this.t進行描画・背景();\r
286                                 this.t進行描画・MIDIBGM();\r
287                                 this.t進行描画・パネル文字列();\r
288                                 this.t進行描画・スコア();\r
289                                 this.t進行描画・AVI();\r
290                                 this.t進行描画・BGA();\r
291                                 this.t進行描画・ステータスパネル();\r
292                                 this.t進行描画・レーンフラッシュGB();\r
293                                 this.t進行描画・ギターベース判定ライン();\r
294                                 this.t進行描画・ゲージ();\r
295                                 this.t進行描画・DANGER();\r
296                                 this.t進行描画・RGBボタン();\r
297                                 this.t進行描画・判定文字列();\r
298                                 this.t進行描画・コンボ();\r
299                                 this.t進行描画・WailingBonus();\r
300                                 this.t進行描画・譜面スクロール速度();\r
301                                 this.t進行描画・チップアニメ();\r
302                                 flag = this.t進行描画・チップ();\r
303                                 this.t進行描画・演奏情報();\r
304                                 this.t進行描画・Wailing枠();\r
305                                 this.t進行描画・チップファイアGB();\r
306                                 this.t進行描画・STAGEFAILED();\r
307                                 flag2 = this.t進行描画・フェードイン・アウト();\r
308                                 if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
309                                 {\r
310                                         this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;\r
311                                         base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;\r
312                                         this.actFOClear.tフェードアウト開始();\r
313                                 }\r
314                                 if( flag2 )\r
315                                 {\r
316                                         return (int) this.eフェードアウト完了時の戻り値;\r
317                                 }\r
318 \r
319                                 // キー入力\r
320 \r
321                                 if( CDTXMania.act現在入力を占有中のプラグイン == null )\r
322                                 {\r
323                                         IInputDevice keyboard = CDTXMania.Input管理.Keyboard;\r
324                                         if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.F1 ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )\r
325                                         {\r
326                                                 this.bPAUSE = !this.bPAUSE;\r
327                                                 if( this.bPAUSE )\r
328                                                 {\r
329                                                         CDTXMania.Timer.t一時停止();\r
330                                                         CDTXMania.DTX.t全チップの再生一時停止();\r
331                                                 }\r
332                                                 else\r
333                                                 {\r
334                                                         CDTXMania.Timer.t再開();\r
335                                                         CDTXMania.DTX.t全チップの再生再開();\r
336                                                 }\r
337                                         }\r
338                                         if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
339                                         {\r
340                                                 this.t入力処理・ギター();\r
341                                                 this.t入力処理・ベース();\r
342                                                 if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift) ) )\r
343                                                 {       // shift (+ctrl) + Uparrow (BGMAdjust)\r
344                                                         CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl) ) ? 1 : 10 );\r
345                                                         CDTXMania.DTX.tWave再生位置自動補正();\r
346                                                 }\r
347                                                 else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )\r
348                                                 {\r
349                                                         CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl ) ) ? -1 : -10 );\r
350                                                         CDTXMania.DTX.tWave再生位置自動補正();\r
351                                                 }\r
352                                                 else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Delete ) )\r
353                                                 {\r
354                                                         CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;\r
355                                                 }\r
356                                                 else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.LeftArrow ) )           // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
357                                                 {\r
358                                                         ChangeInputAdjustTimeInPlaying( keyboard, -1 );\r
359                                                 }\r
360                                                 else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) )          // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
361                                                 {\r
362                                                         ChangeInputAdjustTimeInPlaying( keyboard, +1 );\r
363                                                 }\r
364                                                 else if ( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )\r
365                                                 {\r
366                                                         this.actFO.tフェードアウト開始();\r
367                                                         base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
368                                                         this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;\r
369                                                 }\r
370                                         }\r
371                                 }\r
372                         }\r
373                         return 0;\r
374                 }\r
375                 private void ChangeInputAdjustTimeInPlaying( IInputDevice keyboard, int plusminus )             // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
376                 {\r
377                         int part, offset = plusminus;\r
378                         if ( keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.LeftShift ) || keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.RightShift ) )      // Guitar InputAdjustTime\r
379                         {\r
380                                 part = (int) E楽器パート.GUITAR;\r
381                         }\r
382                         else if ( keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.LeftAlt ) || keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.RightAlt ) )     // Bass InputAdjustTime\r
383                         {\r
384                                 part = (int) E楽器パート.BASS;\r
385                         }\r
386                         else    // Drums InputAdjustTime\r
387                         {\r
388                                 part = (int) E楽器パート.DRUMS;\r
389                         }\r
390                         if ( !keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.LeftControl ) && !keyboard.bキーが押されている( (int) SlimDX.DirectInput.Key.RightControl ) )\r
391                         {\r
392                                 offset *= 10;\r
393                         }\r
394 \r
395                         this.nInputAdjustTimeMs[ part ] += offset;\r
396                         if ( this.nInputAdjustTimeMs[ part ] > 99 )\r
397                         {\r
398                                 this.nInputAdjustTimeMs[ part ] = 99;\r
399                         }\r
400                         else if ( this.nInputAdjustTimeMs[ part ] < -99 )\r
401                         {\r
402                                 this.nInputAdjustTimeMs[ part ] = -99;\r
403                         }\r
404                         CDTXMania.ConfigIni.nInputAdjustTimeMs[ part ] = this.nInputAdjustTimeMs[ part ];\r
405                 }\r
406 \r
407 \r
408                 // その他\r
409 \r
410                 #region [ private ]\r
411                 //-----------------\r
412                 private class STHITCOUNTOFRANK\r
413                 {\r
414                         // Fields\r
415                         public int Good;\r
416                         public int Great;\r
417                         public int Miss;\r
418                         public int Perfect;\r
419                         public int Poor;\r
420 \r
421                         // Properties\r
422                         public int this[ int index ]\r
423                         {\r
424                                 get\r
425                                 {\r
426                                         switch( index )\r
427                                         {\r
428                                                 case 0:\r
429                                                         return this.Perfect;\r
430 \r
431                                                 case 1:\r
432                                                         return this.Great;\r
433 \r
434                                                 case 2:\r
435                                                         return this.Good;\r
436 \r
437                                                 case 3:\r
438                                                         return this.Poor;\r
439 \r
440                                                 case 4:\r
441                                                         return this.Miss;\r
442                                         }\r
443                                         throw new IndexOutOfRangeException();\r
444                                 }\r
445                                 set\r
446                                 {\r
447                                         switch( index )\r
448                                         {\r
449                                                 case 0:\r
450                                                         this.Perfect = value;\r
451                                                         return;\r
452 \r
453                                                 case 1:\r
454                                                         this.Great = value;\r
455                                                         return;\r
456 \r
457                                                 case 2:\r
458                                                         this.Good = value;\r
459                                                         return;\r
460 \r
461                                                 case 3:\r
462                                                         this.Poor = value;\r
463                                                         return;\r
464 \r
465                                                 case 4:\r
466                                                         this.Miss = value;\r
467                                                         return;\r
468                                         }\r
469                                         throw new IndexOutOfRangeException();\r
470                                 }\r
471                         }\r
472                 }\r
473 \r
474                 [StructLayout( LayoutKind.Sequential )]\r
475                 private struct STKARAUCHI\r
476                 {\r
477                         public CDTX.CChip HH;\r
478                         public CDTX.CChip SD;\r
479                         public CDTX.CChip BD;\r
480                         public CDTX.CChip HT;\r
481                         public CDTX.CChip LT;\r
482                         public CDTX.CChip FT;\r
483                         public CDTX.CChip CY;\r
484                         public CDTX.CChip HHO;\r
485                         public CDTX.CChip RD;\r
486                         public CDTX.CChip LC;\r
487                         public CDTX.CChip this[ int index ]\r
488                         {\r
489                                 get\r
490                                 {\r
491                                         switch( index )\r
492                                         {\r
493                                                 case 0:\r
494                                                         return this.HH;\r
495 \r
496                                                 case 1:\r
497                                                         return this.SD;\r
498 \r
499                                                 case 2:\r
500                                                         return this.BD;\r
501 \r
502                                                 case 3:\r
503                                                         return this.HT;\r
504 \r
505                                                 case 4:\r
506                                                         return this.LT;\r
507 \r
508                                                 case 5:\r
509                                                         return this.FT;\r
510 \r
511                                                 case 6:\r
512                                                         return this.CY;\r
513 \r
514                                                 case 7:\r
515                                                         return this.HHO;\r
516 \r
517                                                 case 8:\r
518                                                         return this.RD;\r
519 \r
520                                                 case 9:\r
521                                                         return this.LC;\r
522                                         }\r
523                                         throw new IndexOutOfRangeException();\r
524                                 }\r
525                                 set\r
526                                 {\r
527                                         switch( index )\r
528                                         {\r
529                                                 case 0:\r
530                                                         this.HH = value;\r
531                                                         return;\r
532 \r
533                                                 case 1:\r
534                                                         this.SD = value;\r
535                                                         return;\r
536 \r
537                                                 case 2:\r
538                                                         this.BD = value;\r
539                                                         return;\r
540 \r
541                                                 case 3:\r
542                                                         this.HT = value;\r
543                                                         return;\r
544 \r
545                                                 case 4:\r
546                                                         this.LT = value;\r
547                                                         return;\r
548 \r
549                                                 case 5:\r
550                                                         this.FT = value;\r
551                                                         return;\r
552 \r
553                                                 case 6:\r
554                                                         this.CY = value;\r
555                                                         return;\r
556 \r
557                                                 case 7:\r
558                                                         this.HHO = value;\r
559                                                         return;\r
560 \r
561                                                 case 8:\r
562                                                         this.RD = value;\r
563                                                         return;\r
564 \r
565                                                 case 9:\r
566                                                         this.LC = value;\r
567                                                         return;\r
568                                         }\r
569                                         throw new IndexOutOfRangeException();\r
570                                 }\r
571                         }\r
572                 }\r
573 \r
574                 private CAct演奏AVI actAVI;\r
575                 private CAct演奏BGA actBGA;\r
576                 private CAct演奏Guitarチップファイア actChipFire;\r
577                 private CAct演奏Guitarコンボ actCombo;\r
578                 private CActFIFOBlack actFI;\r
579                 private CActFIFOBlack actFO;\r
580                 private CActFIFOWhite actFOClear;\r
581                 private CAct演奏Guitarゲージ actGauge;\r
582                 private CAct演奏Guitar判定文字列 actJudgeString;\r
583                 private CAct演奏GuitarレーンフラッシュGB actLaneFlushGB;\r
584                 private CAct演奏パネル文字列 actPanel;\r
585                 private CAct演奏演奏情報 actPlayInfo;\r
586                 private CAct演奏GuitarRGB actRGB;\r
587                 private CAct演奏Guitarスコア actScore;\r
588                 private CAct演奏ステージ失敗 actStageFailed;\r
589                 private CAct演奏Guitarステータスパネル actStatusPanels;\r
590                 private CAct演奏GuitarWailingBonus actWailingBonus;\r
591                 private CAct演奏スクロール速度 act譜面スクロール速度;\r
592                 private bool bPAUSE;\r
593                 private STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
594                 private STDGBVALUE<bool> b演奏にキーボードを使った;\r
595                 private STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
596                 private STDGBVALUE<bool> b演奏にマウスを使った;\r
597                 private CCounter ctWailingチップ模様アニメ;\r
598                 private STDGBVALUE<CCounter> ctチップ模様アニメ;\r
599                 private E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
600                 private readonly int[,] nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };\r
601                 private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
602                 private readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
603                 private readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a };\r
604                 private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };\r
605                 private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
606                 private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;\r
607                 private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;\r
608                 private int n現在のトップChip = -1;\r
609                 private int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];\r
610                 private int n最後に再生したHHのチャンネル番号;\r
611                 private int n最後に再生したHHの実WAV番号;\r
612                 private int n最後に再生したギターの実WAV番号;\r
613                 private int n最後に再生したベースの実WAV番号;\r
614                 private STDGBVALUE<Queue<CDTX.CChip>> queWailing;\r
615                 private STDGBVALUE<CDTX.CChip> r現在の歓声Chip;\r
616                 private CDTX.CChip r現在の空うちギターChip;\r
617                 private STKARAUCHI r現在の空うちドラムChip;\r
618                 private CDTX.CChip r現在の空うちベースChip;\r
619                 private CDTX.CChip r次にくるギターChip;\r
620                 private CDTX.CChip r次にくるベースChip;\r
621                 private CTexture txWailing枠;\r
622                 private CTexture txチップ;\r
623                 private CTexture txヒットバー;\r
624                 private CTexture tx背景;\r
625                 private STDGBVALUE<int> nInputAdjustTimeMs;             // #23580 2011.1.3 yyagi\r
626                 private STDGBVALUE<bool> bIsAutoPlay;                           // #24239 2011.1.23 yyagi\r
627 \r
628                 private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
629                 {\r
630                         if ( pChip != null )\r
631                         {\r
632                                 pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms );                // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
633                                 int nDeltaTime = Math.Abs( pChip.nLag );\r
634                                 //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
635                                 if ( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
636                                 {\r
637                                         return E判定.Perfect;\r
638                                 }\r
639                                 if ( nDeltaTime <= CDTXMania.nGreat範囲ms )\r
640                                 {\r
641                                         return E判定.Great;\r
642                                 }\r
643                                 if ( nDeltaTime <= CDTXMania.nGood範囲ms )\r
644                                 {\r
645                                         return E判定.Good;\r
646                                 }\r
647                                 if ( nDeltaTime <= CDTXMania.nPoor範囲ms )\r
648                                 {\r
649                                         return E判定.Poor;\r
650                                 }\r
651                         }\r
652                         return E判定.Miss;\r
653                 }\r
654                 private CDTX.CChip r空うちChip( E楽器パート part, Eパッド pad )\r
655                 {\r
656                         switch( part )\r
657                         {\r
658                                 case E楽器パート.GUITAR:\r
659                                         return this.r現在の空うちギターChip;\r
660 \r
661                                 case E楽器パート.BASS:\r
662                                         return this.r現在の空うちベースChip;\r
663                         }\r
664                         return null;\r
665                 }\r
666                 private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag, int nInputAdjustTime )\r
667                 {\r
668                         nTime += nInputAdjustTime;\r
669         \r
670                         int num5;\r
671                         if( this.n現在のトップChip == -1 )\r
672                         {\r
673                                 return null;\r
674                         }\r
675                         int count = CDTXMania.DTX.listChip.Count;\r
676                         int num4 = num5 = this.n現在のトップChip;\r
677                         if( this.n現在のトップChip >= count )\r
678                         {\r
679                                 num4 = num5 = count - 1;\r
680                         }\r
681                         int num2 = num4;\r
682                         while( num2 < count )\r
683                         {\r
684                                 CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
685                                 if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )\r
686                                 {\r
687                                         if( chip.n発声時刻ms > nTime )\r
688                                         {\r
689                                                 break;\r
690                                         }\r
691                                         num5 = num2;\r
692                                 }\r
693                                 else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
694                                 {\r
695                                         if( chip.n発声時刻ms > nTime )\r
696                                         {\r
697                                                 break;\r
698                                         }\r
699                                         num5 = num2;\r
700                                 }\r
701                                 else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
702                                 {\r
703                                         if( chip.n発声時刻ms > nTime )\r
704                                         {\r
705                                                 break;\r
706                                         }\r
707                                         num5 = num2;\r
708                                 }\r
709                                 num2++;\r
710                         }\r
711                         int num3 = num5;\r
712                         while( num3 >= 0 )\r
713                         {\r
714                                 CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
715                                 if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )\r
716                                 {\r
717                                         if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
718                                         {\r
719                                                 break;\r
720                                         }\r
721                                 }\r
722                                 else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )\r
723                                 {\r
724                                         if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 40 ) )\r
725                                         {\r
726                                                 break;\r
727                                         }\r
728                                 }\r
729                                 else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 160 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )\r
730                                 {\r
731                                         break;\r
732                                 }\r
733                                 num3--;\r
734                         }\r
735                         if( ( num2 == count ) && ( num3 < 0 ) )\r
736                         {\r
737                                 return null;\r
738                         }\r
739                         if( num2 == count )\r
740                         {\r
741                                 return CDTXMania.DTX.listChip[ num3 ];\r
742                         }\r
743                         if( num3 < 0 )\r
744                         {\r
745                                 return CDTXMania.DTX.listChip[ num2 ];\r
746                         }\r
747                         CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];\r
748                         CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];\r
749                         int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
750                         int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );\r
751                         if( num6 >= num7 )\r
752                         {\r
753                                 return chip4;\r
754                         }\r
755                         return chip3;\r
756                 }\r
757 //              private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag )\r
758 //              {\r
759 //                      return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, 0, 0 );\r
760 //              }\r
761 //              private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime )\r
762 //              {\r
763 //                      return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, nInputAdjustTime, 0 );\r
764 //              }\r
765                 private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime, int n検索範囲時間ms )\r
766                 {\r
767                         nTime += nInputAdjustTime;\r
768 \r
769                         int num5;\r
770                         int num6;\r
771                         if( this.n現在のトップChip == -1 )\r
772                         {\r
773                                 return null;\r
774                         }\r
775                         int count = CDTXMania.DTX.listChip.Count;\r
776                         int num4 = num5 = this.n現在のトップChip;\r
777                         if( this.n現在のトップChip >= count )\r
778                         {\r
779                                 num4 = num5 = count - 1;\r
780                         }\r
781                         int num2 = num4;\r
782                         while( num2 < count )\r
783                         {\r
784                                 CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
785                                 if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )\r
786                                 {\r
787                                         if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
788                                         {\r
789                                                 if( chip.n発声時刻ms > nTime )\r
790                                                 {\r
791                                                         break;\r
792                                                 }\r
793                                                 num5 = num2;\r
794                                         }\r
795                                 }\r
796                                 else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
797                                 {\r
798                                         if( chip.n発声時刻ms > nTime )\r
799                                         {\r
800                                                 break;\r
801                                         }\r
802                                         num5 = num2;\r
803                                 }\r
804                                 else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
805                                 {\r
806                                         if( chip.n発声時刻ms > nTime )\r
807                                         {\r
808                                                 break;\r
809                                         }\r
810                                         num5 = num2;\r
811                                 }\r
812                                 num2++;\r
813                         }\r
814                         int num3 = num5;\r
815                         while( num3 >= 0 )\r
816                         {\r
817                                 CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
818                                 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
819                                 {\r
820                                         break;\r
821                                 }\r
822                                 num3--;\r
823                         }\r
824                         if( ( num2 == count ) && ( num3 < 0 ) )\r
825                         {\r
826                                 return null;\r
827                         }\r
828                         CDTX.CChip chip3 = null;\r
829                         if( num2 == count )\r
830                         {\r
831                                 chip3 = CDTXMania.DTX.listChip[ num3 ];\r
832                                 num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
833                         }\r
834                         else if( num3 < 0 )\r
835                         {\r
836                                 chip3 = CDTXMania.DTX.listChip[ num2 ];\r
837                                 num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
838                         }\r
839                         else\r
840                         {\r
841                                 int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
842                                 int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
843                                 if( num7 < num8 )\r
844                                 {\r
845                                         chip3 = CDTXMania.DTX.listChip[ num2 ];\r
846                                         num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
847                                 }\r
848                                 else\r
849                                 {\r
850                                         chip3 = CDTXMania.DTX.listChip[ num3 ];\r
851                                         num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
852                                 }\r
853                         }\r
854                         if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )\r
855                         {\r
856                                 return null;\r
857                         }\r
858                         return chip3;\r
859                 }\r
860                 private CDTX.CChip r次にくるギターChipを更新して返す()\r
861                 {\r
862                         int nInputAdjustTime = this.bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;\r
863                         this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, nInputAdjustTime, 500 );\r
864                         return this.r次にくるギターChip;\r
865                 }\r
866                 private CDTX.CChip r次にくるベースChipを更新して返す()\r
867                 {\r
868                         int nInputAdjustTime = this.bIsAutoPlay.Bass ? 0 : this.nInputAdjustTimeMs.Bass;\r
869                         this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, nInputAdjustTime, 500 );\r
870                         return this.r次にくるベースChip;\r
871                 }\r
872                 private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part )\r
873                 {\r
874                         this.tサウンド再生( rChip, n再生開始システム時刻ms, part, CDTXMania.ConfigIni.n手動再生音量, false, false );\r
875                 }\r
876                 private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量 )\r
877                 {\r
878                         this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, false, false );\r
879                 }\r
880                 private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ )\r
881                 {\r
882                         this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, bモニタ, false );\r
883                 }\r
884                 private void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )\r
885                 {\r
886                         if( pChip != null )\r
887                         {\r
888                                 switch( part )\r
889                                 {\r
890                                         case E楽器パート.DRUMS:\r
891                                                 if( CDTXMania.ConfigIni.bドラム打音を発声する )\r
892                                                 {\r
893                                                         int index = pChip.nチャンネル番号;\r
894                                                         if( ( index >= 0x11 ) && ( index <= 0x1a ) )\r
895                                                         {\r
896                                                                 index -= 0x11;\r
897                                                         }\r
898                                                         else\r
899                                                         {\r
900                                                                 if( ( index < 0x31 ) || ( index > 0x3a ) )\r
901                                                                 {\r
902                                                                         return;\r
903                                                                 }\r
904                                                                 index -= 0x31;\r
905                                                         }\r
906                                                         int nLane = this.nチャンネル0Atoレーン07[ index ];\r
907                                                         if( ( nLane == 1 ) && ( ( index == 0 ) || ( ( ( index == 7 ) && ( this.n最後に再生したHHのチャンネル番号 != 0x18 ) ) && ( this.n最後に再生したHHのチャンネル番号 != 0x38 ) ) ) )\r
908                                                         {\r
909 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
910                                                                 if (CDTXMania.DTX.bHH演奏で直前のHHを消音する) {\r
911 #endif\r
912                                                                         CDTXMania.DTX.tWavの再生停止(this.n最後に再生したHHの実WAV番号);\r
913 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
914                                                                 }\r
915 #endif\r
916                                                                 this.n最後に再生したHHの実WAV番号 = pChip.n整数値・内部番号;\r
917                                                                 this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号;\r
918                                                         }\r
919                                                         CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ );\r
920                                                         return;\r
921                                                 }\r
922                                                 return;\r
923 \r
924                                         case E楽器パート.GUITAR:\r
925 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
926                                                 if (CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する) {\r
927 #endif\r
928                                                         CDTXMania.DTX.tWavの再生停止(this.n最後に再生したギターの実WAV番号);\r
929 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
930                                                 }\r
931 #endif\r
932                                                 CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 );\r
933                                                 this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号;\r
934                                                 return;\r
935 \r
936                                         case E楽器パート.BASS:\r
937 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
938                                                 if (CDTXMania.DTX.bBASS演奏で直前のBASSを消音する) {\r
939 #endif\r
940                                                         CDTXMania.DTX.tWavの再生停止(this.n最後に再生したベースの実WAV番号);\r
941 #if TEST_NOTEOFFMODE    // 2011.1.1 yyagi TEST\r
942                                                 }\r
943 #endif\r
944                                                 CDTXMania.DTX.tチップの再生(pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生);\r
945                                                 this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号;\r
946                                                 return;\r
947                                 }\r
948                         }\r
949                 }\r
950                 private void tステータスパネルの選択()\r
951                 {\r
952                         if( CDTXMania.bコンパクトモード )\r
953                         {\r
954                                 this.actStatusPanels.tラベル名からステータスパネルを決定する( null );\r
955                         }\r
956                         else if( CDTXMania.stage選曲.r確定された曲 != null )\r
957                         {\r
958                                 this.actStatusPanels.tラベル名からステータスパネルを決定する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] );\r
959                         }\r
960                 }\r
961                 private E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )\r
962                 {\r
963                         pChip.bHit = true;\r
964                         bool bIsAutoPlay = false;\r
965                         if( ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && CDTXMania.ConfigIni.bAutoPlay.Guitar ) ||\r
966                                 ( ( pChip.e楽器パート == E楽器パート.BASS ) && CDTXMania.ConfigIni.bAutoPlay.Bass ) )\r
967                         {\r
968                                 bIsAutoPlay = true;\r
969                         }\r
970                         else\r
971                         {\r
972                                 this.bAUTOでないチップが1つでもバーを通過した = true;\r
973                         }\r
974                         E判定 eJudgeResult = E判定.Auto;\r
975                         switch (pChip.e楽器パート)\r
976                         {\r
977                                 case E楽器パート.GUITAR:\r
978                                         eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, bIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Guitar );\r
979                                         this.actJudgeString.Start( 10, bIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );\r
980                                         break;\r
981 \r
982                                 case E楽器パート.BASS:\r
983                                         eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, bIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Bass );\r
984                                         this.actJudgeString.Start( 11, bIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );\r
985                                         break;\r
986                         }\r
987                         if( !bIsAutoPlay )\r
988                         {\r
989                                 this.t判定にあわせてゲージを増減する( pChip.e楽器パート, eJudgeResult );\r
990                         }\r
991                         int num = 0;\r
992                         switch( pChip.e楽器パート )\r
993                         {\r
994                                 case E楽器パート.DRUMS:\r
995                                         switch (eJudgeResult)\r
996                                         {\r
997                                                 case E判定.Miss:\r
998                                                 case E判定.Bad:\r
999                                                         this.nヒット数・Auto含む.Drums.Miss++;\r
1000                                                         break;\r
1001                                                 default:\r
1002                                                         this.nヒット数・Auto含む.Drums[(int)eJudgeResult]++;\r
1003                                                         break;\r
1004                                         }\r
1005                                         break;\r
1006 \r
1007                                 case E楽器パート.GUITAR:\r
1008                                         switch (eJudgeResult)\r
1009                                         {\r
1010                                                 case E判定.Miss:\r
1011                                                 case E判定.Bad:\r
1012                                                         this.nヒット数・Auto含む.Guitar.Miss++;\r
1013                                                         if ( !bIsAutoPlay )\r
1014                                                         {\r
1015                                                                 this.nヒット数・Auto含まない.Guitar.Miss++;\r
1016                                                         }\r
1017                                                         break;\r
1018                                                 default:        // #24068 2011.1.10 ikanick changed\r
1019                                                                         // #24167 2011.1.16 yyagi changed\r
1020                                                         this.nヒット数・Auto含む.Guitar[ (int) eJudgeResult ]++;\r
1021                                                         if ( !bIsAutoPlay )\r
1022                                                         {\r
1023                                                                 this.nヒット数・Auto含まない.Guitar[ (int) eJudgeResult ]++;\r
1024                                                         }\r
1025                                                         break;\r
1026                                         }\r
1027                                         switch (eJudgeResult)\r
1028                                         {\r
1029                                                 case E判定.Perfect:\r
1030                                                 case E判定.Great:\r
1031                                                 case E判定.Good:\r
1032                                                         this.actCombo.n現在のコンボ数.Guitar++;\r
1033                                                         break;\r
1034 \r
1035                                                 default:\r
1036                                                         this.actCombo.n現在のコンボ数.Guitar = 0;\r
1037                                                         break;\r
1038                                         }\r
1039                                         break;\r
1040 \r
1041                                 case E楽器パート.BASS:\r
1042                                         switch( eJudgeResult )\r
1043                                         {\r
1044                                                 case E判定.Miss:\r
1045                                                 case E判定.Bad:\r
1046                                                         this.nヒット数・Auto含む.Bass.Miss++;\r
1047                                                         if( !bIsAutoPlay )\r
1048                                                         {\r
1049                                                                 this.nヒット数・Auto含まない.Bass.Miss++;\r
1050                                                         }\r
1051                                                         break;\r
1052                                                 default:     // #24068 2011.1.10 ikanick changed\r
1053                                                         this.nヒット数・Auto含む.Bass[(int)eJudgeResult]++;\r
1054                                                         if ( !bIsAutoPlay )\r
1055                                                         {\r
1056                                                                 this.nヒット数・Auto含まない.Bass[ (int) eJudgeResult ]++;\r
1057                                                         }\r
1058                                                         break;\r
1059                                         }\r
1060                                         switch (eJudgeResult)\r
1061                                         {\r
1062                                                 case E判定.Perfect:\r
1063                                                 case E判定.Great:\r
1064                                                 case E判定.Good:\r
1065                                                         this.actCombo.n現在のコンボ数.Bass++;\r
1066                                                         break;\r
1067 \r
1068                                                 default:\r
1069                                                         this.actCombo.n現在のコンボ数.Bass = 0;\r
1070                                                         break;\r
1071                                         }\r
1072                                         break;\r
1073 \r
1074                                 default:\r
1075                                         break;\r
1076                         }\r
1077                         if( ( !bIsAutoPlay && ( eJudgeResult != E判定.Miss ) ) && ( eJudgeResult != E判定.Bad ) )\r
1078                         {\r
1079                                 int nCombos = 0;\r
1080                                 switch ( pChip.e楽器パート )\r
1081                                 {\r
1082                                         case E楽器パート.GUITAR:\r
1083                                                 nCombos = this.actCombo.n現在のコンボ数.Guitar;\r
1084                                                 break;\r
1085                                         case E楽器パート.BASS:\r
1086                                                 nCombos = this.actCombo.n現在のコンボ数.Bass;\r
1087                                                 break;\r
1088                                 }\r
1089                                 long nScore = this.actScore.Get( pChip.e楽器パート );\r
1090                                 long[] numArray = new long[] { 350L, 200L, 50L, 0L };\r
1091                                 if( ( nCombos <= 500 ) || ( eJudgeResult == E判定.Good ) )\r
1092                                 {\r
1093                                         nScore += numArray[ (int) eJudgeResult ] * nCombos;\r
1094                                 }\r
1095                                 else if( ( eJudgeResult == E判定.Perfect ) || ( eJudgeResult == E判定.Great ) )\r
1096                                 {\r
1097                                         nScore += numArray[ (int) eJudgeResult ] * 500L;\r
1098                                 }\r
1099                                 this.actScore.Set( pChip.e楽器パート, nScore );\r
1100                         }\r
1101                         return eJudgeResult;\r
1102                 }\r
1103                 private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )\r
1104                 {\r
1105                         this.tチップのヒット処理・BadならびにTight時のMiss( part, 0 );\r
1106                 }\r
1107                 private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )\r
1108                 {\r
1109                         this.t判定にあわせてゲージを増減する( part, E判定.Miss );\r
1110                         switch( part )\r
1111                         {\r
1112                                 case E楽器パート.DRUMS:\r
1113                                         break;\r
1114 \r
1115                                 case E楽器パート.GUITAR:\r
1116                                         this.actJudgeString.Start( 10, E判定.Bad, 999 );\r
1117                                         this.actCombo.n現在のコンボ数.Guitar = 0;\r
1118                                         return;\r
1119 \r
1120                                 case E楽器パート.BASS:\r
1121                                         this.actJudgeString.Start( 11, E判定.Bad, 999 );\r
1122                                         this.actCombo.n現在のコンボ数.Bass = 0;\r
1123                                         break;\r
1124 \r
1125                                 default:\r
1126                                         return;\r
1127                         }\r
1128                 }\r
1129                 private void tパネル文字列の設定()\r
1130                 {\r
1131                         this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );\r
1132                 }\r
1133                 private void t進行描画・AVI()\r
1134                 {\r
1135                         if( ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( !CDTXMania.ConfigIni.bストイックモード && CDTXMania.ConfigIni.bAVI有効 ) )\r
1136                         {\r
1137                                 this.actAVI.t進行描画( 0xb5, 50 );\r
1138                         }\r
1139                 }\r
1140                 private void t進行描画・BGA()\r
1141                 {\r
1142                         if( ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( !CDTXMania.ConfigIni.bストイックモード && CDTXMania.ConfigIni.bBGA有効 ) )\r
1143                         {\r
1144                                 this.actBGA.t進行描画( 0xb5, 50 );\r
1145                         }\r
1146                 }\r
1147                 private void t進行描画・DANGER()\r
1148                 {\r
1149                 }\r
1150                 private void t進行描画・MIDIBGM()\r
1151                 {\r
1152                         if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )\r
1153                         {\r
1154                                 CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
1155                         }\r
1156                 }\r
1157                 private void t進行描画・RGBボタン()\r
1158                 {\r
1159                         if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )\r
1160                         {\r
1161                                 this.actRGB.On進行描画();\r
1162                         }\r
1163                 }\r
1164                 private void t進行描画・STAGEFAILED()\r
1165                 {\r
1166                         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
1167                         {\r
1168                                 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
1169                                 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
1170                                 this.actFO.tフェードアウト開始();\r
1171                         }\r
1172                 }\r
1173                 private void t進行描画・WailingBonus()\r
1174                 {\r
1175                         if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
1176                         {\r
1177                                 this.actWailingBonus.On進行描画();\r
1178                         }\r
1179                 }\r
1180                 private void t進行描画・Wailing枠()\r
1181                 {\r
1182                         if( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )\r
1183                         {\r
1184                                 if( CDTXMania.DTX.bチップがある.Guitar && ( this.txWailing枠 != null ) )\r
1185                                 {\r
1186                                         this.txWailing枠.t2D描画( CDTXMania.app.Device, 0x8b, CDTXMania.ConfigIni.bReverse.Guitar ? 340 : 11 );\r
1187                                 }\r
1188                                 if( CDTXMania.DTX.bチップがある.Bass && ( this.txWailing枠 != null ) )\r
1189                                 {\r
1190                                         this.txWailing枠.t2D描画( CDTXMania.app.Device, 0x251, CDTXMania.ConfigIni.bReverse.Bass ? 340 : 11 );\r
1191                                 }\r
1192                         }\r
1193                 }\r
1194                 private void t進行描画・ギターベース判定ライン()\r
1195                 {\r
1196                         if( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )\r
1197                         {\r
1198                                 if( CDTXMania.DTX.bチップがある.Guitar )\r
1199                                 {\r
1200                                         int y = ( CDTXMania.ConfigIni.bReverse.Guitar ? 0x171 : 40 ) - 3;\r
1201                                         for( int i = 0; i < 4; i++ )\r
1202                                         {\r
1203                                                 if( this.txヒットバー != null )\r
1204                                                 {\r
1205                                                         this.txヒットバー.t2D描画( CDTXMania.app.Device, 0x17 + ( 0x1c * i ), y, new Rectangle( 0, i * 8, 0x1c, 8 ) );\r
1206                                                 }\r
1207                                         }\r
1208                                 }\r
1209                                 if( CDTXMania.DTX.bチップがある.Bass )\r
1210                                 {\r
1211                                         int num3 = ( CDTXMania.ConfigIni.bReverse.Bass ? 0x171 : 40 ) - 3;\r
1212                                         for( int j = 0; j < 4; j++ )\r
1213                                         {\r
1214                                                 if( this.txヒットバー != null )\r
1215                                                 {\r
1216                                                         this.txヒットバー.t2D描画( CDTXMania.app.Device, 0x1dd + ( 0x1c * j ), num3, new Rectangle( 0, j * 8, 0x1c, 8 ) );\r
1217                                                 }\r
1218                                         }\r
1219                                 }\r
1220                         }\r
1221                 }\r
1222                 private void t進行描画・ゲージ()\r
1223                 {\r
1224                         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
1225                         {\r
1226                                 this.actGauge.On進行描画();\r
1227                         }\r
1228                 }\r
1229                 private void t進行描画・コンボ()\r
1230                 {\r
1231                         this.actCombo.On進行描画();\r
1232                 }\r
1233                 private void t進行描画・スコア()\r
1234                 {\r
1235                         this.actScore.On進行描画();\r
1236                 }\r
1237                 private void t進行描画・ステータスパネル()\r
1238                 {\r
1239                         this.actStatusPanels.On進行描画();\r
1240                 }\r
1241                 private bool t進行描画・チップ()\r
1242                 {\r
1243                         if( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
1244                         {\r
1245                                 return true;\r
1246                         }\r
1247                         if( ( this.n現在のトップChip == -1 ) || ( this.n現在のトップChip >= CDTXMania.DTX.listChip.Count ) )\r
1248                         {\r
1249                                 return true;\r
1250                         }\r
1251                         int num = this.n現在のトップChip;\r
1252                         if( num == -1 )\r
1253                         {\r
1254                                 return true;\r
1255                         }\r
1256 \r
1257                         //double speed = 264.0; // BPM150の時の1小節の長さ[dot]\r
1258                         double speed = 234.0;   // BPM150の時の1小節の長さ[dot]\r
1259 \r
1260                         double num2 = ( ( ( ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.0 ) * 0.5 ) * 37.5 ) * speed ) / 60000.0;\r
1261                         double num3 = ( ( ( ( ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 ) * 0.5 ) * 37.5 ) * speed ) / 60000.0;\r
1262                         double num4 = ( ( ( ( ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Bass + 1.0 ) * 0.5 ) * 0.5 ) * 37.5 ) * speed ) / 60000.0;\r
1263 \r
1264                         CDTX dTX = CDTXMania.DTX;\r
1265                         CConfigIni configIni = CDTXMania.ConfigIni;\r
1266                         while( num < dTX.listChip.Count )\r
1267                         {\r
1268                                 CDTX.CChip pChip = dTX.listChip[ num ];\r
1269                                 pChip.nバーからの距離dot.Drums = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * num2 );\r
1270                                 pChip.nバーからの距離dot.Guitar = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * num3 );\r
1271                                 pChip.nバーからの距離dot.Bass = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * num4 );\r
1272                                 if( Math.Min( Math.Min( pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar ), pChip.nバーからの距離dot.Bass ) > 450 )\r
1273                                 {\r
1274                                         break;\r
1275                                 }\r
1276                                 if( ( ( num == this.n現在のトップChip ) && ( pChip.nバーからの距離dot.Drums < -65 ) ) && pChip.bHit )\r
1277                                 {\r
1278                                         this.n現在のトップChip++;\r
1279                                         num = this.n現在のトップChip;\r
1280                                         continue;\r
1281                                 }\r
1282 \r
1283                                 bool bIsAutoPlay = false;\r
1284                                 if ((\r
1285                                                 ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]]) ||\r
1286                                                 ((pChip.e楽器パート == E楽器パート.GUITAR) && CDTXMania.ConfigIni.bAutoPlay.Guitar)\r
1287                                         ) ||\r
1288                                                 ((pChip.e楽器パート == E楽器パート.BASS) && CDTXMania.ConfigIni.bAutoPlay.Bass)\r
1289                                   )\r
1290                                 //                              if ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])\r
1291                                 {\r
1292                                         bIsAutoPlay = true;\r
1293                                 }\r
1294 \r
1295                                 int nInputAdjustTime = 0;\r
1296                                 if (bIsAutoPlay)\r
1297                                 {\r
1298                                         //nInputAdjustTime = 0;\r
1299                                 }\r
1300                                 else if (pChip.e楽器パート == E楽器パート.UNKNOWN)\r
1301                                 {\r
1302                                         //nInputAdjustTime = 0;\r
1303                                 }\r
1304                                 else\r
1305                                 {\r
1306                                         //int[] nInputAdjustTimes = new int[] { this.nInputAdjustTimeMs.Drums, this.nInputAdjustTimeMs.Guitar, this.nInputAdjustTimeMs.Bass };\r
1307                                         //nInputAdjustTime = nInputAdjustTimes[(int)pChip.e楽器パート];\r
1308                                         nInputAdjustTime = this.nInputAdjustTimeMs[(int)pChip.e楽器パート];\r
1309                                 }\r
1310 \r
1311                                 if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&\r
1312                                         ((pChip.nバーからの距離dot.Drums < 0) && (this.e指定時刻からChipのJUDGEを返す(CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss)))\r
1313                                 {\r
1314                                         this.tチップのヒット処理( CDTXMania.Timer.n現在時刻, pChip );\r
1315                                 }\r
1316                                 switch( pChip.nチャンネル番号 )\r
1317                                 {\r
1318                                         case 1:\r
1319                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1320                                                 {\r
1321                                                         pChip.bHit = true;\r
1322                                                         if( configIni.bBGM音を発声する )\r
1323                                                         {\r
1324                                                                 dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
1325                                                         }\r
1326                                                 }\r
1327                                                 break;\r
1328 \r
1329                                         case 3:\r
1330                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1331                                                 {\r
1332                                                         pChip.bHit = true;\r
1333                                                         this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;\r
1334                                                 }\r
1335                                                 break;\r
1336 \r
1337                                         case 4:\r
1338                                         case 7:\r
1339                                         case 0x55:\r
1340                                         case 0x56:\r
1341                                         case 0x57:\r
1342                                         case 0x58:\r
1343                                         case 0x59:\r
1344                                         case 0x60:\r
1345                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1346                                                 {\r
1347                                                         pChip.bHit = true;\r
1348                                                         if( configIni.bBGA有効 )\r
1349                                                         {\r
1350                                                                 switch( pChip.eBGA種別 )\r
1351                                                                 {\r
1352                                                                         case EBGA種別.BMPTEX:\r
1353                                                                                 if( pChip.rBMPTEX != null )\r
1354                                                                                 {\r
1355                                                                                         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
1356                                                                                 }\r
1357                                                                                 break;\r
1358 \r
1359                                                                         case EBGA種別.BGA:\r
1360                                                                                 if( ( pChip.rBGA != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )\r
1361                                                                                 {\r
1362                                                                                         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
1363                                                                                 }\r
1364                                                                                 break;\r
1365 \r
1366                                                                         case EBGA種別.BGAPAN:\r
1367                                                                                 if( ( pChip.rBGAPan != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )\r
1368                                                                                 {\r
1369                                                                                         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
1370                                                                                 }\r
1371                                                                                 break;\r
1372 \r
1373                                                                         default:\r
1374                                                                                 if( pChip.rBMP != null )\r
1375                                                                                 {\r
1376                                                                                         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
1377                                                                                 }\r
1378                                                                                 break;\r
1379                                                                 }\r
1380                                                         }\r
1381                                                 }\r
1382                                                 break;\r
1383 \r
1384                                         case 8:\r
1385                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1386                                                 {\r
1387                                                         pChip.bHit = true;\r
1388                                                         if( dTX.listBPM.ContainsKey( pChip.n整数値・内部番号 ) )\r
1389                                                         {\r
1390                                                                 this.actPlayInfo.dbBPM = ( dTX.listBPM[ pChip.n整数値・内部番号 ].dbBPM値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;\r
1391                                                         }\r
1392                                                 }\r
1393                                                 break;\r
1394 \r
1395                                         case 0x11:\r
1396                                         case 0x12:\r
1397                                         case 0x13:\r
1398                                         case 0x14:\r
1399                                         case 0x15:\r
1400                                         case 0x16:\r
1401                                         case 0x17:\r
1402                                         case 0x18:\r
1403                                         case 0x19:\r
1404                                         case 0x1a:\r
1405                                                 {\r
1406                                                         int num1 = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ];\r
1407                                                         if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1408                                                         {\r
1409                                                                 pChip.bHit = true;\r
1410                                                                 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );\r
1411                                                         }\r
1412                                                         break;\r
1413                                                 }\r
1414                                         case 0x1f:\r
1415                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1416                                                 {\r
1417                                                         pChip.bHit = true;\r
1418                                                         this.r現在の歓声Chip.Drums = pChip;\r
1419                                                 }\r
1420                                                 break;\r
1421 \r
1422                                         case 0x20:\r
1423                                         case 0x21:\r
1424                                         case 0x22:\r
1425                                         case 0x23:\r
1426                                         case 0x24:\r
1427                                         case 0x25:\r
1428                                         case 0x26:\r
1429                                         case 0x27:\r
1430                                                 if( configIni.bGuitar有効 )\r
1431                                                 {\r
1432                                                         if( configIni.bSudden.Guitar )\r
1433                                                         {\r
1434                                                                 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;\r
1435                                                         }\r
1436                                                         if( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )\r
1437                                                         {\r
1438                                                                 pChip.b可視 = false;\r
1439                                                         }\r
1440                                                         if( !pChip.bHit && pChip.b可視 )\r
1441                                                         {\r
1442                                                                 int num6 = configIni.bReverse.Guitar ? ( 0x171 - pChip.nバーからの距離dot.Guitar ) : ( 40 + pChip.nバーからの距離dot.Guitar );\r
1443                                                                 if( ( num6 > 0 ) && ( num6 < 0x199 ) )\r
1444                                                                 {\r
1445                                                                         int num7 = this.ctチップ模様アニメ.Guitar.n現在の値;\r
1446                                                                         if( pChip.nチャンネル番号 == 0x20 )\r
1447                                                                         {\r
1448                                                                                 if( this.txチップ != null )\r
1449                                                                                 {\r
1450                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, num6 - 4, new Rectangle( 0, 0xc0 + ( ( num7 % 5 ) * 8 ), 0x67, 8 ) );\r
1451                                                                                 }\r
1452                                                                         }\r
1453                                                                         else if( !configIni.bLeft.Guitar )\r
1454                                                                         {\r
1455                                                                                 Rectangle rectangle = new Rectangle( 0, num7 * 8, 0x20, 8 );\r
1456                                                                                 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
1457                                                                                 {\r
1458                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, num6 - 4, rectangle );\r
1459                                                                                 }\r
1460                                                                                 rectangle.X += 0x20;\r
1461                                                                                 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
1462                                                                                 {\r
1463                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x3e, num6 - 4, rectangle );\r
1464                                                                                 }\r
1465                                                                                 rectangle.X += 0x20;\r
1466                                                                                 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
1467                                                                                 {\r
1468                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x62, num6 - 4, rectangle );\r
1469                                                                                 }\r
1470                                                                         }\r
1471                                                                         else\r
1472                                                                         {\r
1473                                                                                 Rectangle rectangle2 = new Rectangle( 0, num7 * 8, 0x20, 8 );\r
1474                                                                                 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
1475                                                                                 {\r
1476                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x62, num6 - 4, rectangle2 );\r
1477                                                                                 }\r
1478                                                                                 rectangle2.X += 0x20;\r
1479                                                                                 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
1480                                                                                 {\r
1481                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x3e, num6 - 4, rectangle2 );\r
1482                                                                                 }\r
1483                                                                                 rectangle2.X += 0x20;\r
1484                                                                                 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
1485                                                                                 {\r
1486                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, num6 - 4, rectangle2 );\r
1487                                                                                 }\r
1488                                                                         }\r
1489                                                                 }\r
1490                                                         }\r
1491                                                         if( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
1492                                                         {\r
1493                                                                 pChip.bHit = true;\r
1494                                                                 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )\r
1495                                                                 {\r
1496                                                                         this.actChipFire.Start( 0 );\r
1497                                                                 }\r
1498                                                                 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )\r
1499                                                                 {\r
1500                                                                         this.actChipFire.Start( 1 );\r
1501                                                                 }\r
1502                                                                 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )\r
1503                                                                 {\r
1504                                                                         this.actChipFire.Start( 2 );\r
1505                                                                 }\r
1506                                                                 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );\r
1507                                                                 this.r次にくるギターChip = null;\r
1508                                                                 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r
1509                                                         }\r
1510                                                         break;\r
1511                                                 }\r
1512                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
1513                                                 {\r
1514                                                         pChip.bHit = true;\r
1515                                                         this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );\r
1516                                                 }\r
1517                                                 break;\r
1518 \r
1519                                         case 40:\r
1520                                                 if( configIni.bGuitar有効 )\r
1521                                                 {\r
1522                                                         if( configIni.bSudden.Guitar )\r
1523                                                         {\r
1524                                                                 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;\r
1525                                                         }\r
1526                                                         if( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )\r
1527                                                         {\r
1528                                                                 pChip.b可視 = false;\r
1529                                                         }\r
1530                                                         if( !pChip.bHit && pChip.b可視 )\r
1531                                                         {\r
1532                                                                 int num10 = 0x19;\r
1533                                                                 int num11 = configIni.bReverse.Guitar ? ( 0x171 - pChip.nバーからの距離dot.Guitar ) : ( 40 + pChip.nバーからの距離dot.Guitar );\r
1534                                                                 int num12 = num11;\r
1535                                                                 int num13 = 0;\r
1536                                                                 if( ( num12 < ( 0x199 + num10 ) ) && ( num12 > -num10 ) )\r
1537                                                                 {\r
1538                                                                         int num14 = this.ctWailingチップ模様アニメ.n現在の値;\r
1539                                                                         Rectangle rectangle5 = new Rectangle( 0x60 + ( num14 * 20 ), 0, 20, 50 );\r
1540                                                                         if( num12 < num10 )\r
1541                                                                         {\r
1542                                                                                 rectangle5.Y += num10 - num12;\r
1543                                                                                 rectangle5.Height -= num10 - num12;\r
1544                                                                                 num13 = num10 - num12;\r
1545                                                                         }\r
1546                                                                         if( num12 > ( 0x199 - num10 ) )\r
1547                                                                         {\r
1548                                                                                 rectangle5.Height -= num12 - ( 0x199 - num10 );\r
1549                                                                         }\r
1550                                                                         if( ( rectangle5.Bottom > rectangle5.Top ) && ( this.txチップ != null ) )\r
1551                                                                         {\r
1552                                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x8b, ( num11 - num10 ) + num13, rectangle5 );\r
1553                                                                         }\r
1554                                                                 }\r
1555                                                         }\r
1556                                                         if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
1557                                                         {\r
1558                                                                 pChip.bHit = true;\r
1559                                                                 if( configIni.bAutoPlay.Guitar )\r
1560                                                                 {\r
1561                                                                         this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
1562                                                                 }\r
1563                                                         }\r
1564                                                         break;\r
1565                                                 }\r
1566                                                 pChip.bHit = true;\r
1567                                                 break;\r
1568 \r
1569                                         case 0x2f:\r
1570                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
1571                                                 {\r
1572                                                         pChip.bHit = true;\r
1573                                                         this.r現在の歓声Chip.Guitar = pChip;\r
1574                                                 }\r
1575                                                 break;\r
1576 \r
1577                                         case 0x31:\r
1578                                         case 50:\r
1579                                         case 0x33:\r
1580                                         case 0x34:\r
1581                                         case 0x35:\r
1582                                         case 0x36:\r
1583                                         case 0x37:\r
1584                                         case 0x38:\r
1585                                         case 0x39:\r
1586                                         case 0x3a:\r
1587                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1588                                                 {\r
1589                                                         pChip.bHit = true;\r
1590                                                 }\r
1591                                                 break;\r
1592 \r
1593                                         case 80:\r
1594                                                 {\r
1595                                                         int num20 = pChip.n発声位置 / 0x180;\r
1596                                                         if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1597                                                         {\r
1598                                                                 pChip.bHit = true;\r
1599                                                                 this.actPlayInfo.n小節番号 = num20 - 1;\r
1600                                                                 if( configIni.bWave再生位置自動調整機能有効 )\r
1601                                                                 {\r
1602                                                                         dTX.tWave再生位置自動補正();\r
1603                                                                 }\r
1604                                                         }\r
1605                                                         if( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )\r
1606                                                         {\r
1607                                                                 int y = configIni.bReverse.Guitar ? ( ( 0x171 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 40 + pChip.nバーからの距離dot.Guitar ) - 1 );\r
1608                                                                 if( ( dTX.bチップがある.Guitar && ( y > 0 ) ) && ( ( y < 0x199 ) && ( this.txチップ != null ) ) )\r
1609                                                                 {\r
1610                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, y, new Rectangle( 0, 0xeb, 0x68, 1 ) );\r
1611                                                                 }\r
1612                                                                 y = configIni.bReverse.Bass ? ( ( 0x171 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 40 + pChip.nバーからの距離dot.Bass ) - 1 );\r
1613                                                                 if( ( dTX.bチップがある.Bass && ( y > 0 ) ) && ( ( y < 0x199 ) && ( this.txチップ != null ) ) )\r
1614                                                                 {\r
1615                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 480, y, new Rectangle( 0, 0xeb, 0x68, 1 ) );\r
1616                                                                 }\r
1617                                                         }\r
1618                                                         break;\r
1619                                                 }\r
1620                                         case 0x51:\r
1621                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1622                                                         pChip.bHit = true;\r
1623                                                 break;\r
1624 \r
1625                                         case 0x52:\r
1626                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1627                                                 {\r
1628                                                         pChip.bHit = true;\r
1629                                                 }\r
1630                                                 break;\r
1631 \r
1632                                         case 0x53:\r
1633                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1634                                                 {\r
1635                                                         pChip.bHit = true;\r
1636                                                 }\r
1637                                                 break;\r
1638 \r
1639                                         case 0x54:\r
1640                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1641                                                 {\r
1642                                                         pChip.bHit = true;\r
1643                                                         if( configIni.bAVI有効 )\r
1644                                                         {\r
1645                                                                 switch( pChip.eAVI種別 )\r
1646                                                                 {\r
1647                                                                         case EAVI種別.AVI:\r
1648                                                                                 if( pChip.rAVI != null )\r
1649                                                                                 {\r
1650                                                                                         this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, 0x116, 0x163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pChip.n発声時刻ms );\r
1651                                                                                 }\r
1652                                                                                 break;\r
1653 \r
1654                                                                         case EAVI種別.AVIPAN:\r
1655                                                                                 if( pChip.rAVIPan != null )\r
1656                                                                                 {\r
1657                                                                                         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
1658                                                                                 }\r
1659                                                                                 break;\r
1660                                                                 }\r
1661                                                         }\r
1662                                                 }\r
1663                                                 break;\r
1664 \r
1665                                         case 0x61:\r
1666                                         case 0x62:\r
1667                                         case 0x63:\r
1668                                         case 0x64:\r
1669                                         case 0x65:\r
1670                                         case 0x66:\r
1671                                         case 0x67:\r
1672                                         case 0x68:\r
1673                                         case 0x69:\r
1674                                         case 0x70:\r
1675                                         case 0x71:\r
1676                                         case 0x72:\r
1677                                         case 0x73:\r
1678                                         case 0x74:\r
1679                                         case 0x75:\r
1680                                         case 0x76:\r
1681                                         case 0x77:\r
1682                                         case 0x78:\r
1683                                         case 0x79:\r
1684                                         case 0x80:\r
1685                                         case 0x81:\r
1686                                         case 0x82:\r
1687                                         case 0x83:\r
1688                                         case 0x84:\r
1689                                         case 0x85:\r
1690                                         case 0x86:\r
1691                                         case 0x87:\r
1692                                         case 0x88:\r
1693                                         case 0x89:\r
1694                                         case 0x90:\r
1695                                         case 0x91:\r
1696                                         case 0x92:\r
1697                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1698                                                 {\r
1699                                                         pChip.bHit = true;\r
1700                                                         if( configIni.bBGM音を発声する )\r
1701                                                         {\r
1702                                                                 dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] );\r
1703                                                                 dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
1704                                                                 this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号;\r
1705                                                         }\r
1706                                                 }\r
1707                                                 break;\r
1708 \r
1709                                         case 160:\r
1710                                         case 0xa1:\r
1711                                         case 0xa2:\r
1712                                         case 0xa3:\r
1713                                         case 0xa4:\r
1714                                         case 0xa5:\r
1715                                         case 0xa6:\r
1716                                         case 0xa7:\r
1717                                                 if( configIni.bGuitar有効 )\r
1718                                                 {\r
1719                                                         if( configIni.bSudden.Bass )\r
1720                                                         {\r
1721                                                                 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;\r
1722                                                         }\r
1723                                                         if( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )\r
1724                                                         {\r
1725                                                                 pChip.b可視 = false;\r
1726                                                         }\r
1727                                                         if( !pChip.bHit && pChip.b可視 )\r
1728                                                         {\r
1729                                                                 int num8 = configIni.bReverse.Bass ? ( 0x171 - pChip.nバーからの距離dot.Bass ) : ( 40 + pChip.nバーからの距離dot.Bass );\r
1730                                                                 if( ( num8 > 0 ) && ( num8 < 0x199 ) )\r
1731                                                                 {\r
1732                                                                         int num9 = this.ctチップ模様アニメ.Bass.n現在の値;\r
1733                                                                         if( pChip.nチャンネル番号 == 160 )\r
1734                                                                         {\r
1735                                                                                 if( this.txチップ != null )\r
1736                                                                                 {\r
1737                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 480, num8 - 4, new Rectangle( 0, 0xc0 + ( ( num9 % 5 ) * 8 ), 0x67, 8 ) );\r
1738                                                                                 }\r
1739                                                                         }\r
1740                                                                         else if( !configIni.bLeft.Bass )\r
1741                                                                         {\r
1742                                                                                 Rectangle rectangle3 = new Rectangle( 0, num9 * 8, 0x20, 8 );\r
1743                                                                                 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
1744                                                                                 {\r
1745                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 480, num8 - 4, rectangle3 );\r
1746                                                                                 }\r
1747                                                                                 rectangle3.X += 0x20;\r
1748                                                                                 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
1749                                                                                 {\r
1750                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x204, num8 - 4, rectangle3 );\r
1751                                                                                 }\r
1752                                                                                 rectangle3.X += 0x20;\r
1753                                                                                 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
1754                                                                                 {\r
1755                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x228, num8 - 4, rectangle3 );\r
1756                                                                                 }\r
1757                                                                         }\r
1758                                                                         else\r
1759                                                                         {\r
1760                                                                                 Rectangle rectangle4 = new Rectangle( 0, num9 * 8, 0x20, 8 );\r
1761                                                                                 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )\r
1762                                                                                 {\r
1763                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x228, num8 - 4, rectangle4 );\r
1764                                                                                 }\r
1765                                                                                 rectangle4.X += 0x20;\r
1766                                                                                 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )\r
1767                                                                                 {\r
1768                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 0x204, num8 - 4, rectangle4 );\r
1769                                                                                 }\r
1770                                                                                 rectangle4.X += 0x20;\r
1771                                                                                 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )\r
1772                                                                                 {\r
1773                                                                                         this.txチップ.t2D描画( CDTXMania.app.Device, 480, num8 - 4, rectangle4 );\r
1774                                                                                 }\r
1775                                                                         }\r
1776                                                                 }\r
1777                                                         }\r
1778                                                         if( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
1779                                                         {\r
1780                                                                 pChip.bHit = true;\r
1781                                                                 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
1782                                                                 {\r
1783                                                                         this.actChipFire.Start( 3 );\r
1784                                                                 }\r
1785                                                                 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
1786                                                                 {\r
1787                                                                         this.actChipFire.Start( 4 );\r
1788                                                                 }\r
1789                                                                 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )\r
1790                                                                 {\r
1791                                                                         this.actChipFire.Start( 5 );\r
1792                                                                 }\r
1793                                                                 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );\r
1794                                                                 this.r次にくるベースChip = null;\r
1795                                                                 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r
1796                                                         }\r
1797                                                         break;\r
1798                                                 }\r
1799                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
1800                                                 {\r
1801                                                         pChip.bHit = true;\r
1802                                                         this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );\r
1803                                                 }\r
1804                                                 break;\r
1805 \r
1806                                         case 0xa8:\r
1807                                                 if( configIni.bGuitar有効 )\r
1808                                                 {\r
1809                                                         if( configIni.bSudden.Bass )\r
1810                                                         {\r
1811                                                                 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;\r
1812                                                         }\r
1813                                                         if( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )\r
1814                                                         {\r
1815                                                                 pChip.b可視 = false;\r
1816                                                         }\r
1817                                                         if( !pChip.bHit && pChip.b可視 )\r
1818                                                         {\r
1819                                                                 int num15 = 0x19;\r
1820                                                                 int num16 = configIni.bReverse.Bass ? ( 0x171 - pChip.nバーからの距離dot.Bass ) : ( 40 + pChip.nバーからの距離dot.Bass );\r
1821                                                                 int num17 = num16;\r
1822                                                                 int num18 = 0;\r
1823                                                                 if( ( num17 < ( 0x199 + num15 ) ) && ( num17 > -num15 ) )\r
1824                                                                 {\r
1825                                                                         int num19 = this.ctWailingチップ模様アニメ.n現在の値;\r
1826                                                                         Rectangle rectangle6 = new Rectangle( 0x60 + ( num19 * 20 ), 0, 20, 50 );\r
1827                                                                         if( num17 < num15 )\r
1828                                                                         {\r
1829                                                                                 rectangle6.Y += num15 - num17;\r
1830                                                                                 rectangle6.Height -= num15 - num17;\r
1831                                                                                 num18 = num15 - num17;\r
1832                                                                         }\r
1833                                                                         if( num17 > ( 0x199 - num15 ) )\r
1834                                                                         {\r
1835                                                                                 rectangle6.Height -= num17 - ( 0x199 - num15 );\r
1836                                                                         }\r
1837                                                                         if( ( rectangle6.Bottom > rectangle6.Top ) && ( this.txチップ != null ) )\r
1838                                                                         {\r
1839                                                                                 this.txチップ.t2D描画( CDTXMania.app.Device, 0x251, ( num16 - num15 ) + num18, rectangle6 );\r
1840                                                                         }\r
1841                                                                 }\r
1842                                                         }\r
1843                                                         if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
1844                                                         {\r
1845                                                                 pChip.bHit = true;\r
1846                                                                 if( configIni.bAutoPlay.Bass )\r
1847                                                                 {\r
1848                                                                         this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
1849                                                                 }\r
1850                                                         }\r
1851                                                         break;\r
1852                                                 }\r
1853                                                 pChip.bHit = true;\r
1854                                                 break;\r
1855 \r
1856                                         case 0xaf:\r
1857                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
1858                                                 {\r
1859                                                         pChip.bHit = true;\r
1860                                                         this.r現在の歓声Chip.Bass = pChip;\r
1861                                                 }\r
1862                                                 break;\r
1863 \r
1864                                         case 0xb1:\r
1865                                         case 0xb2:\r
1866                                         case 0xb3:\r
1867                                         case 180:\r
1868                                         case 0xb5:\r
1869                                         case 0xb6:\r
1870                                         case 0xb7:\r
1871                                         case 0xb8:\r
1872                                         case 0xb9:\r
1873                                         case 0xbc:\r
1874                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1875                                                 {\r
1876                                                         pChip.bHit = true;\r
1877                                                 }\r
1878                                                 break;\r
1879 \r
1880                                         case 0xba:\r
1881                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
1882                                                 {\r
1883                                                         pChip.bHit = true;\r
1884                                                         this.r現在の空うちギターChip = pChip;\r
1885                                                         pChip.nチャンネル番号 = 0x20;\r
1886                                                 }\r
1887                                                 break;\r
1888 \r
1889                                         case 0xbb:\r
1890                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
1891                                                 {\r
1892                                                         pChip.bHit = true;\r
1893                                                         this.r現在の空うちベースChip = pChip;\r
1894                                                         pChip.nチャンネル番号 = 160;\r
1895                                                 }\r
1896                                                 break;\r
1897 \r
1898                                         case 0xc4:\r
1899                                         case 0xc7:\r
1900                                         case 0xd5:\r
1901                                         case 0xd6:\r
1902                                         case 0xd7:\r
1903                                         case 0xd8:\r
1904                                         case 0xd9:\r
1905                                         case 0xe0:\r
1906                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1907                                                 {\r
1908                                                         pChip.bHit = true;\r
1909                                                         if( ( configIni.bBGA有効 && ( pChip.eBGA種別 == EBGA種別.BMP ) ) || ( pChip.eBGA種別 == EBGA種別.BMPTEX ) )\r
1910                                                         {\r
1911                                                                 for( int i = 0; i < 8; i++ )\r
1912                                                                 {\r
1913                                                                         if( this.nBGAスコープチャンネルマップ[ 0, i ] == pChip.nチャンネル番号 )\r
1914                                                                         {\r
1915                                                                                 this.actBGA.ChangeScope( this.nBGAスコープチャンネルマップ[ 1, i ], pChip.rBMP, pChip.rBMPTEX );\r
1916                                                                         }\r
1917                                                                 }\r
1918                                                         }\r
1919                                                 }\r
1920                                                 break;\r
1921 \r
1922                                         default:\r
1923                                                 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
1924                                                 {\r
1925                                                         pChip.bHit = true;\r
1926                                                 }\r
1927                                                 break;\r
1928                                 }\r
1929 \r
1930                                 num++;\r
1931                         }\r
1932                         return false;\r
1933                 }\r
1934                 private void t進行描画・チップアニメ()\r
1935                 {\r
1936                         for( int i = 1; i < 3; i++ )\r
1937                         {\r
1938                                 this.ctチップ模様アニメ[ i ].t進行Loop();\r
1939                         }\r
1940                         this.ctWailingチップ模様アニメ.t進行Loop();\r
1941                 }\r
1942                 private void t進行描画・チップファイアGB()\r
1943                 {\r
1944                         this.actChipFire.On進行描画();\r
1945                 }\r
1946                 private void t進行描画・パネル文字列()\r
1947                 {\r
1948                         if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
1949                         {\r
1950                                 this.actPanel.t進行描画( 0xb5, 430 );\r
1951                         }\r
1952                 }\r
1953                 private bool t進行描画・フェードイン・アウト()\r
1954                 {\r
1955                         switch( base.eフェーズID )\r
1956                         {\r
1957                                 case CStage.Eフェーズ.共通_フェードイン:\r
1958                                         if( this.actFI.On進行描画() != 0 )\r
1959                                         {\r
1960                                                 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
1961                                         }\r
1962                                         break;\r
1963 \r
1964                                 case CStage.Eフェーズ.共通_フェードアウト:\r
1965                                 case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:\r
1966                                         if( this.actFO.On進行描画() != 0 )\r
1967                                         {\r
1968                                                 return true;\r
1969                                         }\r
1970                                         break;\r
1971 \r
1972                                 case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:\r
1973                                         if( this.actFOClear.On進行描画() == 0 )\r
1974                                         {\r
1975                                                 break;\r
1976                                         }\r
1977                                         return true;\r
1978                         }\r
1979                         return false;\r
1980                 }\r
1981                 private void t進行描画・レーンフラッシュGB()\r
1982                 {\r
1983                         if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )\r
1984                         {\r
1985                                 this.actLaneFlushGB.On進行描画();\r
1986                         }\r
1987                 }\r
1988                 private void t進行描画・演奏情報()\r
1989                 {\r
1990                         if( !CDTXMania.ConfigIni.b演奏情報を表示しない )\r
1991                         {\r
1992                                 this.actPlayInfo.t進行描画( 0xb5, 50 );\r
1993                         }\r
1994                 }\r
1995                 private void t進行描画・背景()\r
1996                 {\r
1997                         if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )\r
1998                         {\r
1999                                 if( this.tx背景 != null )\r
2000                                 {\r
2001                                         this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
2002                                 }\r
2003                         }\r
2004                         else\r
2005                         {\r
2006                                 CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );\r
2007                         }\r
2008                 }\r
2009                 private void t進行描画・判定文字列()\r
2010                 {\r
2011                         this.actJudgeString.On進行描画();\r
2012                 }\r
2013                 private void t進行描画・譜面スクロール速度()\r
2014                 {\r
2015                         this.act譜面スクロール速度.On進行描画();\r
2016                 }\r
2017                 private void t入力メソッド記憶( E楽器パート part )\r
2018                 {\r
2019                         if( CDTXMania.Pad.st検知したデバイス.Keyboard )\r
2020                         {\r
2021                                 this.b演奏にキーボードを使った[ (int) part ] = true;\r
2022                         }\r
2023                         if( CDTXMania.Pad.st検知したデバイス.Joypad )\r
2024                         {\r
2025                                 this.b演奏にジョイパッドを使った[ (int) part ] = true;\r
2026                         }\r
2027                         if( CDTXMania.Pad.st検知したデバイス.MIDIIN )\r
2028                         {\r
2029                                 this.b演奏にMIDI入力を使った[ (int) part ] = true;\r
2030                         }\r
2031                         if( CDTXMania.Pad.st検知したデバイス.Mouse )\r
2032                         {\r
2033                                 this.b演奏にマウスを使った[ (int) part ] = true;\r
2034                         }\r
2035                 }\r
2036                 private void t入力処理・ギター()\r
2037                 {\r
2038                         if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )\r
2039                         {\r
2040                                 CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );\r
2041                         }\r
2042                         if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.R ) )\r
2043                         {\r
2044                                 CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );\r
2045                         }\r
2046 \r
2047                         if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )\r
2048                         {\r
2049                                 if( bIsAutoPlay.Guitar )\r
2050                                 {\r
2051                                         CDTX.CChip chip = this.r次にくるギターChipを更新して返す();\r
2052                                         if( chip != null )\r
2053                                         {\r
2054                                                 if( ( chip.nチャンネル番号 & 4 ) != 0 )\r
2055                                                 {\r
2056                                                         this.actLaneFlushGB.Start( 0 );\r
2057                                                         this.actRGB.Push( 0 );\r
2058                                                 }\r
2059                                                 if( ( chip.nチャンネル番号 & 2 ) != 0 )\r
2060                                                 {\r
2061                                                         this.actLaneFlushGB.Start( 1 );\r
2062                                                         this.actRGB.Push( 1 );\r
2063                                                 }\r
2064                                                 if( ( chip.nチャンネル番号 & 1 ) != 0 )\r
2065                                                 {\r
2066                                                         this.actLaneFlushGB.Start( 2 );\r
2067                                                         this.actRGB.Push( 2 );\r
2068                                                 }\r
2069                                         }\r
2070                                 }\r
2071                                 else\r
2072                                 {\r
2073                                         int flagR = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.R ) ? 4 : 0;\r
2074                                         this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2075                                         int flagG = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) ? 2 : 0;\r
2076                                         this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2077                                         int flagB = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.B ) ? 1 : 0;\r
2078                                         this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2079                                         int flagRGB = flagR | flagG | flagB;\r
2080                                         if( flagR != 0 )\r
2081                                         {\r
2082                                                 this.actLaneFlushGB.Start( 0 );\r
2083                                                 this.actRGB.Push( 0 );\r
2084                                         }\r
2085                                         if( flagG != 0 )\r
2086                                         {\r
2087                                                 this.actLaneFlushGB.Start( 1 );\r
2088                                                 this.actRGB.Push( 1 );\r
2089                                         }\r
2090                                         if( flagB != 0 )\r
2091                                         {\r
2092                                                 this.actLaneFlushGB.Start( 2 );\r
2093                                                 this.actRGB.Push( 2 );\r
2094                                         }\r
2095                                         List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Pick );\r
2096                                         if( ( events != null ) && ( events.Count > 0 ) )\r
2097                                         {\r
2098                                                 foreach( STInputEvent event2 in events )\r
2099                                                 {\r
2100                                                         CDTX.CChip chip4;\r
2101                                                         if( !event2.b押された )\r
2102                                                         {\r
2103                                                                 continue;\r
2104                                                         }\r
2105                                                         this.t入力メソッド記憶( E楽器パート.GUITAR );\r
2106                                                         long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2107                                                         CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar, 0 );\r
2108                                                         E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Guitar );\r
2109                                                         if (((pChip != null) && ((pChip.nチャンネル番号 & 15) == flagRGB)) && (e判定 != E判定.Miss))\r
2110                                                         {\r
2111                                                                 if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
2112                                                                 {\r
2113                                                                         this.actChipFire.Start( 0 );\r
2114                                                                 }\r
2115                                                                 if( ( flagG != 0 ) || ( flagRGB == 0 ) )\r
2116                                                                 {\r
2117                                                                         this.actChipFire.Start( 1 );\r
2118                                                                 }\r
2119                                                                 if( ( flagB != 0 ) || ( flagRGB == 0 ) )\r
2120                                                                 {\r
2121                                                                         this.actChipFire.Start( 2 );\r
2122                                                                 }\r
2123                                                                 this.tチップのヒット処理( nTime, pChip );\r
2124                                                                 this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );\r
2125                                                                 CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );\r
2126                                                                 if( item != null )\r
2127                                                                 {\r
2128                                                                         this.queWailing.Guitar.Enqueue( item );\r
2129                                                                 }\r
2130                                                                 continue;\r
2131                                                         }\r
2132                                                         if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
2133                                                         {\r
2134                                                                 this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
2135                                                         }\r
2136                                                         if( !CDTXMania.ConfigIni.bLight.Guitar )\r
2137                                                         {\r
2138                                                                 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.GUITAR );\r
2139                                                         }\r
2140                                                 }\r
2141                                         }\r
2142                                         List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
2143                                         if( ( list2 != null ) && ( list2.Count > 0 ) )\r
2144                                         {\r
2145                                                 foreach( STInputEvent event3 in list2 )\r
2146                                                 {\r
2147                                                         CDTX.CChip chip5;\r
2148                                                         if( !event3.b押された )\r
2149                                                         {\r
2150                                                                 continue;\r
2151                                                         }\r
2152                                                         long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2153                                                         while( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )\r
2154                                                         {\r
2155                                                                 if( ( num6 - chip5.n発声時刻ms ) <= 1000 )          // #24245 2011.1.26 yyagi: 800 -> 1000\r
2156                                                                 {\r
2157                                                                         chip5.bHit = true;\r
2158                                                                         this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
2159                                                                         if( !bIsAutoPlay.Guitar )\r
2160                                                                         {\r
2161                                                                                 int nCombo = ( this.actCombo.n現在のコンボ数.Guitar < 500 ) ? this.actCombo.n現在のコンボ数.Guitar : 500;\r
2162                                                                                 this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( nCombo * 3000L ) );                // #24245 2011.1.26 yyagi changed DRUMS->GUITAR, add nCombo conditions\r
2163                                                                         }\r
2164                                                                 }\r
2165                                                         }\r
2166                                                 }\r
2167                                         }\r
2168                                 }\r
2169                         }\r
2170                 }\r
2171                 private void t入力処理・ベース()\r
2172                 {\r
2173                         if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )\r
2174                         {\r
2175                                 CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );\r
2176                         }\r
2177                         if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.R ) )\r
2178                         {\r
2179                                 CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );\r
2180                         }\r
2181 \r
2182                         if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )\r
2183                         {\r
2184                                 if( bIsAutoPlay.Bass )\r
2185                                 {\r
2186                                         CDTX.CChip chip = this.r次にくるベースChipを更新して返す();\r
2187                                         if( chip != null )\r
2188                                         {\r
2189                                                 if( ( chip.nチャンネル番号 & 4 ) != 0 )\r
2190                                                 {\r
2191                                                         this.actLaneFlushGB.Start( 3 );\r
2192                                                         this.actRGB.Push( 3 );\r
2193                                                 }\r
2194                                                 if( ( chip.nチャンネル番号 & 2 ) != 0 )\r
2195                                                 {\r
2196                                                         this.actLaneFlushGB.Start( 4 );\r
2197                                                         this.actRGB.Push( 4 );\r
2198                                                 }\r
2199                                                 if( ( chip.nチャンネル番号 & 1 ) != 0 )\r
2200                                                 {\r
2201                                                         this.actLaneFlushGB.Start( 5 );\r
2202                                                         this.actRGB.Push( 5 );\r
2203                                                 }\r
2204                                         }\r
2205                                 }\r
2206                                 else\r
2207                                 {\r
2208                                         int flagR = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.R ) ? 4 : 0;\r
2209                                         this.t入力メソッド記憶( E楽器パート.BASS );\r
2210                                         int flagG = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.G ) ? 2 : 0;\r
2211                                         this.t入力メソッド記憶( E楽器パート.BASS );\r
2212                                         int flagB = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.B ) ? 1 : 0;\r
2213                                         this.t入力メソッド記憶( E楽器パート.BASS );\r
2214                                         int flagRGB = flagR | flagG | flagB;\r
2215                                         if( flagR != 0 )\r
2216                                         {\r
2217                                                 this.actLaneFlushGB.Start( 3 );\r
2218                                                 this.actRGB.Push( 3 );\r
2219                                         }\r
2220                                         if( flagG != 0 )\r
2221                                         {\r
2222                                                 this.actLaneFlushGB.Start( 4 );\r
2223                                                 this.actRGB.Push( 4 );\r
2224                                         }\r
2225                                         if( flagB != 0 )\r
2226                                         {\r
2227                                                 this.actLaneFlushGB.Start( 5 );\r
2228                                                 this.actRGB.Push( 5 );\r
2229                                         }\r
2230                                         List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Pick );\r
2231                                         if( ( events != null ) && ( events.Count > 0 ) )\r
2232                                         {\r
2233                                                 foreach( STInputEvent event2 in events )\r
2234                                                 {\r
2235                                                         CDTX.CChip chip4;\r
2236                                                         if( !event2.b押された )\r
2237                                                         {\r
2238                                                                 continue;\r
2239                                                         }\r
2240                                                         this.t入力メソッド記憶( E楽器パート.BASS );\r
2241                                                         long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2242                                                         CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf, this.nInputAdjustTimeMs.Bass, 0 );\r
2243                                                         E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Bass );\r
2244                                                         if (((pChip != null) && ((pChip.nチャンネル番号 & 15) == flagRGB)) && (e判定 != E判定.Miss))\r
2245                                                         {\r
2246                                                                 if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
2247                                                                 {\r
2248                                                                         this.actChipFire.Start( 3 );\r
2249                                                                 }\r
2250                                                                 if( ( flagG != 0 ) || ( flagRGB == 0 ) )\r
2251                                                                 {\r
2252                                                                         this.actChipFire.Start( 4 );\r
2253                                                                 }\r
2254                                                                 if( ( flagB != 0 ) || ( flagRGB == 0 ) )\r
2255                                                                 {\r
2256                                                                         this.actChipFire.Start( 5 );\r
2257                                                                 }\r
2258                                                                 this.tチップのヒット処理( nTime, pChip );\r
2259                                                                 this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, e判定 == E判定.Poor );\r
2260                                                                 CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, this.nInputAdjustTimeMs.Bass, 140 );\r
2261                                                                 if( item != null )\r
2262                                                                 {\r
2263                                                                         this.queWailing.Bass.Enqueue( item );\r
2264                                                                 }\r
2265                                                                 continue;\r
2266                                                         }\r
2267                                                         if( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
2268                                                         {\r
2269                                                                 this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
2270                                                         }\r
2271                                                         if( !CDTXMania.ConfigIni.bLight.Bass )\r
2272                                                         {\r
2273                                                                 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.BASS );\r
2274                                                         }\r
2275                                                 }\r
2276                                         }\r
2277                                         List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
2278                                         if( ( list2 != null ) && ( list2.Count > 0 ) )\r
2279                                         {\r
2280                                                 foreach( STInputEvent event3 in list2 )\r
2281                                                 {\r
2282                                                         CDTX.CChip chip5;\r
2283                                                         if( !event3.b押された )\r
2284                                                         {\r
2285                                                                 continue;\r
2286                                                         }\r
2287                                                         long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
2288                                                         while( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )\r
2289                                                         {\r
2290                                                                 if( ( num6 - chip5.n発声時刻ms ) <= 1000 )          // #24245 2011.1.16 yyagi: 800 -> 1000\r
2291                                                                 {\r
2292                                                                         chip5.bHit = true;\r
2293                                                                         this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
2294                                                                         if( !bIsAutoPlay.Bass )\r
2295                                                                         {\r
2296                                                                                 int nCombo = ( this.actCombo.n現在のコンボ数.Bass < 500 ) ? this.actCombo.n現在のコンボ数.Bass : 500;\r
2297                                                                                 this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( nCombo * 3000L ) );            // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions\r
2298                                                                         }\r
2299                                                                 }\r
2300                                                         }\r
2301                                                 }\r
2302                                         }\r
2303                                 }\r
2304                         }\r
2305                 }\r
2306                 private void t背景テクスチャの生成()\r
2307                 {\r
2308                         Bitmap image = null;\r
2309                         string path = "";\r
2310                         bool flag = true;\r
2311                         if( !CDTXMania.ConfigIni.bストイックモード )\r
2312                         {\r
2313                                 string bACKGROUND = null;\r
2314                                 if( ( CDTXMania.DTX.BACKGROUND_GR != null ) && ( CDTXMania.DTX.BACKGROUND_GR.Length > 0 ) )\r
2315                                 {\r
2316                                         bACKGROUND = CDTXMania.DTX.BACKGROUND_GR;\r
2317                                 }\r
2318                                 else if( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) )\r
2319                                 {\r
2320                                         bACKGROUND = CDTXMania.DTX.BACKGROUND;\r
2321                                 }\r
2322                                 if( ( bACKGROUND != null ) && ( bACKGROUND.Length > 0 ) )\r
2323                                 {\r
2324                                         path = CDTXMania.DTX.strフォルダ名 + bACKGROUND;\r
2325                                         if( File.Exists( path ) )\r
2326                                         {\r
2327                                                 try\r
2328                                                 {\r
2329                                                         Bitmap bitmap2 = null;\r
2330                                                         bitmap2 = new Bitmap( path );\r
2331                                                         if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )\r
2332                                                         {\r
2333                                                                 this.tx背景 = null;\r
2334                                                                 return;\r
2335                                                         }\r
2336                                                         Bitmap bitmap3 = new Bitmap( 640, 480 );\r
2337                                                         Graphics graphics = Graphics.FromImage( bitmap3 );\r
2338                                                         for( int i = 0; i < 480; i += bitmap2.Size.Height )\r
2339                                                         {\r
2340                                                                 for( int j = 0; j < 640; j += bitmap2.Size.Width )\r
2341                                                                 {\r
2342                                                                         graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );\r
2343                                                                 }\r
2344                                                         }\r
2345                                                         graphics.Dispose();\r
2346                                                         bitmap2.Dispose();\r
2347                                                         image = new Bitmap( CSkin.Path( @"Graphics\\ScreenPlayGuitar background.jpg" ) );\r
2348                                                         graphics = Graphics.FromImage( image );\r
2349                                                         ColorMatrix matrix2 = new ColorMatrix();\r
2350                                                         matrix2.Matrix00 = 1f;\r
2351                                                         matrix2.Matrix11 = 1f;\r
2352                                                         matrix2.Matrix22 = 1f;\r
2353                                                         matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;\r
2354                                                         matrix2.Matrix44 = 1f;\r
2355                                                         ColorMatrix newColorMatrix = matrix2;\r
2356                                                         ImageAttributes imageAttr = new ImageAttributes();\r
2357                                                         imageAttr.SetColorMatrix( newColorMatrix );\r
2358                                                         graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );\r
2359                                                         imageAttr.Dispose();\r
2360                                                         graphics.DrawImage( bitmap3, new Rectangle( 0xb5, 50, 0x116, 0x163 ), 0xb5, 50, 0x116, 0x163, GraphicsUnit.Pixel );\r
2361                                                         graphics.Dispose();\r
2362                                                         bitmap3.Dispose();\r
2363                                                         flag = false;\r
2364                                                 }\r
2365                                                 catch\r
2366                                                 {\r
2367                                                         Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
2368                                                 }\r
2369                                         }\r
2370                                 }\r
2371                         }\r
2372                         if( flag )\r
2373                         {\r
2374                                 path = CSkin.Path( @"Graphics\ScreenPlayGuitar background.jpg" );\r
2375                                 try\r
2376                                 {\r
2377                                         image = new Bitmap( path );\r
2378                                 }\r
2379                                 catch\r
2380                                 {\r
2381                                         Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
2382                                         this.tx背景 = null;\r
2383                                         return;\r
2384                                 }\r
2385                         }\r
2386                         if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )\r
2387                         {\r
2388                                 Graphics graphics2 = Graphics.FromImage( image );\r
2389                                 graphics2.FillRectangle( Brushes.Black, 0xb5, 50, 0x116, 0x163 );\r
2390                                 graphics2.Dispose();\r
2391                         }\r
2392                         try\r
2393                         {\r
2394                                 this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
2395                         }\r
2396                         catch( CTextureCreateFailedException )\r
2397                         {\r
2398                                 Trace.TraceError( "背景テクスチャの生成に失敗しました。" );\r
2399                                 this.tx背景 = null;\r
2400                         }\r
2401                         image.Dispose();\r
2402                 }\r
2403 #if true        // DAMAGELEVELTUNING\r
2404                 // ----------------------------------\r
2405                 public float[,] fDamageGaugeDelta = {                   // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
2406                         // drums,   guitar,  bass\r
2407                         {  0.004f,  0.006f,  0.006f  },\r
2408                         {  0.002f,  0.003f,  0.003f  },\r
2409                         {  0.000f,  0.000f,  0.000f  },\r
2410                         { -0.020f, -0.030f,     -0.030f  },\r
2411                         { -0.050f, -0.050f, -0.050f  }\r
2412                 };\r
2413                 public float[] fDamageLevelFactor = {\r
2414                         0.5f, 1.0f, 1.5f\r
2415                 };\r
2416                 // ----------------------------------\r
2417 #endif\r
2418 \r
2419                 private void t判定にあわせてゲージを増減する(E楽器パート part, E判定 e今回の判定)\r
2420                 {\r
2421                         double fDamage;\r
2422 \r
2423 #if true        // DAMAGELEVELTUNING\r
2424                         switch (e今回の判定)                                               // #23625 2011.1.10 ickw_284\r
2425                         {\r
2426                                 case E判定.Perfect:\r
2427                                 case E判定.Great:\r
2428                                 case E判定.Good:\r
2429                                 case E判定.Poor:\r
2430                                         fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
2431                                         break;\r
2432                                 case E判定.Miss:\r
2433                                         fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
2434                                         switch (CDTXMania.ConfigIni.eダメージレベル)\r
2435                                         {\r
2436                                                 case Eダメージレベル.少ない:\r
2437                                                 case Eダメージレベル.普通:\r
2438                                                 case Eダメージレベル.大きい:\r
2439                                                         fDamage *= fDamageLevelFactor[(int)CDTXMania.ConfigIni.eダメージレベル];\r
2440                                                         break;\r
2441                                         }\r
2442                                         break;\r
2443 \r
2444                                 default:\r
2445                                         fDamage = 0.0;\r
2446                                         break;\r
2447                         }\r
2448 #else                                                                                                   // before applying #23625 modifications\r
2449                         switch (e今回の判定)\r
2450                         {\r
2451                                 case E判定.Perfect:\r
2452                                         fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;\r
2453                                         break;\r
2454 \r
2455                                 case E判定.Great:\r
2456                                         fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;\r
2457                                         break;\r
2458 \r
2459                                 case E判定.Good:\r
2460                                         fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;\r
2461                                         break;\r
2462 \r
2463                                 case E判定.Poor:\r
2464                                         fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;\r
2465                                         break;\r
2466 \r
2467                                 case E判定.Miss:\r
2468                                         fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;\r
2469                                         switch( CDTXMania.ConfigIni.eダメージレベル )\r
2470                                         {\r
2471                                                 case Eダメージレベル.少ない:\r
2472                                                         fDamage *= 0.6;\r
2473                                                         break;\r
2474 \r
2475                                                 case Eダメージレベル.普通:\r
2476                                                         fDamage *= 1.0;\r
2477                                                         break;\r
2478 \r
2479                                                 case Eダメージレベル.大きい:\r
2480                                                         fDamage *= 1.6;\r
2481                                                         break;\r
2482                                         }\r
2483                                         break;\r
2484 \r
2485                                 default:\r
2486                                         fDamage = 0.0;\r
2487                                         break;\r
2488                         }\r
2489 #endif\r
2490                         this.actGauge.db現在のゲージ値[(int)part] += fDamage;\r
2491 \r
2492                         if( this.actGauge.db現在のゲージ値[ (int) part ] > 1.0 )\r
2493                                 this.actGauge.db現在のゲージ値[ (int) part ] = 1.0;\r
2494                 }\r
2495                 //-----------------\r
2496                 #endregion\r
2497         }\r
2498 }\r