2 using System.Collections.Generic;
\r
4 using System.Runtime.InteropServices;
\r
5 using System.Drawing;
\r
6 using System.Drawing.Imaging;
\r
8 using System.Diagnostics;
\r
9 using SlimDX.Direct3D9;
\r
14 internal class CStage演奏ギター画面 : CStage演奏画面共通
\r
18 public CStage演奏ギター画面()
\r
20 base.eステージID = CStage.Eステージ.演奏;
\r
21 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
22 base.b活性化してない = true;
\r
23 base.list子Activities.Add( this.actStageFailed = new CAct演奏ステージ失敗() );
\r
24 base.list子Activities.Add( this.actAVI = new CAct演奏AVI() );
\r
25 base.list子Activities.Add( this.actBGA = new CAct演奏BGA() );
\r
26 base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() );
\r
27 base.list子Activities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() );
\r
28 base.list子Activities.Add( this.actStatusPanels = new CAct演奏Guitarステータスパネル() );
\r
29 base.list子Activities.Add( this.actWailingBonus = new CAct演奏GuitarWailingBonus() );
\r
30 base.list子Activities.Add( this.actScore = new CAct演奏Guitarスコア() );
\r
31 base.list子Activities.Add( this.actRGB = new CAct演奏GuitarRGB() );
\r
32 base.list子Activities.Add( this.actLaneFlushGB = new CAct演奏GuitarレーンフラッシュGB() );
\r
33 base.list子Activities.Add( this.actJudgeString = new CAct演奏Guitar判定文字列() );
\r
34 base.list子Activities.Add( this.actGauge = new CAct演奏Guitarゲージ() );
\r
35 base.list子Activities.Add( this.actCombo = new CAct演奏Guitarコンボ() );
\r
36 base.list子Activities.Add( this.actChipFireGB = new CAct演奏Guitarチップファイア() );
\r
37 base.list子Activities.Add( this.actPlayInfo = new CAct演奏演奏情報() );
\r
38 base.list子Activities.Add( this.actFI = new CActFIFOBlack() );
\r
39 base.list子Activities.Add( this.actFO = new CActFIFOBlack() );
\r
40 base.list子Activities.Add( this.actFOClear = new CActFIFOWhite() );
\r
46 public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums, out CScoreIni.C演奏記録 Guitar, out CScoreIni.C演奏記録 Bass )
\r
48 Drums = new CScoreIni.C演奏記録();
\r
49 //Guitar = new CScoreIni.C演奏記録();
\r
50 //Bass = new CScoreIni.C演奏記録();
\r
52 base.t演奏結果を格納する・ギター( out Guitar );
\r
53 base.t演奏結果を格納する・ベース( out Bass );
\r
55 #region [Guitar処理(注釈化)]
\r
56 //if( CDTXMania.DTX.bチップがある.Guitar )
\r
58 // Guitar.nスコア = this.actScore.Get( E楽器パート.GUITAR );
\r
59 // Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Guitar, CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.actCombo.n現在のコンボ数.Guitar最高値 );
\r
60 // 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
61 // Guitar.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Perfect : this.nヒット数・Auto含まない.Guitar.Perfect;
\r
62 // Guitar.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Great : this.nヒット数・Auto含まない.Guitar.Great;
\r
63 // Guitar.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Good : this.nヒット数・Auto含まない.Guitar.Good;
\r
64 // Guitar.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Poor : this.nヒット数・Auto含まない.Guitar.Poor;
\r
65 // Guitar.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Miss : this.nヒット数・Auto含まない.Guitar.Miss;
\r
66 // Guitar.n最大コンボ数 = this.actCombo.n現在のコンボ数.Guitar最高値;
\r
67 // Guitar.n全チップ数 = CDTXMania.DTX.n可視チップ数.Guitar;
\r
68 // for ( int i = 0; i < 10; i++ )
\r
70 // Guitar.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];
\r
72 // Guitar.bTight = CDTXMania.ConfigIni.bTight;
\r
73 // for( int i = 0; i < 3; i++ )
\r
75 // Guitar.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];
\r
76 // Guitar.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];
\r
77 // Guitar.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];
\r
78 // Guitar.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];
\r
79 // Guitar.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];
\r
80 // Guitar.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];
\r
81 // Guitar.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;
\r
83 // Guitar.eDark = CDTXMania.ConfigIni.eDark;
\r
84 // Guitar.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
85 // Guitar.n演奏速度分母 = 20;
\r
86 // Guitar.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
87 // Guitar.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
88 // Guitar.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
89 // Guitar.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
90 // Guitar.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
91 // Guitar.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
92 // Guitar.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
93 // Guitar.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
94 // Guitar.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
95 // Guitar.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
96 // Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;
\r
97 // Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;
\r
98 // Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;
\r
99 // Guitar.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;
\r
100 // Guitar.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
101 // Guitar.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
102 // Guitar.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
103 // Guitar.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
104 // Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
105 // Guitar.最終更新日時 = DateTime.Now.ToString();
\r
106 // Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Guitar );
\r
109 #region [Bass処理(注釈化)]
\r
110 //if( CDTXMania.DTX.bチップがある.Bass )
\r
112 // Bass.nスコア = this.actScore.Get( E楽器パート.BASS );
\r
113 // Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Bass, CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.actCombo.n現在のコンボ数.Bass最高値 );
\r
114 // 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
115 // Bass.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Perfect : this.nヒット数・Auto含まない.Bass.Perfect;
\r
116 // Bass.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Great : this.nヒット数・Auto含まない.Bass.Great;
\r
117 // Bass.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Good : this.nヒット数・Auto含まない.Bass.Good;
\r
118 // Bass.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Poor : this.nヒット数・Auto含まない.Bass.Poor;
\r
119 // Bass.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Miss : this.nヒット数・Auto含まない.Bass.Miss;
\r
120 // Bass.n最大コンボ数 = this.actCombo.n現在のコンボ数.Bass最高値;
\r
121 // Bass.n全チップ数 = CDTXMania.DTX.n可視チップ数.Bass;
\r
122 // for( int i = 0; i < 10; i++ )
\r
124 // Bass.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];
\r
126 // Bass.bTight = CDTXMania.ConfigIni.bTight;
\r
127 // for( int i = 0; i < 3; i++ )
\r
129 // Bass.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];
\r
130 // Bass.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];
\r
131 // Bass.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];
\r
132 // Bass.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];
\r
133 // Bass.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];
\r
134 // Bass.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];
\r
135 // Bass.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;
\r
137 // Bass.eDark = CDTXMania.ConfigIni.eDark;
\r
138 // Bass.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
139 // Bass.n演奏速度分母 = 20;
\r
140 // Bass.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
141 // Bass.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
142 // Bass.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
143 // Bass.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
144 // Bass.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
145 // Bass.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
146 // Bass.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
147 // Bass.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
148 // Bass.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
149 // Bass.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
150 // Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass; // #24280 2011.1.29 yyagi
\r
151 // Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass; //
\r
152 // Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass; //
\r
153 // Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass; //
\r
154 // Bass.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
155 // Bass.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
156 // Bass.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
157 // Bass.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
158 // Bass.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
159 // Bass.最終更新日時 = DateTime.Now.ToString();
\r
160 // Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Bass );
\r
163 if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ) // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える
\r
170 CDTXMania.DTX.SwapGuitarBassInfos(); // 譜面情報も元に戻す
\r
177 public override void On活性化()
\r
179 //this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;
\r
180 //this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;
\r
181 //this.n最後に再生したHHの実WAV番号 = -1;
\r
182 //this.L最後に再生したHHの実WAV番号 = new List<int>( 16 );
\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
188 // this.n最後に再生したBGMの実WAV番号[ i ] = -1;
\r
190 //this.r次にくるギターChip = null;
\r
191 //this.r次にくるベースChip = null;
\r
192 //for( int j = 0; j < 10; j++ )
\r
194 // this.r現在の空うちドラムChip[ j ] = null;
\r
196 //this.r現在の空うちギターChip = null;
\r
197 //this.r現在の空うちベースChip = null;
\r
198 //for( int k = 0; k < 3; k++ )
\r
200 // for( int n = 0; n < 5; n++ )
\r
202 // this.nヒット数・Auto含まない[ k ] = new STHITCOUNTOFRANK();
\r
203 // this.nヒット数・Auto含む[ k ] = new STHITCOUNTOFRANK();
\r
205 // this.queWailing[ k ] = new Queue<CDTX.CChip>();
\r
207 //for( int m = 0; m < 3; m++ )
\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
214 //this.bAUTOでないチップが1つでもバーを通過した = false;
\r
216 //this.tステータスパネルの選択();
\r
217 //this.tパネル文字列の設定();
\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
226 //if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ) // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え
\r
228 // CDTXMania.DTX.SwapGuitarBassInfos();
\r
231 public override void OnManagedリソースの作成()
\r
233 if( !base.b活性化してない )
\r
235 //this.t背景テクスチャの生成();
\r
236 this.txチップ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayGuitar chips.png" ) );
\r
237 this.txヒットバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayGuitar hit-bar.png" ) );
\r
238 //this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );
\r
239 base.OnManagedリソースの作成();
\r
242 public override void OnManagedリソースの解放()
\r
244 if( !base.b活性化してない )
\r
246 //CDTXMania.tテクスチャの解放( ref this.tx背景 );
\r
247 CDTXMania.tテクスチャの解放( ref this.txチップ );
\r
248 CDTXMania.tテクスチャの解放( ref this.txヒットバー );
\r
249 //CDTXMania.tテクスチャの解放( ref this.txWailing枠 );
\r
250 base.OnManagedリソースの解放();
\r
253 public override int On進行描画()
\r
255 if( !base.b活性化してない )
\r
258 bool flag2 = false;
\r
260 if( base.b初めての進行描画 )
\r
262 CDTXMania.Timer.tリセット();
\r
263 this.ctチップ模様アニメ.Guitar = new CCounter( 0, 0x17, 20, CDTXMania.Timer );
\r
264 this.ctチップ模様アニメ.Bass = new CCounter( 0, 0x17, 20, CDTXMania.Timer );
\r
265 this.ctチップ模様アニメ[ 0 ] = null;
\r
266 this.ctWailingチップ模様アニメ = new CCounter( 0, 4, 50, CDTXMania.Timer );
\r
267 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
\r
268 this.actFI.tフェードイン開始();
\r
269 base.b初めての進行描画 = false;
\r
271 if( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
\r
273 // bool flag3 = ( CDTXMania.ConfigIni.bAutoPlay.Guitar || !CDTXMania.DTX.bチップがある.Guitar ) || ( this.actGauge.db現在のゲージ値.Guitar <= -0.1 ); // #23630
\r
274 // bool flag4 = ( CDTXMania.ConfigIni.bAutoPlay.Bass || !CDTXMania.DTX.bチップがある.Bass ) || ( this.actGauge.db現在のゲージ値.Bass <= -0.1 ); // #23630
\r
275 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
276 bool bFailedBass = ((!CDTXMania.DTX.bチップがある.Bass) || (this.actGauge.db現在のゲージ値.Bass <= -0.1)); // #23630
\r
277 if (bFailedGuitar && bFailedBass)
\r
279 this.actStageFailed.Start();
\r
280 CDTXMania.DTX.t全チップの再生停止();
\r
281 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;
\r
285 this.t進行描画・MIDIBGM();
\r
286 this.t進行描画・パネル文字列();
\r
290 this.t進行描画・ステータスパネル();
\r
291 this.t進行描画・レーンフラッシュGB();
\r
292 this.t進行描画・ギターベース判定ライン();
\r
294 this.t進行描画・DANGER();
\r
295 this.t進行描画・RGBボタン();
\r
296 this.t進行描画・判定文字列();
\r
298 this.t進行描画・WailingBonus();
\r
299 this.t進行描画・譜面スクロール速度();
\r
300 this.t進行描画・チップアニメ();
\r
301 flag = this.t進行描画・チップ(E楽器パート.GUITAR);
\r
303 this.t進行描画・Wailing枠();
\r
304 this.t進行描画・チップファイアGB();
\r
305 this.t進行描画・STAGEFAILED();
\r
306 flag2 = this.t進行描画・フェードイン・アウト();
\r
307 if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
\r
309 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;
\r
310 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;
\r
311 this.actFOClear.tフェードアウト開始();
\r
315 return (int) this.eフェードアウト完了時の戻り値;
\r
320 if( CDTXMania.act現在入力を占有中のプラグイン == null )
\r
324 //IInputDevice keyboard = CDTXMania.Input管理.Keyboard;
\r
325 //if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.F1 ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )
\r
327 // this.bPAUSE = !this.bPAUSE;
\r
328 // if( this.bPAUSE )
\r
330 // CDTXMania.Timer.t一時停止();
\r
331 // CDTXMania.DTX.t全チップの再生一時停止();
\r
335 // CDTXMania.Timer.t再開();
\r
336 // CDTXMania.DTX.t全チップの再生再開();
\r
339 //if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
341 // this.t入力処理・ギター();
\r
342 // this.t入力処理・ベース();
\r
343 // if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift) ) )
\r
344 // { // shift (+ctrl) + Uparrow (BGMAdjust)
\r
345 // CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl) ) ? 1 : 10 );
\r
346 // CDTXMania.DTX.tWave再生位置自動補正();
\r
348 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )
\r
350 // CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl ) ) ? -1 : -10 );
\r
351 // CDTXMania.DTX.tWave再生位置自動補正();
\r
353 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Delete ) )
\r
355 // CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;
\r
357 // else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.LeftArrow ) ) // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.
\r
359 // ChangeInputAdjustTimeInPlaying( keyboard, -1 );
\r
361 // else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) ) // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.
\r
363 // ChangeInputAdjustTimeInPlaying( keyboard, +1 );
\r
365 // else if ( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )
\r
367 // this.actFO.tフェードアウト開始();
\r
368 // base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
369 // this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;
\r
381 #region [ private ]
\r
382 //-----------------
\r
383 //private class STHITCOUNTOFRANK
\r
386 // public int Good;
\r
387 // public int Great;
\r
388 // public int Miss;
\r
389 // public int Perfect;
\r
390 // public int Poor;
\r
393 // public int this[ int index ]
\r
400 // return this.Perfect;
\r
403 // return this.Great;
\r
406 // return this.Good;
\r
409 // return this.Poor;
\r
412 // return this.Miss;
\r
414 // throw new IndexOutOfRangeException();
\r
421 // this.Perfect = value;
\r
425 // this.Great = value;
\r
429 // this.Good = value;
\r
433 // this.Poor = value;
\r
437 // this.Miss = value;
\r
440 // throw new IndexOutOfRangeException();
\r
445 //[StructLayout( LayoutKind.Sequential )]
\r
446 //private struct STKARAUCHI
\r
448 // public CDTX.CChip HH;
\r
449 // public CDTX.CChip SD;
\r
450 // public CDTX.CChip BD;
\r
451 // public CDTX.CChip HT;
\r
452 // public CDTX.CChip LT;
\r
453 // public CDTX.CChip FT;
\r
454 // public CDTX.CChip CY;
\r
455 // public CDTX.CChip HHO;
\r
456 // public CDTX.CChip RD;
\r
457 // public CDTX.CChip LC;
\r
458 // public CDTX.CChip this[ int index ]
\r
486 // return this.HHO;
\r
494 // throw new IndexOutOfRangeException();
\r
501 // this.HH = value;
\r
505 // this.SD = value;
\r
509 // this.BD = value;
\r
513 // this.HT = value;
\r
517 // this.LT = value;
\r
521 // this.FT = value;
\r
525 // this.CY = value;
\r
529 // this.HHO = value;
\r
533 // this.RD = value;
\r
537 // this.LC = value;
\r
540 // throw new IndexOutOfRangeException();
\r
545 //private CAct演奏AVI actAVI;
\r
546 //private CAct演奏BGA actBGA;
\r
547 //private CAct演奏Guitarチップファイア actChipFireGB;
\r
548 //private CAct演奏Guitarコンボ actCombo;
\r
549 //private CActFIFOBlack actFI;
\r
550 //private CActFIFOBlack actFO;
\r
551 //private CActFIFOWhite actFOClear;
\r
552 //private CAct演奏Guitarゲージ actGauge;
\r
553 //private CAct演奏Guitar判定文字列 actJudgeString;
\r
554 //private CAct演奏GuitarレーンフラッシュGB actLaneFlushGB;
\r
555 //private CAct演奏パネル文字列 actPanel;
\r
556 //private CAct演奏演奏情報 actPlayInfo;
\r
557 //private CAct演奏GuitarRGB actRGB;
\r
558 //private CAct演奏Guitarスコア actScore;
\r
559 //private CAct演奏ステージ失敗 actStageFailed;
\r
560 //private CAct演奏Guitarステータスパネル actStatusPanels;
\r
561 //private CAct演奏GuitarWailingBonus actWailingBonus;
\r
562 //private CAct演奏スクロール速度 act譜面スクロール速度;
\r
563 //private bool bPAUSE;
\r
564 //private STDGBVALUE<bool> b演奏にMIDI入力を使った;
\r
565 //private STDGBVALUE<bool> b演奏にキーボードを使った;
\r
566 //private STDGBVALUE<bool> b演奏にジョイパッドを使った;
\r
567 //private STDGBVALUE<bool> b演奏にマウスを使った;
\r
568 //private CCounter ctWailingチップ模様アニメ;
\r
569 //private STDGBVALUE<CCounter> ctチップ模様アニメ;
\r
570 //private E演奏画面の戻り値 eフェードアウト完了時の戻り値;
\r
571 //private readonly int[,] nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };
\r
572 //private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };
\r
573 //private readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };
\r
574 //private readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a };
\r
575 //private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };
\r
576 //private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };
\r
577 //private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;
\r
578 //private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;
\r
579 // private int n現在のトップChip = -1;
\r
580 //private int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];
\r
581 //private int n最後に再生したHHのチャンネル番号;
\r
582 //private int n最後に再生したHHの実WAV番号;
\r
583 //private List<int> L最後に再生したHHの実WAV番号; // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.
\r
584 //private int n最後に再生したギターの実WAV番号;
\r
585 //private int n最後に再生したベースの実WAV番号;
\r
586 //private STDGBVALUE<Queue<CDTX.CChip>> queWailing;
\r
587 //private STDGBVALUE<CDTX.CChip> r現在の歓声Chip;
\r
588 //private CDTX.CChip r現在の空うちギターChip;
\r
589 //private STKARAUCHI r現在の空うちドラムChip;
\r
590 //private CDTX.CChip r現在の空うちベースChip;
\r
591 //private CDTX.CChip r次にくるギターChip;
\r
592 //private CDTX.CChip r次にくるベースChip;
\r
593 //private CTexture txWailing枠;
\r
594 //private CTexture txチップ;
\r
595 //private CTexture txヒットバー;
\r
596 //private CTexture tx背景;
\r
597 // private STDGBVALUE<int> nInputAdjustTimeMs; // #23580 2011.1.3 yyagi
\r
598 //private STDGBVALUE<bool> bIsAutoPlay; // #24239 2011.1.23 yyagi
\r
600 //private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )
\r
602 // if ( pChip != null )
\r
604 // pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature
\r
605 // int nDeltaTime = Math.Abs( pChip.nLag );
\r
606 // //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));
\r
607 // if ( nDeltaTime <= CDTXMania.nPerfect範囲ms )
\r
609 // return E判定.Perfect;
\r
611 // if ( nDeltaTime <= CDTXMania.nGreat範囲ms )
\r
613 // return E判定.Great;
\r
615 // if ( nDeltaTime <= CDTXMania.nGood範囲ms )
\r
617 // return E判定.Good;
\r
619 // if ( nDeltaTime <= CDTXMania.nPoor範囲ms )
\r
621 // return E判定.Poor;
\r
624 // return E判定.Miss;
\r
626 //private CDTX.CChip r空うちChip( E楽器パート part, Eパッド pad )
\r
630 // case E楽器パート.GUITAR:
\r
631 // return this.r現在の空うちギターChip;
\r
633 // case E楽器パート.BASS:
\r
634 // return this.r現在の空うちベースChip;
\r
638 //private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag, int nInputAdjustTime )
\r
640 // nTime += nInputAdjustTime;
\r
643 // if( this.n現在のトップChip == -1 )
\r
647 // int count = CDTXMania.DTX.listChip.Count;
\r
648 // int num4 = num5 = this.n現在のトップChip;
\r
649 // if( this.n現在のトップChip >= count )
\r
651 // num4 = num5 = count - 1;
\r
653 // int num2 = num4;
\r
654 // while( num2 < count )
\r
656 // CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];
\r
657 // if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )
\r
659 // if( chip.n発声時刻ms > nTime )
\r
665 // else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )
\r
667 // if( chip.n発声時刻ms > nTime )
\r
673 // else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )
\r
675 // if( chip.n発声時刻ms > nTime )
\r
683 // int num3 = num5;
\r
684 // while( num3 >= 0 )
\r
686 // CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];
\r
687 // if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )
\r
689 // if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )
\r
694 // else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )
\r
696 // if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 40 ) )
\r
701 // else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 160 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )
\r
707 // if( ( num2 == count ) && ( num3 < 0 ) )
\r
711 // if( num2 == count )
\r
713 // return CDTXMania.DTX.listChip[ num3 ];
\r
717 // return CDTXMania.DTX.listChip[ num2 ];
\r
719 // CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
720 // CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];
\r
721 // int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
722 // int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );
\r
723 // if( num6 >= num7 )
\r
729 // private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag )
\r
731 // return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, 0, 0 );
\r
733 // private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime )
\r
735 // return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, nInputAdjustTime, 0 );
\r
737 //private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime, int n検索範囲時間ms )
\r
739 // nTime += nInputAdjustTime;
\r
743 // if( this.n現在のトップChip == -1 )
\r
747 // int count = CDTXMania.DTX.listChip.Count;
\r
748 // int num4 = num5 = this.n現在のトップChip;
\r
749 // if( this.n現在のトップChip >= count )
\r
751 // num4 = num5 = count - 1;
\r
753 // int num2 = num4;
\r
754 // while( num2 < count )
\r
756 // CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];
\r
757 // if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )
\r
759 // if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )
\r
761 // if( chip.n発声時刻ms > nTime )
\r
768 // else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )
\r
770 // if( chip.n発声時刻ms > nTime )
\r
776 // else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )
\r
778 // if( chip.n発声時刻ms > nTime )
\r
786 // int num3 = num5;
\r
787 // while( num3 >= 0 )
\r
789 // CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];
\r
790 // 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
796 // if( ( num2 == count ) && ( num3 < 0 ) )
\r
800 // CDTX.CChip chip3 = null;
\r
801 // if( num2 == count )
\r
803 // chip3 = CDTXMania.DTX.listChip[ num3 ];
\r
804 // num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
806 // else if( num3 < 0 )
\r
808 // chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
809 // num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
813 // int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
814 // int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
815 // if( num7 < num8 )
\r
817 // chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
818 // num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
822 // chip3 = CDTXMania.DTX.listChip[ num3 ];
\r
823 // num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
826 // if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )
\r
832 //private CDTX.CChip r次にくるギターChipを更新して返す()
\r
834 // int nInputAdjustTime = this.bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;
\r
835 // this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, nInputAdjustTime, 500 );
\r
836 // return this.r次にくるギターChip;
\r
838 //private CDTX.CChip r次にくるベースChipを更新して返す()
\r
840 // int nInputAdjustTime = this.bIsAutoPlay.Bass ? 0 : this.nInputAdjustTimeMs.Bass;
\r
841 // this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, nInputAdjustTime, 500 );
\r
842 // return this.r次にくるベースChip;
\r
845 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part )
\r
847 // this.tサウンド再生( rChip, n再生開始システム時刻ms, part, CDTXMania.ConfigIni.n手動再生音量, false, false );
\r
849 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量 )
\r
851 // this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, false, false );
\r
853 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ )
\r
855 // this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, bモニタ, false );
\r
857 // private void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )
\r
859 // if( pChip != null )
\r
863 // case E楽器パート.DRUMS:
\r
865 // int index = pChip.nチャンネル番号;
\r
866 // if ( ( index >= 0x11 ) && ( index <= 0x1a ) )
\r
872 // if ( ( index < 0x31 ) || ( index > 0x3a ) )
\r
878 // int nLane = this.nチャンネル0Atoレーン07[ index ];
\r
879 // if ( ( nLane == 1 ) && // 今回演奏するのがHC or HO
\r
880 // ( index == 0 || ( index == 7 && this.n最後に再生したHHのチャンネル番号 != 0x18 && this.n最後に再生したHHのチャンネル番号 != 0x38 ) )
\r
881 // // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない
\r
884 // // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。
\r
885 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi test
\r
886 // if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)
\r
889 // for ( int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++ ) // #23921 2011.1.4 yyagi
\r
891 // // CDTXMania.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号);
\r
892 // CDTXMania.DTX.tWavの再生停止( this.L最後に再生したHHの実WAV番号[ i ] ); // #23921 yyagi ストック分全て消音する
\r
894 // this.L最後に再生したHHの実WAV番号.Clear();
\r
895 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi test
\r
898 // //this.n最後に再生したHHの実WAV番号 = pChip.n整数値・内部番号;
\r
899 // this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号;
\r
901 //#if TEST_NOTEOFFMODE // 2011.1.4 yyagi test
\r
902 // if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)
\r
905 // if ( index == 7 || index == 0x27 ) // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく
\r
907 // if ( this.L最後に再生したHHの実WAV番号.Count >= 16 ) // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える
\r
908 // { // (ストックが増えてList<>のrealloc()が発生するのを予防する)
\r
909 // this.L最後に再生したHHの実WAV番号.RemoveAt( 0 );
\r
911 // if ( this.L最後に再生したHHの実WAV番号.IndexOf( pChip.n整数値・内部番号 ) < 0 ) // チップ音がまだストックされてなければ
\r
913 // this.L最後に再生したHHの実WAV番号.Add( pChip.n整数値・内部番号 ); // ストックする
\r
916 //#if TEST_NOTEOFFMODE // 2011.1.4 yyagi test
\r
919 // CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ );
\r
924 // case E楽器パート.GUITAR:
\r
925 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST
\r
926 // if (CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する) {
\r
928 // CDTXMania.DTX.tWavの再生停止(this.n最後に再生したギターの実WAV番号);
\r
929 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST
\r
932 // CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 );
\r
933 // this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号;
\r
936 // case E楽器パート.BASS:
\r
937 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST
\r
938 // if (CDTXMania.DTX.bBASS演奏で直前のBASSを消音する) {
\r
940 // CDTXMania.DTX.tWavの再生停止(this.n最後に再生したベースの実WAV番号);
\r
941 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST
\r
944 // CDTXMania.DTX.tチップの再生(pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生);
\r
945 // this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号;
\r
950 //private void tステータスパネルの選択()
\r
952 // if( CDTXMania.bコンパクトモード )
\r
954 // this.actStatusPanels.tラベル名からステータスパネルを決定する( null );
\r
956 // else if( CDTXMania.stage選曲.r確定された曲 != null )
\r
958 // this.actStatusPanels.tラベル名からステータスパネルを決定する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] );
\r
961 protected override E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )
\r
963 E判定 eJudgeResult = tチップのヒット処理( nHitTime, pChip, E楽器パート.GUITAR );
\r
964 return eJudgeResult;
\r
966 //private E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip ) // E楽器パート screenmode
\r
968 // pChip.bHit = true;
\r
969 // bool bPChipIsAutoPlay = false;
\r
971 // ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && CDTXMania.ConfigIni.bAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||
\r
972 // ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && CDTXMania.ConfigIni.bAutoPlay.Guitar )
\r
974 // ( ( pChip.e楽器パート == E楽器パート.BASS ) && CDTXMania.ConfigIni.bAutoPlay.Bass )
\r
977 // bPChipIsAutoPlay = true;
\r
981 // this.bAUTOでないチップが1つでもバーを通過した = true;
\r
983 // E判定 eJudgeResult = E判定.Auto;
\r
984 // switch (pChip.e楽器パート)
\r
986 // case E楽器パート.DRUMS:
\r
988 // int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;
\r
989 // eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
990 // this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], bPChipIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );
\r
994 // case E楽器パート.GUITAR:
\r
996 // int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Guitar;
\r
997 // eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
998 // this.actJudgeString.Start( 10, bPChipIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );
\r
1002 // case E楽器パート.BASS:
\r
1004 // int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Bass;
\r
1005 // eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
1006 // this.actJudgeString.Start( 11, bPChipIsAutoPlay ? E判定.Auto : eJudgeResult, pChip.nLag );
\r
1010 // if ( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) )
\r
1012 // this.t判定にあわせてゲージを増減する( E楽器パート.GUITAR, pChip.e楽器パート, eJudgeResult );
\r
1015 // switch( pChip.e楽器パート )
\r
1017 // case E楽器パート.DRUMS:
\r
1018 // switch ( eJudgeResult )
\r
1022 // this.nヒット数・Auto含む.Drums.Miss++;
\r
1023 // if ( !bPChipIsAutoPlay )
\r
1025 // this.nヒット数・Auto含まない.Drums.Miss++;
\r
1029 // this.nヒット数・Auto含む.Drums[ (int) eJudgeResult ]++;
\r
1030 // if ( !bPChipIsAutoPlay )
\r
1032 // this.nヒット数・Auto含まない.Drums[ (int) eJudgeResult ]++;
\r
1037 // if ( CDTXMania.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay )
\r
1039 // switch ( eJudgeResult )
\r
1041 // case E判定.Perfect:
\r
1042 // case E判定.Great:
\r
1044 // this.actCombo.n現在のコンボ数.Drums++;
\r
1048 // this.actCombo.n現在のコンボ数.Drums = 0;
\r
1054 // case E楽器パート.GUITAR:
\r
1055 // switch( eJudgeResult )
\r
1059 // this.nヒット数・Auto含む.Guitar.Miss++;
\r
1060 // if ( !bPChipIsAutoPlay )
\r
1062 // this.nヒット数・Auto含まない.Guitar.Miss++;
\r
1065 // default: // #24068 2011.1.10 ikanick changed
\r
1066 // // #24167 2011.1.16 yyagi changed
\r
1067 // this.nヒット数・Auto含む.Guitar[ (int) eJudgeResult ]++;
\r
1068 // if ( !bPChipIsAutoPlay )
\r
1070 // this.nヒット数・Auto含まない.Guitar[ (int) eJudgeResult ]++;
\r
1074 // switch (eJudgeResult)
\r
1076 // case E判定.Perfect:
\r
1077 // case E判定.Great:
\r
1079 // this.actCombo.n現在のコンボ数.Guitar++;
\r
1083 // this.actCombo.n現在のコンボ数.Guitar = 0;
\r
1088 // case E楽器パート.BASS:
\r
1089 // switch( eJudgeResult )
\r
1093 // this.nヒット数・Auto含む.Bass.Miss++;
\r
1094 // if( !bPChipIsAutoPlay )
\r
1096 // this.nヒット数・Auto含まない.Bass.Miss++;
\r
1099 // default: // #24068 2011.1.10 ikanick changed
\r
1100 // this.nヒット数・Auto含む.Bass[ (int) eJudgeResult ]++;
\r
1101 // if ( !bPChipIsAutoPlay )
\r
1103 // this.nヒット数・Auto含まない.Bass[ (int) eJudgeResult ]++;
\r
1108 // switch( eJudgeResult )
\r
1110 // case E判定.Perfect:
\r
1111 // case E判定.Great:
\r
1113 // this.actCombo.n現在のコンボ数.Bass++;
\r
1117 // this.actCombo.n現在のコンボ数.Bass = 0;
\r
1125 // if( ( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) )
\r
1127 // int nCombos = 0;
\r
1128 // switch ( pChip.e楽器パート )
\r
1130 // case E楽器パート.DRUMS:
\r
1131 // nCombos = this.actCombo.n現在のコンボ数.Drums;
\r
1133 // case E楽器パート.GUITAR:
\r
1134 // nCombos = this.actCombo.n現在のコンボ数.Guitar;
\r
1136 // case E楽器パート.BASS:
\r
1137 // nCombos = this.actCombo.n現在のコンボ数.Bass;
\r
1140 // long nScore = this.actScore.Get( pChip.e楽器パート );
\r
1141 // long[] numArray = new long[] { 350L, 200L, 50L, 0L };
\r
1142 // if( ( nCombos <= 500 ) || ( eJudgeResult == E判定.Good ) )
\r
1144 // nScore += numArray[ (int) eJudgeResult ] * nCombos;
\r
1146 // else if( ( eJudgeResult == E判定.Perfect ) || ( eJudgeResult == E判定.Great ) )
\r
1148 // nScore += numArray[ (int) eJudgeResult ] * 500L;
\r
1150 // this.actScore.Set( pChip.e楽器パート, nScore );
\r
1152 // return eJudgeResult;
\r
1154 protected override void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )
\r
1156 this.tチップのヒット処理・BadならびにTight時のMiss( part, 0, E楽器パート.GUITAR );
\r
1158 protected override void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )
\r
1160 this.tチップのヒット処理・BadならびにTight時のMiss( part, nLane, E楽器パート.GUITAR );
\r
1162 //private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )
\r
1164 // this.tチップのヒット処理・BadならびにTight時のMiss( part, 0 );
\r
1166 //private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )
\r
1168 // this.bAUTOでないチップが1つでもバーを通過した = true;
\r
1169 // this.t判定にあわせてゲージを増減する( E楽器パート.GUITAR, part, E判定.Miss );
\r
1172 // case E楽器パート.DRUMS:
\r
1175 // case E楽器パート.GUITAR:
\r
1176 // this.actJudgeString.Start( 10, E判定.Bad, 999 );
\r
1177 // this.actCombo.n現在のコンボ数.Guitar = 0;
\r
1180 // case E楽器パート.BASS:
\r
1181 // this.actJudgeString.Start( 11, E判定.Bad, 999 );
\r
1182 // this.actCombo.n現在のコンボ数.Bass = 0;
\r
1189 ////private void tパネル文字列の設定()
\r
1191 //// this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );
\r
1193 protected override void t進行描画・AVI()
\r
1195 base.t進行描画・AVI( 0xb5, 50 );
\r
1197 protected override void t進行描画・BGA()
\r
1199 base.t進行描画・BGA( 0xb5, 50 );
\r
1201 protected override void t進行描画・DANGER() // 現在、ギター画面でのDANGER実装は無し
\r
1204 ////private void t進行描画・MIDIBGM()
\r
1206 //// if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )
\r
1208 //// CStage.Eフェーズ eフェーズid1 = base.eフェーズID;
\r
1211 //private void t進行描画・RGBボタン()
\r
1213 // if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
1215 // this.actRGB.On進行描画();
\r
1218 //private void t進行描画・STAGEFAILED()
\r
1220 // 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
1222 // this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;
\r
1223 // base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;
\r
1224 // this.actFO.tフェードアウト開始();
\r
1227 //private void t進行描画・WailingBonus()
\r
1229 // if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1231 // this.actWailingBonus.On進行描画();
\r
1234 protected override void t進行描画・Wailing枠()
\r
1236 base.t進行描画・Wailing枠( 0x8b, 0x251,
\r
1237 CDTXMania.ConfigIni.bReverse.Guitar ? 340 : 11,
\r
1238 CDTXMania.ConfigIni.bReverse.Bass ? 340 : 11
\r
1241 private void t進行描画・ギターベース判定ライン() // yyagi: ドラム画面とは座標が違うだけですが、まとめづらかったのでそのまま放置してます。
\r
1243 if ( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1245 if ( CDTXMania.DTX.bチップがある.Guitar )
\r
1247 int y = ( CDTXMania.ConfigIni.bReverse.Guitar ? 0x171 : 40 ) - 3;
\r
1248 for ( int i = 0; i < 4; i++ )
\r
1250 if ( this.txヒットバー != null )
\r
1252 this.txヒットバー.t2D描画( CDTXMania.app.Device, 0x17 + ( 0x1c * i ), y, new Rectangle( 0, i * 8, 0x1c, 8 ) );
\r
1256 if ( CDTXMania.DTX.bチップがある.Bass )
\r
1258 int y = ( CDTXMania.ConfigIni.bReverse.Bass ? 0x171 : 40 ) - 3;
\r
1259 for ( int j = 0; j < 4; j++ )
\r
1261 if ( this.txヒットバー != null )
\r
1263 this.txヒットバー.t2D描画( CDTXMania.app.Device, 0x1dd + ( 0x1c * j ), y, new Rectangle( 0, j * 8, 0x1c, 8 ) );
\r
1269 //private void t進行描画・ゲージ()
\r
1271 // 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
1273 // this.actGauge.On進行描画();
\r
1276 //private void t進行描画・コンボ()
\r
1278 // this.actCombo.On進行描画();
\r
1280 //private void t進行描画・スコア()
\r
1282 // this.actScore.On進行描画();
\r
1284 //private void t進行描画・ステータスパネル()
\r
1286 // this.actStatusPanels.On進行描画();
\r
1288 // private bool t進行描画・チップ(E楽器パート ePlayMode)
\r
1290 // if( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1294 // if( ( this.n現在のトップChip == -1 ) || ( this.n現在のトップChip >= CDTXMania.DTX.listChip.Count ) )
\r
1298 // int nCurrentTopChip = this.n現在のトップChip;
\r
1299 // if( nCurrentTopChip == -1 )
\r
1304 // //double speed = 264.0; // BPM150の時の1小節の長さ[dot]
\r
1305 // double speed = 234.0; // BPM150の時の1小節の長さ[dot]
\r
1307 // double ScrollSpeedDrums = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.0 ) * 0.5 * 37.5 * speed / 60000.0;
\r
1308 // double ScrollSpeedGuitar = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;
\r
1309 // double ScrollSpeedBass = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Bass + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;
\r
1311 // CDTX dTX = CDTXMania.DTX;
\r
1312 // CConfigIni configIni = CDTXMania.ConfigIni;
\r
1313 // while( nCurrentTopChip < dTX.listChip.Count )
\r
1315 // CDTX.CChip pChip = dTX.listChip[ nCurrentTopChip ];
\r
1316 // pChip.nバーからの距離dot.Drums = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedDrums );
\r
1317 // pChip.nバーからの距離dot.Guitar = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedGuitar );
\r
1318 // pChip.nバーからの距離dot.Bass = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedBass );
\r
1319 // if( Math.Min( Math.Min( pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar ), pChip.nバーからの距離dot.Bass ) > 450 )
\r
1323 // if( ( ( nCurrentTopChip == this.n現在のトップChip ) && ( pChip.nバーからの距離dot.Drums < -65 ) ) && pChip.bHit )
\r
1325 // this.n現在のトップChip++;
\r
1326 // nCurrentTopChip = this.n現在のトップChip;
\r
1330 // bool bPChipIsAutoPlay = false;
\r
1332 // ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]]) ||
\r
1333 // ((pChip.e楽器パート == E楽器パート.GUITAR) && CDTXMania.ConfigIni.bAutoPlay.Guitar)
\r
1335 // ((pChip.e楽器パート == E楽器パート.BASS) && CDTXMania.ConfigIni.bAutoPlay.Bass)
\r
1337 //// if ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])
\r
1339 // bPChipIsAutoPlay = true;
\r
1342 // int nInputAdjustTime = 0;
\r
1343 // if (bPChipIsAutoPlay)
\r
1345 // //nInputAdjustTime = 0;
\r
1347 // else if (pChip.e楽器パート == E楽器パート.UNKNOWN)
\r
1349 // //nInputAdjustTime = 0;
\r
1353 // nInputAdjustTime = this.nInputAdjustTimeMs[(int)pChip.e楽器パート];
\r
1356 // if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&
\r
1357 // ( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) )
\r
1359 // this.tチップのヒット処理( CDTXMania.Timer.n現在時刻, pChip );
\r
1361 // switch( pChip.nチャンネル番号 )
\r
1363 // case 0x01: // BGM
\r
1364 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1366 // pChip.bHit = true;
\r
1367 // if( configIni.bBGM音を発声する )
\r
1369 // dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
1374 // case 0x03: // BPM変更
\r
1375 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1377 // pChip.bHit = true;
\r
1378 // this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;
\r
1382 // case 0x04: // レイヤーBGA
\r
1390 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1392 // pChip.bHit = true;
\r
1393 // if( configIni.bBGA有効 )
\r
1395 // switch( pChip.eBGA種別 )
\r
1397 // case EBGA種別.BMPTEX:
\r
1398 // if( pChip.rBMPTEX != null )
\r
1400 // 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
1404 // case EBGA種別.BGA:
\r
1405 // if( ( pChip.rBGA != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )
\r
1407 // 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
1411 // case EBGA種別.BGAPAN:
\r
1412 // if( ( pChip.rBGAPan != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )
\r
1414 // 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
1419 // if( pChip.rBMP != null )
\r
1421 // 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
1429 // case 0x08: // BPM変更(拡張)
\r
1430 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1432 // pChip.bHit = true;
\r
1433 // if( dTX.listBPM.ContainsKey( pChip.n整数値・内部番号 ) )
\r
1435 // this.actPlayInfo.dbBPM = ( dTX.listBPM[ pChip.n整数値・内部番号 ].dbBPM値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;
\r
1440 // case 0x11: // ドラム演奏
\r
1450 // this.t進行描画・チップ・ドラムス( configIni, ref dTX, ref pChip );
\r
1453 // case 0x1f: // フィルインサウンド(ドラム)
\r
1454 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1456 // pChip.bHit = true;
\r
1457 // this.r現在の歓声Chip.Drums = pChip;
\r
1461 // case 0x20: // ギター演奏
\r
1469 // this.t進行描画・チップ・ギター( configIni, ref dTX, ref pChip );
\r
1472 // case 0x28: // ウェイリング(ギター)
\r
1473 // this.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );
\r
1476 // case 0x2f: // ウェイリングサウンド(ギター)
\r
1477 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
1479 // pChip.bHit = true;
\r
1480 // this.r現在の歓声Chip.Guitar = pChip;
\r
1484 // case 0x31: // 不可視チップ配置(ドラム)
\r
1494 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1496 // pChip.bHit = true;
\r
1500 // case 0x50: // 小節線
\r
1502 // int n小節番号plus1 = pChip.n発声位置 / 384;
\r
1503 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1505 // pChip.bHit = true;
\r
1506 // this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;
\r
1507 // if( configIni.bWave再生位置自動調整機能有効 )
\r
1509 // dTX.tWave再生位置自動補正();
\r
1512 // if( configIni.bDrums有効 && ePlayMode == E楽器パート.DRUMS ) // Drumsでのみ表示
\r
1514 // if ( configIni.b演奏情報を表示する && ( configIni.eDark == Eダークモード.OFF ) )
\r
1516 // int n小節番号 = n小節番号plus1 - 1;
\r
1517 // CDTXMania.act文字コンソール.tPrint( 0x14d, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 0x11 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 0x11 ), C文字コンソール.Eフォント種別.白, n小節番号.ToString() );
\r
1519 // if ( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )
\r
1521 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bc, 0x128, 2 ) );
\r
1524 // if( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )
\r
1526 // int y = configIni.bReverse.Guitar ? ( ( 0x171 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 40 + pChip.nバーからの距離dot.Guitar ) - 1 );
\r
1527 // if( ( dTX.bチップがある.Guitar && ( y > 0 ) ) && ( ( y < 0x199 ) && ( this.txチップ != null ) ) )
\r
1529 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, y, new Rectangle( 0, 0xeb, 0x68, 1 ) );
\r
1531 // y = configIni.bReverse.Bass ? ( ( 0x171 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 40 + pChip.nバーからの距離dot.Bass ) - 1 );
\r
1532 // if( ( dTX.bチップがある.Bass && ( y > 0 ) ) && ( ( y < 0x199 ) && ( this.txチップ != null ) ) )
\r
1534 // this.txチップ.t2D描画( CDTXMania.app.Device, 480, y, new Rectangle( 0, 0xeb, 0x68, 1 ) );
\r
1539 // case 0x51: // 拍線
\r
1540 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1542 // pChip.bHit = true;
\r
1544 // if( ( ePlayMode == E楽器パート.DRUMS ) && ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 && ( this.txチップ != null ) )
\r
1546 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bf, 0x128, 1 ) );
\r
1550 // case 0x52: // MIDIコーラス
\r
1551 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1553 // pChip.bHit = true;
\r
1557 // case 0x53: // フィルイン
\r
1558 // this.t進行描画・チップ・フィルイン( configIni, ref dTX, ref pChip );
\r
1561 // case 0x54: // 動画再生
\r
1562 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1564 // pChip.bHit = true;
\r
1565 // if( configIni.bAVI有効 )
\r
1567 // switch( pChip.eAVI種別 )
\r
1569 // case EAVI種別.AVI:
\r
1570 // if( pChip.rAVI != null )
\r
1572 // this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, 0x116, 0x163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pChip.n発声時刻ms );
\r
1576 // case EAVI種別.AVIPAN:
\r
1577 // if( pChip.rAVIPan != null )
\r
1579 // 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
1587 // case 0x61: case 0x62: case 0x63: case 0x64: // 自動再生(BGM, SE)
\r
1588 // case 0x65: case 0x66: case 0x67: case 0x68:
\r
1589 // case 0x69: case 0x70: case 0x71: case 0x72:
\r
1590 // case 0x73: case 0x74: case 0x75: case 0x76:
\r
1591 // case 0x77: case 0x78: case 0x79: case 0x80:
\r
1592 // case 0x81: case 0x82: case 0x83: case 0x84:
\r
1593 // case 0x85: case 0x86: case 0x87: case 0x88:
\r
1594 // case 0x89: case 0x90: case 0x91: case 0x92:
\r
1595 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1597 // pChip.bHit = true;
\r
1598 // if( configIni.bBGM音を発声する )
\r
1600 // dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] );
\r
1601 // dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
1602 // this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号;
\r
1607 // case 0xa0: // ベース演奏
\r
1615 // this.t進行描画・チップ・ベース( configIni, ref dTX, ref pChip );
\r
1618 // case 0xa8: // ウェイリング(ベース)
\r
1619 // this.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip );
\r
1623 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
1625 // pChip.bHit = true;
\r
1626 // this.r現在の歓声Chip.Bass = pChip;
\r
1630 // case 0xb1: // 空打ち音設定(ドラム)
\r
1640 // this.t進行描画・チップ・空打ち音設定・ドラム( configIni, ref dTX, ref pChip );
\r
1643 // case 0xba: // 空打ち音設定(ギター)
\r
1646 // case 0xbb: // 空打ち音設定(ベース)
\r
1647 // if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
1649 // pChip.bHit = true;
\r
1650 // this.r現在の空うちギターChip = pChip;
\r
1651 // pChip.nチャンネル番号 = 0x20;
\r
1653 // if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
1655 // pChip.bHit = true;
\r
1656 // this.r現在の空うちベースChip = pChip;
\r
1657 // pChip.nチャンネル番号 = 160;
\r
1661 // case 0xc4: // BGA画像入れ替え
\r
1669 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1671 // pChip.bHit = true;
\r
1672 // if( ( configIni.bBGA有効 && ( pChip.eBGA種別 == EBGA種別.BMP ) ) || ( pChip.eBGA種別 == EBGA種別.BMPTEX ) )
\r
1674 // for( int i = 0; i < 8; i++ )
\r
1676 // if( this.nBGAスコープチャンネルマップ[ 0, i ] == pChip.nチャンネル番号 )
\r
1678 // this.actBGA.ChangeScope( this.nBGAスコープチャンネルマップ[ 1, i ], pChip.rBMP, pChip.rBMPTEX );
\r
1686 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1688 // pChip.bHit = true;
\r
1693 // nCurrentTopChip++;
\r
1697 //private void t進行描画・チップアニメ()
\r
1699 // for( int i = 1; i < 3; i++ )
\r
1701 // this.ctチップ模様アニメ[ i ].t進行Loop();
\r
1703 // this.ctWailingチップ模様アニメ.t進行Loop();
\r
1705 //private void t進行描画・チップファイアGB()
\r
1707 // this.actChipFireGB.On進行描画();
\r
1709 protected override void t進行描画・パネル文字列()
\r
1711 base.t進行描画・パネル文字列( 0xb5, 430 );
\r
1713 //private bool t進行描画・フェードイン・アウト()
\r
1715 // switch( base.eフェーズID )
\r
1717 // case CStage.Eフェーズ.共通_フェードイン:
\r
1718 // if( this.actFI.On進行描画() != 0 )
\r
1720 // base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
1724 // case CStage.Eフェーズ.共通_フェードアウト:
\r
1725 // case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:
\r
1726 // if( this.actFO.On進行描画() != 0 )
\r
1732 // case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:
\r
1733 // if( this.actFOClear.On進行描画() == 0 )
\r
1741 //private void t進行描画・レーンフラッシュGB()
\r
1743 // if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1745 // this.actLaneFlushGB.On進行描画();
\r
1748 protected override void t進行描画・演奏情報()
\r
1750 base.t進行描画・演奏情報( 0xb5, 50 );
\r
1752 //private void t進行描画・背景()
\r
1754 // if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )
\r
1756 // if( this.tx背景 != null )
\r
1758 // this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );
\r
1763 // CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );
\r
1766 //private void t進行描画・判定文字列()
\r
1768 // this.actJudgeString.On進行描画();
\r
1770 //private void t進行描画・譜面スクロール速度()
\r
1772 // this.act譜面スクロール速度.On進行描画();
\r
1774 //private void t入力メソッド記憶( E楽器パート part )
\r
1776 // if( CDTXMania.Pad.st検知したデバイス.Keyboard )
\r
1778 // this.b演奏にキーボードを使った[ (int) part ] = true;
\r
1780 // if( CDTXMania.Pad.st検知したデバイス.Joypad )
\r
1782 // this.b演奏にジョイパッドを使った[ (int) part ] = true;
\r
1784 // if( CDTXMania.Pad.st検知したデバイス.MIDIIN )
\r
1786 // this.b演奏にMIDI入力を使った[ (int) part ] = true;
\r
1788 // if( CDTXMania.Pad.st検知したデバイス.Mouse )
\r
1790 // this.b演奏にマウスを使った[ (int) part ] = true;
\r
1795 protected override void ドラムスクロール速度アップ()
\r
1799 protected override void ドラムスクロール速度ダウン()
\r
1804 protected override void t入力処理・ドラム()
\r
1808 //protected override void t入力処理・ギター()
\r
1810 // if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )
\r
1812 // CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );
\r
1814 // if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.R ) )
\r
1816 // CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );
\r
1819 // if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )
\r
1821 // if( bIsAutoPlay.Guitar )
\r
1823 // CDTX.CChip chip = this.r次にくるギターChipを更新して返す();
\r
1824 // if( chip != null )
\r
1826 // if( ( chip.nチャンネル番号 & 4 ) != 0 )
\r
1828 // this.actLaneFlushGB.Start( 0 );
\r
1829 // this.actRGB.Push( 0 );
\r
1831 // if( ( chip.nチャンネル番号 & 2 ) != 0 )
\r
1833 // this.actLaneFlushGB.Start( 1 );
\r
1834 // this.actRGB.Push( 1 );
\r
1836 // if( ( chip.nチャンネル番号 & 1 ) != 0 )
\r
1838 // this.actLaneFlushGB.Start( 2 );
\r
1839 // this.actRGB.Push( 2 );
\r
1845 // int flagR = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.R ) ? 4 : 0;
\r
1846 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
1847 // int flagG = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) ? 2 : 0;
\r
1848 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
1849 // int flagB = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.B ) ? 1 : 0;
\r
1850 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
1851 // int flagRGB = flagR | flagG | flagB;
\r
1852 // if( flagR != 0 )
\r
1854 // this.actLaneFlushGB.Start( 0 );
\r
1855 // this.actRGB.Push( 0 );
\r
1857 // if( flagG != 0 )
\r
1859 // this.actLaneFlushGB.Start( 1 );
\r
1860 // this.actRGB.Push( 1 );
\r
1862 // if( flagB != 0 )
\r
1864 // this.actLaneFlushGB.Start( 2 );
\r
1865 // this.actRGB.Push( 2 );
\r
1867 // List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Pick );
\r
1868 // if( ( events != null ) && ( events.Count > 0 ) )
\r
1870 // foreach( STInputEvent event2 in events )
\r
1872 // CDTX.CChip chip4;
\r
1873 // if( !event2.b押された )
\r
1877 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
1878 // long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
1879 // CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar, 0 );
\r
1880 // E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Guitar );
\r
1881 // if (((pChip != null) && ((pChip.nチャンネル番号 & 15) == flagRGB)) && (e判定 != E判定.Miss))
\r
1883 // if( ( flagR != 0 ) || ( flagRGB == 0 ) )
\r
1885 // this.actChipFireGB.Start( 0 );
\r
1887 // if( ( flagG != 0 ) || ( flagRGB == 0 ) )
\r
1889 // this.actChipFireGB.Start( 1 );
\r
1891 // if( ( flagB != 0 ) || ( flagRGB == 0 ) )
\r
1893 // this.actChipFireGB.Start( 2 );
\r
1895 // this.tチップのヒット処理( nTime, pChip );
\r
1896 // this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );
\r
1897 // CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );
\r
1898 // if( item != null )
\r
1900 // this.queWailing.Guitar.Enqueue( item );
\r
1904 // if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )
\r
1906 // this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );
\r
1908 // if( !CDTXMania.ConfigIni.bLight.Guitar )
\r
1910 // this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.GUITAR );
\r
1914 // List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );
\r
1915 // if( ( list2 != null ) && ( list2.Count > 0 ) )
\r
1917 // foreach( STInputEvent event3 in list2 )
\r
1919 // CDTX.CChip chip5;
\r
1920 // if( !event3.b押された )
\r
1924 // long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
1925 // while( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )
\r
1927 // if( ( num6 - chip5.n発声時刻ms ) <= 1000 ) // #24245 2011.1.26 yyagi: 800 -> 1000
\r
1929 // chip5.bHit = true;
\r
1930 // this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );
\r
1931 // if( !bIsAutoPlay.Guitar )
\r
1933 // int nCombo = ( this.actCombo.n現在のコンボ数.Guitar < 500 ) ? this.actCombo.n現在のコンボ数.Guitar : 500;
\r
1934 // this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( nCombo * 3000L ) ); // #24245 2011.1.26 yyagi changed DRUMS->GUITAR, add nCombo conditions
\r
1943 //protected override void t入力処理・ベース()
\r
1945 // if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )
\r
1947 // CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );
\r
1949 // if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.R ) )
\r
1951 // CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );
\r
1954 // if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )
\r
1956 // if( bIsAutoPlay.Bass )
\r
1958 // CDTX.CChip chip = this.r次にくるベースChipを更新して返す();
\r
1959 // if( chip != null )
\r
1961 // if( ( chip.nチャンネル番号 & 4 ) != 0 )
\r
1963 // this.actLaneFlushGB.Start( 3 );
\r
1964 // this.actRGB.Push( 3 );
\r
1966 // if( ( chip.nチャンネル番号 & 2 ) != 0 )
\r
1968 // this.actLaneFlushGB.Start( 4 );
\r
1969 // this.actRGB.Push( 4 );
\r
1971 // if( ( chip.nチャンネル番号 & 1 ) != 0 )
\r
1973 // this.actLaneFlushGB.Start( 5 );
\r
1974 // this.actRGB.Push( 5 );
\r
1980 // int flagR = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.R ) ? 4 : 0;
\r
1981 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
1982 // int flagG = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.G ) ? 2 : 0;
\r
1983 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
1984 // int flagB = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.B ) ? 1 : 0;
\r
1985 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
1986 // int flagRGB = flagR | flagG | flagB;
\r
1987 // if( flagR != 0 )
\r
1989 // this.actLaneFlushGB.Start( 3 );
\r
1990 // this.actRGB.Push( 3 );
\r
1992 // if( flagG != 0 )
\r
1994 // this.actLaneFlushGB.Start( 4 );
\r
1995 // this.actRGB.Push( 4 );
\r
1997 // if( flagB != 0 )
\r
1999 // this.actLaneFlushGB.Start( 5 );
\r
2000 // this.actRGB.Push( 5 );
\r
2002 // List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Pick );
\r
2003 // if( ( events != null ) && ( events.Count > 0 ) )
\r
2005 // foreach( STInputEvent event2 in events )
\r
2007 // CDTX.CChip chip4;
\r
2008 // if( !event2.b押された )
\r
2012 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
2013 // long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2014 // CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf, this.nInputAdjustTimeMs.Bass, 0 );
\r
2015 // E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs.Bass );
\r
2016 // if (((pChip != null) && ((pChip.nチャンネル番号 & 15) == flagRGB)) && (e判定 != E判定.Miss))
\r
2018 // if( ( flagR != 0 ) || ( flagRGB == 0 ) )
\r
2020 // this.actChipFireGB.Start( 3 );
\r
2022 // if( ( flagG != 0 ) || ( flagRGB == 0 ) )
\r
2024 // this.actChipFireGB.Start( 4 );
\r
2026 // if( ( flagB != 0 ) || ( flagRGB == 0 ) )
\r
2028 // this.actChipFireGB.Start( 5 );
\r
2030 // this.tチップのヒット処理( nTime, pChip );
\r
2031 // this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, e判定 == E判定.Poor );
\r
2032 // CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, this.nInputAdjustTimeMs.Bass, 140 );
\r
2033 // if( item != null )
\r
2035 // this.queWailing.Bass.Enqueue( item );
\r
2039 // if( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )
\r
2041 // this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );
\r
2043 // if( !CDTXMania.ConfigIni.bLight.Bass )
\r
2045 // this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.BASS );
\r
2049 // List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );
\r
2050 // if( ( list2 != null ) && ( list2.Count > 0 ) )
\r
2052 // foreach( STInputEvent event3 in list2 )
\r
2054 // CDTX.CChip chip5;
\r
2055 // if( !event3.b押された )
\r
2059 // long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2060 // while( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )
\r
2062 // if( ( num6 - chip5.n発声時刻ms ) <= 1000 ) // #24245 2011.1.16 yyagi: 800 -> 1000
\r
2064 // chip5.bHit = true;
\r
2065 // this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );
\r
2066 // if( !bIsAutoPlay.Bass )
\r
2068 // int nCombo = ( this.actCombo.n現在のコンボ数.Bass < 500 ) ? this.actCombo.n現在のコンボ数.Bass : 500;
\r
2069 // this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( nCombo * 3000L ) ); // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions
\r
2079 protected override void t背景テクスチャの生成()
\r
2081 Rectangle bgrect = new Rectangle( 181, 50, 278, 355 );
\r
2082 string DefaultBgFilename = @"Graphics\ScreenPlayGuitar background.jpg";
\r
2083 string BgFilename = "";
\r
2084 string BACKGROUND = null;
\r
2085 if ( ( CDTXMania.DTX.BACKGROUND_GR != null ) && ( CDTXMania.DTX.BACKGROUND_GR.Length > 0 ) )
\r
2087 BACKGROUND = CDTXMania.DTX.BACKGROUND_GR;
\r
2089 else if ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) )
\r
2091 BACKGROUND = CDTXMania.DTX.BACKGROUND;
\r
2093 if ( ( BACKGROUND != null ) && ( BACKGROUND.Length > 0 ) )
\r
2095 BgFilename = CDTXMania.DTX.strフォルダ名 + BACKGROUND;
\r
2097 base.t背景テクスチャの生成( DefaultBgFilename, bgrect, BgFilename );
\r
2101 //private void t背景テクスチャの生成()
\r
2103 // Bitmap image = null;
\r
2104 // string path = "";
\r
2105 // bool flag = true;
\r
2106 // if( !CDTXMania.ConfigIni.bストイックモード )
\r
2108 // string bACKGROUND = null;
\r
2109 // if( ( CDTXMania.DTX.BACKGROUND_GR != null ) && ( CDTXMania.DTX.BACKGROUND_GR.Length > 0 ) )
\r
2111 // bACKGROUND = CDTXMania.DTX.BACKGROUND_GR;
\r
2113 // else if( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) )
\r
2115 // bACKGROUND = CDTXMania.DTX.BACKGROUND;
\r
2117 // if( ( bACKGROUND != null ) && ( bACKGROUND.Length > 0 ) )
\r
2119 // path = CDTXMania.DTX.strフォルダ名 + bACKGROUND;
\r
2120 // if( File.Exists( path ) )
\r
2124 // Bitmap bitmap2 = null;
\r
2125 // bitmap2 = new Bitmap( path );
\r
2126 // if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )
\r
2128 // this.tx背景 = null;
\r
2131 // Bitmap bitmap3 = new Bitmap( 640, 480 );
\r
2132 // Graphics graphics = Graphics.FromImage( bitmap3 );
\r
2133 // for( int i = 0; i < 480; i += bitmap2.Size.Height )
\r
2135 // for( int j = 0; j < 640; j += bitmap2.Size.Width )
\r
2137 // graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );
\r
2140 // graphics.Dispose();
\r
2141 // bitmap2.Dispose();
\r
2142 // image = new Bitmap( CSkin.Path( @"Graphics\\ScreenPlayGuitar background.jpg" ) );
\r
2143 // graphics = Graphics.FromImage( image );
\r
2144 // ColorMatrix matrix2 = new ColorMatrix();
\r
2145 // matrix2.Matrix00 = 1f;
\r
2146 // matrix2.Matrix11 = 1f;
\r
2147 // matrix2.Matrix22 = 1f;
\r
2148 // matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;
\r
2149 // matrix2.Matrix44 = 1f;
\r
2150 // ColorMatrix newColorMatrix = matrix2;
\r
2151 // ImageAttributes imageAttr = new ImageAttributes();
\r
2152 // imageAttr.SetColorMatrix( newColorMatrix );
\r
2153 // graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );
\r
2154 // imageAttr.Dispose();
\r
2155 // graphics.DrawImage( bitmap3, new Rectangle( 0xb5, 50, 0x116, 0x163 ), 0xb5, 50, 0x116, 0x163, GraphicsUnit.Pixel );
\r
2156 // graphics.Dispose();
\r
2157 // bitmap3.Dispose();
\r
2162 // Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );
\r
2169 // path = CSkin.Path( @"Graphics\ScreenPlayGuitar background.jpg" );
\r
2172 // image = new Bitmap( path );
\r
2176 // Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );
\r
2177 // this.tx背景 = null;
\r
2181 // if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )
\r
2183 // Graphics graphics2 = Graphics.FromImage( image );
\r
2184 // graphics2.FillRectangle( Brushes.Black, 0xb5, 50, 0x116, 0x163 );
\r
2185 // graphics2.Dispose();
\r
2189 // this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
\r
2191 // catch( CTextureCreateFailedException )
\r
2193 // Trace.TraceError( "背景テクスチャの生成に失敗しました。" );
\r
2194 // this.tx背景 = null;
\r
2196 // image.Dispose();
\r
2198 //#if true // DAMAGELEVELTUNING
\r
2199 // // ----------------------------------
\r
2200 // public float[,] fDamageGaugeDelta = { // #23625 2011.1.10 ickw_284: tuned damage/recover factors
\r
2201 // // drums, guitar, bass
\r
2202 // { 0.004f, 0.006f, 0.006f },
\r
2203 // { 0.002f, 0.003f, 0.003f },
\r
2204 // { 0.000f, 0.000f, 0.000f },
\r
2205 // { -0.020f, -0.030f, -0.030f },
\r
2206 // { -0.050f, -0.050f, -0.050f }
\r
2208 // public float[] fDamageLevelFactor = {
\r
2209 // 0.5f, 1.0f, 1.5f
\r
2211 // // ----------------------------------
\r
2214 // private void t判定にあわせてゲージを増減する(E楽器パート part, E判定 e今回の判定)
\r
2216 // double fDamage;
\r
2218 //#if true // DAMAGELEVELTUNING
\r
2219 // switch (e今回の判定) // #23625 2011.1.10 ickw_284
\r
2221 // case E判定.Perfect:
\r
2222 // case E判定.Great:
\r
2225 // fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];
\r
2228 // fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];
\r
2229 // switch (CDTXMania.ConfigIni.eダメージレベル)
\r
2231 // case Eダメージレベル.少ない:
\r
2232 // case Eダメージレベル.普通:
\r
2233 // case Eダメージレベル.大きい:
\r
2234 // fDamage *= fDamageLevelFactor[(int)CDTXMania.ConfigIni.eダメージレベル];
\r
2243 //#else // before applying #23625 modifications
\r
2244 // switch (e今回の判定)
\r
2246 // case E判定.Perfect:
\r
2247 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;
\r
2250 // case E判定.Great:
\r
2251 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;
\r
2255 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;
\r
2259 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;
\r
2263 // fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;
\r
2264 // switch( CDTXMania.ConfigIni.eダメージレベル )
\r
2266 // case Eダメージレベル.少ない:
\r
2267 // fDamage *= 0.6;
\r
2270 // case Eダメージレベル.普通:
\r
2271 // fDamage *= 1.0;
\r
2274 // case Eダメージレベル.大きい:
\r
2275 // fDamage *= 1.6;
\r
2285 // this.actGauge.db現在のゲージ値[(int)part] += fDamage;
\r
2287 // if( this.actGauge.db現在のゲージ値[ (int) part ] > 1.0 )
\r
2288 // this.actGauge.db現在のゲージ値[ (int) part ] = 1.0;
\r
2290 //-----------------
\r
2292 protected override void t進行描画・チップ・ドラムス( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2294 // int indexSevenLanes = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ];
\r
2295 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2297 pChip.bHit = true;
\r
2298 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );
\r
2301 protected override void t進行描画・チップ・ギター( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2303 if ( configIni.bGuitar有効 )
\r
2305 if ( configIni.bSudden.Guitar )
\r
2307 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;
\r
2309 if ( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )
\r
2311 pChip.b可視 = false;
\r
2313 if ( !pChip.bHit && pChip.b可視 )
\r
2315 int nバーからの距離 = configIni.bReverse.Guitar ? ( 0x171 - pChip.nバーからの距離dot.Guitar ) : ( 40 + pChip.nバーからの距離dot.Guitar );
\r
2316 if ( ( nバーからの距離 > 0 ) && ( nバーからの距離 < 0x199 ) )
\r
2318 int nアニメカウンタ現在の値 = this.ctチップ模様アニメ.Guitar.n現在の値;
\r
2319 if ( pChip.nチャンネル番号 == 0x20 )
\r
2321 if ( this.txチップ != null )
\r
2323 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, nバーからの距離 - 4, new Rectangle( 0, 0xc0 + ( ( nアニメカウンタ現在の値 % 5 ) * 8 ), 0x67, 8 ) );
\r
2326 else if ( !configIni.bLeft.Guitar )
\r
2328 Rectangle rectangle = new Rectangle( 0, nアニメカウンタ現在の値 * 8, 0x20, 8 );
\r
2329 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
2331 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, nバーからの距離 - 4, rectangle );
\r
2333 rectangle.X += 0x20;
\r
2334 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
2336 this.txチップ.t2D描画( CDTXMania.app.Device, 0x3e, nバーからの距離 - 4, rectangle );
\r
2338 rectangle.X += 0x20;
\r
2339 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
2341 this.txチップ.t2D描画( CDTXMania.app.Device, 0x62, nバーからの距離 - 4, rectangle );
\r
2346 Rectangle rectangle2 = new Rectangle( 0, nアニメカウンタ現在の値 * 8, 0x20, 8 );
\r
2347 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
2349 this.txチップ.t2D描画( CDTXMania.app.Device, 0x62, nバーからの距離 - 4, rectangle2 );
\r
2351 rectangle2.X += 0x20;
\r
2352 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
2354 this.txチップ.t2D描画( CDTXMania.app.Device, 0x3e, nバーからの距離 - 4, rectangle2 );
\r
2356 rectangle2.X += 0x20;
\r
2357 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
2359 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, nバーからの距離 - 4, rectangle2 );
\r
2364 if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2366 pChip.bHit = true;
\r
2367 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
2369 this.actChipFireGB.Start( 0 );
\r
2371 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
2373 this.actChipFireGB.Start( 1 );
\r
2375 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
2377 this.actChipFireGB.Start( 2 );
\r
2379 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );
\r
2380 this.r次にくるギターChip = null;
\r
2381 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
2386 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2388 pChip.bHit = true;
\r
2389 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );
\r
2393 protected override void t進行描画・チップ・ギター・ウェイリング( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2395 if( configIni.bGuitar有効 )
\r
2397 if( configIni.bSudden.Guitar )
\r
2399 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;
\r
2401 if( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )
\r
2403 pChip.b可視 = false;
\r
2405 if( !pChip.bHit && pChip.b可視 )
\r
2408 int num11 = configIni.bReverse.Guitar ? ( 0x171 - pChip.nバーからの距離dot.Guitar ) : ( 40 + pChip.nバーからの距離dot.Guitar );
\r
2409 int num12 = num11;
\r
2411 if( ( num12 < ( 0x199 + num10 ) ) && ( num12 > -num10 ) )
\r
2413 int num14 = this.ctWailingチップ模様アニメ.n現在の値;
\r
2414 Rectangle rectangle5 = new Rectangle( 0x60 + ( num14 * 20 ), 0, 20, 50 );
\r
2415 if( num12 < num10 )
\r
2417 rectangle5.Y += num10 - num12;
\r
2418 rectangle5.Height -= num10 - num12;
\r
2419 num13 = num10 - num12;
\r
2421 if( num12 > ( 0x199 - num10 ) )
\r
2423 rectangle5.Height -= num12 - ( 0x199 - num10 );
\r
2425 if( ( rectangle5.Bottom > rectangle5.Top ) && ( this.txチップ != null ) )
\r
2427 this.txチップ.t2D描画( CDTXMania.app.Device, 0x8b, ( num11 - num10 ) + num13, rectangle5 );
\r
2431 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2433 pChip.bHit = true;
\r
2434 if( configIni.bAutoPlay.Guitar )
\r
2436 this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );
\r
2441 pChip.bHit = true;
\r
2443 protected override void t進行描画・チップ・フィルイン( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2445 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2447 pChip.bHit = true;
\r
2450 protected override void t進行描画・チップ・ベース( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2452 if ( configIni.bGuitar有効 )
\r
2454 if ( configIni.bSudden.Bass )
\r
2456 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;
\r
2458 if ( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )
\r
2460 pChip.b可視 = false;
\r
2462 if ( !pChip.bHit && pChip.b可視 )
\r
2464 int num8 = configIni.bReverse.Bass ? ( 0x171 - pChip.nバーからの距離dot.Bass ) : ( 40 + pChip.nバーからの距離dot.Bass );
\r
2465 if ( ( num8 > 0 ) && ( num8 < 0x199 ) )
\r
2467 int num9 = this.ctチップ模様アニメ.Bass.n現在の値;
\r
2468 if ( pChip.nチャンネル番号 == 160 )
\r
2470 if ( this.txチップ != null )
\r
2472 this.txチップ.t2D描画( CDTXMania.app.Device, 480, num8 - 4, new Rectangle( 0, 0xc0 + ( ( num9 % 5 ) * 8 ), 0x67, 8 ) );
\r
2475 else if ( !configIni.bLeft.Bass )
\r
2477 Rectangle rectangle3 = new Rectangle( 0, num9 * 8, 0x20, 8 );
\r
2478 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
2480 this.txチップ.t2D描画( CDTXMania.app.Device, 480, num8 - 4, rectangle3 );
\r
2482 rectangle3.X += 0x20;
\r
2483 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
2485 this.txチップ.t2D描画( CDTXMania.app.Device, 0x204, num8 - 4, rectangle3 );
\r
2487 rectangle3.X += 0x20;
\r
2488 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
2490 this.txチップ.t2D描画( CDTXMania.app.Device, 0x228, num8 - 4, rectangle3 );
\r
2495 Rectangle rectangle4 = new Rectangle( 0, num9 * 8, 0x20, 8 );
\r
2496 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
2498 this.txチップ.t2D描画( CDTXMania.app.Device, 0x228, num8 - 4, rectangle4 );
\r
2500 rectangle4.X += 0x20;
\r
2501 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
2503 this.txチップ.t2D描画( CDTXMania.app.Device, 0x204, num8 - 4, rectangle4 );
\r
2505 rectangle4.X += 0x20;
\r
2506 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
2508 this.txチップ.t2D描画( CDTXMania.app.Device, 480, num8 - 4, rectangle4 );
\r
2513 if ( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2515 pChip.bHit = true;
\r
2516 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
2518 this.actChipFireGB.Start( 3 );
\r
2520 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
2522 this.actChipFireGB.Start( 4 );
\r
2524 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
2526 this.actChipFireGB.Start( 5 );
\r
2528 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );
\r
2529 this.r次にくるベースChip = null;
\r
2530 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
2534 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2536 pChip.bHit = true;
\r
2537 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );
\r
2540 protected override void t進行描画・チップ・ベース・ウェイリング( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2542 if ( configIni.bGuitar有効 )
\r
2544 if ( configIni.bSudden.Bass )
\r
2546 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;
\r
2548 if ( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )
\r
2550 pChip.b可視 = false;
\r
2552 if ( !pChip.bHit && pChip.b可視 )
\r
2555 int num16 = configIni.bReverse.Bass ? ( 0x171 - pChip.nバーからの距離dot.Bass ) : ( 40 + pChip.nバーからの距離dot.Bass );
\r
2556 int num17 = num16;
\r
2558 if ( ( num17 < ( 0x199 + num15 ) ) && ( num17 > -num15 ) )
\r
2560 int num19 = this.ctWailingチップ模様アニメ.n現在の値;
\r
2561 Rectangle rectangle6 = new Rectangle( 0x60 + ( num19 * 20 ), 0, 20, 50 );
\r
2562 if ( num17 < num15 )
\r
2564 rectangle6.Y += num15 - num17;
\r
2565 rectangle6.Height -= num15 - num17;
\r
2566 num18 = num15 - num17;
\r
2568 if ( num17 > ( 0x199 - num15 ) )
\r
2570 rectangle6.Height -= num17 - ( 0x199 - num15 );
\r
2572 if ( ( rectangle6.Bottom > rectangle6.Top ) && ( this.txチップ != null ) )
\r
2574 this.txチップ.t2D描画( CDTXMania.app.Device, 0x251, ( num16 - num15 ) + num18, rectangle6 );
\r
2578 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2580 pChip.bHit = true;
\r
2581 if ( configIni.bAutoPlay.Bass )
\r
2583 this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );
\r
2588 pChip.bHit = true;
\r
2590 protected override void t進行描画・チップ・空打ち音設定・ドラム( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2592 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2594 pChip.bHit = true;
\r
2597 protected override void t進行描画・チップ・小節線( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
2599 int n小節番号plus1 = pChip.n発声位置 / 0x180;
\r
2600 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2602 pChip.bHit = true;
\r
2603 this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;
\r
2604 if ( configIni.bWave再生位置自動調整機能有効 )
\r
2606 dTX.tWave再生位置自動補正();
\r
2609 if ( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )
\r
2611 int y = configIni.bReverse.Guitar ? ( ( 0x171 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 40 + pChip.nバーからの距離dot.Guitar ) - 1 );
\r
2612 if ( ( dTX.bチップがある.Guitar && ( y > 0 ) ) && ( ( y < 0x199 ) && ( this.txチップ != null ) ) )
\r
2614 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1a, y, new Rectangle( 0, 0xeb, 0x68, 1 ) );
\r
2616 y = configIni.bReverse.Bass ? ( ( 0x171 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 40 + pChip.nバーからの距離dot.Bass ) - 1 );
\r
2617 if ( ( dTX.bチップがある.Bass && ( y > 0 ) ) && ( ( y < 0x199 ) && ( this.txチップ != null ) ) )
\r
2619 this.txチップ.t2D描画( CDTXMania.app.Device, 480, y, new Rectangle( 0, 0xeb, 0x68, 1 ) );
\r