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
10 using SlimDX.Direct3D9;
\r
15 internal class CStage演奏ドラム画面 : CStage演奏画面共通
\r
19 public CStage演奏ドラム画面()
\r
21 //this.nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };
\r
22 base.eステージID = CStage.Eステージ.演奏;
\r
23 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
24 base.b活性化してない = true;
\r
25 base.list子Activities.Add( this.actPad = new CAct演奏Drumsパッド() );
\r
26 base.list子Activities.Add( this.actCombo = new CAct演奏DrumsコンボDGB() );
\r
27 base.list子Activities.Add( this.actDANGER = new CAct演奏DrumsDanger() );
\r
28 base.list子Activities.Add( this.actChipFireD = new CAct演奏DrumsチップファイアD() );
\r
29 base.list子Activities.Add( this.actChipFireGB = new CAct演奏DrumsチップファイアGB());
\r
30 base.list子Activities.Add( this.actGauge = new CAct演奏Drumsゲージ() );
\r
31 base.list子Activities.Add( this.actGraph = new CAct演奏Drumsグラフ() ); // #24074 2011.01.23 add ikanick
\r
32 base.list子Activities.Add( this.actJudgeString = new CAct演奏Drums判定文字列() );
\r
33 base.list子Activities.Add( this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD() );
\r
34 base.list子Activities.Add( this.actLaneFlushGB = new CAct演奏DrumsレーンフラッシュGB() );
\r
35 base.list子Activities.Add( this.actRGB = new CAct演奏DrumsRGB() );
\r
36 base.list子Activities.Add( this.actScore = new CAct演奏Drumsスコア() );
\r
37 base.list子Activities.Add( this.actStatusPanels = new CAct演奏Drumsステータスパネル() );
\r
38 base.list子Activities.Add( this.actWailingBonus = new CAct演奏DrumsWailingBonus() );
\r
39 base.list子Activities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() );
\r
40 base.list子Activities.Add( this.actAVI = new CAct演奏AVI() );
\r
41 base.list子Activities.Add( this.actBGA = new CAct演奏BGA() );
\r
42 base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() );
\r
43 base.list子Activities.Add( this.actStageFailed = new CAct演奏ステージ失敗() );
\r
44 base.list子Activities.Add( this.actPlayInfo = new CAct演奏演奏情報() );
\r
45 base.list子Activities.Add( this.actFI = new CActFIFOBlack() );
\r
46 base.list子Activities.Add( this.actFO = new CActFIFOBlack() );
\r
47 base.list子Activities.Add( this.actFOClear = new CActFIFOWhite() );
\r
53 public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums, out CScoreIni.C演奏記録 Guitar, out CScoreIni.C演奏記録 Bass, out CDTX.CChip[] r空打ちドラムチップ )
\r
55 //Drums = new CScoreIni.C演奏記録();
\r
56 //Guitar = new CScoreIni.C演奏記録();
\r
57 //Bass = new CScoreIni.C演奏記録();
\r
59 base.t演奏結果を格納する・ドラム( out Drums );
\r
60 base.t演奏結果を格納する・ギター( out Guitar );
\r
61 base.t演奏結果を格納する・ベース( out Bass );
\r
63 #region [Drums処理(注釈化)]
\r
64 //if( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード )
\r
66 // Drums.nスコア = this.actScore.Get( E楽器パート.DRUMS );
\r
67 // Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Drums, CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.actCombo.n現在のコンボ数.Drums最高値 );
\r
68 // Drums.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );
\r
69 // Drums.nPerfect数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Perfect : this.nヒット数・Auto含まない.Drums.Perfect;
\r
70 // Drums.nGreat数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Great : this.nヒット数・Auto含まない.Drums.Great;
\r
71 // Drums.nGood数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Good : this.nヒット数・Auto含まない.Drums.Good;
\r
72 // Drums.nPoor数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Poor : this.nヒット数・Auto含まない.Drums.Poor;
\r
73 // Drums.nMiss数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Miss : this.nヒット数・Auto含まない.Drums.Miss;
\r
74 // Drums.n最大コンボ数 = this.actCombo.n現在のコンボ数.Drums最高値;
\r
75 // Drums.n全チップ数 = CDTXMania.DTX.n可視チップ数.Drums;
\r
76 // for( int i = 0; i < 10; i++ )
\r
78 // Drums.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];
\r
80 // Drums.bTight = CDTXMania.ConfigIni.bTight;
\r
81 // for( int i = 0; i < 3; i++ )
\r
83 // Drums.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];
\r
84 // Drums.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];
\r
85 // Drums.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];
\r
86 // Drums.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];
\r
87 // Drums.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];
\r
88 // Drums.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];
\r
89 // Drums.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;
\r
91 // Drums.eDark = CDTXMania.ConfigIni.eDark;
\r
92 // Drums.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
93 // Drums.n演奏速度分母 = 20;
\r
94 // Drums.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
95 // Drums.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
96 // Drums.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
97 // Drums.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
98 // Drums.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
99 // Drums.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
100 // Drums.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
101 // Drums.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
102 // Drums.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
103 // Drums.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
104 // Drums.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Drums;
\r
105 // Drums.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Drums;
\r
106 // Drums.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Drums;
\r
107 // Drums.b演奏にマウスを使用した = this.b演奏にマウスを使った.Drums;
\r
108 // Drums.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
109 // Drums.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
110 // Drums.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
111 // Drums.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
112 // Drums.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
113 // Drums.最終更新日時 = DateTime.Now.ToString();
\r
114 // Drums.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Drums );
\r
117 #region [Guitar処理(注釈化)]
\r
118 //if( CDTXMania.DTX.bチップがある.Guitar )
\r
120 // Guitar.nスコア = this.actScore.Get( E楽器パート.GUITAR );
\r
121 // Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Guitar, CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.actCombo.n現在のコンボ数.Guitar最高値 );
\r
122 // Guitar.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.nヒット数・Auto含まない.Guitar.Great, this.nヒット数・Auto含まない.Guitar.Good, this.nヒット数・Auto含まない.Guitar.Poor, this.nヒット数・Auto含まない.Guitar.Miss );
\r
123 // Guitar.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Perfect : this.nヒット数・Auto含まない.Guitar.Perfect;
\r
124 // Guitar.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Great : this.nヒット数・Auto含まない.Guitar.Great;
\r
125 // Guitar.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Good : this.nヒット数・Auto含まない.Guitar.Good;
\r
126 // Guitar.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Poor : this.nヒット数・Auto含まない.Guitar.Poor;
\r
127 // Guitar.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Miss : this.nヒット数・Auto含まない.Guitar.Miss;
\r
128 // Guitar.n最大コンボ数 = this.actCombo.n現在のコンボ数.Guitar最高値;
\r
129 // Guitar.n全チップ数 = CDTXMania.DTX.n可視チップ数.Guitar;
\r
130 // for( int i = 0; i < 10; i++ )
\r
132 // Guitar.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];
\r
134 // Guitar.bTight = CDTXMania.ConfigIni.bTight;
\r
135 // for( int i = 0; i < 3; i++ )
\r
137 // Guitar.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];
\r
138 // Guitar.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];
\r
139 // Guitar.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];
\r
140 // Guitar.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];
\r
141 // Guitar.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];
\r
142 // Guitar.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];
\r
143 // Guitar.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;
\r
145 // Guitar.eDark = CDTXMania.ConfigIni.eDark;
\r
146 // Guitar.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
147 // Guitar.n演奏速度分母 = 20;
\r
148 // Guitar.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
149 // Guitar.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
150 // Guitar.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
151 // Guitar.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
152 // Guitar.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
153 // Guitar.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
154 // Guitar.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
155 // Guitar.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
156 // Guitar.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
157 // Guitar.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
158 // Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;
\r
159 // Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;
\r
160 // Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;
\r
161 // Guitar.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;
\r
162 // Guitar.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
163 // Guitar.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
164 // Guitar.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
165 // Guitar.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
166 // Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
167 // Guitar.最終更新日時 = DateTime.Now.ToString();
\r
168 // Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Guitar );
\r
171 #region [Bass処理(注釈化)]
\r
172 //if( CDTXMania.DTX.bチップがある.Bass )
\r
174 // Bass.nスコア = this.actScore.Get( E楽器パート.BASS );
\r
175 // Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Bass, CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.actCombo.n現在のコンボ数.Bass最高値 );
\r
176 // Bass.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.nヒット数・Auto含まない.Bass.Great, this.nヒット数・Auto含まない.Bass.Good, this.nヒット数・Auto含まない.Bass.Poor, this.nヒット数・Auto含まない.Bass.Miss );
\r
177 // Bass.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Perfect : this.nヒット数・Auto含まない.Bass.Perfect;
\r
178 // Bass.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Great : this.nヒット数・Auto含まない.Bass.Great;
\r
179 // Bass.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Good : this.nヒット数・Auto含まない.Bass.Good;
\r
180 // Bass.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Poor : this.nヒット数・Auto含まない.Bass.Poor;
\r
181 // Bass.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Miss : this.nヒット数・Auto含まない.Bass.Miss;
\r
182 // Bass.n最大コンボ数 = this.actCombo.n現在のコンボ数.Bass最高値;
\r
183 // Bass.n全チップ数 = CDTXMania.DTX.n可視チップ数.Bass;
\r
184 // for( int i = 0; i < 10; i++ )
\r
186 // Bass.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];
\r
188 // Bass.bTight = CDTXMania.ConfigIni.bTight;
\r
189 // for( int i = 0; i < 3; i++ )
\r
191 // Bass.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];
\r
192 // Bass.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];
\r
193 // Bass.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];
\r
194 // Bass.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];
\r
195 // Bass.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];
\r
196 // Bass.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];
\r
197 // Bass.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;
\r
199 // Bass.eDark = CDTXMania.ConfigIni.eDark;
\r
200 // Bass.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
201 // Bass.n演奏速度分母 = 20;
\r
202 // Bass.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
203 // Bass.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
204 // Bass.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
205 // Bass.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
206 // Bass.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
207 // Bass.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
208 // Bass.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
209 // Bass.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
210 // Bass.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
211 // Bass.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
212 // Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass; // #24280 2011.1.29 yyagi
\r
213 // Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass; //
\r
214 // Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass; //
\r
215 // Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass; //
\r
216 // Bass.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
217 // Bass.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
218 // Bass.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
219 // Bass.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
220 // Bass.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
221 // Bass.最終更新日時 = DateTime.Now.ToString();
\r
222 // Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Bass );
\r
226 r空打ちドラムチップ = new CDTX.CChip[ 10 ];
\r
227 for ( int i = 0; i < 10; i++ )
\r
229 r空打ちドラムチップ[ i ] = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) i );
\r
230 if( r空打ちドラムチップ[ i ] == null )
\r
232 r空打ちドラムチップ[ i ] = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( CDTXMania.Timer.n現在時刻, this.nパッド0Atoチャンネル0A[ i ], this.nInputAdjustTimeMs.Drums );
\r
236 // if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ) // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える
\r
238 // CScoreIni.C演奏記録 t;
\r
243 // CDTXMania.DTX.SwapGuitarBassInfos(); // 譜面情報も元に戻す
\r
250 public override void On活性化()
\r
252 //this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;
\r
253 this.bフィルイン中 = false;
\r
254 //this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;
\r
255 // this.n最後に再生したHHの実WAV番号 = -1; // #23921 2011.1.4 yyagi
\r
256 //this.L最後に再生したHHの実WAV番号 = new List<int>(16);
\r
258 //this.n最後に再生したHHのチャンネル番号 = 0;
\r
259 //this.n最後に再生したギターの実WAV番号 = -1;
\r
260 //this.n最後に再生したベースの実WAV番号 = -1;
\r
261 //for( int i = 0; i < 50; i++ )
\r
263 // this.n最後に再生したBGMの実WAV番号[ i ] = -1;
\r
265 //this.r次にくるギターChip = null;
\r
266 //this.r次にくるベースChip = null;
\r
267 //for( int j = 0; j < 10; j++ )
\r
269 // this.r現在の空うちドラムChip[ j ] = null;
\r
271 //this.r現在の空うちギターChip = null;
\r
272 //this.r現在の空うちベースChip = null;
\r
273 //for ( int k = 0; k < 3; k++ )
\r
275 // for ( int n = 0; n < 5; n++ )
\r
277 // this.nヒット数・Auto含まない[ k ] = new STHITCOUNTOFRANK();
\r
278 // this.nヒット数・Auto含む[ k ] = new STHITCOUNTOFRANK();
\r
280 // this.queWailing[ k ] = new Queue<CDTX.CChip>();
\r
281 // this.r現在の歓声Chip[ k ] = null;
\r
283 //for( int m = 0; m < 3; m++ )
\r
285 // this.b演奏にキーボードを使った[ m ] = false;
\r
286 // this.b演奏にジョイパッドを使った[ m ] = false;
\r
287 // this.b演奏にMIDI入力を使った[ m ] = false;
\r
288 // this.b演奏にマウスを使った[ m ] = false;
\r
290 //this.bAUTOでないチップが1つでもバーを通過した = false;
\r
292 //this.tステータスパネルの選択();
\r
293 //this.tパネル文字列の設定();
\r
295 // this.nInputAdjustTimeMs.Drums = CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums; // #23580 2011.1.3 yyagi
\r
296 // this.nInputAdjustTimeMs.Guitar = CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar; // 2011.1.7 ikanick 修正
\r
297 // this.nInputAdjustTimeMs.Bass = CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass; //
\r
298 //this.bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay; // #24239 2011.1.23 yyagi
\r
300 Cスコア cスコア = CDTXMania.stage選曲.r確定されたスコア; // #24074 2011.01.23 add ikanick
\r
301 this.actGraph.dbグラフ値目標_渡 = cスコア.譜面情報.最大スキル[0];
\r
303 //if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ) // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え
\r
305 // CDTXMania.DTX.SwapGuitarBassInfos();
\r
308 public override void On非活性化()
\r
310 //this.L最後に再生したHHの実WAV番号.Clear(); // #23921 2011.1.4 yyagi
\r
311 //this.L最後に再生したHHの実WAV番号 = null; //
\r
312 //for( int i = 0; i < 3; i++ )
\r
314 // this.queWailing[ i ] = null;
\r
316 //this.ctWailingチップ模様アニメ = null;
\r
317 //this.ctチップ模様アニメ.Drums = null;
\r
318 //this.ctチップ模様アニメ.Guitar = null;
\r
319 //this.ctチップ模様アニメ.Bass = null;
\r
322 public override void OnManagedリソースの作成()
\r
324 if( !base.b活性化してない )
\r
326 //this.t背景テクスチャの生成();
\r
327 this.txチップ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chips.png" ) );
\r
328 this.txヒットバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar.png" ) );
\r
329 this.txヒットバーGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar guitar.png" ) );
\r
330 //this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );
\r
331 this.txレーンフレームGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums lane parts guitar.png" ) );
\r
332 if( this.txレーンフレームGB != null )
\r
334 this.txレーンフレームGB.n透明度 = 0xff - CDTXMania.ConfigIni.n背景の透過度;
\r
336 base.OnManagedリソースの作成();
\r
339 public override void OnManagedリソースの解放()
\r
341 if( !base.b活性化してない )
\r
343 //CDTXMania.tテクスチャの解放( ref this.tx背景 );
\r
344 CDTXMania.tテクスチャの解放( ref this.txヒットバー );
\r
345 CDTXMania.tテクスチャの解放( ref this.txヒットバーGB );
\r
346 CDTXMania.tテクスチャの解放( ref this.txチップ );
\r
347 CDTXMania.tテクスチャの解放( ref this.txレーンフレームGB );
\r
348 //CDTXMania.tテクスチャの解放( ref this.txWailing枠 );
\r
349 base.OnManagedリソースの解放();
\r
352 public override int On進行描画()
\r
354 if( !base.b活性化してない )
\r
357 bool flag2 = false;
\r
358 if( base.b初めての進行描画 )
\r
360 CDTXMania.Timer.tリセット();
\r
361 this.ctチップ模様アニメ.Drums = new CCounter( 0, 0x30, 10, CDTXMania.Timer );
\r
362 this.ctチップ模様アニメ.Guitar = new CCounter( 0, 0x17, 20, CDTXMania.Timer );
\r
363 this.ctチップ模様アニメ.Bass = new CCounter( 0, 0x17, 20, CDTXMania.Timer );
\r
364 this.ctWailingチップ模様アニメ = new CCounter( 0, 4, 50, CDTXMania.Timer );
\r
365 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
\r
366 this.actFI.tフェードイン開始();
\r
367 base.b初めての進行描画 = false;
\r
369 if( ( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( this.actGauge.db現在のゲージ値.Drums <= -0.1 ) ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
\r
371 this.actStageFailed.Start();
\r
372 CDTXMania.DTX.t全チップの再生停止();
\r
373 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;
\r
376 this.t進行描画・MIDIBGM();
\r
377 this.t進行描画・パネル文字列();
\r
381 this.t進行描画・ステータスパネル();
\r
382 this.t進行描画・ギターベースフレーム();
\r
383 this.t進行描画・レーンフラッシュGB();
\r
384 this.t進行描画・ギターベース判定ライン();
\r
386 this.t進行描画・グラフ(); // #24074 2011.01.23 add ikanick
\r
387 this.t進行描画・レーンフラッシュD();
\r
388 this.t進行描画・DANGER();
\r
389 this.t進行描画・判定ライン();
\r
390 this.t進行描画・RGBボタン();
\r
391 this.t進行描画・判定文字列1・通常位置指定の場合();
\r
393 this.t進行描画・WailingBonus();
\r
394 this.t進行描画・譜面スクロール速度();
\r
395 this.t進行描画・チップアニメ();
\r
396 flag = this.t進行描画・チップ(E楽器パート.DRUMS);
\r
398 this.t進行描画・ドラムパッド();
\r
399 this.t進行描画・判定文字列2・判定ライン上指定の場合();
\r
400 this.t進行描画・Wailing枠();
\r
401 this.t進行描画・チップファイアD();
\r
402 this.t進行描画・チップファイアGB();
\r
403 this.t進行描画・STAGEFAILED();
\r
404 flag2 = this.t進行描画・フェードイン・アウト();
\r
405 if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
\r
407 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;
\r
408 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;
\r
409 this.actFOClear.tフェードアウト開始();
\r
413 return (int) this.eフェードアウト完了時の戻り値;
\r
418 if( CDTXMania.act現在入力を占有中のプラグイン == null )
\r
427 #region [ private ]
\r
428 //-----------------
\r
429 //private class STHITCOUNTOFRANK
\r
432 // public int Good;
\r
433 // public int Great;
\r
434 // public int Miss;
\r
435 // public int Perfect;
\r
436 // public int Poor;
\r
439 // public int this[ int index ]
\r
446 // return this.Perfect;
\r
449 // return this.Great;
\r
452 // return this.Good;
\r
455 // return this.Poor;
\r
458 // return this.Miss;
\r
460 // throw new IndexOutOfRangeException();
\r
467 // this.Perfect = value;
\r
471 // this.Great = value;
\r
475 // this.Good = value;
\r
479 // this.Poor = value;
\r
483 // this.Miss = value;
\r
486 // throw new IndexOutOfRangeException();
\r
491 //[StructLayout( LayoutKind.Sequential )]
\r
492 //private struct STKARAUCHI
\r
494 // public CDTX.CChip HH;
\r
495 // public CDTX.CChip SD;
\r
496 // public CDTX.CChip BD;
\r
497 // public CDTX.CChip HT;
\r
498 // public CDTX.CChip LT;
\r
499 // public CDTX.CChip FT;
\r
500 // public CDTX.CChip CY;
\r
501 // public CDTX.CChip HHO;
\r
502 // public CDTX.CChip RD;
\r
503 // public CDTX.CChip LC;
\r
504 // public CDTX.CChip this[ int index ]
\r
532 // return this.HHO;
\r
540 // throw new IndexOutOfRangeException();
\r
547 // this.HH = value;
\r
551 // this.SD = value;
\r
555 // this.BD = value;
\r
559 // this.HT = value;
\r
563 // this.LT = value;
\r
567 // this.FT = value;
\r
571 // this.CY = value;
\r
575 // this.HHO = value;
\r
579 // this.RD = value;
\r
583 // this.LC = value;
\r
586 // throw new IndexOutOfRangeException();
\r
591 //private CAct演奏AVI actAVI;
\r
592 //private CAct演奏BGA actBGA;
\r
593 private CAct演奏DrumsチップファイアD actChipFireD;
\r
594 //private CAct演奏DrumsチップファイアGB actChipFireGB;
\r
595 //private CAct演奏DrumsコンボDGB actCombo;
\r
596 //private CAct演奏DrumsDanger actDANGER;
\r
597 //private CActFIFOBlack actFI;
\r
598 //private CActFIFOBlack actFO;
\r
599 //private CActFIFOWhite actFOClear;
\r
600 //private CAct演奏Drumsゲージ actGauge;
\r
601 private CAct演奏Drumsグラフ actGraph; // #24074 2011.01.23 add ikanick
\r
602 //private CAct演奏Drums判定文字列 actJudgeString;
\r
603 //private CAct演奏DrumsレーンフラッシュD actLaneFlushD;
\r
604 //private CAct演奏DrumsレーンフラッシュGB actLaneFlushGB;
\r
605 private CAct演奏Drumsパッド actPad;
\r
606 //private CAct演奏パネル文字列 actPanel;
\r
607 //private CAct演奏演奏情報 actPlayInfo;
\r
608 //private CAct演奏DrumsRGB actRGB;
\r
609 //private CAct演奏Drumsスコア actScore;
\r
610 //private CAct演奏ステージ失敗 actStageFailed;
\r
611 //private CAct演奏Drumsステータスパネル actStatusPanels;
\r
612 //private CAct演奏DrumsWailingBonus actWailingBonus;
\r
613 //private CAct演奏スクロール速度 act譜面スクロール速度;
\r
614 //private bool bPAUSE;
\r
615 private bool bフィルイン中;
\r
616 //private STDGBVALUE<bool> b演奏にMIDI入力を使った;
\r
617 //private STDGBVALUE<bool> b演奏にキーボードを使った;
\r
618 //private STDGBVALUE<bool> b演奏にジョイパッドを使った;
\r
619 //private STDGBVALUE<bool> b演奏にマウスを使った;
\r
620 //private CCounter ctWailingチップ模様アニメ;
\r
621 //private STDGBVALUE<CCounter> ctチップ模様アニメ;
\r
622 private readonly Eパッド[] eチャンネルtoパッド = new Eパッド[]
\r
624 Eパッド.HH, Eパッド.SD, Eパッド.BD, Eパッド.HT,
\r
625 Eパッド.LT, Eパッド.CY, Eパッド.FT, Eパッド.HHO,
\r
626 Eパッド.RD, Eパッド.UNKNOWN, Eパッド.UNKNOWN, Eパッド.LC
\r
628 //private E演奏画面の戻り値 eフェードアウト完了時の戻り値;
\r
629 //private readonly int[,] nBGAスコープチャンネルマップ;
\r
630 //private readonly int[,] nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };
\r
631 //private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };
\r
632 //private readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };
\r
633 private readonly int[] nチャンネルtoX座標 = new int[] { 0x4c, 110, 0x91, 0xc0, 0xe2, 0x126, 260, 0x4f, 300, 0x23 };
\r
634 //private readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a };
\r
635 //private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };
\r
636 //private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };
\r
637 //private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;
\r
638 //private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;
\r
639 // private int n現在のトップChip = -1;
\r
640 //private int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];
\r
641 //private int n最後に再生したHHのチャンネル番号;
\r
642 //private List<int> L最後に再生したHHの実WAV番号; // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.
\r
643 //private int n最後に再生したギターの実WAV番号;
\r
644 //private int n最後に再生したベースの実WAV番号;
\r
645 //private STDGBVALUE<Queue<CDTX.CChip>> queWailing;
\r
646 //private STDGBVALUE<CDTX.CChip> r現在の歓声Chip;
\r
647 //private CDTX.CChip r現在の空うちギターChip;
\r
648 //private STKARAUCHI r現在の空うちドラムChip;
\r
649 //private CDTX.CChip r現在の空うちベースChip;
\r
650 //private CDTX.CChip r次にくるギターChip;
\r
651 //private CDTX.CChip r次にくるベースChip;
\r
652 //private CTexture txWailing枠;
\r
653 //private CTexture txチップ;
\r
654 //private CTexture txヒットバー;
\r
655 private CTexture txヒットバーGB;
\r
656 private CTexture txレーンフレームGB;
\r
657 //private CTexture tx背景;
\r
658 // private STDGBVALUE<int> nInputAdjustTimeMs; // #23580 2011.1.3 yyagi
\r
659 //private CConfigIni.STAUTOPLAY bIsAutoPlay; // #24239 2011.1.23 yyagi
\r
661 private bool bフィルイン区間の最後のChipである( CDTX.CChip pChip )
\r
663 if( pChip == null )
\r
667 int num = pChip.n発声位置;
\r
668 for( int i = CDTXMania.DTX.listChip.IndexOf( pChip ) + 1; i < CDTXMania.DTX.listChip.Count; i++ )
\r
670 pChip = CDTXMania.DTX.listChip[ i ];
\r
671 if( ( pChip.nチャンネル番号 == 0x53 ) && ( pChip.n整数値 == 2 ) )
\r
675 if( ( ( pChip.nチャンネル番号 >= 0x11 ) && ( pChip.nチャンネル番号 <= 0x19 ) ) && ( ( pChip.n発声位置 - num ) > 0x18 ) )
\r
682 // private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )
\r
684 // if( pChip != null )
\r
686 // pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ); // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature
\r
687 // int nDeltaTime = Math.Abs( pChip.nLag);
\r
688 ////Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));
\r
689 // if( nDeltaTime <= CDTXMania.nPerfect範囲ms )
\r
691 // return E判定.Perfect;
\r
693 // if( nDeltaTime <= CDTXMania.nGreat範囲ms )
\r
695 // return E判定.Great;
\r
697 // if( nDeltaTime <= CDTXMania.nGood範囲ms )
\r
699 // return E判定.Good;
\r
701 // if( nDeltaTime <= CDTXMania.nPoor範囲ms )
\r
703 // return E判定.Poor;
\r
706 // return E判定.Miss;
\r
708 //private CDTX.CChip r空うちChip( E楽器パート part, Eパッド pad )
\r
712 // case E楽器パート.DRUMS:
\r
716 // if( this.r現在の空うちドラムChip.HH != null )
\r
718 // return this.r現在の空うちドラムChip.HH;
\r
720 // if( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける )
\r
722 // if( CDTXMania.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける )
\r
724 // return this.r現在の空うちドラムChip.HHO;
\r
726 // if( this.r現在の空うちドラムChip.HHO != null )
\r
728 // return this.r現在の空うちドラムChip.HHO;
\r
731 // return this.r現在の空うちドラムChip.LC;
\r
734 // return this.r現在の空うちドラムChip.SD;
\r
737 // return this.r現在の空うちドラムChip.BD;
\r
740 // return this.r現在の空うちドラムChip.HT;
\r
743 // if( this.r現在の空うちドラムChip.LT != null )
\r
745 // return this.r現在の空うちドラムChip.LT;
\r
747 // if( CDTXMania.ConfigIni.eFTGroup == EFTGroup.共通 )
\r
749 // return this.r現在の空うちドラムChip.FT;
\r
754 // if( this.r現在の空うちドラムChip.FT != null )
\r
756 // return this.r現在の空うちドラムChip.FT;
\r
758 // if( CDTXMania.ConfigIni.eFTGroup == EFTGroup.共通 )
\r
760 // return this.r現在の空うちドラムChip.LT;
\r
765 // if( this.r現在の空うちドラムChip.CY != null )
\r
767 // return this.r現在の空うちドラムChip.CY;
\r
769 // if( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 )
\r
771 // return this.r現在の空うちドラムChip.RD;
\r
776 // if( this.r現在の空うちドラムChip.HHO != null )
\r
778 // return this.r現在の空うちドラムChip.HHO;
\r
780 // if( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける )
\r
782 // if( CDTXMania.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける )
\r
784 // return this.r現在の空うちドラムChip.HH;
\r
786 // if( this.r現在の空うちドラムChip.HH != null )
\r
788 // return this.r現在の空うちドラムChip.HH;
\r
791 // return this.r現在の空うちドラムChip.LC;
\r
794 // if( this.r現在の空うちドラムChip.RD != null )
\r
796 // return this.r現在の空うちドラムChip.RD;
\r
798 // if( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 )
\r
800 // return this.r現在の空うちドラムChip.CY;
\r
805 // if( this.r現在の空うちドラムChip.LC != null )
\r
807 // return this.r現在の空うちドラムChip.LC;
\r
809 // if( ( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける ) && ( CDTXMania.ConfigIni.eHHGroup != EHHGroup.全部共通 ) )
\r
813 // if( this.r現在の空うちドラムChip.HH != null )
\r
815 // return this.r現在の空うちドラムChip.HH;
\r
817 // return this.r現在の空うちドラムChip.HHO;
\r
821 // case E楽器パート.GUITAR:
\r
822 // return this.r現在の空うちギターChip;
\r
824 // case E楽器パート.BASS:
\r
825 // return this.r現在の空うちベースChip;
\r
829 //private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag, int nInputAdjustTime )
\r
831 // nTime += nInputAdjustTime; // #24239 2011.1.23 yyagi InputAdjust
\r
834 // if( this.n現在のトップChip == -1 )
\r
838 // int count = CDTXMania.DTX.listChip.Count;
\r
839 // int num4 = num5 = this.n現在のトップChip;
\r
840 // if( this.n現在のトップChip >= count )
\r
842 // num4 = num5 = count - 1;
\r
844 // int num2 = num4;
\r
845 // while( num2 < count )
\r
847 // CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];
\r
848 // if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )
\r
850 // if( chip.n発声時刻ms > nTime )
\r
856 // else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )
\r
858 // if( chip.n発声時刻ms > nTime )
\r
864 // else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 0xa0 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )
\r
866 // if( chip.n発声時刻ms > nTime )
\r
874 // int num3 = num5;
\r
875 // while( num3 >= 0 )
\r
877 // CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];
\r
878 // if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )
\r
880 // if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )
\r
885 // else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )
\r
887 // if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 0x28 ) )
\r
892 // else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 0xa0 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 0xa0 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )
\r
898 // if( ( num2 == count ) && ( num3 < 0 ) )
\r
902 // if( num2 == count )
\r
904 // return CDTXMania.DTX.listChip[ num3 ];
\r
908 // return CDTXMania.DTX.listChip[ num2 ];
\r
910 // CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
911 // CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];
\r
912 // int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
913 // int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );
\r
914 // if( num6 >= num7 )
\r
920 //private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime )
\r
922 // return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, nInputAdjustTime, 0 );
\r
924 //private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime, int n検索範囲時間ms )
\r
926 // nTime += nInputAdjustTime;
\r
930 // if( this.n現在のトップChip == -1 )
\r
934 // int count = CDTXMania.DTX.listChip.Count;
\r
935 // int num4 = num5 = this.n現在のトップChip;
\r
936 // if( this.n現在のトップChip >= count )
\r
938 // num4 = num5 = count - 1;
\r
940 // int num2 = num4;
\r
941 // while( num2 < count )
\r
943 // CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];
\r
944 // if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )
\r
946 // if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )
\r
948 // if( chip.n発声時刻ms > nTime )
\r
955 // else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )
\r
957 // if( chip.n発声時刻ms > nTime )
\r
963 // else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )
\r
965 // if( chip.n発声時刻ms > nTime )
\r
973 // int num3 = num5;
\r
974 // while( num3 >= 0 )
\r
976 // CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];
\r
977 // if( ( ( ( !chip2.bHit && ( nChannelFlag >= 0x11 ) ) && ( ( nChannelFlag <= 0x1a ) && ( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) )
\r
983 // if( ( num2 == count ) && ( num3 < 0 ) )
\r
987 // CDTX.CChip chip3 = null;
\r
988 // if( num2 == count )
\r
990 // chip3 = CDTXMania.DTX.listChip[ num3 ];
\r
991 // num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
993 // else if( num3 < 0 )
\r
995 // chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
996 // num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
1000 // int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
1001 // int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
1002 // if( num7 < num8 )
\r
1004 // chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
1005 // num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
1009 // chip3 = CDTXMania.DTX.listChip[ num3 ];
\r
1010 // num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
1013 // if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )
\r
1019 //private CDTX.CChip r次にくるギターChipを更新して返す()
\r
1021 // int nInputAdjustTime = this.bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;
\r
1022 // this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, nInputAdjustTime, 500 );
\r
1023 // return this.r次にくるギターChip;
\r
1025 //private CDTX.CChip r次にくるベースChipを更新して返す()
\r
1027 // int nInputAdjustTime = this.bIsAutoPlay.Bass? 0 : this.nInputAdjustTimeMs.Bass;
\r
1028 // this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, nInputAdjustTime, 500 );
\r
1029 // return this.r次にくるベースChip;
\r
1031 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part )
\r
1033 // this.tサウンド再生( rChip, n再生開始システム時刻ms, part, CDTXMania.ConfigIni.n手動再生音量, false, false );
\r
1035 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量 )
\r
1037 // this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, false, false );
\r
1039 //private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ )
\r
1041 // this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, bモニタ, false );
\r
1043 // private void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )
\r
1045 // if( pChip != null )
\r
1049 // case E楽器パート.DRUMS:
\r
1051 // int index = pChip.nチャンネル番号;
\r
1052 // if ( ( index >= 0x11 ) && ( index <= 0x1a ) )
\r
1058 // if ( ( index < 0x31 ) || ( index > 0x3a ) )
\r
1064 // int nLane = this.nチャンネル0Atoレーン07[ index ];
\r
1065 // if( ( nLane == 1 ) && // 今回演奏するのがHC or HO
\r
1066 // ( index == 0 || ( index == 7 && this.n最後に再生したHHのチャンネル番号 != 0x18 && this.n最後に再生したHHのチャンネル番号 != 0x38 ) )
\r
1067 // // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない
\r
1070 // // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。
\r
1071 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi test
\r
1072 // if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)
\r
1075 // for (int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++) // #23921 2011.1.4 yyagi
\r
1077 // // CDTXMania.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号);
\r
1078 // CDTXMania.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号[i]); // #23921 yyagi ストック分全て消音する
\r
1080 // this.L最後に再生したHHの実WAV番号.Clear();
\r
1081 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi test
\r
1084 // //this.n最後に再生したHHの実WAV番号 = pChip.n整数値・内部番号;
\r
1085 // this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号;
\r
1087 //#if TEST_NOTEOFFMODE // 2011.1.4 yyagi test
\r
1088 // if (CDTXMania.DTX.bHH演奏で直前のHHを消音する)
\r
1091 // if (index == 7 || index == 0x27) // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく
\r
1093 // if (this.L最後に再生したHHの実WAV番号.Count >= 16) // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える
\r
1094 // { // (ストックが増えてList<>のrealloc()が発生するのを予防する)
\r
1095 // this.L最後に再生したHHの実WAV番号.RemoveAt(0);
\r
1097 // if (this.L最後に再生したHHの実WAV番号.IndexOf(pChip.n整数値・内部番号) < 0) // チップ音がまだストックされてなければ
\r
1099 // this.L最後に再生したHHの実WAV番号.Add(pChip.n整数値・内部番号); // ストックする
\r
1102 //#if TEST_NOTEOFFMODE // 2011.1.4 yyagi test
\r
1105 // CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ );
\r
1108 // case E楽器パート.GUITAR:
\r
1109 //#if TEST_NOTEOFFMODE // 2011.1.1 yyagi test
\r
1110 // if (CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する) {
\r
1112 // CDTXMania.DTX.tWavの再生停止(this.n最後に再生したギターの実WAV番号);
\r
1113 //#if TEST_NOTEOFFMODE
\r
1116 // CDTXMania.DTX.tチップの再生(pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生);
\r
1117 // this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号;
\r
1120 // case E楽器パート.BASS:
\r
1121 //#if TEST_NOTEOFFMODE
\r
1122 // if (CDTXMania.DTX.bBASS演奏で直前のBASSを消音する) {
\r
1124 // CDTXMania.DTX.tWavの再生停止(this.n最後に再生したベースの実WAV番号);
\r
1125 //#if TEST_NOTEOFFMODE
\r
1128 // CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生 );
\r
1129 // this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号;
\r
1134 //private void tステータスパネルの選択()
\r
1136 // if( CDTXMania.bコンパクトモード )
\r
1138 // this.actStatusPanels.tラベル名からステータスパネルを決定する( null );
\r
1140 // else if( CDTXMania.stage選曲.r確定された曲 != null )
\r
1142 // this.actStatusPanels.tラベル名からステータスパネルを決定する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] );
\r
1145 protected override E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )
\r
1147 E判定 eJudgeResult = tチップのヒット処理( nHitTime, pChip, E楽器パート.DRUMS );
\r
1148 // #24074 2011.01.23 add ikanick
\r
1149 this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );
\r
1150 return eJudgeResult;
\r
1152 //private E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )
\r
1154 // pChip.bHit = true;
\r
1155 // bool bPChipIsAutoPlay = false;
\r
1157 // ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && CDTXMania.ConfigIni.bAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||
\r
1158 // ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && CDTXMania.ConfigIni.bAutoPlay.Guitar )
\r
1160 // ( ( pChip.e楽器パート == E楽器パート.BASS ) && CDTXMania.ConfigIni.bAutoPlay.Bass )
\r
1163 // bPChipIsAutoPlay = true;
\r
1167 // this.bAUTOでないチップが1つでもバーを通過した = true;
\r
1169 // E判定 eJudgeResult = E判定.Auto;
\r
1170 // switch (pChip.e楽器パート)
\r
1172 // case E楽器パート.DRUMS:
\r
1174 // int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? 0 : this.nInputAdjustTimeMs.Drums;
\r
1175 // eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
1176 // this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? E判定.Auto : eJudgeResult, pChip.nLag );
\r
1180 // case E楽器パート.GUITAR:
\r
1182 // int nInputAdjustTime = bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;
\r
1183 // eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
1184 // this.actJudgeString.Start( 10, bIsAutoPlay.Guitar ? E判定.Auto : eJudgeResult, pChip.nLag );
\r
1188 // case E楽器パート.BASS:
\r
1190 // int nInputAdjustTime = bIsAutoPlay.Bass ? 0 : this.nInputAdjustTimeMs.Bass;
\r
1191 // eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
1192 // this.actJudgeString.Start( 11, bIsAutoPlay.Bass ? E判定.Auto : eJudgeResult, pChip.nLag );
\r
1196 // if( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) )
\r
1198 // this.t判定にあわせてゲージを増減する( E楽器パート.DRUMS, pChip.e楽器パート, eJudgeResult );
\r
1200 // switch( pChip.e楽器パート )
\r
1202 // case E楽器パート.DRUMS:
\r
1203 // switch ( eJudgeResult )
\r
1207 // this.nヒット数・Auto含む.Drums.Miss++;
\r
1208 // if ( !bPChipIsAutoPlay )
\r
1210 // this.nヒット数・Auto含まない.Drums.Miss++;
\r
1214 // this.nヒット数・Auto含む.Drums[ (int) eJudgeResult ]++;
\r
1215 // if ( !bPChipIsAutoPlay )
\r
1217 // this.nヒット数・Auto含まない.Drums[ (int) eJudgeResult ]++;
\r
1222 // if (CDTXMania.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay)
\r
1224 // switch (eJudgeResult)
\r
1226 // case E判定.Perfect:
\r
1227 // case E判定.Great:
\r
1229 // this.actCombo.n現在のコンボ数.Drums++;
\r
1233 // this.actCombo.n現在のコンボ数.Drums = 0;
\r
1239 // case E楽器パート.GUITAR:
\r
1240 // switch( eJudgeResult )
\r
1244 // this.nヒット数・Auto含む.Guitar.Miss++;
\r
1245 // if ( !bIsAutoPlay.Guitar )
\r
1247 // this.nヒット数・Auto含まない.Guitar.Miss++;
\r
1250 // default: // #24068 2011.1.10 ikanick changed
\r
1251 // this.nヒット数・Auto含む.Guitar[ (int) eJudgeResult ]++;
\r
1252 // if ( !bIsAutoPlay.Guitar )
\r
1254 // this.nヒット数・Auto含まない.Guitar[ (int) eJudgeResult ]++;
\r
1258 // switch (eJudgeResult)
\r
1260 // case E判定.Perfect:
\r
1261 // case E判定.Great:
\r
1263 // this.actCombo.n現在のコンボ数.Guitar++;
\r
1267 // this.actCombo.n現在のコンボ数.Guitar = 0;
\r
1272 // case E楽器パート.BASS:
\r
1273 // switch( eJudgeResult )
\r
1277 // this.nヒット数・Auto含む.Bass.Miss++;
\r
1278 // if ( !bIsAutoPlay.Bass )
\r
1280 // this.nヒット数・Auto含まない.Bass.Miss++;
\r
1283 // default: // #24068 2011.1.10 ikanick changed
\r
1284 // this.nヒット数・Auto含む.Bass[ (int) eJudgeResult ]++;
\r
1285 // if ( !bIsAutoPlay.Bass )
\r
1287 // this.nヒット数・Auto含まない.Bass[ (int) eJudgeResult ]++;
\r
1292 // switch( eJudgeResult )
\r
1294 // case E判定.Perfect:
\r
1295 // case E判定.Great:
\r
1297 // this.actCombo.n現在のコンボ数.Bass++;
\r
1301 // this.actCombo.n現在のコンボ数.Bass = 0;
\r
1309 // if( ( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) ) )
\r
1311 // int nCombos = 0;
\r
1312 // switch (pChip.e楽器パート) {
\r
1313 // case E楽器パート.DRUMS:
\r
1314 // nCombos = this.actCombo.n現在のコンボ数.Drums;
\r
1316 // case E楽器パート.GUITAR:
\r
1317 // nCombos = this.actCombo.n現在のコンボ数.Guitar;
\r
1319 // case E楽器パート.BASS:
\r
1320 // nCombos = this.actCombo.n現在のコンボ数.Bass;
\r
1323 // long nScore = this.actScore.Get( pChip.e楽器パート );
\r
1324 // long[] numArray = new long[] { 350L, 200L, 50L, 0L };
\r
1325 // if( ( nCombos <= 500 ) || ( eJudgeResult == E判定.Good ) )
\r
1327 // nScore += numArray[ (int) eJudgeResult ] * nCombos;
\r
1329 // else if( ( eJudgeResult == E判定.Perfect ) || ( eJudgeResult == E判定.Great ) )
\r
1331 // nScore += numArray[ (int) eJudgeResult ] * 500L;
\r
1333 // this.actScore.Set( pChip.e楽器パート, nScore );
\r
1335 // // #24074 2011.01.23 add ikanick
\r
1336 // this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );
\r
1338 // return eJudgeResult;
\r
1340 protected override void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )
\r
1342 this.tチップのヒット処理・BadならびにTight時のMiss( part, 0, E楽器パート.DRUMS );
\r
1344 protected override void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )
\r
1346 this.tチップのヒット処理・BadならびにTight時のMiss( part, nLane, E楽器パート.DRUMS );
\r
1348 //private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )
\r
1350 // this.bAUTOでないチップが1つでもバーを通過した = true;
\r
1351 // this.t判定にあわせてゲージを増減する( E楽器パート.DRUMS, part, E判定.Miss );
\r
1354 // case E楽器パート.DRUMS:
\r
1355 // if( ( nLane >= 0 ) && ( nLane <= 7 ) )
\r
1357 // this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss, 999 );
\r
1359 // this.actCombo.n現在のコンボ数.Drums = 0;
\r
1362 // case E楽器パート.GUITAR:
\r
1363 // this.actJudgeString.Start( 10, E判定.Bad, 999 );
\r
1364 // this.actCombo.n現在のコンボ数.Guitar = 0;
\r
1367 // case E楽器パート.BASS:
\r
1368 // this.actJudgeString.Start( 11, E判定.Bad, 999 );
\r
1369 // this.actCombo.n現在のコンボ数.Bass = 0;
\r
1373 private bool tドラムヒット処理( long nHitTime, Eパッド type, CDTX.CChip pChip, int n強弱度合い0to127 )
\r
1375 if( pChip == null )
\r
1379 int index = pChip.nチャンネル番号;
\r
1380 if ( ( index >= 0x11 ) && ( index <= 0x1a ) )
\r
1384 else if ( ( index >= 0x31 ) && ( index <= 0x3a ) )
\r
1388 int num2 = this.nチャンネル0Atoレーン07[ index ];
\r
1389 int nLane = this.nチャンネル0Atoパッド08[ index ];
\r
1390 bool bPChipIsAutoPlay = bIsAutoPlay[ num2 ];
\r
1391 int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;
\r
1392 E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );
\r
1393 if( e判定 == E判定.Miss )
\r
1397 this.tチップのヒット処理( nHitTime, pChip );
\r
1398 this.actLaneFlushD.Start( (Eドラムレーン) num2, ( (float) n強弱度合い0to127 ) / 127f );
\r
1399 this.actPad.Hit( nLane );
\r
1400 if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )
\r
1402 bool flag = this.bフィルイン中;
\r
1403 bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );
\r
1404 bool flag3 = flag2;
\r
1405 this.actChipFireD.Start( (Eドラムレーン) num2, flag, flag2, flag3 );
\r
1407 if( CDTXMania.ConfigIni.bドラム打音を発声する )
\r
1409 CDTX.CChip rChip = null;
\r
1410 bool flag4 = true;
\r
1411 if( ( ( type == Eパッド.HH ) || ( type == Eパッド.HHO ) ) || ( type == Eパッド.LC ) )
\r
1413 flag4 = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1415 else if( ( type == Eパッド.LT ) || ( type == Eパッド.FT ) )
\r
1417 flag4 = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1419 else if( ( type == Eパッド.CY ) || ( type == Eパッド.RD ) )
\r
1421 flag4 = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1430 if( !CDTXMania.DTX.bチップがある.HHOpen && ( type == Eパッド.HHO ) )
\r
1434 if( !CDTXMania.DTX.bチップがある.Ride && ( type == Eパッド.RD ) )
\r
1438 if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( type == Eパッド.LC ) )
\r
1442 rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nHitTime, this.nパッド0Atoチャンネル0A[ (int) hH ], nInputAdjustTime );
\r
1443 if( rChip == null )
\r
1448 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );
\r
1452 //private void tパネル文字列の設定()
\r
1454 // this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );
\r
1456 //private void tキー入力()
\r
1458 // IInputDevice keyboard = CDTXMania.Input管理.Keyboard;
\r
1459 // if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F1 ) &&
\r
1460 // ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift) ) )
\r
1461 // { // shift+f1 (pause)
\r
1462 // this.bPAUSE = !this.bPAUSE;
\r
1463 // if( this.bPAUSE )
\r
1465 // CDTXMania.Timer.t一時停止();
\r
1466 // CDTXMania.DTX.t全チップの再生一時停止();
\r
1470 // CDTXMania.Timer.t再開();
\r
1471 // CDTXMania.DTX.t全チップの再生再開();
\r
1474 // if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1476 // this.t入力処理・ドラム();
\r
1477 // this.t入力処理・ギター();
\r
1478 // this.t入力処理・ベース();
\r
1479 // if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )
\r
1480 // { // shift + UpArrow (BGMAdjust)
\r
1481 // CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl) ) ? 1 : 10 );
\r
1482 // CDTXMania.DTX.tWave再生位置自動補正();
\r
1484 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )
\r
1485 // { // shift + DownArrow (BGMAdjust)
\r
1486 // CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl ) ) ? -1 : -10 );
\r
1487 // CDTXMania.DTX.tWave再生位置自動補正();
\r
1489 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) )
\r
1490 // { // UpArrow(scrollspeed up)
\r
1491 // CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 1999 );
\r
1493 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) )
\r
1494 // { // DownArrow (scrollspeed down)
\r
1495 // CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );
\r
1497 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Delete ) )
\r
1498 // { // del (debug info)
\r
1499 // CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;
\r
1501 // else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.LeftArrow ) ) // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.
\r
1503 // ChangeInputAdjustTimeInPlaying( keyboard, -1 );
\r
1505 // else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) ) // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.
\r
1507 // ChangeInputAdjustTimeInPlaying( keyboard, +1 );
\r
1509 // else if ( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )
\r
1510 // { // escape (exit)
\r
1511 // this.actFO.tフェードアウト開始();
\r
1512 // base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
1513 // this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;
\r
1518 protected override void ドラムスクロール速度アップ()
\r
1520 CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 1999 );
\r
1522 protected override void ドラムスクロール速度ダウン()
\r
1524 CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );
\r
1528 protected override void t進行描画・AVI()
\r
1530 base.t進行描画・AVI( 0x152, 0x39 );
\r
1532 protected override void t進行描画・BGA()
\r
1534 base.t進行描画・BGA( 0x152, 0x39 );
\r
1536 protected override void t進行描画・DANGER()
\r
1538 this.actDANGER.t進行描画( this.actGauge.db現在のゲージ値.Drums < 0.3, false, false );
\r
1540 //private void t進行描画・MIDIBGM()
\r
1542 // if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )
\r
1544 // CStage.Eフェーズ eフェーズid1 = base.eフェーズID;
\r
1547 //private void t進行描画・RGBボタン()
\r
1549 // if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
1551 // this.actRGB.On進行描画();
\r
1554 //private void t進行描画・STAGEFAILED()
\r
1556 // if( ( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( ( this.actStageFailed.On進行描画() != 0 ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )
\r
1558 // this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;
\r
1559 // base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;
\r
1560 // this.actFO.tフェードアウト開始();
\r
1563 //private void t進行描画・WailingBonus()
\r
1565 // if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1567 // this.actWailingBonus.On進行描画();
\r
1570 protected override void t進行描画・Wailing枠()
\r
1572 base.t進行描画・Wailing枠( 0x24b, 0x1de,
\r
1573 CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45,
\r
1574 CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45
\r
1577 private void t進行描画・ギターベースフレーム()
\r
1579 if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1581 if( CDTXMania.DTX.bチップがある.Guitar )
\r
1583 for( int i = 0; i < 0x163; i += 0x80 )
\r
1585 Rectangle rectangle = new Rectangle( 0, 0, 0x6d, 0x80 );
\r
1586 if( ( i + 0x80 ) > 0x163 )
\r
1588 rectangle.Height -= ( i + 0x80 ) - 0x163;
\r
1590 if( this.txレーンフレームGB != null )
\r
1592 this.txレーンフレームGB.t2D描画( CDTXMania.app.Device, 0x1fb, 0x39 + i, rectangle );
\r
1596 if( CDTXMania.DTX.bチップがある.Bass )
\r
1598 for( int j = 0; j < 0x163; j += 0x80 )
\r
1600 Rectangle rectangle2 = new Rectangle( 0, 0, 0x6d, 0x80 );
\r
1601 if( ( j + 0x80 ) > 0x163 )
\r
1603 rectangle2.Height -= ( j + 0x80 ) - 0x163;
\r
1605 if( this.txレーンフレームGB != null )
\r
1607 this.txレーンフレームGB.t2D描画( CDTXMania.app.Device, 0x18e, 0x39 + j, rectangle2 );
\r
1613 private void t進行描画・ギターベース判定ライン() // yyagi: ギタレボモードとは座標が違うだけですが、まとめづらかったのでそのまま放置してます。
\r
1615 if ( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1617 if ( CDTXMania.DTX.bチップがある.Guitar )
\r
1619 int y = ( CDTXMania.ConfigIni.bReverse.Guitar ? 0x176 : 0x5f ) - 3;
\r
1620 for ( int i = 0; i < 3; i++ )
\r
1622 if ( this.txヒットバーGB != null )
\r
1624 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, 0x1fd + ( 0x1a * i ), y );
\r
1625 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, ( 0x1fd + ( 0x1a * i ) ) + 0x10, y, new Rectangle( 0, 0, 10, 0x10 ) );
\r
1629 if ( CDTXMania.DTX.bチップがある.Bass )
\r
1631 int y = ( CDTXMania.ConfigIni.bReverse.Bass ? 0x176 : 0x5f ) - 3;
\r
1632 for ( int j = 0; j < 3; j++ )
\r
1634 if ( this.txヒットバーGB != null )
\r
1636 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, 400 + ( 0x1a * j ), y );
\r
1637 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, ( 400 + ( 0x1a * j ) ) + 0x10, y, new Rectangle( 0, 0, 10, 0x10 ) );
\r
1643 //private void t進行描画・ゲージ()
\r
1645 // if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )
\r
1647 // this.actGauge.On進行描画();
\r
1650 // #24074 2011.01.23 add ikanick
\r
1651 private void t進行描画・グラフ()
\r
1653 if ( !CDTXMania.ConfigIni.bストイックモード && !CDTXMania.ConfigIni.bドラムが全部オートプレイである && CDTXMania.ConfigIni.bGraph.Drums )
\r
1655 this.actGraph.On進行描画();
\r
1658 //------------------------------------------------
\r
1659 //private void t進行描画・コンボ()
\r
1661 // this.actCOMBO.On進行描画();
\r
1663 //private void t進行描画・スコア()
\r
1665 // this.actScore.On進行描画();
\r
1667 //private void t進行描画・ステータスパネル()
\r
1669 // this.actStatusPanels.On進行描画();
\r
1671 // private bool t進行描画・チップ(E楽器パート ePlayMode)
\r
1673 // if( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1677 // if( ( this.n現在のトップChip == -1 ) || ( this.n現在のトップChip >= CDTXMania.DTX.listChip.Count ) )
\r
1681 // int nCurrentTopChip = this.n現在のトップChip;
\r
1682 // if( nCurrentTopChip == -1 )
\r
1687 // //double speed = 264.0; // BPM150の時の1小節の長さ[dot]
\r
1688 // double speed = 234.0; // BPM150の時の1小節の長さ[dot]
\r
1690 // double ScrollSpeedDrums = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.0 ) * 0.5 * 37.5 * speed / 60000.0;
\r
1691 // double ScrollSpeedGuitar = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;
\r
1692 // double ScrollSpeedBass = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Bass + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;
\r
1694 // CDTX dTX = CDTXMania.DTX;
\r
1695 // CConfigIni configIni = CDTXMania.ConfigIni;
\r
1696 // while( nCurrentTopChip < dTX.listChip.Count )
\r
1698 // CDTX.CChip pChip = dTX.listChip[ nCurrentTopChip ];
\r
1699 // pChip.nバーからの距離dot.Drums = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedDrums );
\r
1700 // pChip.nバーからの距離dot.Guitar = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedGuitar );
\r
1701 // pChip.nバーからの距離dot.Bass = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * ScrollSpeedBass );
\r
1702 // if( Math.Min( Math.Min( pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar ), pChip.nバーからの距離dot.Bass ) > 450 )
\r
1706 // if( ( ( nCurrentTopChip == this.n現在のトップChip ) && ( pChip.nバーからの距離dot.Drums < -65 ) ) && pChip.bHit )
\r
1708 // this.n現在のトップChip++;
\r
1709 // nCurrentTopChip = this.n現在のトップChip;
\r
1713 // bool bPChipIsAutoPlay = false;
\r
1715 // ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]]) ||
\r
1716 // ((pChip.e楽器パート == E楽器パート.GUITAR) && CDTXMania.ConfigIni.bAutoPlay.Guitar)
\r
1718 // ((pChip.e楽器パート == E楽器パート.BASS) && CDTXMania.ConfigIni.bAutoPlay.Bass)
\r
1720 //// if ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])
\r
1722 // bPChipIsAutoPlay = true;
\r
1725 // int nInputAdjustTime = 0;
\r
1726 // if (bPChipIsAutoPlay)
\r
1728 // //nInputAdjustTime = 0;
\r
1730 // else if (pChip.e楽器パート == E楽器パート.UNKNOWN)
\r
1732 // //nInputAdjustTime = 0;
\r
1736 // nInputAdjustTime = this.nInputAdjustTimeMs[(int)pChip.e楽器パート];
\r
1739 // if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&
\r
1740 // ( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) )
\r
1742 // this.tチップのヒット処理( CDTXMania.Timer.n現在時刻, pChip );
\r
1744 // switch( pChip.nチャンネル番号 )
\r
1746 // case 0x01: // BGM
\r
1747 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1749 // pChip.bHit = true;
\r
1750 // if( configIni.bBGM音を発声する )
\r
1752 // dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
1757 // case 0x03: // BPM変更
\r
1758 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1760 // pChip.bHit = true;
\r
1761 // this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;
\r
1765 // case 0x04: // レイヤーBGA
\r
1773 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1775 // pChip.bHit = true;
\r
1776 // if( configIni.bBGA有効 )
\r
1778 // switch( pChip.eBGA種別 )
\r
1780 // case EBGA種別.BMPTEX:
\r
1781 // if( pChip.rBMPTEX != null )
\r
1783 // this.actBGA.Start( pChip.nチャンネル番号, null, pChip.rBMPTEX, pChip.rBMPTEX.tx画像.sz画像サイズ.Width, pChip.rBMPTEX.tx画像.sz画像サイズ.Height, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
\r
1787 // case EBGA種別.BGA:
\r
1788 // if( ( pChip.rBGA != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )
\r
1790 // this.actBGA.Start( pChip.nチャンネル番号, pChip.rBMP, pChip.rBMPTEX, pChip.rBGA.pt画像側右下座標.X - pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側右下座標.Y - pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt表示座標.X, pChip.rBGA.pt表示座標.Y, 0, 0, 0 );
\r
1794 // case EBGA種別.BGAPAN:
\r
1795 // if( ( pChip.rBGAPan != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )
\r
1797 // this.actBGA.Start( pChip.nチャンネル番号, pChip.rBMP, pChip.rBMPTEX, pChip.rBGAPan.sz開始サイズ.Width, pChip.rBGAPan.sz開始サイズ.Height, pChip.rBGAPan.sz終了サイズ.Width, pChip.rBGAPan.sz終了サイズ.Height, pChip.rBGAPan.pt画像側開始位置.X, pChip.rBGAPan.pt画像側開始位置.Y, pChip.rBGAPan.pt画像側終了位置.X, pChip.rBGAPan.pt画像側終了位置.Y, pChip.rBGAPan.pt表示側開始位置.X, pChip.rBGAPan.pt表示側開始位置.Y, pChip.rBGAPan.pt表示側終了位置.X, pChip.rBGAPan.pt表示側終了位置.Y, pChip.n総移動時間 );
\r
1802 // if( pChip.rBMP != null )
\r
1804 // this.actBGA.Start( pChip.nチャンネル番号, pChip.rBMP, null, pChip.rBMP.n幅, pChip.rBMP.n高さ, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
\r
1812 // case 0x08: // BPM変更(拡張)
\r
1813 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1815 // pChip.bHit = true;
\r
1816 // if( dTX.listBPM.ContainsKey( pChip.n整数値・内部番号 ) )
\r
1818 // this.actPlayInfo.dbBPM = ( dTX.listBPM[ pChip.n整数値・内部番号 ].dbBPM値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;
\r
1823 // case 0x11: // ドラム演奏
\r
1833 // this.t進行描画・チップ・ドラムス( configIni, ref dTX, ref pChip );
\r
1836 // case 0x1f: // フィルインサウンド(ドラム)
\r
1837 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1839 // pChip.bHit = true;
\r
1840 // this.r現在の歓声Chip.Drums = pChip;
\r
1844 // case 0x20: // ギター演奏
\r
1852 // this.t進行描画・チップ・ギター( configIni, ref dTX, ref pChip );
\r
1855 // case 0x28: // ウェイリング(ギター)
\r
1856 // this.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );
\r
1859 // case 0x2f: // ウェイリングサウンド(ギター)
\r
1860 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
1862 // pChip.bHit = true;
\r
1863 // this.r現在の歓声Chip.Guitar = pChip;
\r
1867 // case 0x31: // 不可視チップ配置(ドラム)
\r
1877 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1879 // pChip.bHit = true;
\r
1883 // case 0x50: // 小節線
\r
1885 // int n小節番号plus1 = pChip.n発声位置 / 384;
\r
1886 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1888 // pChip.bHit = true;
\r
1889 // this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;
\r
1890 // if( configIni.bWave再生位置自動調整機能有効 )
\r
1892 // dTX.tWave再生位置自動補正();
\r
1895 // if( configIni.bDrums有効 && ePlayMode == E楽器パート.DRUMS) // Drumsでのみ表示
\r
1897 // if( configIni.b演奏情報を表示する && ( configIni.eDark == Eダークモード.OFF ) )
\r
1899 // int n小節番号 = n小節番号plus1 - 1;
\r
1900 // CDTXMania.act文字コンソール.tPrint( 0x14d, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 0x11 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 0x11 ), C文字コンソール.Eフォント種別.白, n小節番号.ToString() );
\r
1902 // if( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )
\r
1904 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bc, 0x128, 2 ) );
\r
1907 // if( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )
\r
1909 // int y = configIni.bReverse.Guitar ? ( ( 0x176 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Guitar ) - 1 );
\r
1910 // if( ( dTX.bチップがある.Guitar && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )
\r
1912 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fb, y, new Rectangle( 0, 450, 0x4e, 1 ) );
\r
1914 // y = configIni.bReverse.Bass ? ( ( 0x176 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Bass ) - 1 );
\r
1915 // if( ( dTX.bチップがある.Bass && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )
\r
1917 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x18e, y, new Rectangle( 0, 450, 0x4e, 1 ) );
\r
1922 // case 0x51: // 拍線
\r
1923 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1925 // pChip.bHit = true;
\r
1927 // if( ( ePlayMode == E楽器パート.DRUMS ) && ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 && ( this.txチップ != null ) )
\r
1929 // this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bf, 0x128, 1 ) );
\r
1933 // case 0x52: // MIDIコーラス
\r
1934 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1936 // pChip.bHit = true;
\r
1940 // case 0x53: // フィルイン
\r
1941 // this.t進行描画・チップ・フィルイン( configIni, ref dTX, ref pChip );
\r
1944 // case 0x54: // 動画再生
\r
1945 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1947 // pChip.bHit = true;
\r
1948 // if( configIni.bAVI有効 )
\r
1950 // switch( pChip.eAVI種別 )
\r
1952 // case EAVI種別.AVI:
\r
1953 // if( pChip.rAVI != null )
\r
1955 // this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, 0x116, 0x163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pChip.n発声時刻ms );
\r
1959 // case EAVI種別.AVIPAN:
\r
1960 // if( pChip.rAVIPan != null )
\r
1962 // this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, pChip.rAVIPan.sz開始サイズ.Width, pChip.rAVIPan.sz開始サイズ.Height, pChip.rAVIPan.sz終了サイズ.Width, pChip.rAVIPan.sz終了サイズ.Height, pChip.rAVIPan.pt動画側開始位置.X, pChip.rAVIPan.pt動画側開始位置.Y, pChip.rAVIPan.pt動画側終了位置.X, pChip.rAVIPan.pt動画側終了位置.Y, pChip.rAVIPan.pt表示側開始位置.X, pChip.rAVIPan.pt表示側開始位置.Y, pChip.rAVIPan.pt表示側終了位置.X, pChip.rAVIPan.pt表示側終了位置.Y, pChip.n総移動時間, pChip.n発声時刻ms );
\r
1970 // case 0x61: case 0x62: case 0x63: case 0x64: // 自動再生(BGM, SE)
\r
1971 // case 0x65: case 0x66: case 0x67: case 0x68:
\r
1972 // case 0x69: case 0x70: case 0x71: case 0x72:
\r
1973 // case 0x73: case 0x74: case 0x75: case 0x76:
\r
1974 // case 0x77: case 0x78: case 0x79: case 0x80:
\r
1975 // case 0x81: case 0x82: case 0x83: case 0x84:
\r
1976 // case 0x85: case 0x86: case 0x87: case 0x88:
\r
1977 // case 0x89: case 0x90: case 0x91: case 0x92:
\r
1978 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1980 // pChip.bHit = true;
\r
1981 // if( configIni.bBGM音を発声する )
\r
1983 // dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] );
\r
1984 // dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
1985 // this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号;
\r
1990 // case 0xa0: // ベース演奏
\r
1998 // this.t進行描画・チップ・ベース( configIni, ref dTX, ref pChip );
\r
2001 // case 0xa8: // ウェイリング(ベース)
\r
2002 // this.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip );
\r
2005 // case 0xaf: // ウェイリングサウンド(ベース)
\r
2006 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2008 // pChip.bHit = true;
\r
2009 // this.r現在の歓声Chip.Bass = pChip;
\r
2013 // case 0xb1: // 空打ち音設定(ドラム)
\r
2023 // this.t進行描画・チップ・空打ち音設定・ドラム( configIni, ref dTX, ref pChip );
\r
2026 // case 0xba: // 空打ち音設定(ギター)
\r
2027 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2029 // pChip.bHit = true;
\r
2030 // this.r現在の空うちギターChip = pChip;
\r
2031 // pChip.nチャンネル番号 = 0x20;
\r
2035 // case 0xbb: // 空打ち音設定(ベース)
\r
2036 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2038 // pChip.bHit = true;
\r
2039 // this.r現在の空うちベースChip = pChip;
\r
2040 // pChip.nチャンネル番号 = 0xA0;
\r
2044 // case 0xc4: case 0xc7: case 0xd5: case 0xd6: // BGA画像入れ替え
\r
2045 // case 0xd7: case 0xd8: case 0xd9: case 0xe0:
\r
2046 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2048 // pChip.bHit = true;
\r
2049 // if( ( configIni.bBGA有効 && ( pChip.eBGA種別 == EBGA種別.BMP ) ) || ( pChip.eBGA種別 == EBGA種別.BMPTEX ) )
\r
2051 // for( int i = 0; i < 8; i++ )
\r
2053 // if( this.nBGAスコープチャンネルマップ[ 0, i ] == pChip.nチャンネル番号 )
\r
2055 // this.actBGA.ChangeScope( this.nBGAスコープチャンネルマップ[ 1, i ], pChip.rBMP, pChip.rBMPTEX );
\r
2063 // if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2065 // pChip.bHit = true;
\r
2070 // nCurrentTopChip++;
\r
2074 //private void t進行描画・チップアニメ()
\r
2076 // for ( int i = 0; i < 3; i++ )
\r
2078 // this.ctチップ模様アニメ[ i ].t進行Loop();
\r
2080 // this.ctWailingチップ模様アニメ.t進行Loop();
\r
2082 private void t進行描画・チップファイアD()
\r
2084 this.actChipFireD.On進行描画();
\r
2086 //private void t進行描画・チップファイアGB()
\r
2088 // this.actChipFireGB.On進行描画();
\r
2090 private void t進行描画・ドラムパッド()
\r
2092 if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
2094 this.actPad.On進行描画();
\r
2097 protected override void t進行描画・パネル文字列()
\r
2099 base.t進行描画・パネル文字列( 0x150, 0x1ab );
\r
2101 //private bool t進行描画・フェードイン・アウト()
\r
2103 // switch( base.eフェーズID )
\r
2105 // case CStage.Eフェーズ.共通_フェードイン:
\r
2106 // if( this.actFI.On進行描画() != 0 )
\r
2108 // base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
2112 // case CStage.Eフェーズ.共通_フェードアウト:
\r
2113 // case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:
\r
2114 // if( this.actFO.On進行描画() != 0 )
\r
2120 // case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:
\r
2121 // if( this.actFOClear.On進行描画() == 0 )
\r
2129 //private void t進行描画・レーンフラッシュD()
\r
2131 // if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )
\r
2133 // this.actLaneFlushD.On進行描画();
\r
2136 //private void t進行描画・レーンフラッシュGB()
\r
2138 // if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
2140 // this.actLaneFlushGB.On進行描画();
\r
2143 protected override void t進行描画・演奏情報()
\r
2145 base.t進行描画・演奏情報( 0x152, 0x39 );
\r
2147 //private void t進行描画・背景()
\r
2149 // if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )
\r
2151 // if( this.tx背景 != null )
\r
2153 // this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );
\r
2158 // CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );
\r
2161 //private void t進行描画・判定ライン()
\r
2163 // if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
2165 // int y = CDTXMania.ConfigIni.bReverse.Drums ? 0x35 : 0x1a3;
\r
2166 // for( int i = 0x20; i < 0x14f; i += 8 )
\r
2168 // if( this.txヒットバー != null )
\r
2170 // this.txヒットバー.t2D描画( CDTXMania.app.Device, i, y, new Rectangle( 0, 0, ( ( i + 8 ) >= 0x14f ) ? ( 7 - ( ( i + 8 ) - 0x14f ) ) : 8, 8 ) );
\r
2175 //private void t進行描画・判定文字列1・通常位置指定の場合()
\r
2177 // if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) != E判定文字表示位置.判定ライン上または横 )
\r
2179 // this.actJudgeString.On進行描画();
\r
2182 //private void t進行描画・判定文字列2・判定ライン上指定の場合()
\r
2184 // if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) == E判定文字表示位置.判定ライン上または横 )
\r
2186 // this.actJudgeString.On進行描画();
\r
2189 //private void t進行描画・譜面スクロール速度()
\r
2191 // this.act譜面スクロール速度.On進行描画();
\r
2193 //private void t入力メソッド記憶( E楽器パート part )
\r
2195 // if( CDTXMania.Pad.st検知したデバイス.Keyboard )
\r
2197 // this.b演奏にキーボードを使った[ (int) part ] = true;
\r
2199 // if( CDTXMania.Pad.st検知したデバイス.Joypad )
\r
2201 // this.b演奏にジョイパッドを使った[ (int) part ] = true;
\r
2203 // if( CDTXMania.Pad.st検知したデバイス.MIDIIN )
\r
2205 // this.b演奏にMIDI入力を使った[ (int) part ] = true;
\r
2207 // if( CDTXMania.Pad.st検知したデバイス.Mouse )
\r
2209 // this.b演奏にマウスを使った[ (int) part ] = true;
\r
2212 //protected override void t入力処理・ギター()
\r
2214 // if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )
\r
2216 // CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );
\r
2218 // if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.R ) )
\r
2220 // CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );
\r
2223 // if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )
\r
2225 // if ( bIsAutoPlay.Guitar )
\r
2227 // CDTX.CChip chip = this.r次にくるギターChipを更新して返す();
\r
2228 // if( chip != null )
\r
2230 // if( ( chip.nチャンネル番号 & 4 ) != 0 )
\r
2232 // this.actLaneFlushGB.Start( 0 );
\r
2233 // this.actRGB.Push( 0 );
\r
2235 // if( ( chip.nチャンネル番号 & 2 ) != 0 )
\r
2237 // this.actLaneFlushGB.Start( 1 );
\r
2238 // this.actRGB.Push( 1 );
\r
2240 // if( ( chip.nチャンネル番号 & 1 ) != 0 )
\r
2242 // this.actLaneFlushGB.Start( 2 );
\r
2243 // this.actRGB.Push( 2 );
\r
2249 // int flagR = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.R) ? 4 : 0;
\r
2250 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2251 // int flagG = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) ? 2 : 0;
\r
2252 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2253 // int flagB = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.B ) ? 1 : 0;
\r
2254 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2255 // int flagRGB = flagR | flagG | flagB;
\r
2256 // if( flagR != 0 )
\r
2258 // this.actLaneFlushGB.Start( 0 );
\r
2259 // this.actRGB.Push( 0 );
\r
2261 // if( flagG != 0 )
\r
2263 // this.actLaneFlushGB.Start( 1 );
\r
2264 // this.actRGB.Push( 1 );
\r
2266 // if( flagB != 0 )
\r
2268 // this.actLaneFlushGB.Start( 2 );
\r
2269 // this.actRGB.Push( 2 );
\r
2271 // List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Pick );
\r
2272 // if( ( events != null ) && ( events.Count > 0 ) )
\r
2274 // this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2275 // foreach( STInputEvent event2 in events )
\r
2277 // CDTX.CChip chip4;
\r
2278 // if( !event2.b押された )
\r
2282 // long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2283 // CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar );
\r
2284 // E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs.Guitar );
\r
2285 // if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == flagRGB ) ) && ( e判定 != E判定.Miss ) )
\r
2287 // if( ( flagR != 0 ) || ( flagRGB == 0 ) )
\r
2289 // this.actChipFireGB.Start( 0 );
\r
2291 // if( ( flagG != 0 ) || ( flagRGB == 0 ) )
\r
2293 // this.actChipFireGB.Start( 1 );
\r
2295 // if( ( flagB != 0 ) || ( flagRGB == 0 ) )
\r
2297 // this.actChipFireGB.Start( 2 );
\r
2299 // this.tチップのヒット処理( nTime, pChip );
\r
2300 // this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );
\r
2301 // CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );
\r
2302 // if( item != null )
\r
2304 // this.queWailing.Guitar.Enqueue( item );
\r
2308 // if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )
\r
2310 // this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );
\r
2312 // if( !CDTXMania.ConfigIni.bLight.Guitar )
\r
2314 // this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.GUITAR );
\r
2318 // List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );
\r
2319 // if( ( list2 != null ) && ( list2.Count > 0 ) )
\r
2321 // foreach( STInputEvent event3 in list2 )
\r
2323 // CDTX.CChip chip5;
\r
2324 // if( !event3.b押された )
\r
2328 // long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2329 // while( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )
\r
2331 // if( ( num6 - chip5.n発声時刻ms ) <= 800 ) // #24245 2011.1.26 yyagi: 800 -> 1000
\r
2333 // chip5.bHit = true;
\r
2334 // this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );
\r
2335 // if( !bIsAutoPlay.Guitar )
\r
2337 // int nCombo = ( this.actCombo.n現在のコンボ数.Guitar < 500 ) ? this.actCombo.n現在のコンボ数.Guitar : 500;
\r
2338 // this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( nCombo * 3000L ) ); // #24245 2011.1.26 yyagi changed DRUMS->GUITAR, add nCombo conditions
\r
2347 protected override void t入力処理・ドラム()
\r
2349 for( int nPad = 0; nPad < 10; nPad++ )
\r
2351 List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.DRUMS, (Eパッド) nPad );
\r
2353 if( ( events != null ) && ( events.Count != 0 ) )
\r
2355 this.t入力メソッド記憶( E楽器パート.DRUMS );
\r
2357 #region [ 打ち分けグループ調整 ]
\r
2358 //-----------------------------
\r
2359 EHHGroup eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
2360 EFTGroup eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
2361 ECYGroup eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
2362 if( !CDTXMania.DTX.bチップがある.Ride && ( eCYGroup == ECYGroup.打ち分ける ) )
\r
2364 eCYGroup = ECYGroup.共通;
\r
2366 if( !CDTXMania.DTX.bチップがある.HHOpen && ( eHHGroup == EHHGroup.全部打ち分ける ) )
\r
2368 eHHGroup = EHHGroup.左シンバルのみ打ち分ける;
\r
2370 if( !CDTXMania.DTX.bチップがある.HHOpen && ( eHHGroup == EHHGroup.ハイハットのみ打ち分ける ) )
\r
2372 eHHGroup = EHHGroup.全部共通;
\r
2374 if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( eHHGroup == EHHGroup.全部打ち分ける ) )
\r
2376 eHHGroup = EHHGroup.ハイハットのみ打ち分ける;
\r
2378 if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( eHHGroup == EHHGroup.左シンバルのみ打ち分ける ) )
\r
2380 eHHGroup = EHHGroup.全部共通;
\r
2382 //-----------------------------
\r
2385 foreach( STInputEvent event2 in events )
\r
2388 //-----------------------------
\r
2403 //-----------------------------
\r
2406 if( !event2.b押された )
\r
2409 long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2410 int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ (int)nPad ] ] ? 0 : nInputAdjustTimeMs.Drums;
\r
2412 bool flag = false;
\r
2415 #region [ switch( ( (Eパッド) nPad ) ) ]
\r
2416 //-----------------------------
\r
2417 switch( ( (Eパッド) nPad ) )
\r
2421 //-----------------------------
\r
2423 if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )
\r
2424 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2426 CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HiHat Close
\r
2427 CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HiHat Open
\r
2428 CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC
\r
2429 E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;
\r
2430 E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;
\r
2431 E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;
\r
2432 switch ( eHHGroup )
\r
2434 case EHHGroup.ハイハットのみ打ち分ける:
\r
2436 //-----------------------------
\r
2437 if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )
\r
2439 if ( chipHC.n発声位置 < chipLC.n発声位置 )
\r
2441 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2443 else if ( chipHC.n発声位置 > chipLC.n発声位置 )
\r
2445 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2449 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2450 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2454 else if ( e判定HC != E判定.Miss )
\r
2456 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2459 else if ( e判定LC != E判定.Miss )
\r
2461 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2467 //-----------------------------
\r
2470 case EHHGroup.左シンバルのみ打ち分ける:
\r
2472 //-----------------------------
\r
2473 if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )
\r
2475 if ( chipHC.n発声位置 < chipHO.n発声位置 )
\r
2477 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2479 else if ( chipHC.n発声位置 > chipHO.n発声位置 )
\r
2481 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2485 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2486 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2490 else if ( e判定HC != E判定.Miss )
\r
2492 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2495 else if ( e判定HO != E判定.Miss )
\r
2497 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2503 //-----------------------------
\r
2506 case EHHGroup.全部共通:
\r
2508 //-----------------------------
\r
2509 if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )
\r
2512 CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };
\r
2513 if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )
\r
2515 chip4 = chipArray[ 1 ];
\r
2516 chipArray[ 1 ] = chipArray[ 2 ];
\r
2517 chipArray[ 2 ] = chip4;
\r
2519 if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )
\r
2521 chip4 = chipArray[ 0 ];
\r
2522 chipArray[ 0 ] = chipArray[ 1 ];
\r
2523 chipArray[ 1 ] = chip4;
\r
2525 if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )
\r
2527 chip4 = chipArray[ 1 ];
\r
2528 chipArray[ 1 ] = chipArray[ 2 ];
\r
2529 chipArray[ 2 ] = chip4;
\r
2531 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );
\r
2532 if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )
\r
2534 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 1 ], event2.nVelocity );
\r
2536 if ( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )
\r
2538 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );
\r
2542 else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )
\r
2544 if ( chipHC.n発声位置 < chipHO.n発声位置 )
\r
2546 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2548 else if ( chipHC.n発声位置 > chipHO.n発声位置 )
\r
2550 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2554 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2555 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2559 else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )
\r
2561 if ( chipHC.n発声位置 < chipLC.n発声位置 )
\r
2563 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2565 else if ( chipHC.n発声位置 > chipLC.n発声位置 )
\r
2567 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2571 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2572 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2576 else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )
\r
2578 if ( chipHO.n発声位置 < chipLC.n発声位置 )
\r
2580 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2582 else if ( chipHO.n発声位置 > chipLC.n発声位置 )
\r
2584 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2588 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2589 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2593 else if ( e判定HC != E判定.Miss )
\r
2595 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2598 else if ( e判定HO != E判定.Miss )
\r
2600 this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );
\r
2603 else if ( e判定LC != E判定.Miss )
\r
2605 this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );
\r
2611 //-----------------------------
\r
2616 //-----------------------------
\r
2617 if ( e判定HC != E判定.Miss )
\r
2619 this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );
\r
2625 //-----------------------------
\r
2632 //-----------------------------
\r
2637 //-----------------------------
\r
2638 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.SD) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
2639 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2640 if( !this.tドラムヒット処理(nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip(nTime, 0x12, nInputAdjustTime ), event2.nVelocity ) )
\r
2643 //-----------------------------
\r
2648 //-----------------------------
\r
2649 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.BD) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
2650 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2651 if ( !this.tドラムヒット処理( nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip( nTime, 0x13, nInputAdjustTime ), event2.nVelocity ) )
\r
2654 //-----------------------------
\r
2659 //-----------------------------
\r
2660 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HT) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
2661 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2662 if ( this.tドラムヒット処理( nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip( nTime, 20, nInputAdjustTime ), event2.nVelocity ) )
\r
2665 //-----------------------------
\r
2670 //-----------------------------
\r
2672 if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LT ) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
2673 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2674 CDTX.CChip chipLT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15, nInputAdjustTime ); // LT
\r
2675 CDTX.CChip chipFT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17, nInputAdjustTime ); // FT
\r
2676 E判定 e判定LT = ( chipLT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLT, nInputAdjustTime ) : E判定.Miss;
\r
2677 E判定 e判定FT = ( chipFT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipFT, nInputAdjustTime ) : E判定.Miss;
\r
2678 switch ( eFTGroup )
\r
2680 case EFTGroup.打ち分ける:
\r
2682 //-----------------------------
\r
2683 if ( e判定LT != E判定.Miss )
\r
2685 this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );
\r
2689 //-----------------------------
\r
2694 //-----------------------------
\r
2695 if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )
\r
2697 if ( chipLT.n発声位置 < chipFT.n発声位置 )
\r
2699 this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );
\r
2701 else if ( chipLT.n発声位置 > chipFT.n発声位置 )
\r
2703 this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );
\r
2707 this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );
\r
2708 this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );
\r
2712 else if ( e判定LT != E判定.Miss )
\r
2714 this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );
\r
2717 else if ( e判定FT != E判定.Miss )
\r
2719 this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );
\r
2723 //-----------------------------
\r
2730 //-----------------------------
\r
2735 //-----------------------------
\r
2737 if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.FT ) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
2738 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2739 CDTX.CChip chipLT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15, nInputAdjustTime ); // LT
\r
2740 CDTX.CChip chipFT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17, nInputAdjustTime ); // FT
\r
2741 E判定 e判定LT = ( chipLT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLT, nInputAdjustTime ) : E判定.Miss;
\r
2742 E判定 e判定FT = ( chipFT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipFT, nInputAdjustTime ) : E判定.Miss;
\r
2743 switch ( eFTGroup )
\r
2745 case EFTGroup.打ち分ける:
\r
2747 //-----------------------------
\r
2748 if ( e判定FT != E判定.Miss )
\r
2750 this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );
\r
2753 //-----------------------------
\r
2759 //-----------------------------
\r
2760 if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )
\r
2762 if ( chipLT.n発声位置 < chipFT.n発声位置 )
\r
2764 this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );
\r
2766 else if ( chipLT.n発声位置 > chipFT.n発声位置 )
\r
2768 this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );
\r
2772 this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );
\r
2773 this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );
\r
2777 else if ( e判定LT != E判定.Miss )
\r
2779 this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );
\r
2782 else if ( e判定FT != E判定.Miss )
\r
2784 this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );
\r
2787 //-----------------------------
\r
2795 //-----------------------------
\r
2800 //-----------------------------
\r
2802 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.CY) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
2803 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2804 CDTX.CChip chipCY = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ); // CY
\r
2805 CDTX.CChip chipRD = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ); // RD
\r
2806 CDTX.CChip chipLC = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ) : null;
\r
2807 E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;
\r
2808 E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;
\r
2809 E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;
\r
2810 CDTX.CChip[] chipArray4 = new CDTX.CChip[] { chipCY, chipRD, chipLC };
\r
2811 E判定[] e判定Array2 = new E判定[] { e判定CY, e判定RD, e判定LC };
\r
2816 while( num9 > num8 )
\r
2818 if( ( chipArray4[ num9 - 1 ] == null ) || ( ( chipArray4[ num9 ] != null ) && ( chipArray4[ num9 - 1 ].n発声位置 > chipArray4[ num9 ].n発声位置 ) ) )
\r
2820 CDTX.CChip chip22 = chipArray4[ num9 - 1 ];
\r
2821 chipArray4[ num9 - 1 ] = chipArray4[ num9 ];
\r
2822 chipArray4[ num9 ] = chip22;
\r
2823 E判定 e判定20 = e判定Array2[ num9 - 1 ];
\r
2824 e判定Array2[ num9 - 1 ] = e判定Array2[ num9 ];
\r
2825 e判定Array2[ num9 ] = e判定20;
\r
2831 switch( eCYGroup )
\r
2833 case ECYGroup.打ち分ける:
\r
2834 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
2836 if( e判定CY != E判定.Miss )
\r
2838 this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );
\r
2846 while( num10 < 3 )
\r
2848 if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chipCY ) || ( chipArray4[ num10 ] == chipLC ) ) )
\r
2850 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num10 ], event2.nVelocity );
\r
2856 if( e判定CY != E判定.Miss )
\r
2858 this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );
\r
2866 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
2869 while( num12 < 3 )
\r
2871 if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chipCY ) || ( chipArray4[ num12 ] == chipRD ) ) )
\r
2873 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num12 ], event2.nVelocity );
\r
2884 while( num11 < 3 )
\r
2886 if( e判定Array2[ num11 ] != E判定.Miss )
\r
2888 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num11 ], event2.nVelocity );
\r
2902 //-----------------------------
\r
2907 //-----------------------------
\r
2909 if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )
\r
2910 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2912 CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HC
\r
2913 CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HO
\r
2914 CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC
\r
2915 E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;
\r
2916 E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;
\r
2917 E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;
\r
2918 switch ( eHHGroup )
\r
2920 case EHHGroup.全部打ち分ける:
\r
2921 if ( e判定HO != E判定.Miss )
\r
2923 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2930 case EHHGroup.ハイハットのみ打ち分ける:
\r
2931 if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )
\r
2933 if ( chipHO.n発声位置 < chipLC.n発声位置 )
\r
2935 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2937 else if ( chipHO.n発声位置 > chipLC.n発声位置 )
\r
2939 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
2943 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2944 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
2948 else if ( e判定HO != E判定.Miss )
\r
2950 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2953 else if ( e判定LC != E判定.Miss )
\r
2955 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
2962 case EHHGroup.左シンバルのみ打ち分ける:
\r
2963 if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )
\r
2965 if ( chipHC.n発声位置 < chipHO.n発声位置 )
\r
2967 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
2969 else if ( chipHC.n発声位置 > chipHO.n発声位置 )
\r
2971 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2975 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
2976 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2980 else if ( e判定HC != E判定.Miss )
\r
2982 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
2985 else if ( e判定HO != E判定.Miss )
\r
2987 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
2994 case EHHGroup.全部共通:
\r
2995 if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )
\r
2998 CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chipHC, chipHO, chipLC };
\r
2999 if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )
\r
3001 chip8 = chipArray2[ 1 ];
\r
3002 chipArray2[ 1 ] = chipArray2[ 2 ];
\r
3003 chipArray2[ 2 ] = chip8;
\r
3005 if ( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )
\r
3007 chip8 = chipArray2[ 0 ];
\r
3008 chipArray2[ 0 ] = chipArray2[ 1 ];
\r
3009 chipArray2[ 1 ] = chip8;
\r
3011 if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )
\r
3013 chip8 = chipArray2[ 1 ];
\r
3014 chipArray2[ 1 ] = chipArray2[ 2 ];
\r
3015 chipArray2[ 2 ] = chip8;
\r
3017 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );
\r
3018 if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )
\r
3020 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );
\r
3022 if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )
\r
3024 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );
\r
3028 else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )
\r
3030 if ( chipHC.n発声位置 < chipHO.n発声位置 )
\r
3032 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
3034 else if ( chipHC.n発声位置 > chipHO.n発声位置 )
\r
3036 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
3040 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
3041 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
3045 else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )
\r
3047 if ( chipHC.n発声位置 < chipLC.n発声位置 )
\r
3049 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
3051 else if ( chipHC.n発声位置 > chipLC.n発声位置 )
\r
3053 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
3057 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
3058 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
3062 else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )
\r
3064 if ( chipHO.n発声位置 < chipLC.n発声位置 )
\r
3066 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
3068 else if ( chipHO.n発声位置 > chipLC.n発声位置 )
\r
3070 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
3074 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
3075 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
3079 else if ( e判定HC != E判定.Miss )
\r
3081 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );
\r
3084 else if ( e判定HO != E判定.Miss )
\r
3086 this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );
\r
3089 else if ( e判定LC != E判定.Miss )
\r
3091 this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );
\r
3102 //-----------------------------
\r
3107 //-----------------------------
\r
3109 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.RD) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
3110 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
3111 CDTX.CChip chipCY = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ); // CY
\r
3112 CDTX.CChip chipRD = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ); // RD
\r
3113 CDTX.CChip chipLC = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ) : null;
\r
3114 E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;
\r
3115 E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;
\r
3116 E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;
\r
3117 CDTX.CChip[] chipArray5 = new CDTX.CChip[] { chipCY, chipRD, chipLC };
\r
3118 E判定[] e判定Array3 = new E判定[] { e判定CY, e判定RD, e判定LC };
\r
3120 while( num13 < 2 )
\r
3123 while( num14 > num13 )
\r
3125 if( ( chipArray5[ num14 - 1 ] == null ) || ( ( chipArray5[ num14 ] != null ) && ( chipArray5[ num14 - 1 ].n発声位置 > chipArray5[ num14 ].n発声位置 ) ) )
\r
3127 CDTX.CChip chip26 = chipArray5[ num14 - 1 ];
\r
3128 chipArray5[ num14 - 1 ] = chipArray5[ num14 ];
\r
3129 chipArray5[ num14 ] = chip26;
\r
3130 E判定 e判定24 = e判定Array3[ num14 - 1 ];
\r
3131 e判定Array3[ num14 - 1 ] = e判定Array3[ num14 ];
\r
3132 e判定Array3[ num14 ] = e判定24;
\r
3138 switch( eCYGroup )
\r
3140 case ECYGroup.打ち分ける:
\r
3141 if( e判定RD != E判定.Miss )
\r
3143 this.tドラムヒット処理( nTime, Eパッド.RD, chipRD, event2.nVelocity );
\r
3149 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3152 while( num16 < 3 )
\r
3154 if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chipCY ) || ( chipArray5[ num16 ] == chipRD ) ) )
\r
3156 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num16 ], event2.nVelocity );
\r
3165 while( num15 < 3 )
\r
3167 if( e判定Array3[ num15 ] != E判定.Miss )
\r
3169 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num15 ], event2.nVelocity );
\r
3183 //-----------------------------
\r
3188 //-----------------------------
\r
3190 if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LC) // #23857 2010.12.12 yyagi: to support VelocityMin
\r
3191 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
3192 CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HC
\r
3193 CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HO
\r
3194 CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC
\r
3195 CDTX.CChip chipCY = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ) : null;
\r
3196 CDTX.CChip chipRD = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ) : null;
\r
3197 E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;
\r
3198 E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;
\r
3199 E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;
\r
3200 E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;
\r
3201 E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;
\r
3202 CDTX.CChip[] chipArray3 = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };
\r
3203 E判定[] e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };
\r
3208 while( num4 > num3 )
\r
3210 if( ( chipArray3[ num4 - 1 ] == null ) || ( ( chipArray3[ num4 ] != null ) && ( chipArray3[ num4 - 1 ].n発声位置 > chipArray3[ num4 ].n発声位置 ) ) )
\r
3212 CDTX.CChip chip14 = chipArray3[ num4 - 1 ];
\r
3213 chipArray3[ num4 - 1 ] = chipArray3[ num4 ];
\r
3214 chipArray3[ num4 ] = chip14;
\r
3215 E判定 e判定12 = e判定Array[ num4 - 1 ];
\r
3216 e判定Array[ num4 - 1 ] = e判定Array[ num4 ];
\r
3217 e判定Array[ num4 ] = e判定12;
\r
3223 switch( eHHGroup )
\r
3225 case EHHGroup.全部打ち分ける:
\r
3226 case EHHGroup.左シンバルのみ打ち分ける:
\r
3227 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3229 if( e判定LC != E判定.Miss )
\r
3231 this.tドラムヒット処理( nTime, Eパッド.LC, chipLC, event2.nVelocity );
\r
3241 if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chipLC ) || ( chipArray3[ num5 ] == chipCY ) ) || ( ( chipArray3[ num5 ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )
\r
3243 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num5 ], event2.nVelocity );
\r
3253 case EHHGroup.ハイハットのみ打ち分ける:
\r
3254 case EHHGroup.全部共通:
\r
3255 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3260 if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chipLC ) || ( chipArray3[ num7 ] == chipHC ) ) || ( chipArray3[ num7 ] == chipHO ) ) )
\r
3262 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num7 ], event2.nVelocity );
\r
3275 if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )
\r
3277 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num6 ], event2.nVelocity );
\r
3292 //-----------------------------
\r
3295 //-----------------------------
\r
3299 //-----------------------------
\r
3300 this.actLaneFlushD.Start( (Eドラムレーン) this.nパッド0Atoレーン07[ nPad ], ( (float) event2.nVelocity ) / 127f );
\r
3301 this.actPad.Hit( this.nパッド0Atoパッド08[ nPad ] );
\r
3302 if( !CDTXMania.ConfigIni.bドラム打音を発声する )
\r
3304 if( CDTXMania.ConfigIni.bTight )
\r
3306 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );
\r
3310 CDTX.CChip rChip = null;
\r
3311 rChip = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) nPad );
\r
3312 if( rChip != null )
\r
3314 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );
\r
3316 if( CDTXMania.ConfigIni.bTight )
\r
3318 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );
\r
3322 //-----------------------------
\r
3325 #region [ switch( ( (Eパッド) i ) ) ]
\r
3326 //-----------------------------
\r
3327 switch( ( (Eパッド) nPad ) )
\r
3331 //-----------------------------
\r
3333 CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );
\r
3334 CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );
\r
3335 CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );
\r
3336 switch ( CDTXMania.ConfigIni.eHHGroup )
\r
3338 case EHHGroup.ハイハットのみ打ち分ける:
\r
3339 rChip = ( chipHC != null ) ? chipHC : chipLC;
\r
3342 case EHHGroup.左シンバルのみ打ち分ける:
\r
3343 rChip = ( chipHC != null ) ? chipHC : chipHO;
\r
3346 case EHHGroup.全部共通:
\r
3347 if ( chipHC != null )
\r
3351 else if ( chipHO == null )
\r
3355 else if ( chipLC == null )
\r
3359 else if ( chipHO.n発声位置 < chipLC.n発声位置 )
\r
3374 //-----------------------------
\r
3380 //-----------------------------
\r
3382 CDTX.CChip chipLT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ], nInputAdjustTime );
\r
3383 CDTX.CChip chipFT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ], nInputAdjustTime );
\r
3384 if ( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )
\r
3385 rChip = ( chipLT != null ) ? chipLT : chipFT;
\r
3389 //-----------------------------
\r
3395 //-----------------------------
\r
3397 CDTX.CChip chipLT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ], nInputAdjustTime );
\r
3398 CDTX.CChip chipFT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ], nInputAdjustTime );
\r
3399 if ( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )
\r
3400 rChip = ( chipFT != null ) ? chipFT : chipLT;
\r
3404 //-----------------------------
\r
3410 //-----------------------------
\r
3412 CDTX.CChip chipCY = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ], nInputAdjustTime );
\r
3413 CDTX.CChip chipRD = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ], nInputAdjustTime );
\r
3414 if ( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )
\r
3415 rChip = ( chipCY != null ) ? chipCY : chipRD;
\r
3419 //-----------------------------
\r
3425 //-----------------------------
\r
3427 CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );
\r
3428 CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );
\r
3429 CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );
\r
3430 switch ( CDTXMania.ConfigIni.eHHGroup )
\r
3432 case EHHGroup.全部打ち分ける:
\r
3436 case EHHGroup.ハイハットのみ打ち分ける:
\r
3437 rChip = ( chipHO != null ) ? chipHO : chipLC;
\r
3440 case EHHGroup.左シンバルのみ打ち分ける:
\r
3441 rChip = ( chipHO != null ) ? chipHO : chipHC;
\r
3444 case EHHGroup.全部共通:
\r
3445 if ( chipHO != null )
\r
3449 else if ( chipHC == null )
\r
3453 else if ( chipLC == null )
\r
3457 else if ( chipHC.n発声位置 < chipLC.n発声位置 )
\r
3468 //-----------------------------
\r
3474 //-----------------------------
\r
3476 CDTX.CChip chipCY = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ], nInputAdjustTime );
\r
3477 CDTX.CChip chipRD = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ], nInputAdjustTime );
\r
3478 if ( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )
\r
3479 rChip = ( chipRD != null ) ? chipRD : chipCY;
\r
3483 //-----------------------------
\r
3489 //-----------------------------
\r
3491 CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );
\r
3492 CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );
\r
3493 CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );
\r
3494 switch ( CDTXMania.ConfigIni.eHHGroup )
\r
3496 case EHHGroup.全部打ち分ける:
\r
3497 case EHHGroup.左シンバルのみ打ち分ける:
\r
3501 case EHHGroup.ハイハットのみ打ち分ける:
\r
3502 case EHHGroup.全部共通:
\r
3503 if ( chipLC != null )
\r
3507 else if ( chipHC == null )
\r
3511 else if ( chipHO == null )
\r
3515 else if ( chipHC.n発声位置 < chipHO.n発声位置 )
\r
3526 //-----------------------------
\r
3532 //-----------------------------
\r
3533 rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ nPad ], nInputAdjustTime );
\r
3534 //-----------------------------
\r
3538 //-----------------------------
\r
3542 //-----------------------------
\r
3543 if( rChip != null )
\r
3545 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );
\r
3547 if( CDTXMania.ConfigIni.bTight )
\r
3549 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );
\r
3551 //-----------------------------
\r
3558 //protected override void t入力処理・ベース()
\r
3560 // if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )
\r
3562 // CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );
\r
3564 // if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.R ) )
\r
3566 // CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );
\r
3569 // if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )
\r
3571 // if( bIsAutoPlay.Bass )
\r
3573 // CDTX.CChip chip = this.r次にくるベースChipを更新して返す();
\r
3574 // if( chip != null )
\r
3576 // if( ( chip.nチャンネル番号 & 4 ) != 0 )
\r
3578 // this.actLaneFlushGB.Start( 3 );
\r
3579 // this.actRGB.Push( 3 );
\r
3581 // if( ( chip.nチャンネル番号 & 2 ) != 0 )
\r
3583 // this.actLaneFlushGB.Start( 4 );
\r
3584 // this.actRGB.Push( 4 );
\r
3586 // if( ( chip.nチャンネル番号 & 1 ) != 0 )
\r
3588 // this.actLaneFlushGB.Start( 5 );
\r
3589 // this.actRGB.Push( 5 );
\r
3595 // int flagR = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.R ) ? 4 : 0;
\r
3596 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
3597 // int flagG = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.G ) ? 2 : 0;
\r
3598 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
3599 // int flagB = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.B ) ? 1 : 0;
\r
3600 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
3601 // int flagRGB = flagR | flagG | flagB;
\r
3602 // if( flagR != 0 )
\r
3604 // this.actLaneFlushGB.Start( 3 );
\r
3605 // this.actRGB.Push( 3 );
\r
3607 // if( flagG != 0 )
\r
3609 // this.actLaneFlushGB.Start( 4 );
\r
3610 // this.actRGB.Push( 4 );
\r
3612 // if( flagB != 0 )
\r
3614 // this.actLaneFlushGB.Start( 5 );
\r
3615 // this.actRGB.Push( 5 );
\r
3617 // List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Pick );
\r
3618 // if( ( events != null ) && ( events.Count > 0 ) )
\r
3620 // foreach( STInputEvent event2 in events )
\r
3622 // CDTX.CChip chip4;
\r
3623 // if( !event2.b押された )
\r
3627 // this.t入力メソッド記憶( E楽器パート.BASS );
\r
3628 // long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
3629 // CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf, this.nInputAdjustTimeMs.Bass );
\r
3630 // E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs.Bass );
\r
3631 // if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == flagRGB ) ) && ( e判定 != E判定.Miss ) )
\r
3633 // if( ( flagR != 0 ) || ( flagRGB == 0 ) )
\r
3635 // this.actChipFireGB.Start( 3 );
\r
3637 // if( ( flagG != 0 ) || ( flagRGB == 0 ) )
\r
3639 // this.actChipFireGB.Start( 4 );
\r
3641 // if( ( flagB != 0 ) || ( flagRGB == 0 ) )
\r
3643 // this.actChipFireGB.Start( 5 );
\r
3645 // this.tチップのヒット処理( nTime, pChip );
\r
3646 // this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, e判定 == E判定.Poor );
\r
3647 // CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, this.nInputAdjustTimeMs.Bass, 140 );
\r
3648 // if( item != null )
\r
3650 // this.queWailing.Bass.Enqueue( item );
\r
3654 // if ( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )
\r
3656 // this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );
\r
3658 // if( !CDTXMania.ConfigIni.bLight.Bass )
\r
3660 // this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.BASS );
\r
3664 // List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );
\r
3665 // if( ( list2 != null ) && ( list2.Count > 0 ) )
\r
3667 // foreach( STInputEvent event3 in list2 )
\r
3669 // CDTX.CChip chip5;
\r
3670 // if( !event3.b押された )
\r
3674 // long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
3675 // while( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )
\r
3677 // if( ( num6 - chip5.n発声時刻ms ) <= 1000 ) // #24245 2011.1.26 yyagi: 800 -> 1000
\r
3679 // chip5.bHit = true;
\r
3680 // this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );
\r
3681 // if( !bIsAutoPlay.Bass )
\r
3683 // int nCombo = ( this.actCombo.n現在のコンボ数.Bass < 500 ) ? this.actCombo.n現在のコンボ数.Bass : 500;
\r
3684 // this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( nCombo * 3000L ) ); // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions
\r
3694 protected override void t背景テクスチャの生成()
\r
3696 Rectangle bgrect = new Rectangle( 338, 57, 278, 355 );
\r
3697 string DefaultBgFilename = @"Graphics\ScreenPlayDrums background.jpg";
\r
3698 string BgFilename = "";
\r
3699 if ( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )
\r
3701 BgFilename = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;
\r
3703 base.t背景テクスチャの生成( DefaultBgFilename, bgrect, BgFilename );
\r
3705 //private void t背景テクスチャの生成()
\r
3707 // Bitmap image = null;
\r
3708 // string path = "";
\r
3709 // bool flag = true;
\r
3710 // if( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )
\r
3712 // path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;
\r
3713 // if( File.Exists( path ) )
\r
3717 // Bitmap bitmap2 = null;
\r
3718 // bitmap2 = new Bitmap( path );
\r
3719 // if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )
\r
3721 // this.tx背景 = null;
\r
3724 // Bitmap bitmap3 = new Bitmap( 640, 480 );
\r
3725 // Graphics graphics = Graphics.FromImage( bitmap3 );
\r
3726 // for( int i = 0; i < 480; i += bitmap2.Size.Height )
\r
3728 // for( int j = 0; j < 640; j += bitmap2.Size.Width )
\r
3730 // graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );
\r
3733 // graphics.Dispose();
\r
3734 // bitmap2.Dispose();
\r
3735 // image = new Bitmap( CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" ) );
\r
3736 // graphics = Graphics.FromImage( image );
\r
3737 // ColorMatrix matrix2 = new ColorMatrix();
\r
3738 // matrix2.Matrix00 = 1f;
\r
3739 // matrix2.Matrix11 = 1f;
\r
3740 // matrix2.Matrix22 = 1f;
\r
3741 // matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;
\r
3742 // matrix2.Matrix44 = 1f;
\r
3743 // ColorMatrix newColorMatrix = matrix2;
\r
3744 // ImageAttributes imageAttr = new ImageAttributes();
\r
3745 // imageAttr.SetColorMatrix( newColorMatrix );
\r
3746 // graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );
\r
3747 // imageAttr.Dispose();
\r
3748 // graphics.DrawImage( bitmap3, new Rectangle( 0x152, 0x39, 0x116, 0x163 ), 0x152, 0x39, 0x116, 0x163, GraphicsUnit.Pixel );
\r
3749 // graphics.Dispose();
\r
3750 // bitmap3.Dispose();
\r
3755 // Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );
\r
3761 // path = CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" );
\r
3764 // image = new Bitmap( path );
\r
3768 // Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );
\r
3769 // this.tx背景 = null;
\r
3773 // if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )
\r
3775 // Graphics graphics2 = Graphics.FromImage( image );
\r
3776 // graphics2.FillRectangle( Brushes.Black, 0x152, 0x39, 0x116, 0x163 );
\r
3777 // graphics2.Dispose();
\r
3781 // this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
\r
3783 // catch( CTextureCreateFailedException )
\r
3785 // Trace.TraceError( "背景テクスチャの生成に失敗しました。" );
\r
3786 // this.tx背景 = null;
\r
3788 // image.Dispose();
\r
3792 //#if true // DAMAGELEVELTUNING
\r
3793 // // ----------------------------------
\r
3794 // public float[,] fDamageGaugeDelta = { // #23625 2011.1.10 ickw_284: tuned damage/recover factors
\r
3795 // // drums, guitar, bass
\r
3796 // { 0.004f, 0.006f, 0.006f },
\r
3797 // { 0.002f, 0.003f, 0.003f },
\r
3798 // { 0.000f, 0.000f, 0.000f },
\r
3799 // { -0.020f, -0.030f, -0.030f },
\r
3800 // { -0.050f, -0.050f, -0.050f }
\r
3802 // public float[] fDamageLevelFactor = {
\r
3803 // 0.5f, 1.0f, 1.5f
\r
3805 // // ----------------------------------
\r
3808 // private void t判定にあわせてゲージを増減する( E楽器パート part, E判定 e今回の判定 )
\r
3810 // double fDamage;
\r
3812 //#if true // DAMAGELEVELTUNING
\r
3813 // switch (e今回の判定)
\r
3815 // case E判定.Perfect:
\r
3816 // case E判定.Great:
\r
3819 // fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];
\r
3822 // fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];
\r
3823 // switch (CDTXMania.ConfigIni.eダメージレベル)
\r
3825 // case Eダメージレベル.少ない:
\r
3826 // case Eダメージレベル.普通:
\r
3827 // case Eダメージレベル.大きい:
\r
3828 // fDamage *= fDamageLevelFactor[(int)CDTXMania.ConfigIni.eダメージレベル];
\r
3834 // fDamage = 0.0f;
\r
3837 //#else // before applying #23625 modifications
\r
3838 // switch (e今回の判定)
\r
3840 // case E判定.Perfect:
\r
3841 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;
\r
3844 // case E判定.Great:
\r
3845 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;
\r
3849 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;
\r
3853 // fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;
\r
3857 // fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;
\r
3858 // switch( CDTXMania.ConfigIni.eダメージレベル )
\r
3860 // case Eダメージレベル.少ない:
\r
3861 // fDamage *= 0.6;
\r
3864 // case Eダメージレベル.普通:
\r
3865 // fDamage *= 1.0;
\r
3868 // case Eダメージレベル.大きい:
\r
3869 // fDamage *= 1.6;
\r
3879 // this.actGauge.db現在のゲージ値 += fDamage;
\r
3881 // if( this.actGauge.db現在のゲージ値 > 1.0 )
\r
3882 // this.actGauge.db現在のゲージ値 = 1.0;
\r
3884 //-----------------
\r
3886 protected override void t進行描画・チップ・ドラムス( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
3888 if ( configIni.bDrums有効 )
\r
3890 if ( configIni.bSudden.Drums )
\r
3892 if ( pChip.nバーからの距離dot.Drums < 200 )
\r
3895 pChip.n透明度 = 0xff;
\r
3897 else if ( pChip.nバーからの距離dot.Drums < 250 )
\r
3900 pChip.n透明度 = 0xff - ( (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 200 ) ) * 255.0 ) / 50.0 ) );
\r
3904 pChip.b可視 = false;
\r
3908 if ( configIni.bHidden.Drums )
\r
3910 if ( pChip.nバーからの距離dot.Drums < 100 )
\r
3912 pChip.b可視 = false;
\r
3914 else if ( pChip.nバーからの距離dot.Drums < 150 )
\r
3917 pChip.n透明度 = (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 100 ) ) * 255.0 ) / 50.0 );
\r
3920 if ( !pChip.bHit && pChip.b可視 )
\r
3922 if ( this.txチップ != null )
\r
3924 this.txチップ.n透明度 = pChip.n透明度;
\r
3926 int x = this.nチャンネルtoX座標[ pChip.nチャンネル番号 - 0x11 ];
\r
3927 int num8 = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );
\r
3928 if ( this.txチップ != null )
\r
3930 this.txチップ.vc拡大縮小倍率 = new Vector3( (float) pChip.dbチップサイズ倍率, (float) pChip.dbチップサイズ倍率, 1f );
\r
3932 int num9 = this.ctチップ模様アニメ.Drums.n現在の値;
\r
3933 switch ( pChip.nチャンネル番号 )
\r
3936 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3937 if ( this.txチップ != null )
\r
3939 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );
\r
3944 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3945 if ( this.txチップ != null )
\r
3947 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );
\r
3952 x = ( x + 0x16 ) - ( (int) ( ( 44.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3953 if ( this.txチップ != null )
\r
3955 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );
\r
3960 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3961 if ( this.txチップ != null )
\r
3963 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );
\r
3968 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3969 if ( this.txチップ != null )
\r
3971 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );
\r
3976 x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3977 if ( this.txチップ != null )
\r
3979 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );
\r
3980 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );
\r
3985 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3986 if ( this.txチップ != null )
\r
3988 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );
\r
3993 x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
3994 if ( this.txチップ != null )
\r
3996 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );
\r
3997 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );
\r
4002 x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
4003 if ( this.txチップ != null )
\r
4005 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );
\r
4006 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );
\r
4011 x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
4012 if ( this.txチップ != null )
\r
4014 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );
\r
4015 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );
\r
4019 if ( this.txチップ != null )
\r
4021 this.txチップ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f );
\r
4022 this.txチップ.n透明度 = 0xff;
\r
4026 int indexSevenLanes = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ];
\r
4027 if ( ( configIni.bAutoPlay[ indexSevenLanes ] && !pChip.bHit ) && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
4029 pChip.bHit = true;
\r
4030 this.actLaneFlushD.Start( (Eドラムレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f );
\r
4031 bool flag = this.bフィルイン中;
\r
4032 bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );
\r
4033 bool flag3 = flag2;
\r
4034 this.actChipFireD.Start( (Eドラムレーン) indexSevenLanes, flag, flag2, flag3 );
\r
4035 this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] );
\r
4036 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );
\r
4037 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
4041 } // end of "if configIni.bDrums有効"
\r
4042 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
4044 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );
\r
4045 pChip.bHit = true;
\r
4048 protected override void t進行描画・チップ・ギター( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4050 if ( configIni.bGuitar有効 )
\r
4052 if ( configIni.bSudden.Guitar )
\r
4054 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;
\r
4056 if ( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )
\r
4058 pChip.b可視 = false;
\r
4060 if ( !pChip.bHit && pChip.b可視 )
\r
4062 int nバーからの距離 = configIni.bReverse.Guitar ? ( 0x176 - pChip.nバーからの距離dot.Guitar ) : ( 0x5f + pChip.nバーからの距離dot.Guitar );
\r
4063 if ( ( nバーからの距離 > 0x39 ) && ( nバーからの距離 < 0x19c ) )
\r
4065 int nアニメカウンタ現在の値 = this.ctチップ模様アニメ.Guitar.n現在の値;
\r
4066 if ( pChip.nチャンネル番号 == 0x20 )
\r
4068 if ( this.txチップ != null )
\r
4070 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, nバーからの距離 - 2, new Rectangle( 0x10c, 0x90 + ( ( nアニメカウンタ現在の値 % 5 ) * 6 ), 0x4c, 6 ) );
\r
4073 else if ( !configIni.bLeft.Guitar )
\r
4075 Rectangle rectangle = new Rectangle( 0x10c, nアニメカウンタ現在の値 * 6, 0x18, 6 );
\r
4076 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
4078 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, nバーからの距離 - 3, rectangle );
\r
4080 rectangle.X += 0x18;
\r
4081 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
4083 this.txチップ.t2D描画( CDTXMania.app.Device, 0x217, nバーからの距離 - 3, rectangle );
\r
4085 rectangle.X += 0x18;
\r
4086 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
4088 this.txチップ.t2D描画( CDTXMania.app.Device, 0x231, nバーからの距離 - 3, rectangle );
\r
4093 Rectangle rectangle2 = new Rectangle( 0x10c, nアニメカウンタ現在の値 * 6, 0x18, 6 );
\r
4094 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
4096 this.txチップ.t2D描画( CDTXMania.app.Device, 0x231, nバーからの距離 - 3, rectangle2 );
\r
4098 rectangle2.X += 0x18;
\r
4099 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
4101 this.txチップ.t2D描画( CDTXMania.app.Device, 0x217, nバーからの距離 - 3, rectangle2 );
\r
4103 rectangle2.X += 0x18;
\r
4104 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
4106 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, nバーからの距離 - 3, rectangle2 );
\r
4111 if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
4113 pChip.bHit = true;
\r
4114 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
4116 this.actChipFireGB.Start( 0 );
\r
4118 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
4120 this.actChipFireGB.Start( 1 );
\r
4122 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
4124 this.actChipFireGB.Start( 2 );
\r
4126 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );
\r
4127 this.r次にくるギターChip = null;
\r
4128 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
4132 } // end of "if configIni.bDrums有効"
\r
4133 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
4135 pChip.bHit = true;
\r
4136 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );
\r
4139 protected override void t進行描画・チップ・ギター・ウェイリング( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4141 if ( configIni.bGuitar有効 )
\r
4143 //if ( configIni.bSudden.Guitar )
\r
4145 // pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;
\r
4147 //if ( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )
\r
4149 // pChip.b可視 = false;
\r
4152 // 後日、以下の部分を何とかCStage演奏画面共通.csに移したい。
\r
4153 if ( !pChip.bHit && pChip.b可視 )
\r
4156 int num15 = configIni.bReverse.Guitar ? ( 0x176 - pChip.nバーからの距離dot.Guitar ) : ( 0x5f + pChip.nバーからの距離dot.Guitar );
\r
4157 int num16 = num15 - 0x39;
\r
4159 if ( ( num16 < ( 0x163 + num14 ) ) && ( num16 > -num14 ) )
\r
4161 int num18 = this.ctWailingチップ模様アニメ.n現在の値;
\r
4162 Rectangle rectangle5 = new Rectangle( 0x10c + ( num18 * 20 ), 0xae, 20, 50 );
\r
4163 if ( num16 < num14 )
\r
4165 rectangle5.Y += num14 - num16;
\r
4166 rectangle5.Height -= num14 - num16;
\r
4167 num17 = num14 - num16;
\r
4169 if ( num16 > ( 0x163 - num14 ) )
\r
4171 rectangle5.Height -= num16 - ( 0x163 - num14 );
\r
4173 if ( ( rectangle5.Bottom > rectangle5.Top ) && ( this.txチップ != null ) )
\r
4175 this.txチップ.t2D描画( CDTXMania.app.Device, 0x24c, ( num15 - num14 ) + num17, rectangle5 );
\r
4179 // if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
4181 // if ( pChip.nバーからの距離dot.Guitar < -234 ) // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec).
\r
4183 // pChip.bHit = true;
\r
4185 // if ( configIni.bAutoPlay.Guitar )
\r
4187 // pChip.bHit = true; // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.
\r
4188 // this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );
\r
4193 //pChip.bHit = true;
\r
4195 base.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );
\r
4197 protected override void t進行描画・チップ・フィルイン( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4199 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
4201 pChip.bHit = true;
\r
4202 switch ( pChip.n整数値 )
\r
4204 case 0x01: // フィルイン開始
\r
4205 if ( configIni.bフィルイン有効 )
\r
4207 this.bフィルイン中 = true;
\r
4211 case 0x02: // フィルイン終了
\r
4212 if ( configIni.bフィルイン有効 )
\r
4214 this.bフィルイン中 = false;
\r
4216 if ( ( ( this.actCombo.n現在のコンボ数.Drums > 0 ) || configIni.bドラムが全部オートプレイである ) && configIni.b歓声を発声する )
\r
4218 if ( this.r現在の歓声Chip.Drums != null )
\r
4220 dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
4224 CDTXMania.Skin.sound歓声音.n位置・次に鳴るサウンド = 0;
\r
4225 CDTXMania.Skin.sound歓声音.t再生する();
\r
4229 #if TEST_NOTEOFFMODE // 2011.1.1 yyagi TEST
\r
4230 case 0x04: // HH消音あり(従来同等)
\r
4231 CDTXMania.DTX.bHH演奏で直前のHHを消音する = true;
\r
4233 case 0x05: // HH消音無し
\r
4234 CDTXMania.DTX.bHH演奏で直前のHHを消音する = false;
\r
4236 case 0x06: // ギター消音あり(従来同等)
\r
4237 CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = true;
\r
4239 case 0x07: // ギター消音無し
\r
4240 CDTXMania.DTX.bGUITAR演奏で直前のGUITARを消音する = false;
\r
4242 case 0x08: // ベース消音あり(従来同等)
\r
4243 CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = true;
\r
4245 case 0x09: // ベース消音無し
\r
4246 CDTXMania.DTX.bBASS演奏で直前のBASSを消音する = false;
\r
4252 protected override void t進行描画・チップ・ベース( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4254 if ( configIni.bGuitar有効 )
\r
4256 if ( configIni.bSudden.Bass )
\r
4258 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;
\r
4260 if ( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )
\r
4262 pChip.b可視 = false;
\r
4264 if ( !pChip.bHit && pChip.b可視 )
\r
4266 int num12 = configIni.bReverse.Bass ? ( 0x176 - pChip.nバーからの距離dot.Bass ) : ( 0x5f + pChip.nバーからの距離dot.Bass );
\r
4267 if ( ( num12 > 0x39 ) && ( num12 < 0x19c ) )
\r
4269 int num13 = this.ctチップ模様アニメ.Bass.n現在の値;
\r
4270 if ( pChip.nチャンネル番号 == 160 )
\r
4272 if ( this.txチップ != null )
\r
4274 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 2, new Rectangle( 0x10c, 0x90 + ( ( num13 % 5 ) * 6 ), 0x4c, 6 ) );
\r
4277 else if ( !configIni.bLeft.Bass )
\r
4279 Rectangle rectangle3 = new Rectangle( 0x10c, num13 * 6, 0x18, 6 );
\r
4280 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
4282 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 3, rectangle3 );
\r
4284 rectangle3.X += 0x18;
\r
4285 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
4287 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1aa, num12 - 3, rectangle3 );
\r
4289 rectangle3.X += 0x18;
\r
4290 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
4292 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1c4, num12 - 3, rectangle3 );
\r
4297 Rectangle rectangle4 = new Rectangle( 0x10c, num13 * 6, 0x18, 6 );
\r
4298 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
4300 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1c4, num12 - 3, rectangle4 );
\r
4302 rectangle4.X += 0x18;
\r
4303 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
4305 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1aa, num12 - 3, rectangle4 );
\r
4307 rectangle4.X += 0x18;
\r
4308 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
4310 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 3, rectangle4 );
\r
4315 if ( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
4317 pChip.bHit = true;
\r
4318 if ( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
4320 this.actChipFireGB.Start( 3 );
\r
4322 if ( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
4324 this.actChipFireGB.Start( 4 );
\r
4326 if ( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
4328 this.actChipFireGB.Start( 5 );
\r
4330 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );
\r
4331 this.r次にくるベースChip = null;
\r
4332 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
4336 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
4338 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );
\r
4339 pChip.bHit = true;
\r
4342 protected override void t進行描画・チップ・ベース・ウェイリング( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4344 if ( configIni.bGuitar有効 )
\r
4346 //if ( configIni.bSudden.Bass )
\r
4348 // pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;
\r
4350 //if ( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )
\r
4352 // pChip.b可視 = false;
\r
4356 // 後日、以下の部分を何とかCStage演奏画面共通.csに移したい。
\r
4358 if ( !pChip.bHit && pChip.b可視 )
\r
4360 int[] y_base = { 0x5f, 0x176 };
\r
4362 const int num15 = 0x19;
\r
4363 int y = configIni.bReverse.Bass ? ( y_base[1] - pChip.nバーからの距離dot.Bass ) : ( y_base[1] + pChip.nバーからの距離dot.Bass );
\r
4364 int num17 = y - 0x39;
\r
4366 if ( ( num17 < ( 0x163 + num15 ) ) && ( num17 > -num15 ) )
\r
4368 int c = this.ctWailingチップ模様アニメ.n現在の値;
\r
4369 Rectangle rectangle6 = new Rectangle( 0x10c + ( c * 20 ), 0xae, 20, 50 );
\r
4370 if ( num17 < num15 )
\r
4372 rectangle6.Y += num15 - num17;
\r
4373 rectangle6.Height -= num15 - num17;
\r
4374 num18 = num15 - num17;
\r
4376 if ( num17 > ( 0x163 - num15 ) )
\r
4378 rectangle6.Height -= num17 - ( 0x163 - num15 );
\r
4380 if ( ( rectangle6.Bottom > rectangle6.Top ) && ( this.txチップ != null ) )
\r
4382 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1df, ( y - num15 ) + num18, rectangle6 );
\r
4386 // if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
4388 // if ( pChip.nバーからの距離dot.Bass < -234 ) // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec).
\r
4390 // pChip.bHit = true;
\r
4392 // if ( configIni.bAutoPlay.Bass )
\r
4394 // this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );
\r
4395 // pChip.bHit = true; // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.
\r
4400 //pChip.bHit = true;
\r
4402 base.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip);
\r
4404 protected override void t進行描画・チップ・空打ち音設定・ドラム( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4406 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
4408 pChip.bHit = true;
\r
4409 this.r現在の空うちドラムChip[ (int) this.eチャンネルtoパッド[ pChip.nチャンネル番号 - 0xb1 ] ] = pChip;
\r
4410 pChip.nチャンネル番号 = ( pChip.nチャンネル番号 != 0xbc ) ? ( ( pChip.nチャンネル番号 - 0xb1 ) + 0x11 ) : 0x1a;
\r
4413 protected override void t進行描画・チップ・小節線( CConfigIni configIni, ref CDTX dTX, ref CDTX.CChip pChip )
\r
4415 int n小節番号plus1 = pChip.n発声位置 / 384;
\r
4416 if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
4418 pChip.bHit = true;
\r
4419 this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;
\r
4420 if ( configIni.bWave再生位置自動調整機能有効 )
\r
4422 dTX.tWave再生位置自動補正();
\r
4425 if ( configIni.bDrums有効 )
\r
4427 if ( configIni.b演奏情報を表示する && ( configIni.eDark == Eダークモード.OFF ) )
\r
4429 int n小節番号 = n小節番号plus1 - 1;
\r
4430 CDTXMania.act文字コンソール.tPrint( 0x14d, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 0x11 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 0x11 ), C文字コンソール.Eフォント種別.白, n小節番号.ToString() );
\r
4432 if ( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )
\r
4434 this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bc, 0x128, 2 ) );
\r
4437 if ( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )
\r
4439 int y = configIni.bReverse.Guitar ? ( ( 0x176 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Guitar ) - 1 );
\r
4440 if ( ( dTX.bチップがある.Guitar && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )
\r
4442 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fb, y, new Rectangle( 0, 450, 0x4e, 1 ) );
\r
4444 y = configIni.bReverse.Bass ? ( ( 0x176 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Bass ) - 1 );
\r
4445 if ( ( dTX.bチップがある.Bass && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )
\r
4447 this.txチップ.t2D描画( CDTXMania.app.Device, 0x18e, y, new Rectangle( 0, 450, 0x4e, 1 ) );
\r