2 using System.Collections.Generic;
4 using System.Runtime.InteropServices;
12 internal class CActSelectステータスパネルXG : CActSelectステータスパネル共通
16 public CActSelectステータスパネルXG()
20 public override void t選択曲が変更された()
22 C曲リストノード c曲リストノード = CDTXMania.stage選曲XG.r現在選択中の曲;
23 Cスコア cスコア = CDTXMania.stage選曲XG.r現在選択中のスコア;
24 if( ( c曲リストノード != null ) && ( cスコア != null ) )
26 this.n現在選択中の曲の難易度 = CDTXMania.stage選曲XG.n現在選択中の曲の難易度;
27 for( int i = 0; i < 3; i++ )
29 if (CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania)
30 this.n現在選択中の曲の最高ランク[i] = cスコア.譜面情報.最大ランク[i];
31 else if (CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
32 this.n現在選択中の曲の最高ランク[i] = DTXMania.CScoreIni.tXGランク値を計算して返す( cスコア.譜面情報.最大スキル[i] );
34 int nLevel = cスコア.譜面情報.レベル[ i ];
43 this.n現在選択中の曲のレベル[ i ] = nLevel;
44 this.n現在選択中の曲の最高ランク[ i ] = cスコア.譜面情報.最大ランク[ i ];
45 this.b現在選択中の曲がフルコンボ[ i ] = cスコア.譜面情報.フルコンボ[ i ];
46 this.db現在選択中の曲の最高スキル値[ i ] = cスコア.譜面情報.最大スキル[ i ];
48 for( int j = 0; j < 5; j++ )
50 if( c曲リストノード.arスコア[ j ] != null )
52 this.n現在選択中の曲のレベル難易度毎DGB[j][i] = c曲リストノード.arスコア[j].譜面情報.レベル[i];
53 this.n現在選択中の曲のレベル小数点難易度毎DGB[j][i] = c曲リストノード.arスコア[j].譜面情報.レベルDec[i];
54 //this.n現在選択中の曲の最高ランク難易度毎[j][i] = c曲リストノード.arスコア[j].譜面情報.最大ランク[i];
55 if ( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
56 this.n現在選択中の曲の最高ランク難易度毎[ j ][ i ] = c曲リストノード.arスコア[ j ].譜面情報.最大ランク[ i ];
57 else if ( CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
58 this.n現在選択中の曲の最高ランク難易度毎[ j ][ i ] = ( DTXMania.CScoreIni.tXGランク値を計算して返す( c曲リストノード.arスコア[ j ].譜面情報.最大スキル[ i ] ) == (int)DTXMania.CScoreIni.ERANK.S && DTXMania.CScoreIni.tXGランク値を計算して返す( c曲リストノード.arスコア[ j ].譜面情報.最大スキル[ i ] ) >= 95 ? DTXMania.CScoreIni.tXGランク値を計算して返す( cスコア.譜面情報.最大スキル[ i ] ) : c曲リストノード.arスコア[ j ].譜面情報.最大ランク[ i ]);
59 this.db現在選択中の曲の最高スキル値難易度毎[ j ][ i ] = c曲リストノード.arスコア[ j ].譜面情報.最大スキル[i];
60 this.b現在選択中の曲がフルコンボ難易度毎[j][i] = c曲リストノード.arスコア[j].譜面情報.フルコンボ[i];
61 this.b現在選択中の曲に譜面がある[j][i] = c曲リストノード.arスコア[j].譜面情報.b譜面がある[i];
65 for( int i = 0; i < 5; i++ )
67 this.str難易度ラベル[ i ] = c曲リストノード.ar難易度ラベル[ i ];
69 if( this.r直前の曲 != c曲リストノード )
73 this.r直前の曲 = c曲リストノード;
80 public override void On活性化()
82 this.n現在選択中の曲の難易度 = 0;
83 for( int i = 0; i < 3; i++ )
85 this.n現在選択中の曲のレベル[ i ] = 0;
86 this.db現在選択中の曲の曲別スキル値難易度毎[ i ] = 0.0;
87 this.n現在選択中の曲の最高ランク[ i ] = (int)CScoreIni.ERANK.UNKNOWN;
88 this.b現在選択中の曲がフルコンボ[ i ] = false;
89 this.db現在選択中の曲の最高スキル値[ i ] = 0.0;
90 for (int j = 0; j < 5; j++)
92 this.n現在選択中の曲のレベル難易度毎DGB[j][i] = 0;
93 this.n現在選択中の曲のレベル小数点難易度毎DGB[j][i] = 0;
94 this.db現在選択中の曲の最高スキル値難易度毎[j][i] = 0.0;
95 this.n現在選択中の曲の最高ランク難易度毎[j][i] = (int)CScoreIni.ERANK.UNKNOWN;
96 this.b現在選択中の曲がフルコンボ難易度毎[j][i] = false;
99 for( int j = 0; j < 5; j++ )
101 this.str難易度ラベル[ j ] = "";
102 this.n選択中の曲のレベル難易度毎[ j ] = 0;
104 this.db現在選択中の曲の曲別スキル値難易度毎[j] = 0.0;
110 public override void On非活性化()
112 this.ct登場アニメ用 = null;
113 this.ct難易度スクロール用 = null;
114 this.ct難易度矢印用 = null;
115 this.ct難易度変更カウンター = null;
118 public override void OnManagedリソースの作成()
122 this.txパネル本体 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_status panel.png" ) );
123 this.txゲージ用数字他 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_skill icon.png" ), false );
124 this.tx難易度パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_difficulty panel.png" ) );
125 this.tx難易度数字XG = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
126 base.OnManagedリソースの作成();
129 public override void OnManagedリソースの解放()
133 CDTXMania.tテクスチャの解放( ref this.txパネル本体 );
134 CDTXMania.tテクスチャの解放( ref this.txゲージ用数字他 );
135 CDTXMania.tテクスチャの解放( ref this.tx難易度パネル );
136 CDTXMania.tテクスチャの解放( ref this.tx難易度数字XG );
138 CDTXMania.tテクスチャの解放( ref this.tx決定後_難易度パネル1P );
139 CDTXMania.tテクスチャの解放( ref this.tx決定後_難易度パネル2P );
140 base.OnManagedリソースの解放();
143 public override int On進行描画()
151 this.ct登場アニメ用 = new CCounter( 0, 100, 5, CDTXMania.Timer );
152 this.ct難易度スクロール用 = new CCounter( 0, 20, 1, CDTXMania.Timer );
153 this.ct難易度矢印用 = new CCounter( 0, 5, 80, CDTXMania.Timer );
154 this.ct難易度変更カウンター = new CCounter( 1, 10, 10, CDTXMania.Timer );
155 base.b初めての進行描画 = false;
161 for( int i = 0; i < 3; i++ )
167 if( CDTXMania.ConfigIni.bDrums有効 )
169 this.n本体X[ 0 ] = 346;
172 else if( CDTXMania.ConfigIni.bGuitar有効 )
174 int nSwapflag1P = CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 2 : 1;
175 int nSwapflag2P = CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 1 : 2;
176 this.n本体X[ nSwapflag1P ] = 346;
177 this.n本体Y[ nSwapflag1P ] = 43;
179 this.n本体X[ nSwapflag2P ] = 218;
180 this.n本体Y[ nSwapflag2P ] = 546;
187 this.ct難易度変更カウンター.t進行();
189 this.ct難易度スクロール用.t進行();
190 if( this.ct難易度スクロール用.b終了値に達した )
192 int num = this.n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す();
201 this.ct難易度スクロール用.n現在の値 = 0;
204 this.ct難易度矢印用.t進行Loop();
210 if( this.txパネル本体 != null && CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5] != null )
213 var mat1 = Matrix.Identity;
214 mat1 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
215 mat1 *= Matrix.RotationY(0.0f);
216 mat1 *= Matrix.RotationZ(0.0f);
217 mat1 *= Matrix.Translation(0f, 260f, 0f);
219 var mat2 = Matrix.Identity;
220 mat2 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
221 mat2 *= Matrix.RotationY(0.0f);
222 mat2 *= Matrix.RotationZ(0.0f);
223 mat2 *= Matrix.Translation(0f, -240f, 0f);
225 if( CDTXMania.ConfigIni.bDrums有効 )
227 if( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[ 5 ].n現在の値 != 100 )
228 this.txパネル本体.t3D描画( CDTXMania.app.Device, mat1 , new Rectangle( 0, 0, 1280, 200 ) );
230 this.txパネル本体.t2D描画( CDTXMania.app.Device, 0, this.n本体Y[ 0 ] - 43, new Rectangle(0, 0, 1280, 200) );
232 else if ( CDTXMania.ConfigIni.bGuitar有効 )
234 if( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 != 100 )
236 if (!CDTXMania.ConfigIni.bIsSwappedGuitarBass)
238 this.txパネル本体.t3D描画(CDTXMania.app.Device, mat1, new Rectangle(0, 200, 1280, 200));
239 this.txパネル本体.t3D描画(CDTXMania.app.Device, mat2, new Rectangle(0, 400, 1280, 200));
243 this.txパネル本体.t3D描画(CDTXMania.app.Device, mat1, new Rectangle(0, 600, 1280, 200));
244 this.txパネル本体.t3D描画(CDTXMania.app.Device, mat2, new Rectangle(0, 800, 1280, 200));
249 if (!CDTXMania.ConfigIni.bIsSwappedGuitarBass)
251 this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 1 ] - 43, new Rectangle(0, 200, 1280, 200));
252 this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 2 ] - 43, new Rectangle(0, 400, 1280, 200));
256 this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 2 ] - 43, new Rectangle(0, 600, 1280, 200));
257 this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 1 ] - 43, new Rectangle(0, 800, 1280, 200));
267 int[] y差分 = new int[ 5 ];
268 int[] x差分 = new int[ 5 ];
270 int n難易度ラベル合計値1P = 0;
271 int n難易度ラベル合計値2P = 0;
272 if( this.tx難易度パネル != null && CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5] != null )
274 for (int i = 0; i < 5; i++)
276 if (this.n現在選択中の曲の難易度 == i)
278 y差分[i] += this.ct難易度変更カウンター.n現在の値;
282 if( CDTXMania.ConfigIni.bDrums有効 )
284 if( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 == 100 )
286 for( int i = 0; i < 5; i++ )
288 if( this.str難易度ラベル[ i ] != null || CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
290 //ランダムの場合は全てのパネルを描画する。
291 this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 346 + ( 143 * i ), this.n本体Y[ 0 ] - y差分[ i ], new Rectangle( x差分[ i ], 0 + ( 98 * i ), 132, 98 ) );
295 if( n難易度ラベル合計値 == 0 && CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE ) //難易度ラベルが存在しなかった場合は5に描画する。
296 this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 346 + ( 143 * 4 ), this.n本体Y[ 0 ] - 10, new Rectangle( 132, 0 + ( 98 * 4 ), 132, 98 ) );
300 for( int i = 0; i < 5; i++ )
302 var mat = Matrix.Identity;
303 mat *= Matrix.RotationX( 1.60f - (float)( (float)CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[ 5 ].n現在の値 * 0.016f ) );
304 mat *= Matrix.RotationY( 0.0f );
305 mat *= Matrix.RotationZ( 0.0f );
306 mat *= Matrix.Translation(-228f + (i * 143f), 268f + y差分[i], 0f);
308 if( this.str難易度ラベル[i] != null )
309 this.tx難易度パネル.t3D描画(CDTXMania.app.Device, mat, new Rectangle(x差分[i], 98 * i, 132, 98));
313 else if( CDTXMania.ConfigIni.bGuitar有効 )
315 if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 == 100 )
317 for( int i = 0; i < 5; i++ )
319 for( int j = 0; j < 2; j++ )
321 if( this.str難易度ラベル[ i ] != null || CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
323 this.tx難易度パネル.t2D描画( CDTXMania.app.Device, this.n本体X[ j + 1 ] + ( 143 * i ), this.n本体Y[ j + 1 ] - y差分[ i ], new Rectangle( x差分[ i ], 0 + ( 98 * i ), 132, 98 ) );
324 if( j == 0 ) n難易度ラベル合計値1P++;
328 // else if (CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE)
331 // if (this.str難易度ラベル[i] != null || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
332 // this.tx難易度パネル.t2D描画(CDTXMania.app.Device, this.n本体X[2] + (143 * i), this.n本体Y[2] - y差分[i], new Rectangle(x差分[i], 0 + (98 * i), 132, 98));
334 for( int i = 0; i < 2; i++ )
336 if( ( i == 0 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 1 ) && CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE ) //難易度ラベルが存在しなかった場合は5に描画する。
337 this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 346 + ( 143 * 4 ), this.n本体Y[ i + 1 ] - 10, new Rectangle( 132, 0 + ( 98 * 4 ), 132, 98 ) );
341 // this.tx難易度パネル.t2D描画(CDTXMania.app.Device, this.n本体X[1] + (143 * 4), this.n本体Y[1] - 10, new Rectangle(132, 0 + (98 * 4), 132, 98));
342 // this.tx難易度パネル.t2D描画(CDTXMania.app.Device, this.n本体X[2] + (143 * 4), this.n本体Y[2] - 10, new Rectangle(132, 0 + (98 * 4), 132, 98));
347 // for (int i = 0; i < 5; i++)
349 // var mat1 = Matrix.Identity;
350 // mat1 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
351 // mat1 *= Matrix.RotationY(0.0f);
352 // mat1 *= Matrix.RotationZ(0.0f);
353 // mat1 *= Matrix.Translation(-228f + (i * 143f), 268f + y差分[i], 0f);
355 // var mat2 = Matrix.Identity;
356 // mat2 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
357 // mat2 *= Matrix.RotationY(0.0f);
358 // mat2 *= Matrix.RotationZ(0.0f);
359 // mat2 *= Matrix.Translation(-355f + (i * 143f), -235f + y差分[i], 0f);
362 // if (this.str難易度ラベル[i] != null)
363 // this.tx難易度パネル.t3D描画(CDTXMania.app.Device, mat1 , new Rectangle(0 + x差分[i], 0 + (98 * i), 132, 98));
365 // if (this.str難易度ラベル[i] != null)
366 // this.tx難易度パネル.t3D描画(CDTXMania.app.Device, mat2 , new Rectangle(0 + x差分[i], 0 + (98 * i), 132, 98));
373 Cスコア cスコア = CDTXMania.stage選曲XG.r現在選択中のスコア;
375 if( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[ 5 ] != null )
377 if( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[ 5 ].b終了値に達した )
379 #region [ 難易度文字列の描画 ]
381 for( int i = 0; i < 5; i++ )
383 if( CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.共通_通常状態 )
385 CDTXMania.act文字コンソール.tPrint( 346 + ( i * 142 ), 8, ( this.n現在選択中の曲の難易度 == i ) ? C文字コンソール.Eフォント種別.赤 : C文字コンソール.Eフォント種別.白, this.str難易度ラベル[ i ] );
386 if( CDTXMania.ConfigIni.bGuitar有効 )
387 CDTXMania.act文字コンソール.tPrint( 218 + ( i * 142 ), 670, ( this.n現在選択中の曲の難易度 == i ) ? C文字コンソール.Eフォント種別.赤 : C文字コンソール.Eフォント種別.白, this.str難易度ラベル[ i ] );
392 #region [ 選択曲の Lv の描画 ]
394 if( ( cスコア != null ) && ( this.tx難易度数字XG != null ) )
396 if( CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.共通_通常状態 )
397 this.tx難易度数字XG.n透明度 = (int)( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[ 5 ].n現在の値 * 2.6f );
398 for( int j = 0; j < 3; j++ )
400 if( this.n本体X[ j ] == 0 ) continue;
401 for( int i = 0; i < 5; i++ )
403 int[] n難易度整数 = new int[5];
404 int[] n難易度小数 = new int[5];
405 n難易度整数[ i ] = (int)this.n現在選択中の曲のレベル難易度毎DGB[ i ][ j ] / 10;
406 n難易度小数[ i ] = ( this.n現在選択中の曲のレベル難易度毎DGB[ i ][ j ] - (n難易度整数[ i ] * 10 ) ) * 10;
407 n難易度小数[ i ] += this.n現在選択中の曲のレベル小数点難易度毎DGB[ i ][ j ];
409 if( this.str難易度ラベル[ i ] != null && this.b現在選択中の曲に譜面がある[ i ][ j ])
411 this.t大文字表示(73 + this.n本体X[ j ] + (i * 143), 19 + this.n本体Y[j] - y差分[i], string.Format("{0:0}", n難易度整数[i]));
412 this.t小文字表示(102 + this.n本体X[ j ] + (i * 143), 37 + this.n本体Y[j] - y差分[i], string.Format("{0,2:00}", n難易度小数[i]));
413 this.tx難易度数字XG.t2D描画(CDTXMania.app.Device, 94 + this.n本体X[j] + (i * 143), 51 + this.n本体Y[j] - y差分[i], new Rectangle(145, 54, 7, 8));
415 else if ((this.str難易度ラベル[i] != null && !this.b現在選択中の曲に譜面がある[i][j]) || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
417 this.t大文字表示(73 + this.n本体X[j] + (i * 143), 19 + this.n本体Y[j] - y差分[i], ("-"));
418 this.t小文字表示(102 + this.n本体X[j] + (i * 143), 37 + this.n本体Y[j] - y差分[i], ("--"));
419 this.tx難易度数字XG.t2D描画(CDTXMania.app.Device, 94 + this.n本体X[j] + (i * 143), 51 + this.n本体Y[j] - y差分[i], new Rectangle(145, 54, 7, 8));
422 if( n難易度ラベル合計値 == 0 )
430 #region [ 選択曲の 曲別スキルの描画 ]
432 for( int j = 0; j < 3; j++ )
434 if( this.n本体X[ j ] != 0 )
436 int[] n曲別スキル位置 = new int[] { 223, 223, 1144 };
437 if( CDTXMania.ConfigIni.bIsSwappedGuitarBass )
438 n曲別スキル位置 = new int[] { 223, 1144, 223 };
439 double[] db現在の曲のレベルXG = new double[ 5 ];
442 for( int i = 0; i < 5; i++ )
444 if( this.str難易度ラベル[ i ] != null )
446 db現在の曲のレベルXG[ i ] = this.n現在選択中の曲のレベル難易度毎DGB[ i ][ j ] / 10.0;
447 db現在の曲のレベルXG[ i ] += this.n現在選択中の曲のレベル小数点難易度毎DGB[ i ][ j ] / 100.0;
448 if( ( ( this.db現在選択中の曲の最高スキル値難易度毎[ i ][ j ] / 100.0 ) * db現在の曲のレベルXG[ i ] * 20.0 ) > db曲別スキル )
449 db曲別スキル = ( this.db現在選択中の曲の最高スキル値難易度毎[ i ][ j ] / 100.0 ) * db現在の曲のレベルXG[ i ] * 20.0;
454 if( this.txゲージ用数字他 != null )
455 this.txゲージ用数字他.t2D描画( CDTXMania.app.Device, n曲別スキル位置[ j ], this.n本体Y[ j ] + 51, new Rectangle( 0, 32, 64, 38 ) );
456 this.t達成率表示( n曲別スキル位置[ j ] + 11, this.n本体Y[ j ] + 69, string.Format( "{0,6:##0.00}", db曲別スキル ) );
462 #region [ 選択曲の 最高スキル値ゲージ+数値の描画 ]
464 for (int j = 0; j < 3; j++)
466 if ( this.n本体X[j] != 0 )
468 for (int i = 0; i < 5; i++)
470 if (this.str難易度ラベル[i] != null && this.db現在選択中の曲の最高スキル値難易度毎[i][j] != 0.00)
472 this.t達成率表示(76 + this.n本体X[j] + (i * 143), 77 + this.n本体Y[j] - y差分[i], string.Format("{0,6:##0.00}%", this.db現在選択中の曲の最高スキル値難易度毎[i][j]));
477 if( n難易度ラベル合計値 == 0 && this.db現在選択中の曲の最高スキル値[j] != 0.00 )
479 this.t達成率表示(76 + this.n本体X[j] + (4 * 143), 77 + this.n本体Y[j] - 10, string.Format("{0,6:##0.00}%", this.db現在選択中の曲の最高スキル値[j]));
484 if( ( j == 1 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 0 ) && this.db現在選択中の曲の最高スキル値[j] != 0.00 )
486 this.t達成率表示(76 + this.n本体X[j] + (4 * 143), 77 + this.n本体Y[j] - 10, string.Format("{0,6:##0.00}%", this.db現在選択中の曲の最高スキル値[j]));
493 #region [ 選択曲の 最高ランクの描画 ]
495 for (int j = 0; j < 3; j++)
497 if (this.n本体X[j] != 0 && this.txゲージ用数字他 != null)
499 for (int i = 0; i < 5; i++)
501 if (this.str難易度ラベル[i] != null && this.db現在選択中の曲の最高スキル値難易度毎[i][j] != 0.00)
503 int nMaxRank = this.n現在選択中の曲の最高ランク難易度毎[i][j];
511 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, (7 + this.n本体X[j] + (i * 143)), 61 + this.n本体Y[j] - y差分[i], new Rectangle(42 + (nMaxRank * 32), 0, 32, 32));
517 if( ( n難易度ラベル合計値 == 0 ) && this.db現在選択中の曲の最高スキル値[j] != 0.00)
519 int nMaxRank = this.n現在選択中の曲の最高ランク[j];
529 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, (7 + this.n本体X[j] + (4 * 143)), 61 + this.n本体Y[j] - 10, new Rectangle(42 + (nMaxRank * 32), 0, 32, 32));
535 if( ( j == 1 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 0 ) && this.db現在選択中の曲の最高スキル値[j] != 0.00)
537 int nMaxRank = this.n現在選択中の曲の最高ランク[j];
547 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, (7 + this.n本体X[j] + (4 * 143)), 61 + this.n本体Y[j] - 10, new Rectangle(42 + (nMaxRank * 32), 0, 32, 32));
556 #region [ 選択曲の FullCombo Excellent の 描画 ]
558 for (int j = 0; j < 3; j++)
560 if (this.n本体X[j] != 0 && this.txゲージ用数字他 != null)
562 for (int i = 0; i < 5; i++)
564 if (this.db現在選択中の曲の最高スキル値難易度毎[i][j] == 100 && this.str難易度ラベル[i] != null)
565 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, 40 + this.n本体X[j] + (i * 143), 63 + this.n本体Y[j] - y差分[i], new Rectangle(266, 0, 42, 32));
566 else if (this.b現在選択中の曲がフルコンボ難易度毎[i][j] && this.str難易度ラベル[i] != null)
567 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, 40 + this.n本体X[j] + (i * 143), 63 + this.n本体Y[j] - y差分[i], new Rectangle(0, 0, 42, 32));
571 if( n難易度ラベル合計値 == 0 )
573 if (this.db現在選択中の曲の最高スキル値[j] == 100)
574 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, 40 + this.n本体X[j] + (4 * 143), 63 + this.n本体Y[j] - 10, new Rectangle(266, 0, 42, 32));
575 else if (this.b現在選択中の曲がフルコンボ[j])
576 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, 40 + this.n本体X[j] + (4 * 143), 63 + this.n本体Y[j] - 10, new Rectangle(0, 0, 42, 32));
581 if( j == 1 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 0 )
583 if (this.db現在選択中の曲の最高スキル値[j] == 100)
584 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, 40 + this.n本体X[j] + (4 * 143), 63 + this.n本体Y[j] - 10, new Rectangle(266, 0, 42, 32));
585 else if (this.b現在選択中の曲がフルコンボ[j])
586 this.txゲージ用数字他.t2D描画(CDTXMania.app.Device, 40 + this.n本体X[j] + (4 * 143), 63 + this.n本体Y[j] - 10, new Rectangle(0, 0, 42, 32));
594 if( CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.選曲_決定演出 || CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.選曲_NowLoading画面へのフェードアウト )
596 this.n本体Y[ 0 ] = 43 - ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 <= 250 && CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 >= 0 ? (int)( 70 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) : 0 );
597 this.n本体Y[ 1 ] = 43 - ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 <= 250 && CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 >= 0 ? (int)( 70 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) : 0 );
598 this.n本体Y[ 2 ] = 546 + ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 <= 250 && CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 >= 0 ? (int)( 70 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) : 0 );
599 this.txパネル本体.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
600 this.txゲージ用数字他.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
601 this.tx難易度パネル.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
602 this.tx難易度数字XG.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
603 if( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 > 250 )
605 this.txパネル本体.n透明度 = 0;
606 this.txゲージ用数字他.n透明度 = 0;
607 this.tx難易度数字XG.n透明度 = 0;
609 if( this.tx決定後_難易度パネル1P == null )
610 this.t決定アニメ_難易度パネルを生成する();
611 if( this.tx決定後_難易度パネル1P != null && ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.stage選曲XG.r確定されたスコア.譜面情報.b譜面がある.Guitar ) )
615 if( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 < 400 )
617 int nX = (int)( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 < 200 ? 100 * ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 / 200.0 ) : 100 - 100 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 - 200.0 ) / 200.0 ) );
618 this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254 - nX, 162 );
619 //CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, nX.ToString() );
623 this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254, 162 );
626 else if( this.tx決定後_難易度パネル1P != null && CDTXMania.stage選曲XG.r確定されたスコア.譜面情報.b譜面がある.Drums )
630 if( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 < 400 )
632 int nX = (int)( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 < 200 ? 100 * ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 / 200.0 ) : 100 - 100 * ( ( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 - 200.0 ) / 200.0 ) );
633 this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254 - nX, 162 );
634 //CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, nX.ToString() );
638 this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254, 162 );
642 if( this.tx決定後_難易度パネル2P == null && CDTXMania.ConfigIni.bGuitar有効 )
643 this.t決定アニメ_難易度パネルを生成する();
644 if( this.tx決定後_難易度パネル2P != null && CDTXMania.stage選曲.r確定されたスコア.譜面情報.b譜面がある.Bass )
646 if( CDTXMania.stage選曲.ct決定演出待機.n現在の値 < 400 )
648 int nX = (int)( CDTXMania.stage選曲.ct決定演出待機.n現在の値 < 200 ? 100 * ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 / 200.0 ) : 100 - 100 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 - 200.0 ) / 200.0 ) );
649 this.tx決定後_難易度パネル2P.t2D描画( CDTXMania.app.Device, 870 + nX, 162 );
653 this.tx決定後_難易度パネル2P.t2D描画( CDTXMania.app.Device, 870, 162 );
668 [StructLayout( LayoutKind.Sequential )]
673 public ST数字( char ch, Rectangle rc )
680 private STDGBVALUE<bool> b現在選択中の曲がフルコンボ;
681 private CCounter ct登場アニメ用;
682 private CCounter ct難易度スクロール用;
683 private CCounter ct難易度矢印用;
684 private STDGBVALUE<double> db現在選択中の曲の最高スキル値;
685 private STDGBVALUE<int> n現在選択中の曲のレベル;
686 private STDGBVALUE<int> n現在選択中の曲の最高ランク;
688 private int[] n選択中の曲のレベル難易度毎 = new int[5];
690 private int n難易度開始文字位置;
691 private const int n難易度表示可能文字数 = 0x24;
692 private STDGBVALUE<int> n本体X;
693 private STDGBVALUE<int> n本体Y;
694 private C曲リストノード r直前の曲;
695 private string[] str難易度ラベル = new string[] { "", "", "", "", "" };
696 private CTexture txゲージ用数字他;
697 private CTexture tx難易度パネル;
698 private CTexture tx難易度数字XG;
700 private CTexture tx決定後_難易度パネル1P;
701 private CTexture tx決定後_難易度パネル2P;
703 [StructLayout(LayoutKind.Sequential)]
704 private struct ST文字位置
708 public ST文字位置( char ch, Point pt )
714 [StructLayout(LayoutKind.Sequential)]
715 private struct ST達成率数字
719 public ST達成率数字( char ch, Rectangle rc )
725 //2016.02.23 kairera0467 初期化の行数を大幅短縮。
726 private ST文字位置[] st小文字位置 = new ST文字位置[] {
727 new ST文字位置( '0', new Point( 13, 40 ) ),
728 new ST文字位置( '1', new Point( 26, 40 ) ),
729 new ST文字位置( '2', new Point( 39, 40 ) ),
730 new ST文字位置( '3', new Point( 52, 40 ) ),
731 new ST文字位置( '4', new Point( 65, 40 ) ),
732 new ST文字位置( '5', new Point( 78, 40 ) ),
733 new ST文字位置( '6', new Point( 91, 40 ) ),
734 new ST文字位置( '7', new Point( 105, 40 ) ),
735 new ST文字位置( '8', new Point( 118, 40 ) ),
736 new ST文字位置( '9', new Point( 131, 40 ) ),
737 new ST文字位置( '-', new Point( 0, 40 ) )
740 private ST文字位置[] st大文字位置 = new ST文字位置[] {
741 new ST文字位置( '.', new Point( 144, 0 ) ),
742 new ST文字位置( '1', new Point( 22, 0 ) ),
743 new ST文字位置( '2', new Point( 44, 0 ) ),
744 new ST文字位置( '3', new Point( 66, 0 ) ),
745 new ST文字位置( '4', new Point( 88, 0 ) ),
746 new ST文字位置( '5', new Point( 110, 0 ) ),
747 new ST文字位置( '6', new Point( 132, 0 ) ),
748 new ST文字位置( '7', new Point( 153, 0 ) ),
749 new ST文字位置( '8', new Point( 176, 0 ) ),
750 new ST文字位置( '9', new Point( 198, 0 ) ),
751 new ST文字位置( '0', new Point( 220, 0 ) ),
752 new ST文字位置( '-', new Point( 0, 0 ) )
755 private ST達成率数字[] st達成率数字 = new ST達成率数字[]{
756 new ST達成率数字( '0', new Rectangle( 0, 62, 7, 16 ) ),
757 new ST達成率数字( '1', new Rectangle( 7, 62, 7, 16 ) ),
758 new ST達成率数字( '2', new Rectangle( 14, 62, 7, 16 ) ),
759 new ST達成率数字( '3', new Rectangle( 21, 62, 7, 16 ) ),
760 new ST達成率数字( '4', new Rectangle( 28, 62, 7, 16 ) ),
761 new ST達成率数字( '5', new Rectangle( 35, 62, 7, 16 ) ),
762 new ST達成率数字( '6', new Rectangle( 42, 62, 7, 16 ) ),
763 new ST達成率数字( '7', new Rectangle( 49, 62, 7, 16 ) ),
764 new ST達成率数字( '8', new Rectangle( 56, 62, 7, 16 ) ),
765 new ST達成率数字( '9', new Rectangle( 63, 62, 7, 16 ) ),
766 new ST達成率数字( '%', new Rectangle( 70, 62, 9, 16 ) ),
767 new ST達成率数字( '.', new Rectangle( 79, 62, 3, 16 ) )
770 private int n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す()
774 for( int i = 0; i < 5; i++ )
776 if( ( this.str難易度ラベル[ i ] != null ) && ( this.str難易度ラベル[ i ].Length > 0 ) )
778 length = this.str難易度ラベル[ i ].Length;
780 if( this.n現在選択中の曲の難易度 == i )
784 if( ( this.str難易度ラベル[ i ] != null ) && ( this.str難易度ラベル.Length > 0 ) )
789 if( num >= ( this.n難易度開始文字位置 + 55 ) ) // 0x24 -> 55
793 if( ( num + length ) <= this.n難易度開始文字位置 )
797 if( ( ( num + length ) - 1 ) >= ( this.n難易度開始文字位置 + 55 ) ) // 0x24 -> 55
801 if( num < this.n難易度開始文字位置 )
807 private void t小文字表示(int x, int y, string str)
809 foreach (char ch in str)
811 for( int i = 0; i < this.st小文字位置.Length; i++ )
813 if (this.st小文字位置[i].ch == ch)
815 Rectangle rectangle = new Rectangle(this.st小文字位置[i].pt.X, this.st小文字位置[i].pt.Y, 13, 22);
816 if (this.tx難易度数字XG != null)
818 this.tx難易度数字XG.t2D描画(CDTXMania.app.Device, x, y, rectangle);
826 private void t大文字表示(int x, int y, string str)
828 for( int i = 0; i < str.Length; i++ )
831 for( int j = 0; j < this.st大文字位置.Length; j++ )
833 if( this.st大文字位置[ j ].ch == c )
835 Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40);
838 rc画像内の描画領域.Width -= 2;
839 rc画像内の描画領域.Height -= 2;
841 if( this.tx難易度数字XG != null )
843 this.tx難易度数字XG.t2D描画(CDTXMania.app.Device, x, y, rc画像内の描画領域);
848 if( c == '.' ) x += 0;
852 private void t達成率表示(int x, int y, string str)
854 for (int j = 0; j < str.Length; j++)
857 for (int i = 0; i < this.st達成率数字.Length; i++)
859 if (this.st達成率数字[i].ch == c)
861 Rectangle rectangle = new Rectangle(this.st達成率数字[i].rc.X, this.st達成率数字[i].rc.Y, 7, 16);
864 rectangle.Width -= 2;
866 rectangle.Width += 2;
867 if (this.tx難易度数字XG != null)
869 this.tx難易度数字XG.t2D描画(CDTXMania.app.Device, x, y, rectangle);
880 private void t決定アニメ_難易度パネルを生成する()
882 //ギター・ベースの場合、1枚の画像を2回読み込むことになるので回避。
884 imgPanel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_base info panel.png" ) );
885 int[] arPanelRectX = new int[] { 164, 326, 650, 488 }; //Drums(使用しない), Guitar, Bass, GuitarF, BassF
888 if( CDTXMania.ConfigIni.bDrums有効 && imgPanel != null )
890 Bitmap bPanel = new Bitmap( 155, 362 );
891 Graphics graphics = Graphics.FromImage( bPanel );
896 graphics.PageUnit = GraphicsUnit.Pixel;
897 graphics.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( 2, 2, 155, 362 ), GraphicsUnit.Pixel );
899 imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
900 graphics.DrawImage( imgLabel, new Rectangle( 14, 31, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲XG.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
902 imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
905 if( !CDTXMania.stage選曲XG.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である.Drums )
911 n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] / 10;
912 n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] - ( n難易度整数 * 10 ) ) * 10;
913 n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ];
914 str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
916 if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
918 for( int j = 0; j < this.st大文字位置.Length; j++ )
920 if( this.st大文字位置[ j ].ch == str難易度[ 0 ] )
922 Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40 );
923 graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
927 graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
928 for( int k = 0; k < 2; k++ )
930 for( int j = 0; j < this.st小文字位置.Length; j++ )
932 if( this.st小文字位置[ j ].ch == str難易度[ k + 1 ] )
934 Rectangle rc画像内の描画領域 = new Rectangle( this.st小文字位置[ j ].pt.X, this.st小文字位置[ j ].pt.Y, 12, 22 );
935 graphics.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), rc画像内の描画領域, GraphicsUnit.Pixel );
941 else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
943 graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
944 graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
945 for( int k = 0; k < 2; k++ )
947 graphics.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), new Rectangle( 0, 40, 12, 22 ), GraphicsUnit.Pixel );
956 str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] );
958 if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
960 for( int j = 0; j < 2; j++ )
962 for( int k = 0; k < this.st大文字位置.Length; k++ )
964 if( this.st大文字位置[ k ].ch == str難易度[ j ] )
966 Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ k ].pt.X, this.st大文字位置[ k ].pt.Y, 22, 40 );
967 graphics.DrawImage( imgLevelNum, new Rectangle( 94 + ( 22 * j ), 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
973 else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
975 graphics.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
976 graphics.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
981 this.tx決定後_難易度パネル1P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
983 CDTXMania.t安全にDisposeする( ref bPanel );
984 CDTXMania.t安全にDisposeする( ref graphics );
985 CDTXMania.t安全にDisposeする( ref imgPanel );
986 CDTXMania.t安全にDisposeする( ref imgLabel );
987 CDTXMania.t安全にDisposeする( ref imgLevelNum );
991 else if( CDTXMania.ConfigIni.bGuitar有効 && imgPanel != null )
993 for( int i = 1; i <= 2; i++ )
995 Bitmap bPanel = new Bitmap( 155, 362 );
996 Graphics gPanel = Graphics.FromImage( bPanel );
1001 gPanel.PageUnit = GraphicsUnit.Pixel;
1002 gPanel.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( arPanelRectX[ i + ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 1 : -1 ) ], 2, 155, 362 ), GraphicsUnit.Pixel );
1004 imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
1005 gPanel.DrawImage( imgLabel, new Rectangle( 14, 32, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
1007 imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
1010 if( !CDTXMania.stage選曲.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である[ i ] )
1016 n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] / 10;
1017 n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] - ( n難易度整数 * 10 ) ) * 10;
1018 n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ];
1019 str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
1021 if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
1023 for( int j = 0; j < this.st大文字位置.Length; j++ )
1025 if( this.st大文字位置[ j ].ch == str難易度[ 0 ] )
1027 Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40 );
1028 gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
1032 gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
1033 for( int k = 0; k < 2; k++ )
1035 for( int j = 0; j < this.st小文字位置.Length; j++ )
1037 if( this.st小文字位置[ j ].ch == str難易度[ k + 1 ] )
1039 Rectangle rc画像内の描画領域 = new Rectangle( this.st小文字位置[ j ].pt.X, this.st小文字位置[ j ].pt.Y, 12, 22 );
1040 gPanel.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), rc画像内の描画領域, GraphicsUnit.Pixel );
1046 else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
1048 gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
1049 gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
1050 for( int k = 0; k < 2; k++ )
1052 gPanel.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), new Rectangle( 0, 40, 12, 22 ), GraphicsUnit.Pixel );
1059 #region[ CLASSIC譜面 ]
1061 str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] );
1063 if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
1065 for( int j = 0; j < 2; j++ )
1067 for( int k = 0; k < this.st大文字位置.Length; k++ )
1069 if( this.st大文字位置[ k ].ch == str難易度[ j ] )
1071 Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ k ].pt.X, this.st大文字位置[ k ].pt.Y, 22, 40 );
1072 gPanel.DrawImage( imgLevelNum, new Rectangle( 94 + ( 22 * j ), 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
1078 else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
1080 gPanel.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
1081 gPanel.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
1087 this.tx決定後_難易度パネル1P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
1089 this.tx決定後_難易度パネル2P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
1091 CDTXMania.t安全にDisposeする( ref bPanel );
1092 CDTXMania.t安全にDisposeする( ref gPanel );
1093 CDTXMania.t安全にDisposeする( ref imgLabel );
1094 CDTXMania.t安全にDisposeする( ref imgLevelNum );
1098 CDTXMania.t安全にDisposeする( ref imgPanel );
1100 private Rectangle t指定したラベル名から難易度パネル画像の座標を取得する( string strラベル名 )
1102 string strRawScriptFile;
1104 Rectangle rect = new Rectangle( 0, 0, 130, 72 );
1107 if( File.Exists( CSkin.Path( @"Script\difficult.dtxs" ) ) )
1110 StreamReader reader = new StreamReader( CSkin.Path( @"Script\difficult.dtxs" ), Encoding.GetEncoding( "Shift_JIS" ) );
1111 strRawScriptFile = reader.ReadToEnd();
1113 strRawScriptFile = strRawScriptFile.Replace( Environment.NewLine, "\n" );
1114 string[] delimiter = { "\n" };
1115 string[] strSingleLine = strRawScriptFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries );
1117 for( int i = 0; i < strSingleLine.Length; i++ )
1119 if( strSingleLine[ i ].StartsWith( "//" ) )
1120 continue; //コメント行の場合は無視
1123 string[] arScriptLine = strSingleLine[ i ].Split( ',' );
1125 if( ( arScriptLine.Length >= 4 && arScriptLine.Length <= 5 ) == false )
1126 continue; //引数が4つか5つじゃなければ無視。
1128 if( arScriptLine[ 0 ] != "6" )
1129 continue; //使用するシーンが違うなら無視。
1131 if( arScriptLine.Length == 4 )
1133 if( String.Compare( arScriptLine[ 1 ], strラベル名, true ) != 0 )
1134 continue; //ラベル名が違うなら無視。大文字小文字区別しない
1136 else if( arScriptLine.Length == 5 )
1138 if( arScriptLine[ 4 ] == "1" )
1140 if( arScriptLine[ 1 ] != strラベル名 )
1141 continue; //ラベル名が違うなら無視。
1145 if( String.Compare( arScriptLine[ 1 ], strラベル名, true ) != 0 )
1146 continue; //ラベル名が違うなら無視。大文字小文字区別しない
1149 rect.X = Convert.ToInt32( arScriptLine[ 2 ] );
1150 rect.Y = Convert.ToInt32( arScriptLine[ 3 ] );