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 bool bAUTOでないチップが1つでもバーを通過した
\r
28 public CStage演奏ドラム画面()
\r
30 Eパッド[] eパッドArray = new Eパッド[ 12 ];
\r
31 eパッドArray[ 1 ] = Eパッド.SD;
\r
32 eパッドArray[ 2 ] = Eパッド.BD;
\r
33 eパッドArray[ 3 ] = Eパッド.HT;
\r
34 eパッドArray[ 4 ] = Eパッド.LT;
\r
35 eパッドArray[ 5 ] = Eパッド.CY;
\r
36 eパッドArray[ 6 ] = Eパッド.FT;
\r
37 eパッドArray[ 7 ] = Eパッド.HHO;
\r
38 eパッドArray[ 8 ] = Eパッド.RD;
\r
39 eパッドArray[ 9 ] = Eパッド.UNKNOWN;
\r
40 eパッドArray[ 10 ] = Eパッド.UNKNOWN;
\r
41 eパッドArray[ 11 ] = Eパッド.LC;
\r
42 this.eチャンネルtoパッド = eパッドArray;
\r
43 this.nBGAスコープチャンネルマップ = new int[ , ] { { 0xc4, 0xc7, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe0 }, { 4, 7, 0x55, 0x56, 0x57, 0x58, 0x59, 0x60 } };
\r
44 base.eステージID = CStage.Eステージ.演奏;
\r
45 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
46 base.b活性化してない = true;
\r
47 base.list子Activities.Add( this.actPad = new CAct演奏Drumsパッド() );
\r
48 base.list子Activities.Add( this.actCOMBO = new CAct演奏DrumsコンボDGB() );
\r
49 base.list子Activities.Add( this.actDANGER = new CAct演奏DrumsDanger() );
\r
50 base.list子Activities.Add( this.actChipFireD = new CAct演奏DrumsチップファイアD() );
\r
51 base.list子Activities.Add( this.actChipFireGB = new CAct演奏DrumsチップファイアGB() );
\r
52 base.list子Activities.Add( this.actGauge = new CAct演奏Drumsゲージ() );
\r
53 base.list子Activities.Add( this.actJudgeString = new CAct演奏Drums判定文字列() );
\r
54 base.list子Activities.Add( this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD() );
\r
55 base.list子Activities.Add( this.actLaneFlushGB = new CAct演奏DrumsレーンフラッシュGB() );
\r
56 base.list子Activities.Add( this.actRGB = new CAct演奏DrumsRGB() );
\r
57 base.list子Activities.Add( this.actScore = new CAct演奏Drumsスコア() );
\r
58 base.list子Activities.Add( this.actStatusPanels = new CAct演奏Drumsステータスパネル() );
\r
59 base.list子Activities.Add( this.actWailingBonus = new CAct演奏DrumsWailingBonus() );
\r
60 base.list子Activities.Add( this.act譜面スクロール速度 = new CAct演奏スクロール速度() );
\r
61 base.list子Activities.Add( this.actAVI = new CAct演奏AVI() );
\r
62 base.list子Activities.Add( this.actBGA = new CAct演奏BGA() );
\r
63 base.list子Activities.Add( this.actPanel = new CAct演奏パネル文字列() );
\r
64 base.list子Activities.Add( this.actStageFailed = new CAct演奏ステージ失敗() );
\r
65 base.list子Activities.Add( this.actPlayInfo = new CAct演奏演奏情報() );
\r
66 base.list子Activities.Add( this.actFI = new CActFIFOBlack() );
\r
67 base.list子Activities.Add( this.actFO = new CActFIFOBlack() );
\r
68 base.list子Activities.Add( this.actFOClear = new CActFIFOWhite() );
\r
74 public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums, out CScoreIni.C演奏記録 Guitar, out CScoreIni.C演奏記録 Bass, out CDTX.CChip[] r空打ちドラムチップ )
\r
76 Drums = new CScoreIni.C演奏記録();
\r
77 Guitar = new CScoreIni.C演奏記録();
\r
78 Bass = new CScoreIni.C演奏記録();
\r
79 r空打ちドラムチップ = new CDTX.CChip[ 10 ];
\r
80 if( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード )
\r
82 Drums.nスコア = this.actScore.Get( E楽器パート.DRUMS );
\r
83 Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Drums, CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.actCOMBO.n現在のコンボ数.Drums最高値 );
\r
84 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
85 Drums.nPerfect数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Perfect : this.nヒット数・Auto含まない.Drums.Perfect;
\r
86 Drums.nGreat数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Great : this.nヒット数・Auto含まない.Drums.Great;
\r
87 Drums.nGood数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Good : this.nヒット数・Auto含まない.Drums.Good;
\r
88 Drums.nPoor数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Poor : this.nヒット数・Auto含まない.Drums.Poor;
\r
89 Drums.nMiss数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Miss : this.nヒット数・Auto含まない.Drums.Miss;
\r
90 Drums.n最大コンボ数 = this.actCOMBO.n現在のコンボ数.Drums最高値;
\r
91 Drums.n全チップ数 = CDTXMania.DTX.n可視チップ数.Drums;
\r
92 for( int j = 0; j < 10; j++ )
\r
94 Drums.bAutoPlay[ j ] = CDTXMania.ConfigIni.bAutoPlay[ j ];
\r
96 Drums.bTight = CDTXMania.ConfigIni.bTight;
\r
97 for( int k = 0; k < 3; k++ )
\r
99 Drums.bSudden[ k ] = CDTXMania.ConfigIni.bSudden[ k ];
\r
100 Drums.bHidden[ k ] = CDTXMania.ConfigIni.bHidden[ k ];
\r
101 Drums.bReverse[ k ] = CDTXMania.ConfigIni.bReverse[ k ];
\r
102 Drums.eRandom[ k ] = CDTXMania.ConfigIni.eRandom[ k ];
\r
103 Drums.bLight[ k ] = CDTXMania.ConfigIni.bLight[ k ];
\r
104 Drums.bLeft[ k ] = CDTXMania.ConfigIni.bLeft[ k ];
\r
105 Drums.f譜面スクロール速度[ k ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ k ] + 1 ) ) * 0.5f;
\r
107 Drums.eDark = CDTXMania.ConfigIni.eDark;
\r
108 Drums.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
109 Drums.n演奏速度分母 = 20;
\r
110 Drums.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
111 Drums.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
112 Drums.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
113 Drums.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
114 Drums.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
115 Drums.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
116 Drums.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
117 Drums.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
118 Drums.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
119 Drums.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
120 Drums.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Drums;
\r
121 Drums.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Drums;
\r
122 Drums.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Drums;
\r
123 Drums.b演奏にマウスを使用した = this.b演奏にマウスを使った.Drums;
\r
124 Drums.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
125 Drums.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
126 Drums.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
127 Drums.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
128 Drums.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
129 Drums.最終更新日時 = DateTime.Now.ToString();
\r
130 Drums.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Drums );
\r
132 if( CDTXMania.DTX.bチップがある.Guitar )
\r
134 Guitar.nスコア = this.actScore.Get( E楽器パート.GUITAR );
\r
135 Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Guitar, CDTXMania.DTX.n可視チップ数.Guitar, this.nヒット数・Auto含まない.Guitar.Perfect, this.actCOMBO.n現在のコンボ数.Guitar最高値 );
\r
136 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
137 Guitar.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Perfect : this.nヒット数・Auto含まない.Guitar.Perfect;
\r
138 Guitar.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Great : this.nヒット数・Auto含まない.Guitar.Great;
\r
139 Guitar.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Good : this.nヒット数・Auto含まない.Guitar.Good;
\r
140 Guitar.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Poor : this.nヒット数・Auto含まない.Guitar.Poor;
\r
141 Guitar.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Miss : this.nヒット数・Auto含まない.Guitar.Miss;
\r
142 Guitar.n最大コンボ数 = this.actCOMBO.n現在のコンボ数.Guitar最高値;
\r
143 Guitar.n全チップ数 = CDTXMania.DTX.n可視チップ数.Guitar;
\r
144 for( int m = 0; m < 10; m++ )
\r
146 Guitar.bAutoPlay[ m ] = CDTXMania.ConfigIni.bAutoPlay[ m ];
\r
148 Guitar.bTight = CDTXMania.ConfigIni.bTight;
\r
149 for( int n = 0; n < 3; n++ )
\r
151 Guitar.bSudden[ n ] = CDTXMania.ConfigIni.bSudden[ n ];
\r
152 Guitar.bHidden[ n ] = CDTXMania.ConfigIni.bHidden[ n ];
\r
153 Guitar.bReverse[ n ] = CDTXMania.ConfigIni.bReverse[ n ];
\r
154 Guitar.eRandom[ n ] = CDTXMania.ConfigIni.eRandom[ n ];
\r
155 Guitar.bLight[ n ] = CDTXMania.ConfigIni.bLight[ n ];
\r
156 Guitar.bLeft[ n ] = CDTXMania.ConfigIni.bLeft[ n ];
\r
157 Guitar.f譜面スクロール速度[ n ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ n ] + 1 ) ) * 0.5f;
\r
159 Guitar.eDark = CDTXMania.ConfigIni.eDark;
\r
160 Guitar.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
161 Guitar.n演奏速度分母 = 20;
\r
162 Guitar.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
163 Guitar.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
164 Guitar.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
165 Guitar.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
166 Guitar.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
167 Guitar.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
168 Guitar.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
169 Guitar.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
170 Guitar.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
171 Guitar.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
172 Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;
\r
173 Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;
\r
174 Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;
\r
175 Guitar.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;
\r
176 Guitar.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
177 Guitar.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
178 Guitar.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
179 Guitar.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
180 Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
181 Guitar.最終更新日時 = DateTime.Now.ToString();
\r
182 Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Guitar );
\r
184 if( CDTXMania.DTX.bチップがある.Bass )
\r
186 Bass.nスコア = this.actScore.Get( E楽器パート.BASS );
\r
187 Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す( CDTXMania.DTX.LEVEL.Bass, CDTXMania.DTX.n可視チップ数.Bass, this.nヒット数・Auto含まない.Bass.Perfect, this.actCOMBO.n現在のコンボ数.Bass最高値 );
\r
188 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
189 Bass.nPerfect数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Perfect : this.nヒット数・Auto含まない.Bass.Perfect;
\r
190 Bass.nGreat数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Great : this.nヒット数・Auto含まない.Bass.Great;
\r
191 Bass.nGood数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Good : this.nヒット数・Auto含まない.Bass.Good;
\r
192 Bass.nPoor数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Poor : this.nヒット数・Auto含まない.Bass.Poor;
\r
193 Bass.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Miss : this.nヒット数・Auto含まない.Bass.Miss;
\r
194 Bass.n最大コンボ数 = this.actCOMBO.n現在のコンボ数.Bass最高値;
\r
195 Bass.n全チップ数 = CDTXMania.DTX.n可視チップ数.Bass;
\r
196 for( int num5 = 0; num5 < 10; num5++ )
\r
198 Bass.bAutoPlay[ num5 ] = CDTXMania.ConfigIni.bAutoPlay[ num5 ];
\r
200 Bass.bTight = CDTXMania.ConfigIni.bTight;
\r
201 for( int num6 = 0; num6 < 3; num6++ )
\r
203 Bass.bSudden[ num6 ] = CDTXMania.ConfigIni.bSudden[ num6 ];
\r
204 Bass.bHidden[ num6 ] = CDTXMania.ConfigIni.bHidden[ num6 ];
\r
205 Bass.bReverse[ num6 ] = CDTXMania.ConfigIni.bReverse[ num6 ];
\r
206 Bass.eRandom[ num6 ] = CDTXMania.ConfigIni.eRandom[ num6 ];
\r
207 Bass.bLight[ num6 ] = CDTXMania.ConfigIni.bLight[ num6 ];
\r
208 Bass.bLeft[ num6 ] = CDTXMania.ConfigIni.bLeft[ num6 ];
\r
209 Bass.f譜面スクロール速度[ num6 ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ num6 ] + 1 ) ) * 0.5f;
\r
211 Bass.eDark = CDTXMania.ConfigIni.eDark;
\r
212 Bass.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;
\r
214 Bass.eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
215 Bass.eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
216 Bass.eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
217 Bass.eHitSoundPriorityHH = CDTXMania.ConfigIni.eHitSoundPriorityHH;
\r
218 Bass.eHitSoundPriorityFT = CDTXMania.ConfigIni.eHitSoundPriorityFT;
\r
219 Bass.eHitSoundPriorityCY = CDTXMania.ConfigIni.eHitSoundPriorityCY;
\r
220 Bass.bGuitar有効 = CDTXMania.ConfigIni.bGuitar有効;
\r
221 Bass.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;
\r
222 Bass.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;
\r
223 Bass.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;
\r
224 Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;
\r
225 Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;
\r
226 Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;
\r
227 Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;
\r
228 Bass.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;
\r
229 Bass.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;
\r
230 Bass.nGoodになる範囲ms = CDTXMania.nGood範囲ms;
\r
231 Bass.nPoorになる範囲ms = CDTXMania.nPoor範囲ms;
\r
232 Bass.strDTXManiaのバージョン = CDTXMania.VERSION;
\r
233 Bass.最終更新日時 = DateTime.Now.ToString();
\r
234 Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す( Bass );
\r
236 for( int i = 0; i < 10; i++ )
\r
238 r空打ちドラムチップ[ i ] = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) i );
\r
239 if( r空打ちドラムチップ[ i ] == null )
\r
241 r空打ちドラムチップ[ i ] = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( CDTXMania.Timer.n現在時刻, this.nパッド0Atoチャンネル0A[ i ] );
\r
249 public override void On活性化()
\r
251 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;
\r
252 this.bフィルイン中 = false;
\r
253 this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;
\r
254 this.n最後に再生したHHの実WAV番号 = -1;
\r
255 this.n最後に再生したHHのチャンネル番号 = 0;
\r
256 this.n最後に再生したギターの実WAV番号 = -1;
\r
257 this.n最後に再生したベースの実WAV番号 = -1;
\r
258 for( int i = 0; i < 50; i++ )
\r
260 this.n最後に再生したBGMの実WAV番号[ i ] = -1;
\r
262 this.r次にくるギターChip = null;
\r
263 this.r次にくるベースChip = null;
\r
264 for( int j = 0; j < 10; j++ )
\r
266 this.r現在の空うちドラムChip[ j ] = null;
\r
268 this.r現在の空うちギターChip = null;
\r
269 this.r現在の空うちベースChip = null;
\r
270 for( int k = 0; k < 3; k++ )
\r
272 for( int n = 0; n < 5; n++ )
\r
274 this.nヒット数・Auto含まない[ k ] = new STHITCOUNTOFRANK();
\r
275 this.nヒット数・Auto含む[ k ] = new STHITCOUNTOFRANK();
\r
277 this.queWailing[ k ] = new Queue<CDTX.CChip>();
\r
278 this.r現在の歓声Chip[ k ] = null;
\r
280 for( int m = 0; m < 3; m++ )
\r
282 this.b演奏にキーボードを使った[ m ] = false;
\r
283 this.b演奏にジョイパッドを使った[ m ] = false;
\r
284 this.b演奏にMIDI入力を使った[ m ] = false;
\r
285 this.b演奏にマウスを使った[ m ] = false;
\r
287 this.bAUTOでないチップが1つでもバーを通過した = false;
\r
289 this.tステータスパネルの選択();
\r
292 public override void On非活性化()
\r
294 for( int i = 0; i < 3; i++ )
\r
296 this.queWailing[ i ] = null;
\r
298 this.ctWailingチップ模様アニメ = null;
\r
299 this.ctチップ模様アニメ.Drums = null;
\r
300 this.ctチップ模様アニメ.Guitar = null;
\r
301 this.ctチップ模様アニメ.Bass = null;
\r
304 public override void OnManagedリソースの作成()
\r
306 if( !base.b活性化してない )
\r
308 this.t背景テクスチャの生成();
\r
309 this.txチップ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chips.png" ) );
\r
310 this.txヒットバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar.png" ) );
\r
311 this.txヒットバーGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar guitar.png" ) );
\r
312 this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );
\r
313 this.txレーンフレームGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums lane parts guitar.png" ) );
\r
314 if( this.txレーンフレームGB != null )
\r
316 this.txレーンフレームGB.n透明度 = 0xff - CDTXMania.ConfigIni.n背景の透過度;
\r
318 base.OnManagedリソースの作成();
\r
321 public override void OnManagedリソースの解放()
\r
323 if( !base.b活性化してない )
\r
325 CDTXMania.tテクスチャの解放( ref this.tx背景 );
\r
326 CDTXMania.tテクスチャの解放( ref this.txヒットバー );
\r
327 CDTXMania.tテクスチャの解放( ref this.txヒットバーGB );
\r
328 CDTXMania.tテクスチャの解放( ref this.txチップ );
\r
329 CDTXMania.tテクスチャの解放( ref this.txレーンフレームGB );
\r
330 CDTXMania.tテクスチャの解放( ref this.txWailing枠 );
\r
331 base.OnManagedリソースの解放();
\r
334 public override int On進行描画()
\r
336 if( !base.b活性化してない )
\r
339 bool flag2 = false;
\r
340 if( base.b初めての進行描画 )
\r
342 CDTXMania.Timer.tリセット();
\r
343 this.ctチップ模様アニメ.Drums = new CCounter( 0, 0x30, 10, CDTXMania.Timer );
\r
344 this.ctチップ模様アニメ.Guitar = new CCounter( 0, 0x17, 20, CDTXMania.Timer );
\r
345 this.ctチップ模様アニメ.Bass = new CCounter( 0, 0x17, 20, CDTXMania.Timer );
\r
346 this.ctWailingチップ模様アニメ = new CCounter( 0, 4, 50, CDTXMania.Timer );
\r
347 base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;
\r
348 this.actFI.tフェードイン開始();
\r
349 base.b初めての進行描画 = false;
\r
351 if( ( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( this.actGauge.db現在のゲージ値 <= -0.1 ) ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
\r
353 this.actStageFailed.Start();
\r
354 CDTXMania.DTX.t全チップの再生停止();
\r
355 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;
\r
358 this.t進行描画・MIDIBGM();
\r
359 this.t進行描画・パネル文字列();
\r
363 this.t進行描画・ステータスパネル();
\r
364 this.t進行描画・ギターベースフレーム();
\r
365 this.t進行描画・レーンフラッシュGB();
\r
366 this.t進行描画・ギターベース判定ライン();
\r
368 this.t進行描画・レーンフラッシュD();
\r
369 this.t進行描画・DANGER();
\r
370 this.t進行描画・判定ライン();
\r
371 this.t進行描画・RGBボタン();
\r
372 this.t進行描画・判定文字列1・通常位置指定の場合();
\r
374 this.t進行描画・WailingBonus();
\r
375 this.t進行描画・譜面スクロール速度();
\r
376 this.t進行描画・チップアニメ();
\r
377 flag = this.t進行描画・チップ();
\r
379 this.t進行描画・ドラムパッド();
\r
380 this.t進行描画・判定文字列2・判定ライン上指定の場合();
\r
381 this.t進行描画・Wailing枠();
\r
382 this.t進行描画・チップファイアD();
\r
383 this.t進行描画・チップファイアGB();
\r
384 this.t進行描画・STAGEFAILED();
\r
385 flag2 = this.t進行描画・フェードイン・アウト();
\r
386 if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )
\r
388 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;
\r
389 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;
\r
390 this.actFOClear.tフェードアウト開始();
\r
394 return (int) this.eフェードアウト完了時の戻り値;
\r
399 if( CDTXMania.act現在入力を占有中のプラグイン == null )
\r
408 #region [ private ]
\r
409 //-----------------
\r
410 private class STHITCOUNTOFRANK
\r
416 public int Perfect;
\r
420 public int this[ int index ]
\r
427 return this.Perfect;
\r
441 throw new IndexOutOfRangeException();
\r
448 this.Perfect = value;
\r
452 this.Great = value;
\r
467 throw new IndexOutOfRangeException();
\r
472 [StructLayout( LayoutKind.Sequential )]
\r
473 private struct STKARAUCHI
\r
475 public CDTX.CChip HH;
\r
476 public CDTX.CChip SD;
\r
477 public CDTX.CChip BD;
\r
478 public CDTX.CChip HT;
\r
479 public CDTX.CChip LT;
\r
480 public CDTX.CChip FT;
\r
481 public CDTX.CChip CY;
\r
482 public CDTX.CChip HHO;
\r
483 public CDTX.CChip RD;
\r
484 public CDTX.CChip LC;
\r
485 public CDTX.CChip this[ int index ]
\r
521 throw new IndexOutOfRangeException();
\r
567 throw new IndexOutOfRangeException();
\r
572 private CAct演奏AVI actAVI;
\r
573 private CAct演奏BGA actBGA;
\r
574 private CAct演奏DrumsチップファイアD actChipFireD;
\r
575 private CAct演奏DrumsチップファイアGB actChipFireGB;
\r
576 private CAct演奏DrumsコンボDGB actCOMBO;
\r
577 private CAct演奏DrumsDanger actDANGER;
\r
578 private CActFIFOBlack actFI;
\r
579 private CActFIFOBlack actFO;
\r
580 private CActFIFOWhite actFOClear;
\r
581 private CAct演奏Drumsゲージ actGauge;
\r
582 private CAct演奏Drums判定文字列 actJudgeString;
\r
583 private CAct演奏DrumsレーンフラッシュD actLaneFlushD;
\r
584 private CAct演奏DrumsレーンフラッシュGB actLaneFlushGB;
\r
585 private CAct演奏Drumsパッド actPad;
\r
586 private CAct演奏パネル文字列 actPanel;
\r
587 private CAct演奏演奏情報 actPlayInfo;
\r
588 private CAct演奏DrumsRGB actRGB;
\r
589 private CAct演奏Drumsスコア actScore;
\r
590 private CAct演奏ステージ失敗 actStageFailed;
\r
591 private CAct演奏Drumsステータスパネル actStatusPanels;
\r
592 private CAct演奏DrumsWailingBonus actWailingBonus;
\r
593 private CAct演奏スクロール速度 act譜面スクロール速度;
\r
594 private bool bPAUSE;
\r
595 private bool bフィルイン中;
\r
596 private STDGBVALUE<bool> b演奏にMIDI入力を使った;
\r
597 private STDGBVALUE<bool> b演奏にキーボードを使った;
\r
598 private STDGBVALUE<bool> b演奏にジョイパッドを使った;
\r
599 private STDGBVALUE<bool> b演奏にマウスを使った;
\r
600 private CCounter ctWailingチップ模様アニメ;
\r
601 private STDGBVALUE<CCounter> ctチップ模様アニメ;
\r
602 private readonly Eパッド[] eチャンネルtoパッド;
\r
603 private E演奏画面の戻り値 eフェードアウト完了時の戻り値;
\r
604 private readonly int[,] nBGAスコープチャンネルマップ;
\r
605 private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };
\r
606 private readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };
\r
607 private readonly int[] nチャンネルtoX座標 = new int[] { 0x4c, 110, 0x91, 0xc0, 0xe2, 0x126, 260, 0x4f, 300, 0x23 };
\r
608 private readonly int[] nパッド0Atoチャンネル0A = new int[] { 0x11, 0x12, 0x13, 20, 0x15, 0x17, 0x16, 0x18, 0x19, 0x1a };
\r
609 private readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };
\r
610 private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };
\r
611 private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;
\r
612 private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;
\r
613 private int n現在のトップChip = -1;
\r
614 private int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];
\r
615 private int n最後に再生したHHのチャンネル番号;
\r
616 private int n最後に再生したHHの実WAV番号;
\r
617 private int n最後に再生したギターの実WAV番号;
\r
618 private int n最後に再生したベースの実WAV番号;
\r
619 private STDGBVALUE<Queue<CDTX.CChip>> queWailing;
\r
620 private STDGBVALUE<CDTX.CChip> r現在の歓声Chip;
\r
621 private CDTX.CChip r現在の空うちギターChip;
\r
622 private STKARAUCHI r現在の空うちドラムChip;
\r
623 private CDTX.CChip r現在の空うちベースChip;
\r
624 private CDTX.CChip r次にくるギターChip;
\r
625 private CDTX.CChip r次にくるベースChip;
\r
626 private CTexture txWailing枠;
\r
627 private CTexture txチップ;
\r
628 private CTexture txヒットバー;
\r
629 private CTexture txヒットバーGB;
\r
630 private CTexture txレーンフレームGB;
\r
631 private CTexture tx背景;
\r
633 private bool bフィルイン区間の最後のChipである( CDTX.CChip pChip )
\r
635 if( pChip == null )
\r
639 int num = pChip.n発声位置;
\r
640 for( int i = CDTXMania.DTX.listChip.IndexOf( pChip ) + 1; i < CDTXMania.DTX.listChip.Count; i++ )
\r
642 pChip = CDTXMania.DTX.listChip[ i ];
\r
643 if( ( pChip.nチャンネル番号 == 0x53 ) && ( pChip.n整数値 == 2 ) )
\r
647 if( ( ( pChip.nチャンネル番号 >= 0x11 ) && ( pChip.nチャンネル番号 <= 0x19 ) ) && ( ( pChip.n発声位置 - num ) > 0x18 ) )
\r
654 private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip )
\r
656 if( pChip != null )
\r
658 int num = Math.Abs( (int) ( nTime - pChip.n発声時刻ms ) );
\r
659 if( num <= CDTXMania.nPerfect範囲ms )
\r
661 return E判定.Perfect;
\r
663 if( num <= CDTXMania.nGreat範囲ms )
\r
667 if( num <= CDTXMania.nGood範囲ms )
\r
671 if( num <= CDTXMania.nPoor範囲ms )
\r
678 private CDTX.CChip r空うちChip( E楽器パート part, Eパッド pad )
\r
686 if( this.r現在の空うちドラムChip.HH != null )
\r
688 return this.r現在の空うちドラムChip.HH;
\r
690 if( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける )
\r
692 if( CDTXMania.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける )
\r
694 return this.r現在の空うちドラムChip.HHO;
\r
696 if( this.r現在の空うちドラムChip.HHO != null )
\r
698 return this.r現在の空うちドラムChip.HHO;
\r
701 return this.r現在の空うちドラムChip.LC;
\r
704 return this.r現在の空うちドラムChip.SD;
\r
707 return this.r現在の空うちドラムChip.BD;
\r
710 return this.r現在の空うちドラムChip.HT;
\r
713 if( this.r現在の空うちドラムChip.LT != null )
\r
715 return this.r現在の空うちドラムChip.LT;
\r
717 if( CDTXMania.ConfigIni.eFTGroup == EFTGroup.共通 )
\r
719 return this.r現在の空うちドラムChip.FT;
\r
724 if( this.r現在の空うちドラムChip.FT != null )
\r
726 return this.r現在の空うちドラムChip.FT;
\r
728 if( CDTXMania.ConfigIni.eFTGroup == EFTGroup.共通 )
\r
730 return this.r現在の空うちドラムChip.LT;
\r
735 if( this.r現在の空うちドラムChip.CY != null )
\r
737 return this.r現在の空うちドラムChip.CY;
\r
739 if( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 )
\r
741 return this.r現在の空うちドラムChip.RD;
\r
746 if( this.r現在の空うちドラムChip.HHO != null )
\r
748 return this.r現在の空うちドラムChip.HHO;
\r
750 if( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける )
\r
752 if( CDTXMania.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける )
\r
754 return this.r現在の空うちドラムChip.HH;
\r
756 if( this.r現在の空うちドラムChip.HH != null )
\r
758 return this.r現在の空うちドラムChip.HH;
\r
761 return this.r現在の空うちドラムChip.LC;
\r
764 if( this.r現在の空うちドラムChip.RD != null )
\r
766 return this.r現在の空うちドラムChip.RD;
\r
768 if( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 )
\r
770 return this.r現在の空うちドラムChip.CY;
\r
775 if( this.r現在の空うちドラムChip.LC != null )
\r
777 return this.r現在の空うちドラムChip.LC;
\r
779 if( ( CDTXMania.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける ) && ( CDTXMania.ConfigIni.eHHGroup != EHHGroup.全部共通 ) )
\r
783 if( this.r現在の空うちドラムChip.HH != null )
\r
785 return this.r現在の空うちドラムChip.HH;
\r
787 return this.r現在の空うちドラムChip.HHO;
\r
791 case E楽器パート.GUITAR:
\r
792 return this.r現在の空うちギターChip;
\r
795 return this.r現在の空うちベースChip;
\r
799 private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag )
\r
802 if( this.n現在のトップChip == -1 )
\r
806 int count = CDTXMania.DTX.listChip.Count;
\r
807 int num4 = num5 = this.n現在のトップChip;
\r
808 if( this.n現在のトップChip >= count )
\r
810 num4 = num5 = count - 1;
\r
813 while( num2 < count )
\r
815 CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];
\r
816 if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )
\r
818 if( chip.n発声時刻ms > nTime )
\r
824 else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )
\r
826 if( chip.n発声時刻ms > nTime )
\r
832 else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )
\r
834 if( chip.n発声時刻ms > nTime )
\r
845 CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];
\r
846 if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )
\r
848 if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )
\r
853 else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )
\r
855 if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 40 ) )
\r
860 else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 160 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )
\r
866 if( ( num2 == count ) && ( num3 < 0 ) )
\r
870 if( num2 == count )
\r
872 return CDTXMania.DTX.listChip[ num3 ];
\r
876 return CDTXMania.DTX.listChip[ num2 ];
\r
878 CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
879 CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];
\r
880 int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );
\r
881 int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );
\r
888 private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag )
\r
890 return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, 0 );
\r
892 private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int n検索範囲時間ms )
\r
896 if( this.n現在のトップChip == -1 )
\r
900 int count = CDTXMania.DTX.listChip.Count;
\r
901 int num4 = num5 = this.n現在のトップChip;
\r
902 if( this.n現在のトップChip >= count )
\r
904 num4 = num5 = count - 1;
\r
907 while( num2 < count )
\r
909 CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];
\r
910 if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )
\r
912 if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )
\r
914 if( chip.n発声時刻ms > nTime )
\r
921 else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )
\r
923 if( chip.n発声時刻ms > nTime )
\r
929 else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )
\r
931 if( chip.n発声時刻ms > nTime )
\r
942 CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];
\r
943 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
949 if( ( num2 == count ) && ( num3 < 0 ) )
\r
953 CDTX.CChip chip3 = null;
\r
954 if( num2 == count )
\r
956 chip3 = CDTXMania.DTX.listChip[ num3 ];
\r
957 num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
959 else if( num3 < 0 )
\r
961 chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
962 num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
966 int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
967 int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
970 chip3 = CDTXMania.DTX.listChip[ num2 ];
\r
971 num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );
\r
975 chip3 = CDTXMania.DTX.listChip[ num3 ];
\r
976 num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );
\r
979 if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )
\r
985 private CDTX.CChip r次にくるギターChipを更新して返す()
\r
987 this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, 500 );
\r
988 return this.r次にくるギターChip;
\r
990 private CDTX.CChip r次にくるベースChipを更新して返す()
\r
992 this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, 500 );
\r
993 return this.r次にくるベースChip;
\r
995 private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part )
\r
997 this.tサウンド再生( rChip, n再生開始システム時刻ms, part, CDTXMania.ConfigIni.n手動再生音量, false, false );
\r
999 private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量 )
\r
1001 this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, false, false );
\r
1003 private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ )
\r
1005 this.tサウンド再生( rChip, n再生開始システム時刻ms, part, n音量, bモニタ, false );
\r
1007 private void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )
\r
1009 if( pChip != null )
\r
1013 case E楽器パート.DRUMS:
\r
1015 int index = pChip.nチャンネル番号;
\r
1016 if( ( index < 0x11 ) || ( index > 0x1a ) )
\r
1018 if( ( index < 0x31 ) || ( index > 0x3a ) )
\r
1028 int nLane = this.nチャンネル0Atoレーン07[ index ];
\r
1029 if( ( nLane == 1 ) && ( ( index == 0 ) || ( ( ( index == 7 ) && ( this.n最後に再生したHHのチャンネル番号 != 0x18 ) ) && ( this.n最後に再生したHHのチャンネル番号 != 0x38 ) ) ) )
\r
1031 CDTXMania.DTX.tWavの再生停止( this.n最後に再生したHHの実WAV番号 );
\r
1032 this.n最後に再生したHHの実WAV番号 = pChip.n整数値・内部番号;
\r
1033 this.n最後に再生したHHのチャンネル番号 = pChip.nチャンネル番号;
\r
1035 CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ );
\r
1038 case E楽器パート.GUITAR:
\r
1039 CDTXMania.DTX.tWavの再生停止( this.n最後に再生したギターの実WAV番号 );
\r
1040 CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 8, n音量, bモニタ, b音程をずらして再生 );
\r
1041 this.n最後に再生したギターの実WAV番号 = pChip.n整数値・内部番号;
\r
1045 CDTXMania.DTX.tWavの再生停止( this.n最後に再生したベースの実WAV番号 );
\r
1046 CDTXMania.DTX.tチップの再生( pChip, n再生開始システム時刻ms, 9, n音量, bモニタ, b音程をずらして再生 );
\r
1047 this.n最後に再生したベースの実WAV番号 = pChip.n整数値・内部番号;
\r
1052 private void tステータスパネルの選択()
\r
1054 if( CDTXMania.bコンパクトモード )
\r
1056 this.actStatusPanels.tラベル名からステータスパネルを決定する( null );
\r
1058 else if( CDTXMania.stage選曲.r確定された曲 != null )
\r
1060 this.actStatusPanels.tラベル名からステータスパネルを決定する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] );
\r
1063 private E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )
\r
1065 pChip.bHit = true;
\r
1066 bool flag = false;
\r
1067 E判定 auto = E判定.Auto;
\r
1068 auto = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip );
\r
1069 if( ( ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && CDTXMania.ConfigIni.bAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) || ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && CDTXMania.ConfigIni.bAutoPlay.Guitar ) ) || ( ( pChip.e楽器パート == E楽器パート.BASS ) && CDTXMania.ConfigIni.bAutoPlay.Bass ) )
\r
1075 this.bAUTOでないチップが1つでもバーを通過した = true;
\r
1077 switch( pChip.e楽器パート )
\r
1079 case E楽器パート.DRUMS:
\r
1080 this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], flag ? E判定.Auto : auto );
\r
1083 case E楽器パート.GUITAR:
\r
1084 this.actJudgeString.Start( 10, flag ? E判定.Auto : auto );
\r
1088 this.actJudgeString.Start( 11, flag ? E判定.Auto : auto );
\r
1091 if( !flag && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) )
\r
1093 this.t判定にあわせてゲージを増減する( pChip.e楽器パート, auto );
\r
1096 switch( pChip.e楽器パート )
\r
1098 case E楽器パート.DRUMS:
\r
1099 if( ( auto != E判定.Miss ) && ( auto != E判定.Bad ) )
\r
1101 STHITCOUNTOFRANK sthitcountofrank;
\r
1103 ( sthitcountofrank = this.nヒット数・Auto含む.Drums )[ num4 = (int) auto ] = sthitcountofrank[ num4 ] + 1;
\r
1106 this.nヒット数・Auto含む.Drums.Miss++;
\r
1109 case E楽器パート.GUITAR:
\r
1110 if( ( auto != E判定.Miss ) && ( auto != E判定.Bad ) )
\r
1112 STHITCOUNTOFRANK sthitcountofrank3;
\r
1114 ( sthitcountofrank3 = this.nヒット数・Auto含む.Guitar )[ num6 = (int) auto ] = sthitcountofrank3[ num6 ] + 1;
\r
1118 this.nヒット数・Auto含む.Guitar.Miss++;
\r
1122 STHITCOUNTOFRANK sthitcountofrank4;
\r
1128 this.nヒット数・Auto含まない.Guitar.Miss++;
\r
1131 ( sthitcountofrank4 = this.nヒット数・Auto含まない.Guitar )[ num7 = (int) auto ] = sthitcountofrank4[ num7 ] + 1;
\r
1136 if( ( auto != E判定.Miss ) && ( auto != E判定.Bad ) )
\r
1138 STHITCOUNTOFRANK sthitcountofrank5;
\r
1140 ( sthitcountofrank5 = this.nヒット数・Auto含む.Bass )[ num8 = (int) auto ] = sthitcountofrank5[ num8 ] + 1;
\r
1144 this.nヒット数・Auto含む.Bass.Miss++;
\r
1148 STHITCOUNTOFRANK sthitcountofrank6;
\r
1154 this.nヒット数・Auto含まない.Bass.Miss++;
\r
1157 ( sthitcountofrank6 = this.nヒット数・Auto含まない.Bass )[ num9 = (int) auto ] = sthitcountofrank6[ num9 ] + 1;
\r
1166 STHITCOUNTOFRANK sthitcountofrank2;
\r
1172 this.nヒット数・Auto含まない.Drums.Miss++;
\r
1175 ( sthitcountofrank2 = this.nヒット数・Auto含まない.Drums )[ num5 = (int) auto ] = sthitcountofrank2[ num5 ] + 1;
\r
1178 if( CDTXMania.ConfigIni.bドラムが全部オートプレイである || !flag )
\r
1180 drums = this.actCOMBO.n現在のコンボ数.Drums;
\r
1193 this.actCOMBO.n現在のコンボ数.Drums = drums;
\r
1197 drums = this.actCOMBO.n現在のコンボ数.Guitar;
\r
1210 this.actCOMBO.n現在のコンボ数.Guitar = drums;
\r
1213 drums = this.actCOMBO.n現在のコンボ数.Bass;
\r
1226 this.actCOMBO.n現在のコンボ数.Bass = drums;
\r
1228 if( ( !flag && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( ( auto != E判定.Miss ) && ( auto != E判定.Bad ) ) )
\r
1231 if( pChip.e楽器パート == E楽器パート.DRUMS )
\r
1233 guitar = this.actCOMBO.n現在のコンボ数.Drums;
\r
1235 if( pChip.e楽器パート == E楽器パート.GUITAR )
\r
1237 guitar = this.actCOMBO.n現在のコンボ数.Guitar;
\r
1239 if( pChip.e楽器パート == E楽器パート.BASS )
\r
1241 guitar = this.actCOMBO.n現在のコンボ数.Bass;
\r
1243 long nScore = this.actScore.Get( pChip.e楽器パート );
\r
1244 long[] numArray = new long[] { 350L, 200L, 50L, 0L };
\r
1245 if( ( guitar <= 500 ) || ( auto == E判定.Good ) )
\r
1247 nScore += numArray[ (int) auto ] * guitar;
\r
1249 else if( ( auto == E判定.Perfect ) || ( auto == E判定.Great ) )
\r
1251 nScore += numArray[ (int) auto ] * 500L;
\r
1253 this.actScore.Set( pChip.e楽器パート, nScore );
\r
1257 private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )
\r
1259 this.tチップのヒット処理・BadならびにTight時のMiss( part, 0 );
\r
1261 private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )
\r
1263 this.bAUTOでないチップが1つでもバーを通過した = true;
\r
1264 this.t判定にあわせてゲージを増減する( part, E判定.Miss );
\r
1267 case E楽器パート.DRUMS:
\r
1268 if( ( nLane >= 0 ) && ( nLane <= 7 ) )
\r
1270 this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss );
\r
1272 this.actCOMBO.n現在のコンボ数.Drums = 0;
\r
1275 case E楽器パート.GUITAR:
\r
1276 this.actJudgeString.Start( 10, E判定.Bad );
\r
1277 this.actCOMBO.n現在のコンボ数.Guitar = 0;
\r
1281 this.actJudgeString.Start( 11, E判定.Bad );
\r
1282 this.actCOMBO.n現在のコンボ数.Bass = 0;
\r
1286 private bool tドラムヒット処理( long nHitTime, Eパッド type, CDTX.CChip pChip, int n強弱度合い0to127 )
\r
1288 if( pChip == null )
\r
1292 E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip );
\r
1293 if( e判定 == E判定.Miss )
\r
1297 this.tチップのヒット処理( nHitTime, pChip );
\r
1298 int index = pChip.nチャンネル番号;
\r
1299 if( ( index >= 0x11 ) && ( index <= 0x1a ) )
\r
1303 else if( ( index >= 0x31 ) && ( index <= 0x3a ) )
\r
1307 int num2 = this.nチャンネル0Atoレーン07[ index ];
\r
1308 int nLane = this.nチャンネル0Atoパッド08[ index ];
\r
1309 this.actLaneFlushD.Start( (Eドラムレーン) num2, ( (float) n強弱度合い0to127 ) / 127f );
\r
1310 this.actPad.Hit( nLane );
\r
1311 if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )
\r
1313 bool flag = this.bフィルイン中;
\r
1314 bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );
\r
1315 bool flag3 = flag2;
\r
1316 this.actChipFireD.Start( (Eドラムレーン) num2, flag, flag2, flag3 );
\r
1318 if( CDTXMania.ConfigIni.bドラム打音を発声する )
\r
1320 CDTX.CChip rChip = null;
\r
1321 bool flag4 = true;
\r
1322 if( ( ( type == Eパッド.HH ) || ( type == Eパッド.HHO ) ) || ( type == Eパッド.LC ) )
\r
1324 flag4 = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1326 else if( ( type == Eパッド.LT ) || ( type == Eパッド.FT ) )
\r
1328 flag4 = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1330 else if( ( type == Eパッド.CY ) || ( type == Eパッド.RD ) )
\r
1332 flag4 = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;
\r
1341 if( !CDTXMania.DTX.bチップがある.HHOpen && ( type == Eパッド.HHO ) )
\r
1345 if( !CDTXMania.DTX.bチップがある.Ride && ( type == Eパッド.RD ) )
\r
1349 if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( type == Eパッド.LC ) )
\r
1353 rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nHitTime, this.nパッド0Atoチャンネル0A[ (int) hH ] );
\r
1354 if( rChip == null )
\r
1359 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );
\r
1363 private void tパネル文字列の設定()
\r
1365 this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );
\r
1367 private void tキー入力()
\r
1369 IInputDevice keyboard = CDTXMania.Input管理.Keyboard;
\r
1370 if( keyboard.bキーが押された( 0x36 ) && ( keyboard.bキーが押されている( 120 ) || keyboard.bキーが押されている( 0x4e ) ) )
\r
1372 this.bPAUSE = !this.bPAUSE;
\r
1375 CDTXMania.Timer.t一時停止();
\r
1376 CDTXMania.DTX.t全チップの再生一時停止();
\r
1380 CDTXMania.Timer.t再開();
\r
1381 CDTXMania.DTX.t全チップの再生再開();
\r
1384 if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1389 if( keyboard.bキーが押された( 0x84 ) && ( keyboard.bキーが押されている( 120 ) || keyboard.bキーが押されている( 0x4e ) ) )
\r
1391 CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( 0x4b ) || keyboard.bキーが押されている( 0x74 ) ) ? 1 : 10 );
\r
1392 CDTXMania.DTX.tWave再生位置自動補正();
\r
1394 else if( keyboard.bキーが押された( 50 ) && ( keyboard.bキーが押されている( 120 ) || keyboard.bキーが押されている( 0x4e ) ) )
\r
1396 CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( 0x4b ) || keyboard.bキーが押されている( 0x74 ) ) ? -1 : -10 );
\r
1397 CDTXMania.DTX.tWave再生位置自動補正();
\r
1399 else if( keyboard.bキーが押された( 0x84 ) )
\r
1401 CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 0x7cf );
\r
1403 else if( keyboard.bキーが押された( 50 ) )
\r
1405 CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );
\r
1407 else if( keyboard.bキーが押された( 0x31 ) )
\r
1409 CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;
\r
1411 else if( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( 0x35 ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )
\r
1413 this.actFO.tフェードアウト開始();
\r
1414 base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;
\r
1415 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;
\r
1419 private void t進行描画・AVI()
\r
1421 if( ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( !CDTXMania.ConfigIni.bストイックモード && CDTXMania.ConfigIni.bAVI有効 ) )
\r
1423 this.actAVI.t進行描画( 0x152, 0x39 );
\r
1426 private void t進行描画・BGA()
\r
1428 if( ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( !CDTXMania.ConfigIni.bストイックモード && CDTXMania.ConfigIni.bBGA有効 ) )
\r
1430 this.actBGA.t進行描画( 0x152, 0x39 );
\r
1433 private void t進行描画・DANGER()
\r
1435 this.actDANGER.t進行描画( this.actGauge.db現在のゲージ値 < 0.3 );
\r
1437 private void t進行描画・MIDIBGM()
\r
1439 if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )
\r
1441 CStage.Eフェーズ eフェーズid1 = base.eフェーズID;
\r
1444 private void t進行描画・RGBボタン()
\r
1446 if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
1448 this.actRGB.On進行描画();
\r
1451 private void t進行描画・STAGEFAILED()
\r
1453 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
1455 this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;
\r
1456 base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;
\r
1457 this.actFO.tフェードアウト開始();
\r
1460 private void t進行描画・WailingBonus()
\r
1462 if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1464 this.actWailingBonus.On進行描画();
\r
1467 private void t進行描画・Wailing枠()
\r
1469 if( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1471 if( CDTXMania.DTX.bチップがある.Guitar && ( this.txWailing枠 != null ) )
\r
1473 this.txWailing枠.t2D描画( CDTXMania.app.Device, 0x24b, CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45 );
\r
1475 if( CDTXMania.DTX.bチップがある.Bass && ( this.txWailing枠 != null ) )
\r
1477 this.txWailing枠.t2D描画( CDTXMania.app.Device, 0x1de, CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45 );
\r
1481 private void t進行描画・ギターベースフレーム()
\r
1483 if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1485 if( CDTXMania.DTX.bチップがある.Guitar )
\r
1487 for( int i = 0; i < 0x163; i += 0x80 )
\r
1489 Rectangle rectangle = new Rectangle( 0, 0, 0x6d, 0x80 );
\r
1490 if( ( i + 0x80 ) > 0x163 )
\r
1492 rectangle.Height -= ( i + 0x80 ) - 0x163;
\r
1494 if( this.txレーンフレームGB != null )
\r
1496 this.txレーンフレームGB.t2D描画( CDTXMania.app.Device, 0x1fb, 0x39 + i, rectangle );
\r
1500 if( CDTXMania.DTX.bチップがある.Bass )
\r
1502 for( int j = 0; j < 0x163; j += 0x80 )
\r
1504 Rectangle rectangle2 = new Rectangle( 0, 0, 0x6d, 0x80 );
\r
1505 if( ( j + 0x80 ) > 0x163 )
\r
1507 rectangle2.Height -= ( j + 0x80 ) - 0x163;
\r
1509 if( this.txレーンフレームGB != null )
\r
1511 this.txレーンフレームGB.t2D描画( CDTXMania.app.Device, 0x18e, 0x39 + j, rectangle2 );
\r
1517 private void t進行描画・ギターベース判定ライン()
\r
1519 if( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
1521 if( CDTXMania.DTX.bチップがある.Guitar )
\r
1523 int y = ( CDTXMania.ConfigIni.bReverse.Guitar ? 0x176 : 0x5f ) - 3;
\r
1524 for( int i = 0; i < 3; i++ )
\r
1526 if( this.txヒットバーGB != null )
\r
1528 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, 0x1fd + ( 0x1a * i ), y );
\r
1529 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, ( 0x1fd + ( 0x1a * i ) ) + 0x10, y, new Rectangle( 0, 0, 10, 0x10 ) );
\r
1533 if( CDTXMania.DTX.bチップがある.Bass )
\r
1535 int num3 = ( CDTXMania.ConfigIni.bReverse.Bass ? 0x176 : 0x5f ) - 3;
\r
1536 for( int j = 0; j < 3; j++ )
\r
1538 if( this.txヒットバーGB != null )
\r
1540 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, 400 + ( 0x1a * j ), num3 );
\r
1541 this.txヒットバーGB.t2D描画( CDTXMania.app.Device, ( 400 + ( 0x1a * j ) ) + 0x10, num3, new Rectangle( 0, 0, 10, 0x10 ) );
\r
1547 private void t進行描画・ゲージ()
\r
1549 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
1551 this.actGauge.On進行描画();
\r
1554 private void t進行描画・コンボ()
\r
1556 this.actCOMBO.On進行描画();
\r
1558 private void t進行描画・スコア()
\r
1560 this.actScore.On進行描画();
\r
1562 private void t進行描画・ステータスパネル()
\r
1564 this.actStatusPanels.On進行描画();
\r
1566 private bool t進行描画・チップ()
\r
1568 if( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
1572 if( ( this.n現在のトップChip == -1 ) || ( this.n現在のトップChip >= CDTXMania.DTX.listChip.Count ) )
\r
1577 //double speed = 264.0; // BPM150の時の1小節の長さ[dot]
\r
1578 double speed = 234.0; // BPM150の時の1小節の長さ[dot]
\r
1580 double num = ( ( ( ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.0 ) * 0.5 ) * 37.5 ) * speed ) / 60000.0;
\r
1581 double num2 = ( ( ( ( ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 ) * 0.5 ) * 37.5 ) * speed ) / 60000.0;
\r
1582 double num3 = ( ( ( ( ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Bass + 1.0 ) * 0.5 ) * 0.5 ) * 37.5 ) * speed ) / 60000.0;
\r
1583 int num4 = this.n現在のトップChip;
\r
1588 CDTX dTX = CDTXMania.DTX;
\r
1589 CConfigIni configIni = CDTXMania.ConfigIni;
\r
1590 while( num4 < dTX.listChip.Count )
\r
1593 CDTX.CChip pChip = dTX.listChip[ num4 ];
\r
1594 pChip.nバーからの距離dot.Drums = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * num );
\r
1595 pChip.nバーからの距離dot.Guitar = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * num2 );
\r
1596 pChip.nバーからの距離dot.Bass = (int) ( ( pChip.n発声時刻ms - CDTXMania.Timer.n現在時刻 ) * num3 );
\r
1597 if( Math.Min( Math.Min( pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar ), pChip.nバーからの距離dot.Bass ) > 450 )
\r
1601 if( ( ( num4 == this.n現在のトップChip ) && ( pChip.nバーからの距離dot.Drums < -65 ) ) && pChip.bHit )
\r
1603 this.n現在のトップChip++;
\r
1604 num4 = this.n現在のトップChip;
\r
1607 if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) && ( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip ) == E判定.Miss ) ) )
\r
1609 this.tチップのヒット処理( CDTXMania.Timer.n現在時刻, pChip );
\r
1611 switch( pChip.nチャンネル番号 )
\r
1614 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1616 pChip.bHit = true;
\r
1617 if( configIni.bBGM音を発声する )
\r
1619 dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
1625 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1627 pChip.bHit = true;
\r
1628 this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;
\r
1640 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1642 pChip.bHit = true;
\r
1643 if( configIni.bBGA有効 )
\r
1645 switch( pChip.eBGA種別 )
\r
1647 case EBGA種別.BMPTEX:
\r
1648 if( pChip.rBMPTEX != null )
\r
1650 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
1655 if( ( pChip.rBGA != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )
\r
1657 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
1661 case EBGA種別.BGAPAN:
\r
1662 if( ( pChip.rBGAPan != null ) && ( ( pChip.rBMP != null ) || ( pChip.rBMPTEX != null ) ) )
\r
1664 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
1669 if( pChip.rBMP != null )
\r
1671 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
1680 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1682 pChip.bHit = true;
\r
1683 if( dTX.listBPM.ContainsKey( pChip.n整数値・内部番号 ) )
\r
1685 this.actPlayInfo.dbBPM = ( dTX.listBPM[ pChip.n整数値・内部番号 ].dbBPM値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;
\r
1700 num6 = this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ];
\r
1701 if( configIni.bDrums有効 )
\r
1703 if( configIni.bSudden.Drums )
\r
1705 if( pChip.nバーからの距離dot.Drums < 200 )
\r
1708 pChip.n透明度 = 0xff;
\r
1710 else if( pChip.nバーからの距離dot.Drums < 250 )
\r
1713 pChip.n透明度 = 0xff - ( (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 200 ) ) * 255.0 ) / 50.0 ) );
\r
1717 pChip.b可視 = false;
\r
1721 if( configIni.bHidden.Drums )
\r
1723 if( pChip.nバーからの距離dot.Drums < 100 )
\r
1725 pChip.b可視 = false;
\r
1727 else if( pChip.nバーからの距離dot.Drums < 150 )
\r
1730 pChip.n透明度 = (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 100 ) ) * 255.0 ) / 50.0 );
\r
1733 if( !pChip.bHit && pChip.b可視 )
\r
1735 if( this.txチップ != null )
\r
1737 this.txチップ.n透明度 = pChip.n透明度;
\r
1739 int x = this.nチャンネルtoX座標[ pChip.nチャンネル番号 - 0x11 ];
\r
1740 int num8 = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );
\r
1741 if( this.txチップ != null )
\r
1743 this.txチップ.vc拡大縮小倍率 = new Vector3( (float) pChip.dbチップサイズ倍率, (float) pChip.dbチップサイズ倍率, 1f );
\r
1745 int num9 = this.ctチップ模様アニメ.Drums.n現在の値;
\r
1746 switch( pChip.nチャンネル番号 )
\r
1749 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1750 if( this.txチップ != null )
\r
1752 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );
\r
1757 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1758 if( this.txチップ != null )
\r
1760 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );
\r
1765 x = ( x + 0x16 ) - ( (int) ( ( 44.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1766 if( this.txチップ != null )
\r
1768 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );
\r
1773 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1774 if( this.txチップ != null )
\r
1776 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );
\r
1781 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1782 if( this.txチップ != null )
\r
1784 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );
\r
1789 x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1790 if( this.txチップ != null )
\r
1792 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );
\r
1793 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );
\r
1798 x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1799 if( this.txチップ != null )
\r
1801 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );
\r
1806 x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1807 if( this.txチップ != null )
\r
1809 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );
\r
1810 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );
\r
1815 x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1816 if( this.txチップ != null )
\r
1818 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );
\r
1819 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );
\r
1824 x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );
\r
1825 if( this.txチップ != null )
\r
1827 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );
\r
1828 this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );
\r
1832 if( this.txチップ != null )
\r
1834 this.txチップ.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f );
\r
1835 this.txチップ.n透明度 = 0xff;
\r
1838 if( ( configIni.bAutoPlay[ num6 ] && !pChip.bHit ) && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1840 pChip.bHit = true;
\r
1841 this.actLaneFlushD.Start( (Eドラムレーン) num6, ( (float) CInput管理.n通常音量 ) / 127f );
\r
1842 bool flag = this.bフィルイン中;
\r
1843 bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );
\r
1844 bool flag3 = flag2;
\r
1845 this.actChipFireD.Start( (Eドラムレーン) num6, flag, flag2, flag3 );
\r
1846 this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] );
\r
1847 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );
\r
1848 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
1852 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1854 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );
\r
1855 pChip.bHit = true;
\r
1860 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
1862 pChip.bHit = true;
\r
1863 this.r現在の歓声Chip.Drums = pChip;
\r
1875 if( configIni.bGuitar有効 )
\r
1877 if( configIni.bSudden.Guitar )
\r
1879 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;
\r
1881 if( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )
\r
1883 pChip.b可視 = false;
\r
1885 if( !pChip.bHit && pChip.b可視 )
\r
1887 int num10 = configIni.bReverse.Guitar ? ( 0x176 - pChip.nバーからの距離dot.Guitar ) : ( 0x5f + pChip.nバーからの距離dot.Guitar );
\r
1888 if( ( num10 > 0x39 ) && ( num10 < 0x19c ) )
\r
1890 int num11 = this.ctチップ模様アニメ.Guitar.n現在の値;
\r
1891 if( pChip.nチャンネル番号 == 0x20 )
\r
1893 if( this.txチップ != null )
\r
1895 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, num10 - 2, new Rectangle( 0x10c, 0x90 + ( ( num11 % 5 ) * 6 ), 0x4c, 6 ) );
\r
1898 else if( !configIni.bLeft.Guitar )
\r
1900 Rectangle rectangle = new Rectangle( 0x10c, num11 * 6, 0x18, 6 );
\r
1901 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
1903 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, num10 - 3, rectangle );
\r
1905 rectangle.X += 0x18;
\r
1906 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
1908 this.txチップ.t2D描画( CDTXMania.app.Device, 0x217, num10 - 3, rectangle );
\r
1910 rectangle.X += 0x18;
\r
1911 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
1913 this.txチップ.t2D描画( CDTXMania.app.Device, 0x231, num10 - 3, rectangle );
\r
1918 Rectangle rectangle2 = new Rectangle( 0x10c, num11 * 6, 0x18, 6 );
\r
1919 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
1921 this.txチップ.t2D描画( CDTXMania.app.Device, 0x231, num10 - 3, rectangle2 );
\r
1923 rectangle2.X += 0x18;
\r
1924 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
1926 this.txチップ.t2D描画( CDTXMania.app.Device, 0x217, num10 - 3, rectangle2 );
\r
1928 rectangle2.X += 0x18;
\r
1929 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
1931 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fd, num10 - 3, rectangle2 );
\r
1936 if( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
1938 pChip.bHit = true;
\r
1939 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
1941 this.actChipFireGB.Start( 0 );
\r
1943 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
1945 this.actChipFireGB.Start( 1 );
\r
1947 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 0x20 ) )
\r
1949 this.actChipFireGB.Start( 2 );
\r
1951 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );
\r
1952 this.r次にくるギターChip = null;
\r
1953 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
1957 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
1959 pChip.bHit = true;
\r
1960 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.GUITAR, dTX.nモニタを考慮した音量( E楽器パート.GUITAR ) );
\r
1965 if( configIni.bGuitar有効 )
\r
1967 if( configIni.bSudden.Guitar )
\r
1969 pChip.b可視 = pChip.nバーからの距離dot.Guitar < 200;
\r
1971 if( configIni.bHidden.Guitar && ( pChip.nバーからの距離dot.Guitar < 100 ) )
\r
1973 pChip.b可視 = false;
\r
1975 if( !pChip.bHit && pChip.b可視 )
\r
1978 int num15 = configIni.bReverse.Guitar ? ( 0x176 - pChip.nバーからの距離dot.Guitar ) : ( 0x5f + pChip.nバーからの距離dot.Guitar );
\r
1979 int num16 = num15 - 0x39;
\r
1981 if( ( num16 < ( 0x163 + num14 ) ) && ( num16 > -num14 ) )
\r
1983 int num18 = this.ctWailingチップ模様アニメ.n現在の値;
\r
1984 Rectangle rectangle5 = new Rectangle( 0x10c + ( num18 * 20 ), 0xae, 20, 50 );
\r
1985 if( num16 < num14 )
\r
1987 rectangle5.Y += num14 - num16;
\r
1988 rectangle5.Height -= num14 - num16;
\r
1989 num17 = num14 - num16;
\r
1991 if( num16 > ( 0x163 - num14 ) )
\r
1993 rectangle5.Height -= num16 - ( 0x163 - num14 );
\r
1995 if( ( rectangle5.Bottom > rectangle5.Top ) && ( this.txチップ != null ) )
\r
1997 this.txチップ.t2D描画( CDTXMania.app.Device, 0x24c, ( num15 - num14 ) + num17, rectangle5 );
\r
2001 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2003 pChip.bHit = true;
\r
2004 if( configIni.bAutoPlay.Guitar )
\r
2006 this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );
\r
2011 pChip.bHit = true;
\r
2015 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2017 pChip.bHit = true;
\r
2018 this.r現在の歓声Chip.Guitar = pChip;
\r
2032 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2034 pChip.bHit = true;
\r
2040 int num24 = pChip.n発声位置 / 0x180;
\r
2041 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2043 pChip.bHit = true;
\r
2044 this.actPlayInfo.n小節番号 = num24 - 1;
\r
2045 if( configIni.bWave再生位置自動調整機能有効 )
\r
2047 dTX.tWave再生位置自動補正();
\r
2050 if( configIni.bDrums有効 )
\r
2052 if( configIni.b演奏情報を表示する && ( configIni.eDark == Eダークモード.OFF ) )
\r
2054 int num28 = num24 - 1;
\r
2055 CDTXMania.act文字コンソール.tPrint( 0x14d, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 0x11 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 0x11 ), C文字コンソール.Eフォント種別.白, num28.ToString() );
\r
2057 if( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )
\r
2059 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
2062 if( ( pChip.b可視 && configIni.bGuitar有効 ) && ( configIni.eDark != Eダークモード.FULL ) )
\r
2064 int y = configIni.bReverse.Guitar ? ( ( 0x176 - pChip.nバーからの距離dot.Guitar ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Guitar ) - 1 );
\r
2065 if( ( dTX.bチップがある.Guitar && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )
\r
2067 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1fb, y, new Rectangle( 0, 450, 0x4e, 1 ) );
\r
2069 y = configIni.bReverse.Bass ? ( ( 0x176 - pChip.nバーからの距離dot.Bass ) - 1 ) : ( ( 0x5f + pChip.nバーからの距離dot.Bass ) - 1 );
\r
2070 if( ( dTX.bチップがある.Bass && ( y > 0x39 ) ) && ( ( y < 0x19c ) && ( this.txチップ != null ) ) )
\r
2072 this.txチップ.t2D描画( CDTXMania.app.Device, 0x18e, y, new Rectangle( 0, 450, 0x4e, 1 ) );
\r
2078 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2080 pChip.bHit = true;
\r
2082 if( ( ( configIni.eDark != Eダークモード.FULL ) && pChip.b可視 ) && ( this.txチップ != null ) )
\r
2084 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
2089 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2091 pChip.bHit = true;
\r
2096 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2098 pChip.bHit = true;
\r
2099 switch( pChip.n整数値 )
\r
2102 if( configIni.bフィルイン有効 )
\r
2104 this.bフィルイン中 = true;
\r
2109 if( configIni.bフィルイン有効 )
\r
2111 this.bフィルイン中 = false;
\r
2113 if( ( ( this.actCOMBO.n現在のコンボ数.Drums > 0 ) || configIni.bドラムが全部オートプレイである ) && configIni.b歓声を発声する )
\r
2115 if( this.r現在の歓声Chip.Drums != null )
\r
2117 dTX.tチップの再生( this.r現在の歓声Chip.Drums, CDTXMania.Timer.nシステム時刻, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
2121 CDTXMania.Skin.sound歓声音.n位置・次に鳴るサウンド = 0;
\r
2122 CDTXMania.Skin.sound歓声音.t再生する();
\r
2131 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2133 pChip.bHit = true;
\r
2134 if( configIni.bAVI有効 )
\r
2136 switch( pChip.eAVI種別 )
\r
2139 if( pChip.rAVI != null )
\r
2141 this.actAVI.Start( pChip.nチャンネル番号, pChip.rAVI, 0x116, 0x163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pChip.n発声時刻ms );
\r
2145 case EAVI種別.AVIPAN:
\r
2146 if( pChip.rAVIPan != null )
\r
2148 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
2188 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2190 pChip.bHit = true;
\r
2191 if( configIni.bBGM音を発声する )
\r
2193 dTX.tWavの再生停止( this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] );
\r
2194 dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );
\r
2195 this.n最後に再生したBGMの実WAV番号[ pChip.nチャンネル番号 - 0x61 ] = pChip.n整数値・内部番号;
\r
2208 if( configIni.bGuitar有効 )
\r
2210 if( configIni.bSudden.Bass )
\r
2212 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;
\r
2214 if( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )
\r
2216 pChip.b可視 = false;
\r
2218 if( !pChip.bHit && pChip.b可視 )
\r
2220 int num12 = configIni.bReverse.Bass ? ( 0x176 - pChip.nバーからの距離dot.Bass ) : ( 0x5f + pChip.nバーからの距離dot.Bass );
\r
2221 if( ( num12 > 0x39 ) && ( num12 < 0x19c ) )
\r
2223 int num13 = this.ctチップ模様アニメ.Bass.n現在の値;
\r
2224 if( pChip.nチャンネル番号 == 160 )
\r
2226 if( this.txチップ != null )
\r
2228 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 2, new Rectangle( 0x10c, 0x90 + ( ( num13 % 5 ) * 6 ), 0x4c, 6 ) );
\r
2231 else if( !configIni.bLeft.Bass )
\r
2233 Rectangle rectangle3 = new Rectangle( 0x10c, num13 * 6, 0x18, 6 );
\r
2234 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
2236 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 3, rectangle3 );
\r
2238 rectangle3.X += 0x18;
\r
2239 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
2241 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1aa, num12 - 3, rectangle3 );
\r
2243 rectangle3.X += 0x18;
\r
2244 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
2246 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1c4, num12 - 3, rectangle3 );
\r
2251 Rectangle rectangle4 = new Rectangle( 0x10c, num13 * 6, 0x18, 6 );
\r
2252 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) && ( this.txチップ != null ) )
\r
2254 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1c4, num12 - 3, rectangle4 );
\r
2256 rectangle4.X += 0x18;
\r
2257 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) && ( this.txチップ != null ) )
\r
2259 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1aa, num12 - 3, rectangle4 );
\r
2261 rectangle4.X += 0x18;
\r
2262 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) && ( this.txチップ != null ) )
\r
2264 this.txチップ.t2D描画( CDTXMania.app.Device, 400, num12 - 3, rectangle4 );
\r
2269 if( ( configIni.bAutoPlay.Bass && !pChip.bHit ) && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2271 pChip.bHit = true;
\r
2272 if( ( ( pChip.nチャンネル番号 & 4 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
2274 this.actChipFireGB.Start( 3 );
\r
2276 if( ( ( pChip.nチャンネル番号 & 2 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
2278 this.actChipFireGB.Start( 4 );
\r
2280 if( ( ( pChip.nチャンネル番号 & 1 ) != 0 ) || ( pChip.nチャンネル番号 == 160 ) )
\r
2282 this.actChipFireGB.Start( 5 );
\r
2284 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );
\r
2285 this.r次にくるベースChip = null;
\r
2286 this.tチップのヒット処理( pChip.n発声時刻ms, pChip );
\r
2290 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2292 this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.BASS, dTX.nモニタを考慮した音量( E楽器パート.BASS ) );
\r
2293 pChip.bHit = true;
\r
2298 if( configIni.bGuitar有効 )
\r
2300 if( configIni.bSudden.Bass )
\r
2302 pChip.b可視 = pChip.nバーからの距離dot.Bass < 200;
\r
2304 if( configIni.bHidden.Bass && ( pChip.nバーからの距離dot.Bass < 100 ) )
\r
2306 pChip.b可視 = false;
\r
2308 if( !pChip.bHit && pChip.b可視 )
\r
2311 int num20 = configIni.bReverse.Bass ? ( 0x176 - pChip.nバーからの距離dot.Bass ) : ( 0x5f + pChip.nバーからの距離dot.Bass );
\r
2312 int num21 = num20 - 0x39;
\r
2314 if( ( num21 < ( 0x163 + num19 ) ) && ( num21 > -num19 ) )
\r
2316 int num23 = this.ctWailingチップ模様アニメ.n現在の値;
\r
2317 Rectangle rectangle6 = new Rectangle( 0x10c + ( num23 * 20 ), 0xae, 20, 50 );
\r
2318 if( num21 < num19 )
\r
2320 rectangle6.Y += num19 - num21;
\r
2321 rectangle6.Height -= num19 - num21;
\r
2322 num22 = num19 - num21;
\r
2324 if( num21 > ( 0x163 - num19 ) )
\r
2326 rectangle6.Height -= num21 - ( 0x163 - num19 );
\r
2328 if( ( rectangle6.Bottom > rectangle6.Top ) && ( this.txチップ != null ) )
\r
2330 this.txチップ.t2D描画( CDTXMania.app.Device, 0x1df, ( num20 - num19 ) + num22, rectangle6 );
\r
2334 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2336 pChip.bHit = true;
\r
2337 if( configIni.bAutoPlay.Bass )
\r
2339 this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );
\r
2344 pChip.bHit = true;
\r
2348 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2350 pChip.bHit = true;
\r
2351 this.r現在の歓声Chip.Bass = pChip;
\r
2365 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2367 pChip.bHit = true;
\r
2368 this.r現在の空うちドラムChip[ (int) this.eチャンネルtoパッド[ pChip.nチャンネル番号 - 0xb1 ] ] = pChip;
\r
2369 pChip.nチャンネル番号 = ( pChip.nチャンネル番号 != 0xbc ) ? ( ( pChip.nチャンネル番号 - 0xb1 ) + 0x11 ) : 0x1a;
\r
2374 if( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )
\r
2376 pChip.bHit = true;
\r
2377 this.r現在の空うちギターChip = pChip;
\r
2378 pChip.nチャンネル番号 = 0x20;
\r
2383 if( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )
\r
2385 pChip.bHit = true;
\r
2386 this.r現在の空うちベースChip = pChip;
\r
2387 pChip.nチャンネル番号 = 160;
\r
2399 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2401 pChip.bHit = true;
\r
2402 if( ( configIni.bBGA有効 && ( pChip.eBGA種別 == EBGA種別.BMP ) ) || ( pChip.eBGA種別 == EBGA種別.BMPTEX ) )
\r
2404 for( int i = 0; i < 8; i++ )
\r
2406 if( this.nBGAスコープチャンネルマップ[ 0, i ] == pChip.nチャンネル番号 )
\r
2408 this.actBGA.ChangeScope( this.nBGAスコープチャンネルマップ[ 1, i ], pChip.rBMP, pChip.rBMPTEX );
\r
2416 if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
\r
2418 pChip.bHit = true;
\r
2427 private void t進行描画・チップアニメ()
\r
2429 for( int i = 0; i < 3; i++ )
\r
2431 this.ctチップ模様アニメ[ i ].t進行Loop();
\r
2433 this.ctWailingチップ模様アニメ.t進行Loop();
\r
2435 private void t進行描画・チップファイアD()
\r
2437 this.actChipFireD.On進行描画();
\r
2439 private void t進行描画・チップファイアGB()
\r
2441 this.actChipFireGB.On進行描画();
\r
2443 private void t進行描画・ドラムパッド()
\r
2445 if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
2447 this.actPad.On進行描画();
\r
2450 private void t進行描画・パネル文字列()
\r
2452 if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )
\r
2454 this.actPanel.t進行描画( 0x150, 0x1ab );
\r
2457 private bool t進行描画・フェードイン・アウト()
\r
2459 switch( base.eフェーズID )
\r
2461 case CStage.Eフェーズ.共通_フェードイン:
\r
2462 if( this.actFI.On進行描画() != 0 )
\r
2464 base.eフェーズID = CStage.Eフェーズ.共通_通常状態;
\r
2468 case CStage.Eフェーズ.共通_フェードアウト:
\r
2469 case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:
\r
2470 if( this.actFO.On進行描画() != 0 )
\r
2476 case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:
\r
2477 if( this.actFOClear.On進行描画() == 0 )
\r
2485 private void t進行描画・レーンフラッシュD()
\r
2487 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
2489 this.actLaneFlushD.On進行描画();
\r
2492 private void t進行描画・レーンフラッシュGB()
\r
2494 if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && CDTXMania.ConfigIni.bGuitar有効 )
\r
2496 this.actLaneFlushGB.On進行描画();
\r
2499 private void t進行描画・演奏情報()
\r
2501 if( !CDTXMania.ConfigIni.b演奏情報を表示しない )
\r
2503 this.actPlayInfo.t進行描画( 0x152, 0x39 );
\r
2506 private void t進行描画・背景()
\r
2508 if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )
\r
2510 if( this.tx背景 != null )
\r
2512 this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );
\r
2517 CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );
\r
2520 private void t進行描画・判定ライン()
\r
2522 if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )
\r
2524 int y = CDTXMania.ConfigIni.bReverse.Drums ? 0x35 : 0x1a3;
\r
2525 for( int i = 0x20; i < 0x14f; i += 8 )
\r
2527 if( this.txヒットバー != null )
\r
2529 this.txヒットバー.t2D描画( CDTXMania.app.Device, i, y, new Rectangle( 0, 0, ( ( i + 8 ) >= 0x14f ) ? ( 7 - ( ( i + 8 ) - 0x14f ) ) : 8, 8 ) );
\r
2534 private void t進行描画・判定文字列1・通常位置指定の場合()
\r
2536 if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) != E判定文字表示位置.判定ライン上または横 )
\r
2538 this.actJudgeString.On進行描画();
\r
2541 private void t進行描画・判定文字列2・判定ライン上指定の場合()
\r
2543 if( ( (E判定文字表示位置) CDTXMania.ConfigIni.判定文字表示位置.Drums ) == E判定文字表示位置.判定ライン上または横 )
\r
2545 this.actJudgeString.On進行描画();
\r
2548 private void t進行描画・譜面スクロール速度()
\r
2550 this.act譜面スクロール速度.On進行描画();
\r
2552 private void t入力メソッド記憶( E楽器パート part )
\r
2554 if( CDTXMania.Pad.st検知したデバイス.Keyboard )
\r
2556 this.b演奏にキーボードを使った[ (int) part ] = true;
\r
2558 if( CDTXMania.Pad.st検知したデバイス.Joypad )
\r
2560 this.b演奏にジョイパッドを使った[ (int) part ] = true;
\r
2562 if( CDTXMania.Pad.st検知したデバイス.MIDIIN )
\r
2564 this.b演奏にMIDI入力を使った[ (int) part ] = true;
\r
2566 if( CDTXMania.Pad.st検知したデバイス.Mouse )
\r
2568 this.b演奏にマウスを使った[ (int) part ] = true;
\r
2571 private void t入力処理・ギター()
\r
2573 if( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )
\r
2575 if( CDTXMania.ConfigIni.bAutoPlay.Guitar )
\r
2577 CDTX.CChip chip = this.r次にくるギターChipを更新して返す();
\r
2578 if( chip != null )
\r
2580 if( ( chip.nチャンネル番号 & 4 ) != 0 )
\r
2582 this.actLaneFlushGB.Start( 0 );
\r
2583 this.actRGB.Push( 0 );
\r
2585 if( ( chip.nチャンネル番号 & 2 ) != 0 )
\r
2587 this.actLaneFlushGB.Start( 1 );
\r
2588 this.actRGB.Push( 1 );
\r
2590 if( ( chip.nチャンネル番号 & 1 ) != 0 )
\r
2592 this.actLaneFlushGB.Start( 2 );
\r
2593 this.actRGB.Push( 2 );
\r
2599 if( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.BD ) )
\r
2601 CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );
\r
2603 if( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.HH ) )
\r
2605 CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );
\r
2607 int num = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.HH ) ? 4 : 0;
\r
2608 this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2609 int num2 = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.SD ) ? 2 : 0;
\r
2610 this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2611 int num3 = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.BD ) ? 1 : 0;
\r
2612 this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2613 int num4 = ( num | num2 ) | num3;
\r
2616 this.actLaneFlushGB.Start( 0 );
\r
2617 this.actRGB.Push( 0 );
\r
2621 this.actLaneFlushGB.Start( 1 );
\r
2622 this.actRGB.Push( 1 );
\r
2626 this.actLaneFlushGB.Start( 2 );
\r
2627 this.actRGB.Push( 2 );
\r
2629 List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.HT );
\r
2630 if( ( events != null ) && ( events.Count > 0 ) )
\r
2632 this.t入力メソッド記憶( E楽器パート.GUITAR );
\r
2633 foreach( STInputEvent event2 in events )
\r
2636 if( !event2.b押された )
\r
2640 long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2641 CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f );
\r
2642 E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip );
\r
2643 if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == num4 ) ) && ( e判定 != E判定.Miss ) )
\r
2645 if( ( num != 0 ) || ( num4 == 0 ) )
\r
2647 this.actChipFireGB.Start( 0 );
\r
2649 if( ( num2 != 0 ) || ( num4 == 0 ) )
\r
2651 this.actChipFireGB.Start( 1 );
\r
2653 if( ( num3 != 0 ) || ( num4 == 0 ) )
\r
2655 this.actChipFireGB.Start( 2 );
\r
2657 this.tチップのヒット処理( nTime, pChip );
\r
2658 this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );
\r
2659 CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, 140 );
\r
2660 if( item != null )
\r
2662 this.queWailing.Guitar.Enqueue( item );
\r
2666 if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f ) ) != null ) )
\r
2668 this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );
\r
2670 if( !CDTXMania.ConfigIni.bLight.Guitar )
\r
2672 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.GUITAR );
\r
2676 List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.LT );
\r
2677 if( ( list2 != null ) && ( list2.Count > 0 ) )
\r
2679 foreach( STInputEvent event3 in list2 )
\r
2682 if( !event3.b押された )
\r
2686 long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2687 while( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )
\r
2689 if( ( num6 - chip5.n発声時刻ms ) <= 800 )
\r
2691 chip5.bHit = true;
\r
2692 this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );
\r
2693 if( !CDTXMania.ConfigIni.bAutoPlay.Guitar )
\r
2695 this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( this.actCOMBO.n現在のコンボ数.Guitar * 0xbb8L ) );
\r
2704 private void t入力処理・ドラム()
\r
2706 for( int nPad = 0; nPad < 10; nPad++ )
\r
2708 List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.DRUMS, (Eパッド) nPad );
\r
2710 if( ( events != null ) && ( events.Count != 0 ) )
\r
2712 this.t入力メソッド記憶( E楽器パート.DRUMS );
\r
2714 #region [ 打ち分けグループ調整 ]
\r
2715 //-----------------------------
\r
2716 EHHGroup eHHGroup = CDTXMania.ConfigIni.eHHGroup;
\r
2717 EFTGroup eFTGroup = CDTXMania.ConfigIni.eFTGroup;
\r
2718 ECYGroup eCYGroup = CDTXMania.ConfigIni.eCYGroup;
\r
2719 if( !CDTXMania.DTX.bチップがある.Ride && ( eCYGroup == ECYGroup.打ち分ける ) )
\r
2721 eCYGroup = ECYGroup.共通;
\r
2723 if( !CDTXMania.DTX.bチップがある.HHOpen && ( eHHGroup == EHHGroup.全部打ち分ける ) )
\r
2725 eHHGroup = EHHGroup.左シンバルのみ打ち分ける;
\r
2727 if( !CDTXMania.DTX.bチップがある.HHOpen && ( eHHGroup == EHHGroup.ハイハットのみ打ち分ける ) )
\r
2729 eHHGroup = EHHGroup.全部共通;
\r
2731 if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( eHHGroup == EHHGroup.全部打ち分ける ) )
\r
2733 eHHGroup = EHHGroup.ハイハットのみ打ち分ける;
\r
2735 if( !CDTXMania.DTX.bチップがある.LeftCymbal && ( eHHGroup == EHHGroup.左シンバルのみ打ち分ける ) )
\r
2737 eHHGroup = EHHGroup.全部共通;
\r
2739 //-----------------------------
\r
2742 foreach( STInputEvent event2 in events )
\r
2745 //-----------------------------
\r
2759 CDTX.CChip chip10;
\r
2760 CDTX.CChip chip11;
\r
2761 CDTX.CChip chip12;
\r
2762 CDTX.CChip chip13;
\r
2764 CDTX.CChip[] chipArray3;
\r
2771 CDTX.CChip chip15;
\r
2772 CDTX.CChip chip16;
\r
2775 CDTX.CChip chip17;
\r
2776 CDTX.CChip chip18;
\r
2779 CDTX.CChip chip19;
\r
2780 CDTX.CChip chip20;
\r
2781 CDTX.CChip chip21;
\r
2783 CDTX.CChip[] chipArray4;
\r
2790 CDTX.CChip chip23;
\r
2791 CDTX.CChip chip24;
\r
2793 CDTX.CChip[] chipArray5;
\r
2799 //-----------------------------
\r
2802 if( !event2.b押された )
\r
2805 long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
2806 bool flag = false;
\r
2809 #region [ switch( ( (Eパッド) nPad ) ) ]
\r
2810 //-----------------------------
\r
2811 switch( ( (Eパッド) nPad ) )
\r
2815 //-----------------------------
\r
2816 if( event2.nVelocity <= CDTXMania.ConfigIni.nハイハット切り捨て下限Velocity )
\r
2817 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
2819 chip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11 );
\r
2820 chip2 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18 );
\r
2821 chip3 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a );
\r
2822 e判定 = ( chip != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip ) : E判定.Miss;
\r
2823 e判定2 = ( chip2 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip2 ) : E判定.Miss;
\r
2824 e判定3 = ( chip3 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip3 ) : E判定.Miss;
\r
2825 switch( eHHGroup )
\r
2827 case EHHGroup.ハイハットのみ打ち分ける:
\r
2829 //-----------------------------
\r
2830 if( ( e判定 != E判定.Miss ) && ( e判定3 != E判定.Miss ) )
\r
2832 if( chip.n発声位置 < chip3.n発声位置 )
\r
2834 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2836 else if( chip.n発声位置 > chip3.n発声位置 )
\r
2838 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2842 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2843 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2847 else if( e判定 != E判定.Miss )
\r
2849 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2852 else if( e判定3 != E判定.Miss )
\r
2854 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2860 //-----------------------------
\r
2863 case EHHGroup.左シンバルのみ打ち分ける:
\r
2865 //-----------------------------
\r
2866 if( ( e判定 != E判定.Miss ) && ( e判定2 != E判定.Miss ) )
\r
2868 if( chip.n発声位置 < chip2.n発声位置 )
\r
2870 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2872 else if( chip.n発声位置 > chip2.n発声位置 )
\r
2874 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2878 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2879 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2883 else if( e判定 != E判定.Miss )
\r
2885 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2888 else if( e判定2 != E判定.Miss )
\r
2890 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2896 //-----------------------------
\r
2899 case EHHGroup.全部共通:
\r
2901 //-----------------------------
\r
2902 if( ( ( e判定 != E判定.Miss ) && ( e判定2 != E判定.Miss ) ) && ( e判定3 != E判定.Miss ) )
\r
2905 CDTX.CChip[] chipArray = new CDTX.CChip[] { chip, chip2, chip3 };
\r
2906 if( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )
\r
2908 chip4 = chipArray[ 1 ];
\r
2909 chipArray[ 1 ] = chipArray[ 2 ];
\r
2910 chipArray[ 2 ] = chip4;
\r
2912 if( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )
\r
2914 chip4 = chipArray[ 0 ];
\r
2915 chipArray[ 0 ] = chipArray[ 1 ];
\r
2916 chipArray[ 1 ] = chip4;
\r
2918 if( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )
\r
2920 chip4 = chipArray[ 1 ];
\r
2921 chipArray[ 1 ] = chipArray[ 2 ];
\r
2922 chipArray[ 2 ] = chip4;
\r
2924 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );
\r
2925 if( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )
\r
2927 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 1 ], event2.nVelocity );
\r
2929 if( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )
\r
2931 this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );
\r
2935 else if( ( e判定 != E判定.Miss ) && ( e判定2 != E判定.Miss ) )
\r
2937 if( chip.n発声位置 < chip2.n発声位置 )
\r
2939 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2941 else if( chip.n発声位置 > chip2.n発声位置 )
\r
2943 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2947 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2948 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2952 else if( ( e判定 != E判定.Miss ) && ( e判定3 != E判定.Miss ) )
\r
2954 if( chip.n発声位置 < chip3.n発声位置 )
\r
2956 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2958 else if( chip.n発声位置 > chip3.n発声位置 )
\r
2960 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2964 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2965 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2969 else if( ( e判定2 != E判定.Miss ) && ( e判定3 != E判定.Miss ) )
\r
2971 if( chip2.n発声位置 < chip3.n発声位置 )
\r
2973 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2975 else if( chip2.n発声位置 > chip3.n発声位置 )
\r
2977 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2981 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2982 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
2986 else if( e判定 != E判定.Miss )
\r
2988 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
2991 else if( e判定2 != E判定.Miss )
\r
2993 this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );
\r
2996 else if( e判定3 != E判定.Miss )
\r
2998 this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );
\r
3004 //-----------------------------
\r
3009 //-----------------------------
\r
3010 if( e判定 != E判定.Miss )
\r
3012 this.tドラムヒット処理( nTime, Eパッド.HH, chip, event2.nVelocity );
\r
3018 //-----------------------------
\r
3024 //-----------------------------
\r
3029 //-----------------------------
\r
3030 if( !this.tドラムヒット処理( nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip( nTime, 0x12 ), event2.nVelocity ) )
\r
3033 //-----------------------------
\r
3038 //-----------------------------
\r
3039 if( !this.tドラムヒット処理( nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip( nTime, 0x13 ), event2.nVelocity ) )
\r
3042 //-----------------------------
\r
3047 //-----------------------------
\r
3048 if( this.tドラムヒット処理( nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip( nTime, 20 ), event2.nVelocity ) )
\r
3051 //-----------------------------
\r
3056 //-----------------------------
\r
3057 chip15 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15 );
\r
3058 chip16 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17 );
\r
3059 e判定13 = ( chip15 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip15 ) : E判定.Miss;
\r
3060 e判定14 = ( chip16 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip16 ) : E判定.Miss;
\r
3061 switch( eFTGroup )
\r
3063 case EFTGroup.打ち分ける:
\r
3065 //-----------------------------
\r
3066 if( e判定13 != E判定.Miss )
\r
3068 this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );
\r
3072 //-----------------------------
\r
3077 //-----------------------------
\r
3078 if( ( e判定13 != E判定.Miss ) && ( e判定14 != E判定.Miss ) )
\r
3080 if( chip15.n発声位置 < chip16.n発声位置 )
\r
3082 this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );
\r
3084 else if( chip15.n発声位置 > chip16.n発声位置 )
\r
3086 this.tドラムヒット処理( nTime, Eパッド.LT, chip16, event2.nVelocity );
\r
3090 this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );
\r
3091 this.tドラムヒット処理( nTime, Eパッド.LT, chip16, event2.nVelocity );
\r
3095 else if( e判定13 != E判定.Miss )
\r
3097 this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );
\r
3100 else if( e判定14 != E判定.Miss )
\r
3102 this.tドラムヒット処理( nTime, Eパッド.LT, chip16, event2.nVelocity );
\r
3106 //-----------------------------
\r
3112 //-----------------------------
\r
3117 //-----------------------------
\r
3118 chip17 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15 );
\r
3119 chip18 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17 );
\r
3120 e判定15 = ( chip17 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip17 ) : E判定.Miss;
\r
3121 e判定16 = ( chip18 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip18 ) : E判定.Miss;
\r
3122 switch( eFTGroup )
\r
3124 case EFTGroup.打ち分ける:
\r
3126 //-----------------------------
\r
3127 if( e判定16 != E判定.Miss )
\r
3129 this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );
\r
3132 //-----------------------------
\r
3138 //-----------------------------
\r
3139 if( ( e判定15 != E判定.Miss ) && ( e判定16 != E判定.Miss ) )
\r
3141 if( chip17.n発声位置 < chip18.n発声位置 )
\r
3143 this.tドラムヒット処理( nTime, Eパッド.FT, chip17, event2.nVelocity );
\r
3145 else if( chip17.n発声位置 > chip18.n発声位置 )
\r
3147 this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );
\r
3151 this.tドラムヒット処理( nTime, Eパッド.FT, chip17, event2.nVelocity );
\r
3152 this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );
\r
3156 else if( e判定15 != E判定.Miss )
\r
3158 this.tドラムヒット処理( nTime, Eパッド.FT, chip17, event2.nVelocity );
\r
3161 else if( e判定16 != E判定.Miss )
\r
3163 this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );
\r
3166 //-----------------------------
\r
3173 //-----------------------------
\r
3178 //-----------------------------
\r
3180 chip19 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16 );
\r
3181 chip20 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19 );
\r
3182 chip21 = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a ) : null;
\r
3183 e判定17 = ( chip19 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip19 ) : E判定.Miss;
\r
3184 E判定 e判定18 = ( chip20 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip20 ) : E判定.Miss;
\r
3185 E判定 e判定19 = ( chip21 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip21 ) : E判定.Miss;
\r
3186 chipArray4 = new CDTX.CChip[] { chip19, chip20, chip21 };
\r
3187 e判定Array2 = new E判定[] { e判定17, e判定18, e判定19 };
\r
3192 while( num9 > num8 )
\r
3194 if( ( chipArray4[ num9 - 1 ] == null ) || ( ( chipArray4[ num9 ] != null ) && ( chipArray4[ num9 - 1 ].n発声位置 > chipArray4[ num9 ].n発声位置 ) ) )
\r
3196 CDTX.CChip chip22 = chipArray4[ num9 - 1 ];
\r
3197 chipArray4[ num9 - 1 ] = chipArray4[ num9 ];
\r
3198 chipArray4[ num9 ] = chip22;
\r
3199 E判定 e判定20 = e判定Array2[ num9 - 1 ];
\r
3200 e判定Array2[ num9 - 1 ] = e判定Array2[ num9 ];
\r
3201 e判定Array2[ num9 ] = e判定20;
\r
3207 switch( eCYGroup )
\r
3209 case ECYGroup.打ち分ける:
\r
3210 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3212 if( e判定17 != E判定.Miss )
\r
3214 this.tドラムヒット処理( nTime, Eパッド.CY, chip19, event2.nVelocity );
\r
3222 while( num10 < 3 )
\r
3224 if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chip19 ) || ( chipArray4[ num10 ] == chip21 ) ) )
\r
3226 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num10 ], event2.nVelocity );
\r
3232 if( e判定17 != E判定.Miss )
\r
3234 this.tドラムヒット処理( nTime, Eパッド.CY, chip19, event2.nVelocity );
\r
3242 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3245 while( num12 < 3 )
\r
3247 if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chip19 ) || ( chipArray4[ num12 ] == chip20 ) ) )
\r
3249 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num12 ], event2.nVelocity );
\r
3260 while( num11 < 3 )
\r
3262 if( e判定Array2[ num11 ] != E判定.Miss )
\r
3264 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num11 ], event2.nVelocity );
\r
3278 //-----------------------------
\r
3283 //-----------------------------
\r
3284 if( event2.nVelocity <= CDTXMania.ConfigIni.nハイハット切り捨て下限Velocity )
\r
3285 continue; // 電子ドラムによる意図的なクロストークを無効にする
\r
3287 chip5 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11 );
\r
3288 chip6 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18 );
\r
3289 chip7 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a );
\r
3290 e判定4 = ( chip5 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip5 ) : E判定.Miss;
\r
3291 e判定5 = ( chip6 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip6 ) : E判定.Miss;
\r
3292 e判定6 = ( chip7 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip7 ) : E判定.Miss;
\r
3293 switch( eHHGroup )
\r
3295 case EHHGroup.全部打ち分ける:
\r
3296 if( e判定5 != E判定.Miss )
\r
3298 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3305 case EHHGroup.ハイハットのみ打ち分ける:
\r
3306 if( ( e判定5 != E判定.Miss ) && ( e判定6 != E判定.Miss ) )
\r
3308 if( chip6.n発声位置 < chip7.n発声位置 )
\r
3310 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3312 else if( chip6.n発声位置 > chip7.n発声位置 )
\r
3314 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3318 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3319 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3323 else if( e判定5 != E判定.Miss )
\r
3325 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3328 else if( e判定6 != E判定.Miss )
\r
3330 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3337 case EHHGroup.左シンバルのみ打ち分ける:
\r
3338 if( ( e判定4 != E判定.Miss ) && ( e判定5 != E判定.Miss ) )
\r
3340 if( chip5.n発声位置 < chip6.n発声位置 )
\r
3342 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3344 else if( chip5.n発声位置 > chip6.n発声位置 )
\r
3346 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3350 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3351 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3355 else if( e判定4 != E判定.Miss )
\r
3357 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3360 else if( e判定5 != E判定.Miss )
\r
3362 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3369 case EHHGroup.全部共通:
\r
3370 if( ( ( e判定4 != E判定.Miss ) && ( e判定5 != E判定.Miss ) ) && ( e判定6 != E判定.Miss ) )
\r
3373 CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chip5, chip6, chip7 };
\r
3374 if( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )
\r
3376 chip8 = chipArray2[ 1 ];
\r
3377 chipArray2[ 1 ] = chipArray2[ 2 ];
\r
3378 chipArray2[ 2 ] = chip8;
\r
3380 if( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )
\r
3382 chip8 = chipArray2[ 0 ];
\r
3383 chipArray2[ 0 ] = chipArray2[ 1 ];
\r
3384 chipArray2[ 1 ] = chip8;
\r
3386 if( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )
\r
3388 chip8 = chipArray2[ 1 ];
\r
3389 chipArray2[ 1 ] = chipArray2[ 2 ];
\r
3390 chipArray2[ 2 ] = chip8;
\r
3392 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );
\r
3393 if( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )
\r
3395 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );
\r
3397 if( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )
\r
3399 this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );
\r
3403 else if( ( e判定4 != E判定.Miss ) && ( e判定5 != E判定.Miss ) )
\r
3405 if( chip5.n発声位置 < chip6.n発声位置 )
\r
3407 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3409 else if( chip5.n発声位置 > chip6.n発声位置 )
\r
3411 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3415 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3416 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3420 else if( ( e判定4 != E判定.Miss ) && ( e判定6 != E判定.Miss ) )
\r
3422 if( chip5.n発声位置 < chip7.n発声位置 )
\r
3424 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3426 else if( chip5.n発声位置 > chip7.n発声位置 )
\r
3428 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3432 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3433 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3437 else if( ( e判定5 != E判定.Miss ) && ( e判定6 != E判定.Miss ) )
\r
3439 if( chip6.n発声位置 < chip7.n発声位置 )
\r
3441 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3443 else if( chip6.n発声位置 > chip7.n発声位置 )
\r
3445 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3449 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3450 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3454 else if( e判定4 != E判定.Miss )
\r
3456 this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );
\r
3459 else if( e判定5 != E判定.Miss )
\r
3461 this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );
\r
3464 else if( e判定6 != E判定.Miss )
\r
3466 this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );
\r
3476 //-----------------------------
\r
3481 //-----------------------------
\r
3483 chip23 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16 );
\r
3484 chip24 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19 );
\r
3485 CDTX.CChip pChip = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a ) : null;
\r
3486 E判定 e判定21 = ( chip23 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip23 ) : E判定.Miss;
\r
3487 e判定22 = ( chip24 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip24 ) : E判定.Miss;
\r
3488 E判定 e判定23 = ( pChip != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, pChip ) : E判定.Miss;
\r
3489 chipArray5 = new CDTX.CChip[] { chip23, chip24, pChip };
\r
3490 e判定Array3 = new E判定[] { e判定21, e判定22, e判定23 };
\r
3492 while( num13 < 2 )
\r
3495 while( num14 > num13 )
\r
3497 if( ( chipArray5[ num14 - 1 ] == null ) || ( ( chipArray5[ num14 ] != null ) && ( chipArray5[ num14 - 1 ].n発声位置 > chipArray5[ num14 ].n発声位置 ) ) )
\r
3499 CDTX.CChip chip26 = chipArray5[ num14 - 1 ];
\r
3500 chipArray5[ num14 - 1 ] = chipArray5[ num14 ];
\r
3501 chipArray5[ num14 ] = chip26;
\r
3502 E判定 e判定24 = e判定Array3[ num14 - 1 ];
\r
3503 e判定Array3[ num14 - 1 ] = e判定Array3[ num14 ];
\r
3504 e判定Array3[ num14 ] = e判定24;
\r
3510 switch( eCYGroup )
\r
3512 case ECYGroup.打ち分ける:
\r
3513 if( e判定22 != E判定.Miss )
\r
3515 this.tドラムヒット処理( nTime, Eパッド.RD, chip24, event2.nVelocity );
\r
3521 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3524 while( num16 < 3 )
\r
3526 if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chip23 ) || ( chipArray5[ num16 ] == chip24 ) ) )
\r
3528 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num16 ], event2.nVelocity );
\r
3537 while( num15 < 3 )
\r
3539 if( e判定Array3[ num15 ] != E判定.Miss )
\r
3541 this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num15 ], event2.nVelocity );
\r
3555 //-----------------------------
\r
3560 //-----------------------------
\r
3562 chip9 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11 );
\r
3563 chip10 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18 );
\r
3564 chip11 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a );
\r
3565 chip12 = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x16 ) : null;
\r
3566 chip13 = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x19 ) : null;
\r
3567 E判定 e判定7 = ( chip9 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip9 ) : E判定.Miss;
\r
3568 E判定 e判定8 = ( chip10 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip10 ) : E判定.Miss;
\r
3569 e判定9 = ( chip11 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip11 ) : E判定.Miss;
\r
3570 E判定 e判定10 = ( chip12 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip12 ) : E判定.Miss;
\r
3571 E判定 e判定11 = ( chip13 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip13 ) : E判定.Miss;
\r
3572 chipArray3 = new CDTX.CChip[] { chip9, chip10, chip11, chip12, chip13 };
\r
3573 e判定Array = new E判定[] { e判定7, e判定8, e判定9, e判定10, e判定11 };
\r
3578 while( num4 > num3 )
\r
3580 if( ( chipArray3[ num4 - 1 ] == null ) || ( ( chipArray3[ num4 ] != null ) && ( chipArray3[ num4 - 1 ].n発声位置 > chipArray3[ num4 ].n発声位置 ) ) )
\r
3582 CDTX.CChip chip14 = chipArray3[ num4 - 1 ];
\r
3583 chipArray3[ num4 - 1 ] = chipArray3[ num4 ];
\r
3584 chipArray3[ num4 ] = chip14;
\r
3585 E判定 e判定12 = e判定Array[ num4 - 1 ];
\r
3586 e判定Array[ num4 - 1 ] = e判定Array[ num4 ];
\r
3587 e判定Array[ num4 ] = e判定12;
\r
3593 switch( eHHGroup )
\r
3595 case EHHGroup.全部打ち分ける:
\r
3596 case EHHGroup.左シンバルのみ打ち分ける:
\r
3597 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3599 if( e判定9 != E判定.Miss )
\r
3601 this.tドラムヒット処理( nTime, Eパッド.LC, chip11, event2.nVelocity );
\r
3611 if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chip11 ) || ( chipArray3[ num5 ] == chip12 ) ) || ( ( chipArray3[ num5 ] == chip13 ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )
\r
3613 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num5 ], event2.nVelocity );
\r
3623 case EHHGroup.ハイハットのみ打ち分ける:
\r
3624 case EHHGroup.全部共通:
\r
3625 if( !CDTXMania.ConfigIni.bシンバルフリー )
\r
3630 if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chip11 ) || ( chipArray3[ num7 ] == chip9 ) ) || ( chipArray3[ num7 ] == chip10 ) ) )
\r
3632 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num7 ], event2.nVelocity );
\r
3645 if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chip13 ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )
\r
3647 this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num6 ], event2.nVelocity );
\r
3662 //-----------------------------
\r
3665 //-----------------------------
\r
3669 //-----------------------------
\r
3670 this.actLaneFlushD.Start( (Eドラムレーン) this.nパッド0Atoレーン07[ nPad ], ( (float) event2.nVelocity ) / 127f );
\r
3671 this.actPad.Hit( this.nパッド0Atoパッド08[ nPad ] );
\r
3672 if( !CDTXMania.ConfigIni.bドラム打音を発声する )
\r
3674 if( CDTXMania.ConfigIni.bTight )
\r
3676 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );
\r
3680 CDTX.CChip rChip = null;
\r
3681 rChip = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) nPad );
\r
3682 if( rChip != null )
\r
3684 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );
\r
3686 if( CDTXMania.ConfigIni.bTight )
\r
3688 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );
\r
3692 CDTX.CChip chip28 = null;
\r
3693 CDTX.CChip chip29 = null;
\r
3694 CDTX.CChip chip30 = null;
\r
3695 CDTX.CChip chip31 = null;
\r
3696 CDTX.CChip chip32 = null;
\r
3697 CDTX.CChip chip33 = null;
\r
3698 CDTX.CChip chip34 = null;
\r
3699 //-----------------------------
\r
3702 #region [ switch( ( (Eパッド) i ) ) ]
\r
3703 //-----------------------------
\r
3704 switch( ( (Eパッド) nPad ) )
\r
3708 //-----------------------------
\r
3709 chip28 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ] );
\r
3710 chip29 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ] );
\r
3711 chip30 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ] );
\r
3712 switch( CDTXMania.ConfigIni.eHHGroup )
\r
3714 case EHHGroup.ハイハットのみ打ち分ける:
\r
3715 rChip = ( chip28 != null ) ? chip28 : chip30;
\r
3718 case EHHGroup.左シンバルのみ打ち分ける:
\r
3719 rChip = ( chip28 != null ) ? chip28 : chip29;
\r
3722 case EHHGroup.全部共通:
\r
3723 if( chip28 != null )
\r
3727 else if( chip29 == null )
\r
3731 else if( chip30 == null )
\r
3735 else if( chip29.n発声位置 < chip30.n発声位置 )
\r
3749 //-----------------------------
\r
3755 //-----------------------------
\r
3756 chip31 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ] );
\r
3757 chip32 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ] );
\r
3758 if( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )
\r
3759 rChip = ( chip31 != null ) ? chip31 : chip32;
\r
3762 //-----------------------------
\r
3768 //-----------------------------
\r
3769 chip31 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ] );
\r
3770 chip32 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ] );
\r
3771 if( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )
\r
3772 rChip = ( chip32 != null ) ? chip32 : chip31;
\r
3775 //-----------------------------
\r
3781 //-----------------------------
\r
3782 chip33 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ] );
\r
3783 chip34 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ] );
\r
3784 if( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )
\r
3785 rChip = ( chip33 != null ) ? chip33 : chip34;
\r
3788 //-----------------------------
\r
3794 //-----------------------------
\r
3795 chip28 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ] );
\r
3796 chip29 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ] );
\r
3797 chip30 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ] );
\r
3798 switch( CDTXMania.ConfigIni.eHHGroup )
\r
3800 case EHHGroup.全部打ち分ける:
\r
3804 case EHHGroup.ハイハットのみ打ち分ける:
\r
3805 rChip = ( chip29 != null ) ? chip29 : chip30;
\r
3808 case EHHGroup.左シンバルのみ打ち分ける:
\r
3809 rChip = ( chip29 != null ) ? chip29 : chip28;
\r
3812 case EHHGroup.全部共通:
\r
3813 if( chip29 != null )
\r
3817 else if( chip28 == null )
\r
3821 else if( chip30 == null )
\r
3825 else if( chip28.n発声位置 < chip30.n発声位置 )
\r
3835 //-----------------------------
\r
3841 //-----------------------------
\r
3842 chip33 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ] );
\r
3843 chip34 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ] );
\r
3844 if( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )
\r
3845 rChip = ( chip34 != null ) ? chip34 : chip33;
\r
3848 //-----------------------------
\r
3854 //-----------------------------
\r
3855 chip28 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ] );
\r
3856 chip29 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ] );
\r
3857 chip30 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ] );
\r
3858 switch( CDTXMania.ConfigIni.eHHGroup )
\r
3860 case EHHGroup.全部打ち分ける:
\r
3861 case EHHGroup.左シンバルのみ打ち分ける:
\r
3865 case EHHGroup.ハイハットのみ打ち分ける:
\r
3866 case EHHGroup.全部共通:
\r
3867 if( chip30 != null )
\r
3871 else if( chip28 == null )
\r
3875 else if( chip29 == null )
\r
3879 else if( chip28.n発声位置 < chip29.n発声位置 )
\r
3889 //-----------------------------
\r
3895 //-----------------------------
\r
3896 rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ nPad ] );
\r
3897 //-----------------------------
\r
3901 //-----------------------------
\r
3905 //-----------------------------
\r
3906 if( rChip != null )
\r
3908 this.tサウンド再生( rChip, CDTXMania.Timer.nシステム時刻, E楽器パート.DRUMS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Drums );
\r
3910 if( CDTXMania.ConfigIni.bTight )
\r
3912 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.DRUMS, this.nパッド0Atoレーン07[ nPad ] );
\r
3914 //-----------------------------
\r
3921 private void t入力処理・ベース()
\r
3923 if( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )
\r
3925 if( CDTXMania.ConfigIni.bAutoPlay.Bass )
\r
3927 CDTX.CChip chip = this.r次にくるベースChipを更新して返す();
\r
3928 if( chip != null )
\r
3930 if( ( chip.nチャンネル番号 & 4 ) != 0 )
\r
3932 this.actLaneFlushGB.Start( 3 );
\r
3933 this.actRGB.Push( 3 );
\r
3935 if( ( chip.nチャンネル番号 & 2 ) != 0 )
\r
3937 this.actLaneFlushGB.Start( 4 );
\r
3938 this.actRGB.Push( 4 );
\r
3940 if( ( chip.nチャンネル番号 & 1 ) != 0 )
\r
3942 this.actLaneFlushGB.Start( 5 );
\r
3943 this.actRGB.Push( 5 );
\r
3949 if( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.BD ) )
\r
3951 CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );
\r
3953 if( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.HH ) )
\r
3955 CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );
\r
3957 int num = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.HH ) ? 4 : 0;
\r
3958 this.t入力メソッド記憶( E楽器パート.BASS );
\r
3959 int num2 = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.SD ) ? 2 : 0;
\r
3960 this.t入力メソッド記憶( E楽器パート.BASS );
\r
3961 int num3 = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.BD ) ? 1 : 0;
\r
3962 this.t入力メソッド記憶( E楽器パート.BASS );
\r
3963 int num4 = ( num | num2 ) | num3;
\r
3966 this.actLaneFlushGB.Start( 3 );
\r
3967 this.actRGB.Push( 3 );
\r
3971 this.actLaneFlushGB.Start( 4 );
\r
3972 this.actRGB.Push( 4 );
\r
3976 this.actLaneFlushGB.Start( 5 );
\r
3977 this.actRGB.Push( 5 );
\r
3979 List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.HT );
\r
3980 if( ( events != null ) && ( events.Count > 0 ) )
\r
3982 foreach( STInputEvent event2 in events )
\r
3985 if( !event2.b押された )
\r
3989 this.t入力メソッド記憶( E楽器パート.BASS );
\r
3990 long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
3991 CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf );
\r
3992 E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip );
\r
3993 if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == num4 ) ) && ( e判定 != E判定.Miss ) )
\r
3995 if( ( num != 0 ) || ( num4 == 0 ) )
\r
3997 this.actChipFireGB.Start( 3 );
\r
3999 if( ( num2 != 0 ) || ( num4 == 0 ) )
\r
4001 this.actChipFireGB.Start( 4 );
\r
4003 if( ( num3 != 0 ) || ( num4 == 0 ) )
\r
4005 this.actChipFireGB.Start( 5 );
\r
4007 this.tチップのヒット処理( nTime, pChip );
\r
4008 this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, e判定 == E判定.Poor );
\r
4009 CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, 140 );
\r
4010 if( item != null )
\r
4012 this.queWailing.Bass.Enqueue( item );
\r
4016 if( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf ) ) != null ) )
\r
4018 this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );
\r
4020 if( !CDTXMania.ConfigIni.bLight.Bass )
\r
4022 this.tチップのヒット処理・BadならびにTight時のMiss( E楽器パート.BASS );
\r
4026 List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.LT );
\r
4027 if( ( list2 != null ) && ( list2.Count > 0 ) )
\r
4029 foreach( STInputEvent event3 in list2 )
\r
4032 if( !event3.b押された )
\r
4036 long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;
\r
4037 while( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )
\r
4039 if( ( num6 - chip5.n発声時刻ms ) <= 800 )
\r
4041 chip5.bHit = true;
\r
4042 this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );
\r
4043 if( !CDTXMania.ConfigIni.bAutoPlay.Bass )
\r
4045 this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( this.actCOMBO.n現在のコンボ数.Bass * 0xbb8L ) );
\r
4054 private void t背景テクスチャの生成()
\r
4056 Bitmap image = null;
\r
4059 if( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )
\r
4061 path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;
\r
4062 if( File.Exists( path ) )
\r
4066 Bitmap bitmap2 = null;
\r
4067 bitmap2 = new Bitmap( path );
\r
4068 if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )
\r
4073 Bitmap bitmap3 = new Bitmap( 640, 480 );
\r
4074 Graphics graphics = Graphics.FromImage( bitmap3 );
\r
4075 for( int i = 0; i < 480; i += bitmap2.Size.Height )
\r
4077 for( int j = 0; j < 640; j += bitmap2.Size.Width )
\r
4079 graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );
\r
4082 graphics.Dispose();
\r
4083 bitmap2.Dispose();
\r
4084 image = new Bitmap( CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" ) );
\r
4085 graphics = Graphics.FromImage( image );
\r
4086 ColorMatrix matrix2 = new ColorMatrix();
\r
4087 matrix2.Matrix00 = 1f;
\r
4088 matrix2.Matrix11 = 1f;
\r
4089 matrix2.Matrix22 = 1f;
\r
4090 matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;
\r
4091 matrix2.Matrix44 = 1f;
\r
4092 ColorMatrix newColorMatrix = matrix2;
\r
4093 ImageAttributes imageAttr = new ImageAttributes();
\r
4094 imageAttr.SetColorMatrix( newColorMatrix );
\r
4095 graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );
\r
4096 imageAttr.Dispose();
\r
4097 graphics.DrawImage( bitmap3, new Rectangle( 0x152, 0x39, 0x116, 0x163 ), 0x152, 0x39, 0x116, 0x163, GraphicsUnit.Pixel );
\r
4098 graphics.Dispose();
\r
4099 bitmap3.Dispose();
\r
4104 Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );
\r
4110 path = CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" );
\r
4113 image = new Bitmap( path );
\r
4117 Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );
\r
4122 if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )
\r
4124 Graphics graphics2 = Graphics.FromImage( image );
\r
4125 graphics2.FillRectangle( Brushes.Black, 0x152, 0x39, 0x116, 0x163 );
\r
4126 graphics2.Dispose();
\r
4130 this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );
\r
4132 catch( CTextureCreateFailedException )
\r
4134 Trace.TraceError( "背景テクスチャの生成に失敗しました。" );
\r
4139 private void t判定にあわせてゲージを増減する( E楽器パート part, E判定 e今回の判定 )
\r
4145 num = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;
\r
4149 num = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;
\r
4153 num = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;
\r
4157 num = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;
\r
4161 num = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;
\r
4162 switch( CDTXMania.ConfigIni.eダメージレベル )
\r
4164 case Eダメージレベル.少ない:
\r
4172 case Eダメージレベル.大きい:
\r
4182 this.actGauge.db現在のゲージ値 += num;
\r
4184 if( this.actGauge.db現在のゲージ値 > 1.0 )
\r
4185 this.actGauge.db現在のゲージ値 = 1.0;
\r
4187 //-----------------
\r