public void t選択曲が変更された()
{
Cスコア cスコア = CDTXMania.stage選曲.r現在選択中のスコア;
+ if( CDTXMania.bXGRelease ) cスコア = CDTXMania.stage選曲XG.r現在選択中のスコア;
+ else cスコア = CDTXMania.stage選曲GITADORA.r現在選択中のスコア;
+
if( cスコア != null )
{
Bitmap image = new Bitmap( 1, 1 );
}
public virtual void t選択曲が変更された()
{
- // C曲リストノード c曲リストノード = CDTXMania.stage選曲.r現在選択中の曲;
- // Cスコア cスコア = CDTXMania.stage選曲.r現在選択中のスコア;
- // if( ( c曲リストノード != null ) && ( cスコア != null ) )
- // {
- // this.n現在選択中の曲の難易度 = CDTXMania.stage選曲.n現在選択中の曲の難易度;
- // for( int i = 0; i < 3; i++ )
- // {
- // if (CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania)
- // this.n現在選択中の曲の最高ランク[i] = cスコア.譜面情報.最大ランク[i];
- // else if (CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
- // this.n現在選択中の曲の最高ランク[i] = DTXMania.CScoreIni.tXGランク値を計算して返す( cスコア.譜面情報.最大スキル[i] );
-
- // int nLevel = cスコア.譜面情報.レベル[ i ];
- // if( nLevel < 0 )
- // {
- // nLevel = 0;
- // }
- // if( nLevel > 99 )
- // {
- // nLevel = 99;
- // }
- // this.n現在選択中の曲のレベル[ i ] = nLevel;
- // this.n現在選択中の曲の最高ランク[ i ] = cスコア.譜面情報.最大ランク[ i ];
- // this.b現在選択中の曲がフルコンボ[ i ] = cスコア.譜面情報.フルコンボ[ i ];
- // this.db現在選択中の曲の最高スキル値[ i ] = cスコア.譜面情報.最大スキル[ i ];
-
- // for( int j = 0; j < 5; j++ )
- // {
- // if( c曲リストノード.arスコア[ j ] != null )
- // {
- // this.n現在選択中の曲のレベル難易度毎DGB[j][i] = c曲リストノード.arスコア[j].譜面情報.レベル[i];
- // this.n現在選択中の曲のレベル小数点難易度毎DGB[j][i] = c曲リストノード.arスコア[j].譜面情報.レベルDec[i];
- // //this.n現在選択中の曲の最高ランク難易度毎[j][i] = c曲リストノード.arスコア[j].譜面情報.最大ランク[i];
- // if ( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
- // this.n現在選択中の曲の最高ランク難易度毎[ j ][ i ] = c曲リストノード.arスコア[ j ].譜面情報.最大ランク[ i ];
- // else if ( CDTXMania.ConfigIni.eSkillMode == ESkillType.XG )
- // 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 ]);
- // this.db現在選択中の曲の最高スキル値難易度毎[ j ][ i ] = c曲リストノード.arスコア[ j ].譜面情報.最大スキル[i];
- // this.b現在選択中の曲がフルコンボ難易度毎[j][i] = c曲リストノード.arスコア[j].譜面情報.フルコンボ[i];
- // this.b現在選択中の曲に譜面がある[j][i] = c曲リストノード.arスコア[j].譜面情報.b譜面がある[i];
- // }
- // }
- // }
- // for( int i = 0; i < 5; i++ )
- // {
- // this.str難易度ラベル[ i ] = c曲リストノード.ar難易度ラベル[ i ];
- // }
- // if( this.r直前の曲 != c曲リストノード )
- // {
- // this.n難易度開始文字位置 = 0;
- // }
- // this.r直前の曲 = c曲リストノード;
- // }
}
public override void On活性化()
{
- this.n現在選択中の曲の難易度 = 0;
- for( int i = 0; i < 3; i++ )
- {
- this.n現在選択中の曲のレベル[ i ] = 0;
- this.db現在選択中の曲の曲別スキル値難易度毎[ i ] = 0.0;
- this.n現在選択中の曲の最高ランク[ i ] = (int)CScoreIni.ERANK.UNKNOWN;
- this.b現在選択中の曲がフルコンボ[ i ] = false;
- this.db現在選択中の曲の最高スキル値[ i ] = 0.0;
- for (int j = 0; j < 5; j++)
- {
- this.n現在選択中の曲のレベル難易度毎DGB[j][i] = 0;
- this.n現在選択中の曲のレベル小数点難易度毎DGB[j][i] = 0;
- this.db現在選択中の曲の最高スキル値難易度毎[j][i] = 0.0;
- this.n現在選択中の曲の最高ランク難易度毎[j][i] = (int)CScoreIni.ERANK.UNKNOWN;
- this.b現在選択中の曲がフルコンボ難易度毎[j][i] = false;
- }
- }
- for( int j = 0; j < 5; j++ )
- {
- this.str難易度ラベル[ j ] = "";
- this.n選択中の曲のレベル難易度毎[ j ] = 0;
-
- this.db現在選択中の曲の曲別スキル値難易度毎[j] = 0.0;
- }
- this.n難易度開始文字位置 = 0;
- this.r直前の曲 = null;
base.On活性化();
}
public override void On非活性化()
}
public override int On進行描画()
{
- // if( !base.b活性化してない )
- // {
- // #region [ 初めての進行描画 ]
- // //-----------------
- // if( base.b初めての進行描画 )
- // {
- // this.ct登場アニメ用 = new CCounter( 0, 100, 5, CDTXMania.Timer );
- // this.ct難易度スクロール用 = new CCounter( 0, 20, 1, CDTXMania.Timer );
- // this.ct難易度矢印用 = new CCounter( 0, 5, 80, CDTXMania.Timer );
- // this.ct難易度変更カウンター = new CCounter( 1, 10, 10, CDTXMania.Timer );
- // base.b初めての進行描画 = false;
- // }
- // //-----------------
- // #endregion
-
- // #region [ 本体位置 ]
- // for( int i = 0; i < 3; i++ )
- // {
- // this.n本体X[ i ] = 0;
- // this.n本体Y[ i ] = 0;
- // }
-
- // if( CDTXMania.ConfigIni.bDrums有効 )
- // {
- // this.n本体X[ 0 ] = 346;
- // this.n本体Y[ 0 ] = 43;
- // }
- // else if( CDTXMania.ConfigIni.bGuitar有効 )
- // {
- // int nSwapflag1P = CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 2 : 1;
- // int nSwapflag2P = CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 1 : 2;
- // this.n本体X[ nSwapflag1P ] = 346;
- // this.n本体Y[ nSwapflag1P ] = 43;
-
- // this.n本体X[ nSwapflag2P ] = 218;
- // this.n本体Y[ nSwapflag2P ] = 546;
- // }
- // #endregion
-
- // // 進行
-
- // this.ct登場アニメ用.t進行();
- // this.ct難易度変更カウンター.t進行();
-
- // this.ct難易度スクロール用.t進行();
- // if( this.ct難易度スクロール用.b終了値に達した )
- // {
- // int num = this.n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す();
- // if( num < 0 )
- // {
- // this.n難易度開始文字位置--;
- // }
- // else if( num > 0 )
- // {
- // this.n難易度開始文字位置++;
- // }
- // this.ct難易度スクロール用.n現在の値 = 0;
- // }
-
- // this.ct難易度矢印用.t進行Loop();
-
- // // 描画
-
- // #region [ パネル本体の描画 ]
- // //-----------------
- // if( this.txパネル本体 != null )
- // {
- // {
- // var mat1 = Matrix.Identity;
- // mat1 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
- // mat1 *= Matrix.RotationY(0.0f);
- // mat1 *= Matrix.RotationZ(0.0f);
- // mat1 *= Matrix.Translation(0f, 260f, 0f);
-
- // var mat2 = Matrix.Identity;
- // mat2 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
- // mat2 *= Matrix.RotationY(0.0f);
- // mat2 *= Matrix.RotationZ(0.0f);
- // mat2 *= Matrix.Translation(0f, -240f, 0f);
-
- // if( CDTXMania.ConfigIni.bDrums有効 )
- // {
- // if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[ 5 ].n現在の値 != 100 )
- // this.txパネル本体.t3D描画( CDTXMania.app.Device, mat1 , new Rectangle( 0, 0, 1280, 200 ) );
- // else
- // this.txパネル本体.t2D描画( CDTXMania.app.Device, 0, this.n本体Y[ 0 ] - 43, new Rectangle(0, 0, 1280, 200) );
- // }
- // else if ( CDTXMania.ConfigIni.bGuitar有効 )
- // {
- // if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 != 100 )
- // {
- // if (!CDTXMania.ConfigIni.bIsSwappedGuitarBass)
- // {
- // this.txパネル本体.t3D描画(CDTXMania.app.Device, mat1, new Rectangle(0, 200, 1280, 200));
- // this.txパネル本体.t3D描画(CDTXMania.app.Device, mat2, new Rectangle(0, 400, 1280, 200));
- // }
- // else
- // {
- // this.txパネル本体.t3D描画(CDTXMania.app.Device, mat1, new Rectangle(0, 600, 1280, 200));
- // this.txパネル本体.t3D描画(CDTXMania.app.Device, mat2, new Rectangle(0, 800, 1280, 200));
- // }
- // }
- // else
- // {
- // if (!CDTXMania.ConfigIni.bIsSwappedGuitarBass)
- // {
- // this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 1 ] - 43, new Rectangle(0, 200, 1280, 200));
- // this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 2 ] - 43, new Rectangle(0, 400, 1280, 200));
- // }
- // else
- // {
- // this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 2 ] - 43, new Rectangle(0, 600, 1280, 200));
- // this.txパネル本体.t2D描画(CDTXMania.app.Device, 0, this.n本体Y[ 1 ] - 43, new Rectangle(0, 800, 1280, 200));
- // }
-
- // }
- // }
- // }
- // }
- // //-----------------
- // #endregion
- // #region[ 難易度パネルの描画 ]
- // int[] y差分 = new int[ 5 ];
- // int[] x差分 = new int[ 5 ];
- // int n難易度ラベル合計値 = 0;
- // int n難易度ラベル合計値1P = 0;
- // int n難易度ラベル合計値2P = 0;
- // if( this.tx難易度パネル != null )
- // {
- // for (int i = 0; i < 5; i++)
- // {
- // if (this.n現在選択中の曲の難易度 == i)
- // {
- // y差分[i] += this.ct難易度変更カウンター.n現在の値;
- // x差分[i] += 132;
- // }
- // }
- // if( CDTXMania.ConfigIni.bDrums有効 )
- // {
- // if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 == 100 )
- // {
- // for( int i = 0; i < 5; i++ )
- // {
- // if( this.str難易度ラベル[ i ] != null || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- // {
- // //ランダムの場合は全てのパネルを描画する。
- // this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 346 + ( 143 * i ), this.n本体Y[ 0 ] - y差分[ i ], new Rectangle( x差分[ i ], 0 + ( 98 * i ), 132, 98 ) );
- // n難易度ラベル合計値++;
- // }
- // }
- // if( n難易度ラベル合計値 == 0 && CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE ) //難易度ラベルが存在しなかった場合は5に描画する。
- // this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 346 + ( 143 * 4 ), this.n本体Y[ 0 ] - 10, new Rectangle( 132, 0 + ( 98 * 4 ), 132, 98 ) );
- // }
- // else
- // {
- // for( int i = 0; i < 5; i++ )
- // {
- // var mat = Matrix.Identity;
- // mat *= Matrix.RotationX( 1.60f - (float)( (float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[ 5 ].n現在の値 * 0.016f ) );
- // mat *= Matrix.RotationY( 0.0f );
- // mat *= Matrix.RotationZ( 0.0f );
- // mat *= Matrix.Translation(-228f + (i * 143f), 268f + y差分[i], 0f);
-
- // if( this.str難易度ラベル[i] != null )
- // this.tx難易度パネル.t3D描画(CDTXMania.app.Device, mat, new Rectangle(x差分[i], 98 * i, 132, 98));
- // }
- // }
- // }
- // else if( CDTXMania.ConfigIni.bGuitar有効 )
- // {
- // if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 == 100 )
- // {
- // for( int i = 0; i < 5; i++ )
- // {
- // for( int j = 0; j < 2; j++ )
- // {
- // if( this.str難易度ラベル[ i ] != null || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- // {
- // 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 ) );
- // if( j == 0 ) n難易度ラベル合計値1P++;
- // else n難易度ラベル合計値2P++;
- // }
- // }
- // // else if (CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE)
- // // flag = flag + 1;
-
- // // if (this.str難易度ラベル[i] != null || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
- // // 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));
- // }
- // for( int i = 0; i < 2; i++ )
- // {
- // if( ( i == 0 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 1 ) && CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE ) //難易度ラベルが存在しなかった場合は5に描画する。
- // this.tx難易度パネル.t2D描画( CDTXMania.app.Device, 346 + ( 143 * 4 ), this.n本体Y[ i + 1 ] - 10, new Rectangle( 132, 0 + ( 98 * 4 ), 132, 98 ) );
- // }
- // // if (flag == 5)
- // // {
- // // 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));
- // // 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));
- // // }
- // // }
- // // else
- // // {
- // // for (int i = 0; i < 5; i++)
- // // {
- // // var mat1 = Matrix.Identity;
- // // mat1 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
- // // mat1 *= Matrix.RotationY(0.0f);
- // // mat1 *= Matrix.RotationZ(0.0f);
- // // mat1 *= Matrix.Translation(-228f + (i * 143f), 268f + y差分[i], 0f);
-
- // // var mat2 = Matrix.Identity;
- // // mat2 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
- // // mat2 *= Matrix.RotationY(0.0f);
- // // mat2 *= Matrix.RotationZ(0.0f);
- // // mat2 *= Matrix.Translation(-355f + (i * 143f), -235f + y差分[i], 0f);
-
-
- // // if (this.str難易度ラベル[i] != null)
- // // this.tx難易度パネル.t3D描画(CDTXMania.app.Device, mat1 , new Rectangle(0 + x差分[i], 0 + (98 * i), 132, 98));
-
- // // if (this.str難易度ラベル[i] != null)
- // // this.tx難易度パネル.t3D描画(CDTXMania.app.Device, mat2 , new Rectangle(0 + x差分[i], 0 + (98 * i), 132, 98));
- // // }
- // }
- // }
- // }
- // #endregion
- // Cスコア cスコア = CDTXMania.stage選曲.r現在選択中のスコア;
-
- // if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[ 5 ].b終了値に達した )
- // {
- // #region [ 難易度文字列の描画 ]
- // //-----------------
- // for( int i = 0; i < 5; i++ )
- // {
- // if( CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.共通_通常状態 )
- // {
- // CDTXMania.act文字コンソール.tPrint( 346 + ( i * 142 ), 8, ( this.n現在選択中の曲の難易度 == i ) ? C文字コンソール.Eフォント種別.赤 : C文字コンソール.Eフォント種別.白, this.str難易度ラベル[ i ] );
- // if( CDTXMania.ConfigIni.bGuitar有効 )
- // CDTXMania.act文字コンソール.tPrint( 218 + ( i * 142 ), 670, ( this.n現在選択中の曲の難易度 == i ) ? C文字コンソール.Eフォント種別.赤 : C文字コンソール.Eフォント種別.白, this.str難易度ラベル[ i ] );
- // }
- // }
- // //-----------------
- // #endregion
- // #region [ 選択曲の Lv の描画 ]
- // //-----------------
- // if( ( cスコア != null ) && ( this.tx難易度数字XG != null ) )
- // {
- // if( CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.共通_通常状態 )
- // this.tx難易度数字XG.n透明度 = (int)( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[ 5 ].n現在の値 * 2.6f );
- // for( int j = 0; j < 3; j++ )
- // {
- // if( this.n本体X[ j ] == 0 ) continue;
- // for( int i = 0; i < 5; i++ )
- // {
- // int[] n難易度整数 = new int[5];
- // int[] n難易度小数 = new int[5];
- // n難易度整数[ i ] = (int)this.n現在選択中の曲のレベル難易度毎DGB[ i ][ j ] / 10;
- // n難易度小数[ i ] = ( this.n現在選択中の曲のレベル難易度毎DGB[ i ][ j ] - (n難易度整数[ i ] * 10 ) ) * 10;
- // n難易度小数[ i ] += this.n現在選択中の曲のレベル小数点難易度毎DGB[ i ][ j ];
-
- // if( this.str難易度ラベル[ i ] != null && this.b現在選択中の曲に譜面がある[ i ][ j ])
- // {
- // this.t大文字表示(73 + this.n本体X[ j ] + (i * 143), 19 + this.n本体Y[j] - y差分[i], string.Format("{0:0}", n難易度整数[i]));
- // this.t小文字表示(102 + this.n本体X[ j ] + (i * 143), 37 + this.n本体Y[j] - y差分[i], string.Format("{0,2:00}", n難易度小数[i]));
- // 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));
- // }
- // else if ((this.str難易度ラベル[i] != null && !this.b現在選択中の曲に譜面がある[i][j]) || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
- // {
- // this.t大文字表示(73 + this.n本体X[j] + (i * 143), 19 + this.n本体Y[j] - y差分[i], ("-"));
- // this.t小文字表示(102 + this.n本体X[j] + (i * 143), 37 + this.n本体Y[j] - y差分[i], ("--"));
- // 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));
- // }
- // }
- // if( n難易度ラベル合計値 == 0 )
- // {
-
- // }
- // }
- // }
- // //-----------------
- // #endregion
- // #region [ 選択曲の 曲別スキルの描画 ]
- // //-----------------
- // for( int j = 0; j < 3; j++ )
- // {
- // if( this.n本体X[ j ] != 0 )
- // {
- // int[] n曲別スキル位置 = new int[] { 223, 223, 1144 };
- // if( CDTXMania.ConfigIni.bIsSwappedGuitarBass )
- // n曲別スキル位置 = new int[] { 223, 1144, 223 };
- // double[] db現在の曲のレベルXG = new double[ 5 ];
- // double db曲別スキル = 0;
-
- // for( int i = 0; i < 5; i++ )
- // {
- // if( this.str難易度ラベル[ i ] != null )
- // {
- // db現在の曲のレベルXG[ i ] = this.n現在選択中の曲のレベル難易度毎DGB[ i ][ j ] / 10.0;
- // db現在の曲のレベルXG[ i ] += this.n現在選択中の曲のレベル小数点難易度毎DGB[ i ][ j ] / 100.0;
- // if( ( ( this.db現在選択中の曲の最高スキル値難易度毎[ i ][ j ] / 100.0 ) * db現在の曲のレベルXG[ i ] * 20.0 ) > db曲別スキル )
- // db曲別スキル = ( this.db現在選択中の曲の最高スキル値難易度毎[ i ][ j ] / 100.0 ) * db現在の曲のレベルXG[ i ] * 20.0;
- // }
- // }
- // if( db曲別スキル != 0 )
- // {
- // this.txゲージ用数字他.t2D描画( CDTXMania.app.Device, n曲別スキル位置[ j ], this.n本体Y[ j ] + 51, new Rectangle( 0, 32, 64, 38 ) );
- // this.t達成率表示( n曲別スキル位置[ j ] + 11, this.n本体Y[ j ] + 69, string.Format( "{0,6:##0.00}", db曲別スキル ) );
- // }
- // }
- // }
- // //-----------------
- // #endregion
- // #region [ 選択曲の 最高スキル値ゲージ+数値の描画 ]
- // //-----------------
- // for (int j = 0; j < 3; j++)
- // {
- // if ( this.n本体X[j] != 0 )
- // {
- // for (int i = 0; i < 5; i++)
- // {
- // if (this.str難易度ラベル[i] != null && this.db現在選択中の曲の最高スキル値難易度毎[i][j] != 0.00)
- // {
- // 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]));
- // }
- // }
- // if( j == 0 )
- // {
- // if( n難易度ラベル合計値 == 0 && this.db現在選択中の曲の最高スキル値[j] != 0.00 )
- // {
- // this.t達成率表示(76 + this.n本体X[j] + (4 * 143), 77 + this.n本体Y[j] - 10, string.Format("{0,6:##0.00}%", this.db現在選択中の曲の最高スキル値[j]));
- // }
- // }
- // else
- // {
- // if( ( j == 1 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 0 ) && this.db現在選択中の曲の最高スキル値[j] != 0.00 )
- // {
- // this.t達成率表示(76 + this.n本体X[j] + (4 * 143), 77 + this.n本体Y[j] - 10, string.Format("{0,6:##0.00}%", this.db現在選択中の曲の最高スキル値[j]));
- // }
- // }
- // }
- // }
- // //-----------------
- // #endregion
- // #region [ 選択曲の 最高ランクの描画 ]
- // //-----------------
- // for (int j = 0; j < 3; j++)
- // {
- // if (this.n本体X[j] != 0 && this.txゲージ用数字他 != null)
- // {
- // for (int i = 0; i < 5; i++)
- // {
- // if (this.str難易度ラベル[i] != null && this.db現在選択中の曲の最高スキル値難易度毎[i][j] != 0.00)
- // {
- // int nMaxRank = this.n現在選択中の曲の最高ランク難易度毎[i][j];
- // if (nMaxRank != 99)
- // {
- // if (nMaxRank < 0)
- // nMaxRank = 0;
- // if (nMaxRank > 6)
- // nMaxRank = 6;
-
- // 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));
- // }
- // }
- // }
- // if( j == 0 )
- // {
- // if( ( n難易度ラベル合計値 == 0 ) && this.db現在選択中の曲の最高スキル値[j] != 0.00)
- // {
- // int nMaxRank = this.n現在選択中の曲の最高ランク[j];
-
- // if (nMaxRank != 99)
- // {
- // if (nMaxRank < 0)
- // nMaxRank = 0;
-
- // if (nMaxRank > 6)
- // nMaxRank = 6;
-
- // 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));
- // }
- // }
- // }
- // else
- // {
- // if( ( j == 1 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 0 ) && this.db現在選択中の曲の最高スキル値[j] != 0.00)
- // {
- // int nMaxRank = this.n現在選択中の曲の最高ランク[j];
-
- // if (nMaxRank != 99)
- // {
- // if (nMaxRank < 0)
- // nMaxRank = 0;
-
- // if (nMaxRank > 6)
- // nMaxRank = 6;
-
- // 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));
- // }
- // }
- // }
-
- // }
- // }
- // //-----------------
- // #endregion
- // #region [ 選択曲の FullCombo Excellent の 描画 ]
- // //-----------------
- // for (int j = 0; j < 3; j++)
- // {
- // if (this.n本体X[j] != 0 && this.txゲージ用数字他 != null)
- // {
- // for (int i = 0; i < 5; i++)
- // {
- // if (this.db現在選択中の曲の最高スキル値難易度毎[i][j] == 100 && this.str難易度ラベル[i] != null)
- // 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));
- // else if (this.b現在選択中の曲がフルコンボ難易度毎[i][j] && this.str難易度ラベル[i] != null)
- // 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));
- // }
- // if( j == 0 )
- // {
- // if( n難易度ラベル合計値 == 0 )
- // {
- // if (this.db現在選択中の曲の最高スキル値[j] == 100)
- // 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));
- // else if (this.b現在選択中の曲がフルコンボ[j])
- // 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));
- // }
- // }
- // else
- // {
- // if( j == 1 ? n難易度ラベル合計値1P == 0 : n難易度ラベル合計値2P == 0 )
- // {
- // if (this.db現在選択中の曲の最高スキル値[j] == 100)
- // 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));
- // else if (this.b現在選択中の曲がフルコンボ[j])
- // 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));
- // }
- // }
- // }
- // }
- // //-----------------
- // #endregion
-
- // if( CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.選曲_決定演出 || CDTXMania.r現在のステージ.eフェーズID == CStage.Eフェーズ.選曲_NowLoading画面へのフェードアウト )
- // {
- // this.n本体Y[ 0 ] = 43 - ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 <= 250 && CDTXMania.stage選曲.ct決定演出待機.n現在の値 >= 0 ? (int)( 70 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) : 0 );
- // this.n本体Y[ 1 ] = 43 - ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 <= 250 && CDTXMania.stage選曲.ct決定演出待機.n現在の値 >= 0 ? (int)( 70 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) : 0 );
- // this.n本体Y[ 2 ] = 546 + ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 <= 250 && CDTXMania.stage選曲.ct決定演出待機.n現在の値 >= 0 ? (int)( 70 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) : 0 );
- // this.txパネル本体.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
- // this.txゲージ用数字他.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
- // this.tx難易度パネル.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
- // this.tx難易度数字XG.n透明度 = (int)( 255 - ( 255 * ( ( CDTXMania.stage選曲.ct決定演出待機.n現在の値 ) / 250.0 ) ) );
- // if( CDTXMania.stage選曲.ct決定演出待機.n現在の値 > 250 )
- // {
- // this.txパネル本体.n透明度 = 0;
- // this.txゲージ用数字他.n透明度 = 0;
- // this.tx難易度数字XG.n透明度 = 0;
- // }
- // if( this.tx決定後_難易度パネル1P == null )
- // this.t決定アニメ_難易度パネルを生成する();
- // if( this.tx決定後_難易度パネル1P != null && ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.stage選曲.r確定されたスコア.譜面情報.b譜面がある.Guitar ) )
- // {
- // //挙動が謎のためY軸回転は保留。
-
- // if( CDTXMania.stage選曲.ct決定演出待機.n現在の値 < 400 )
- // {
- // 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 ) );
- // this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254 - nX, 162 );
- // //CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, nX.ToString() );
- // }
- // else
- // {
- // this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254, 162 );
- // }
- // }
- // else if( this.tx決定後_難易度パネル1P != null && CDTXMania.stage選曲.r確定されたスコア.譜面情報.b譜面がある.Drums )
- // {
- // //挙動が謎のためY軸回転は保留。
-
- // if( CDTXMania.stage選曲.ct決定演出待機.n現在の値 < 400 )
- // {
- // 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 ) );
- // this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254 - nX, 162 );
- // //CDTXMania.act文字コンソール.tPrint( 0, 64, C文字コンソール.Eフォント種別.白, nX.ToString() );
- // }
- // else
- // {
- // this.tx決定後_難易度パネル1P.t2D描画( CDTXMania.app.Device, 254, 162 );
- // }
- // }
- // /*
- // if( this.tx決定後_難易度パネル2P == null && CDTXMania.ConfigIni.bGuitar有効 )
- // this.t決定アニメ_難易度パネルを生成する();
- // if( this.tx決定後_難易度パネル2P != null && CDTXMania.stage選曲.r確定されたスコア.譜面情報.b譜面がある.Bass )
- // {
- // if( CDTXMania.stage選曲.ct決定演出待機.n現在の値 < 400 )
- // {
- // 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 ) );
- // this.tx決定後_難易度パネル2P.t2D描画( CDTXMania.app.Device, 870 + nX, 162 );
- // }
- // else
- // {
- // this.tx決定後_難易度パネル2P.t2D描画( CDTXMania.app.Device, 870, 162 );
- // }
- // }*/
- // }
- // }
- // }
return 0;
}
}
}
- private STDGBVALUE<bool> b現在選択中の曲がフルコンボ;
+ STDGBVALUE<bool> b現在選択中の曲がフルコンボ;
private STDGBVALUE<double> db現在選択中の曲の最高スキル値;
private STDGBVALUE<int> n現在選択中の曲のレベル;
private STDGBVALUE<int> n現在選択中の曲の最高ランク;
protected int n現在選択中の曲の難易度;
private int n難易度開始文字位置;
private const int n難易度表示可能文字数 = 0x24;
- private C曲リストノード r直前の曲;
private string[] str難易度ラベル = new string[] { "", "", "", "", "" };
private CTexture txゲージ用数字他;
public CTexture txパネル本体;
new ST達成率数字( '.', new Rectangle( 79, 62, 3, 16 ) )
};
- private int n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す()
+ protected int n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す()
{
int num = 0;
int length = 0;
x += 8;
}
}
- private void t決定アニメ_難易度パネルを生成する()
- {
- //ギター・ベースの場合、1枚の画像を2回読み込むことになるので回避。
- Image imgPanel;
- imgPanel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_base info panel.png" ) );
- int[] arPanelRectX = new int[] { 164, 326, 650, 488 }; //Drums(使用しない), Guitar, Bass, GuitarF, BassF
-
- #region[ ドラム ]
- if( CDTXMania.ConfigIni.bDrums有効 && imgPanel != null )
- {
- Bitmap bPanel = new Bitmap( 155, 362 );
- Graphics graphics = Graphics.FromImage( bPanel );
-
- Image imgLabel;
- Image imgLevelNum;
-
- graphics.PageUnit = GraphicsUnit.Pixel;
- graphics.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( 2, 2, 155, 362 ), GraphicsUnit.Pixel );
-
- imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
- graphics.DrawImage( imgLabel, new Rectangle( 14, 31, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
-
- imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
-
- //XG譜面
- if( !CDTXMania.stage選曲.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である.Drums )
- {
- #region[ XG譜面 ]
- int n難易度整数;
- int n難易度小数;
- string str難易度;
- n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] / 10;
- n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] - ( n難易度整数 * 10 ) ) * 10;
- n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ];
- str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < this.st大文字位置.Length; j++ )
- {
- if( this.st大文字位置[ j ].ch == str難易度[ 0 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40 );
- graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- for( int j = 0; j < this.st小文字位置.Length; j++ )
- {
- if( this.st小文字位置[ j ].ch == str難易度[ k + 1 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st小文字位置[ j ].pt.X, this.st小文字位置[ j ].pt.Y, 12, 22 );
- graphics.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- graphics.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), new Rectangle( 0, 40, 12, 22 ), GraphicsUnit.Pixel );
- }
- }
- #endregion
- }
- else
- {
- #region[ CLASSIC譜面 ]
- string str難易度;
- str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] );
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < 2; j++ )
- {
- for( int k = 0; k < this.st大文字位置.Length; k++ )
- {
- if( this.st大文字位置[ k ].ch == str難易度[ j ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ k ].pt.X, this.st大文字位置[ k ].pt.Y, 22, 40 );
- graphics.DrawImage( imgLevelNum, new Rectangle( 94 + ( 22 * j ), 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- graphics.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- graphics.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- }
- #endregion
- }
-
- this.tx決定後_難易度パネル1P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref bPanel );
- CDTXMania.t安全にDisposeする( ref graphics );
- CDTXMania.t安全にDisposeする( ref imgPanel );
- CDTXMania.t安全にDisposeする( ref imgLabel );
- CDTXMania.t安全にDisposeする( ref imgLevelNum );
- }
- #endregion
- #region[ ギター・ベース ]
- else if( CDTXMania.ConfigIni.bGuitar有効 && imgPanel != null )
- {
- for( int i = 1; i <= 2; i++ )
- {
- Bitmap bPanel = new Bitmap( 155, 362 );
- Graphics gPanel = Graphics.FromImage( bPanel );
-
- Image imgLabel;
- Image imgLevelNum;
-
- gPanel.PageUnit = GraphicsUnit.Pixel;
- gPanel.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( arPanelRectX[ i + ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 1 : -1 ) ], 2, 155, 362 ), GraphicsUnit.Pixel );
-
- imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
- gPanel.DrawImage( imgLabel, new Rectangle( 14, 32, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
-
- imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
-
- //XG譜面
- if( !CDTXMania.stage選曲.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である[ i ] )
- {
- #region[ XG譜面 ]
- int n難易度整数;
- int n難易度小数;
- string str難易度;
- n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] / 10;
- n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] - ( n難易度整数 * 10 ) ) * 10;
- n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ];
- str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < this.st大文字位置.Length; j++ )
- {
- if( this.st大文字位置[ j ].ch == str難易度[ 0 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40 );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- for( int j = 0; j < this.st小文字位置.Length; j++ )
- {
- if( this.st小文字位置[ j ].ch == str難易度[ k + 1 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st小文字位置[ j ].pt.X, this.st小文字位置[ j ].pt.Y, 12, 22 );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- gPanel.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), new Rectangle( 0, 40, 12, 22 ), GraphicsUnit.Pixel );
- }
- }
- #endregion
- }
- else
- {
- #region[ CLASSIC譜面 ]
- string str難易度;
- str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < 2; j++ )
- {
- for( int k = 0; k < this.st大文字位置.Length; k++ )
- {
- if( this.st大文字位置[ k ].ch == str難易度[ j ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ k ].pt.X, this.st大文字位置[ k ].pt.Y, 22, 40 );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 94 + ( 22 * j ), 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- gPanel.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- }
- #endregion
- }
-
- if( i == 1 )
- this.tx決定後_難易度パネル1P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
- else if( i == 2 )
- this.tx決定後_難易度パネル2P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref bPanel );
- CDTXMania.t安全にDisposeする( ref gPanel );
- CDTXMania.t安全にDisposeする( ref imgLabel );
- CDTXMania.t安全にDisposeする( ref imgLevelNum );
- }
- }
- #endregion
- CDTXMania.t安全にDisposeする( ref imgPanel );
- }
- private Rectangle t指定したラベル名から難易度パネル画像の座標を取得する( string strラベル名 )
+ protected Rectangle t指定したラベル名から難易度パネル画像の座標を取得する( string strラベル名 )
{
string strRawScriptFile;
/// </summary>
public void t選択曲が変更された( bool bForce ) // #27648
{
- C曲リストノード song = CDTXMania.stage選曲.r現在選択中の曲;
+ C曲リストノード song = this.r現在選択中の曲;
+
if ( song == null )
return;
if ( song == song_last && bForce == false )
regular,
GraphicsUnit.Pixel
);
- FontStyle fStyle = CDTXMania.ConfigIni.b選曲リストフォントを太字にする ? FontStyle.Bold : FontStyle.Regular;
- this.prvPanelFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18, fStyle );
+ //FontStyle fStyle = CDTXMania.ConfigIni.b選曲リストフォントを太字にする ? FontStyle.Bold : FontStyle.Regular;
+ //this.prvPanelFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18, fStyle );
// 現在選択中の曲がない(=はじめての活性化)なら、現在選択中の曲をルートの先頭ノードに設定する。
if( this.b活性化してない )
return;
- this.tx選曲パネル = null;
- if( CDTXMania.ConfigIni.bDrums有効 )
- this.tx選曲パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_image_panel.png" ) );
- else
- this.tx選曲パネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_image_panel_guitar.png" ) );
-
- this.txパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_music panel.png") );
- this.txパネル帯 = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\5_Backbar.png" ) );
- this.txクリアランプ = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Clearlamp.png") );
- #region[ テクスチャの復元 ]
- int nKeys = this.dicThumbnail.Count;
- string[] keys = new string[ nKeys ];
- this.dicThumbnail.Keys.CopyTo( keys, 0 );
- foreach (var key in keys)
- this.dicThumbnail[ key ] = this.tパスを指定してサムネイル画像を生成して返す( 0, key, this.stバー情報[ 0 ].eバー種別 );;
-
- //ここは最初に表示される画像の復元に必要。
- for( int i = 0; i < 15; i++ )
- {
- this.tパネルの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].strアーティスト名, this.stバー情報[ i ].col文字色 );
- if( this.stバー情報[ i ].strPreimageのパス != null )
- {
- if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strPreimageのパス ) )
- {
- this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
- this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス, this.txTumbnail[ i ] );
- }
- this.txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
- }
- }
- #endregion
-
int c = ( CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja" ) ? 0 : 1;
#region [ Songs not found画像 ]
try
{
if( this.b活性化してない )
return;
-
- for ( int i = 0; i < 15; i++ )
- {
- CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txタイトル名 );
- CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txアーティスト名 );
- CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txパネル );
- }
- #region[ ジャケット画像の解放 ]
- int nKeys = this.dicThumbnail.Count;
- string[] keys = new string[ nKeys ];
- this.dicThumbnail.Keys.CopyTo( keys, 0 );
- foreach( var key in keys )
- {
- C共通.tDisposeする( this.dicThumbnail[ key ] );
- this.dicThumbnail[ key ] = null;
- }
- #endregion
-
- CDTXMania.t安全にDisposeする( ref this.tx選択されている曲の曲名 );
- CDTXMania.t安全にDisposeする( ref this.tx選択されている曲のアーティスト名 );
- CDTXMania.t安全にDisposeする( ref this.tx選択されている曲のジャケット画像 );
-
+
CDTXMania.t安全にDisposeする( ref this.txEnumeratingSongs );
CDTXMania.t安全にDisposeする( ref this.txSongNotFound );
CDTXMania.t安全にDisposeする( ref this.tx選曲パネル );
- CDTXMania.t安全にDisposeする( ref this.txパネル );
- CDTXMania.t安全にDisposeする( ref this.txクリアランプ );
- CDTXMania.t安全にDisposeする( ref this.txパネル帯 );
CDTXMania.t安全にDisposeする( ref this.txベース曲パネル );
CDTXMania.t安全にDisposeする( ref this.prvPanelFont );
}
public override int On進行描画()
{
- #region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ]
- int py;
- double d = 0;
- if ( nNumOfItems > 1 )
- {
- d = ( 336 - 8 ) / (double) ( nNumOfItems - 1 );
- py = (int) ( d * ( nCurrentPosition - 1 ) );
- }
- else
- {
- d = 0;
- py = 0;
- }
- int delta = (int) ( d * this.n現在のスクロールカウンタ / 100 );
- if ( py + delta <= 336 - 8 )
- {
- this.nスクロールバー相対y座標 = py + delta;
- }
- #endregion
return 0;
}
/// <para>正直この方法は好ましくないような気がする。</para>
/// </summary>
protected Dictionary<string, CTexture> dicThumbnail = new Dictionary<string, CTexture>();
- protected ST中心点[] stマトリックス座標 = new ST中心点[] {
- #region [ 実は円弧配置になってない。射影行列間違ってるよスターレインボウ見せる気かよ… ]
- //-----------------
- new ST中心点() { x = -940.0000f, y = 4f, z = 320f, rotY = 0.4150f },
- new ST中心点() { x = -740.0000f, y = 4f, z = 230f, rotY = 0.4150f },
- new ST中心点() { x = -550.0000f, y = 4f, z = 150f, rotY = 0.4150f },
- new ST中心点() { x = -370.0000f, y = 4f, z = 70f, rotY = 0.4150f },
- new ST中心点() { x = -194.0000f, y = 4f, z = -6f, rotY = 0.4150f },
- new ST中心点() { x = 6.00002622683f, y = 2f, z = 0f, rotY = 0f },
- new ST中心点() { x = 204.0000f, y = 4f, z = 0f, rotY = -0.4150f },
- new ST中心点() { x = 362.0000f, y = 4f, z = 70f, rotY = -0.4150f },
- new ST中心点() { x = 528.0000f, y = 4f, z = 146f, rotY = -0.4150f },
- new ST中心点() { x = 686.0000f, y = 4f, z = 212f, rotY = -0.4150f },
- new ST中心点() { x = 848.0000f, y = 4f, z = 282f, rotY = -0.4150f },
- new ST中心点() { x = 1200.0000f, y = 4f, z = 450f, rotY = -0.4150f },
- new ST中心点() { x = 1500.0000f, y = 4f, z = -289.5575f, rotY = -0.9279888f },
- new ST中心点() { x = 1500.0000f, y = 4f, z = -289.5575f, rotY = -0.9279888f },
- //-----------------
- #endregion
- };
public bool b登場アニメ全部完了;
public Color color文字影 = Color.FromArgb( 0x40, 10, 10, 10 );
public int n現在の選択行;
public int n目標のスクロールカウンタ;
private CTexture txSongNotFound, txEnumeratingSongs;
- private CTexture[] txTumbnail = new CTexture[ 15 ];
+ protected CTexture[] txTumbnail = new CTexture[ 15 ];
private CTexture txクリアランプ;
private CTexture tx選曲パネル;
private CTexture tx選択されている曲の曲名;
private CTexture txパネル;
private CTexture txパネル帯;
private CPrivateFastFont prvPanelFont;
- public STバー tx曲名バー;
public STバー情報[] stバー情報 = new STバー情報[ 15 ];
public ST選曲バー tx選曲バー;
public int nCurrentPosition = 0;
{
}
-
- private void tパスを指定してサムネイル画像を生成する( int nバー番号, string strDTXPath, Eバー種別 eType )
- {
- if( nバー番号 < 0 || nバー番号 > 15 )
- return;
-
- //if( true )
- // return;
-
- if( !File.Exists( strDTXPath ) )
- {
- this.txTumbnail[ nバー番号 ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_preimage default.png" ) );
- }
- else
- {
- this.txTumbnail[ nバー番号 ] = CDTXMania.tテクスチャの生成( strDTXPath );
- }
- }
- /// <summary>
- /// 正直このメソッド消したい。
- /// </summary>
- /// <param name="nバー番号">バー番号</param>
- /// <param name="strDTXPath">preimageのパス</param>
- /// <param name="eType">バーの種類(未使用)</param>
- /// <returns>サムネイル画像</returns>
- private CTexture tパスを指定してサムネイル画像を生成して返す( int nバー番号, string strDTXPath, Eバー種別 eType )
- {
- //if( true )
- // return null;
-
- if( nバー番号 < 0 || nバー番号 > 15 )
- return this.txTumbnail[ nバー番号 ] = null; //2016.03.12 kairera0467 僅かながら高速化
-
- if( !File.Exists( strDTXPath ) )
- {
- return this.txTumbnail[ nバー番号 ] = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_preimage default.png" ) );
- }
- else
- {
- return this.txTumbnail[ nバー番号 ] = CDTXMania.tテクスチャの生成( strDTXPath );
- }
- }
- private CTexture t指定された文字テクスチャを生成する( string str文字 )
- {
- //2013.09.05.kairera0467 中央にしか使用することはないので、色は黒固定。
- //現在は機能しない(面倒なので実装してない)が、そのうち使用する予定。
- //PrivateFontの試験運転も兼ねて。
- //CPrivateFastFont
- CPrivateFastFont prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 14, FontStyle.Regular );
- Bitmap bmp;
-
- bmp = prvFont.DrawPrivateFont( str文字, Color.Black, Color.Transparent );
-
- CTexture tx文字テクスチャ = CDTXMania.tテクスチャの生成( bmp, false );
-
- if( tx文字テクスチャ != null )
- tx文字テクスチャ.vc拡大縮小倍率 = new Vector3( 0.75f, 1f, 1f );
-
- int n最大幅 = 290;
- if( tx文字テクスチャ.szテクスチャサイズ.Width > n最大幅 )
- {
- tx文字テクスチャ.vc拡大縮小倍率 = new Vector3( ( n最大幅 / ( tx文字テクスチャ.szテクスチャサイズ.Width / 0.75f ) ), 1f, 1f );
- }
-
- CDTXMania.t安全にDisposeする( ref bmp );
- CDTXMania.t安全にDisposeする( ref prvFont );
-
- return tx文字テクスチャ;
- }
- private void tパネルの生成( int nバー番号, string str曲名, string strアーティスト名, Color color )
- {
- //t3D描画の仕様上左詰や右詰が面倒になってしまうので、
- //パネルにあらかじめ曲名とアーティスト名を埋め込んでおく。
-
- //2016.02.21 kairera0467 ここの最適化が足りないかも。
-
- if( nバー番号 < 0 || nバー番号 > 15 )
- return;
-
- if( !File.Exists( CSkin.Path( @"Graphics\5_music panel.png" ) ) )
- {
- Trace.TraceError( "5_music panel.png が存在しないため、パネルの生成を中止しました。" );
- return;
- }
-
- try
- {
- CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txパネル ); //2016.3.12 kairera0467 パネル生成時に既にあるパネルを解放するようにした。
-
- Bitmap bSongPanel = new Bitmap( 223, 279 );
- Graphics graphics = Graphics.FromImage( bSongPanel );
-
- Image imgSongPanel;
- Image imgSongJacket;
- Image imgCustomSongNameTexture;
- Image imgCuttomArtistNameTexture;
- bool bFoundTitleTexture = false;
- bool bFoundArtistTexture = false;
-
- graphics.PageUnit = GraphicsUnit.Pixel;
-
- imgSongPanel = Image.FromFile( CSkin.Path( @"Graphics\5_music panel.png" ) );
- graphics.DrawImage( imgSongPanel, 0, 0, 223, 279 );
-
- string strPassBefore = "";
- string strPassAfter = "";
- try
- {
- strPassBefore = this.stバー情報[ nバー番号 ].strDTXフォルダのパス;
- strPassAfter = strPassBefore.Replace( this.stバー情報[ nバー番号 ].ar譜面情報.Preimage, "" );
- }
- catch
- {
- //Replaceでエラーが出たらここで適切な処理ができるようにしたい。
- strPassBefore = "";
- strPassAfter = "";
- }
-
- #region[ 曲名とアーティスト名 ]
- string strPath = ( strPassAfter + "TitleTexture.png" );
- if( File.Exists( ( strPath ) ) )
- {
- imgCustomSongNameTexture = Image.FromFile( strPath );
- graphics.DrawImage( imgCustomSongNameTexture, 4, -1, 223, 33 );
- CDTXMania.t安全にDisposeする( ref imgCustomSongNameTexture );
- bFoundTitleTexture = true;
- }
- if( File.Exists( ( strPassAfter + "ArtistTexture.png" ) ) )
- {
- imgCuttomArtistNameTexture = Image.FromFile( strPassAfter + "ArtistTexture.png" );
- graphics.DrawImage(imgCuttomArtistNameTexture, 0, 252, 223, 26);
- CDTXMania.t安全にDisposeする( ref imgCuttomArtistNameTexture );
- bFoundArtistTexture = true;
- }
-
- if( bFoundTitleTexture == false || bFoundArtistTexture == false )
- {
- //FontStyle fStyle = CDTXMania.ConfigIni.b選曲リストフォントを太字にする ? FontStyle.Bold : FontStyle.Regular;
- //CPrivateFastFont prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18, fStyle );
- Bitmap bmpSongName = new Bitmap( 1, 1 );
- if( bFoundTitleTexture == false )
- {
- bmpSongName = this.prvPanelFont.DrawPrivateFont( str曲名, Color.White );
- if( ( bmpSongName.Size.Width / 1.25f ) > 240 )
- {
- graphics.DrawImage( bmpSongName, 4f, 2f, ( ( bmpSongName.Size.Width / 1.25f ) ), bmpSongName.Size.Height );
- }
- else
- {
- graphics.DrawImage( bmpSongName, 4f, 2f, ( bmpSongName.Size.Width / 1.25f ),bmpSongName.Size.Height );
- }
- }
- if( bFoundArtistTexture == false )
- {
- bmpSongName = this.prvPanelFont.DrawPrivateFont( strアーティスト名, Color.White );
- if( ( bmpSongName.Size.Width / 1.25f ) > 240 )
- {
- graphics.DrawImage( bmpSongName, 220f - ( ( bmpSongName.Size.Width / 1.25f ) ), 252f, ( ( bmpSongName.Size.Width / 1.25f ) ), bmpSongName.Size.Height );
- }
- else
- {
- graphics.DrawImage( bmpSongName, 220f - ( bmpSongName.Size.Width / 1.25f ), 252f, ( bmpSongName.Size.Width / 1.25f ), bmpSongName.Size.Height );
- }
- }
- CDTXMania.t安全にDisposeする( ref bmpSongName );
- }
- #endregion
- #region[ ジャケット画像 ]
- //2016.02.22 kairera0467 残念ながらバグがあるため封印。
-
- //if( File.Exists( this.stバー情報[ nバー番号 ].strDTXフォルダのパス + this.stバー情報[ nバー番号 ].ar譜面情報.Preimage ) )
- //{
- // imgSongJacket = Image.FromFile( this.stバー情報[ nバー番号 ].strDTXフォルダのパス + this.stバー情報[ nバー番号 ].ar譜面情報.Preimage );
- // graphics.DrawImage( imgSongJacket, 3, 35, 218, 218 );
-
- // CDTXMania.t安全にDisposeする( ref imgSongJacket );
- //}
- //else if( File.Exists( CSkin.Path( @"Graphics\5_preimage default.png" ) ) )
- //{
- // imgSongJacket = Image.FromFile( CSkin.Path( @"Graphics\5_preimage default.png" ) );
- // graphics.DrawImage( imgSongJacket, 3, 35, 218, 218 );
-
- // CDTXMania.t安全にDisposeする( ref imgSongJacket );
- //}
- #endregion
-
- CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txパネル );
- this.stバー情報[ nバー番号 ].txパネル = new CTexture( CDTXMania.app.Device, bSongPanel, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref bSongPanel );
- CDTXMania.t安全にDisposeする( ref imgSongPanel );
- CDTXMania.t安全にDisposeする( ref graphics );
- }
- catch( CTextureCreateFailedException )
- {
- Trace.TraceError( "曲名テクスチャの作成に失敗しました。[{0}]", str曲名 );
- this.stバー情報[ nバー番号 ].txパネル = null;
- }
-
- }
- private void t決定時パネルの生成()
- {
- try
- {
- Bitmap bSongPanel = new Bitmap( 290, 360 );
- Graphics graphics = Graphics.FromImage( bSongPanel );
-
- Image imgSongPanel;
- Image imgSongJacket;
- Image imgCustomSongNameTexture;
- Image imgCuttomArtistNameTexture;
- bool bFoundTitleTexture = false;
- bool bFoundArtistTexture = false;
-
- graphics.PageUnit = GraphicsUnit.Pixel;
- //graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
-
- imgSongPanel = Image.FromFile( CSkin.Path( @"Graphics\6_base music panel.png" ) );
- graphics.DrawImage( imgSongPanel, 0, 0, 290, 360 );
-
- string strFolderPath = CDTXMania.stage選曲.r確定されたスコア.ファイル情報.フォルダの絶対パス;
- string str曲名 = CDTXMania.stage選曲.r確定された曲.strタイトル;
- string strアーティスト名 = CDTXMania.stage選曲.r確定されたスコア.譜面情報.アーティスト名;
-
- #region[ 曲名とアーティスト名 ]
- string strPath = ( strFolderPath + "TitleTexture.png" );
- if( File.Exists( ( strPath ) ) )
- {
- imgCustomSongNameTexture = Image.FromFile( strPath );
- graphics.DrawImage( imgCustomSongNameTexture, 0, 0, 290, 40 );
- CDTXMania.t安全にDisposeする( ref imgCustomSongNameTexture );
- bFoundTitleTexture = true;
- }
- if( File.Exists( ( strFolderPath + "ArtistTexture.png" ) ) )
- {
- imgCuttomArtistNameTexture = Image.FromFile( strFolderPath + "ArtistTexture.png" );
- graphics.DrawImage( imgCuttomArtistNameTexture, 0, 327, 290, 34 );
- CDTXMania.t安全にDisposeする( ref imgCuttomArtistNameTexture );
- bFoundArtistTexture = true;
- }
-
- if( bFoundTitleTexture == false || bFoundArtistTexture == false )
- {
- FontStyle fStyle = CDTXMania.ConfigIni.b選曲リストフォントを太字にする ? FontStyle.Bold : FontStyle.Regular;
- CPrivateFastFont prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 19, fStyle );
- Bitmap bmpSongName = new Bitmap( 1, 1 );
- if( bFoundTitleTexture == false )
- {
- bmpSongName = prvFont.DrawPrivateFont( str曲名, Color.White );
- //bmpSongName.Save( "test.png" );
- if( ( bmpSongName.Size.Width / 1.25f ) > 290 )
- {
- graphics.DrawImage( bmpSongName, 3f, 8f, ( ( bmpSongName.Size.Width / 1.25f ) * ( 285.0f / ( bmpSongName.Size.Width / 1.25f ) ) ), bmpSongName.Size.Height );
- }
- else
- {
- graphics.DrawImage( bmpSongName, 3f, 8f, ( bmpSongName.Size.Width / 1.25f ), bmpSongName.Size.Height );
- }
- }
- if( bFoundArtistTexture == false )
- {
- bmpSongName = prvFont.DrawPrivateFont( strアーティスト名, Color.White );
- if( ( bmpSongName.Size.Width / 1.25f ) > 290 )
- {
- graphics.DrawImage( bmpSongName, 290f - ( ( bmpSongName.Size.Width / 1.25f ) ), 328f, ( ( bmpSongName.Size.Width / 1.25f ) * ( 285.0f / ( bmpSongName.Size.Width / 1.25f ) ) ), bmpSongName.Size.Height );
- }
- else
- {
- graphics.DrawImage( bmpSongName, 290f - ( bmpSongName.Size.Width / 1.25f ), 328f, ( bmpSongName.Size.Width / 1.25f ), bmpSongName.Size.Height );
- }
- }
- CDTXMania.t安全にDisposeする( ref bmpSongName );
- //CDTXMania.t安全にDisposeする( ref prvFont );
- }
- #endregion
- #region[ ジャケット画像 ]
- if( File.Exists( strFolderPath + CDTXMania.stage選曲.r確定されたスコア.譜面情報.Preimage ) )
- {
- imgSongJacket = Image.FromFile( strFolderPath + CDTXMania.stage選曲.r確定されたスコア.譜面情報.Preimage );
- graphics.DrawImage( imgSongJacket, 4, 45, 280, 280 );
- CDTXMania.t安全にDisposeする( ref imgSongJacket );
- }
- else if( File.Exists( CSkin.Path( @"Graphics\5_preimage default.png" ) ) )
- {
- imgSongJacket = Image.FromFile( CSkin.Path( @"Graphics\5_preimage default.png" ) );
- graphics.DrawImage( imgSongJacket, 4, 45, 280, 280 );
- CDTXMania.t安全にDisposeする( ref imgSongJacket );
- }
- #endregion
-
- this.txベース曲パネル = new CTexture( CDTXMania.app.Device, bSongPanel, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref bSongPanel );
- CDTXMania.t安全にDisposeする( ref imgSongPanel );
- CDTXMania.t安全にDisposeする( ref graphics );
- }
- catch( CTextureCreateFailedException )
- {
- Trace.TraceError( "曲名テクスチャの作成に失敗しました。" );
- this.txベース曲パネル = null;
- }
-
- }
-
- private CTexture tカスタム曲名の生成( int nバー番号 )
- {
- //t3D描画の仕様上左詰や右詰が面倒になってしまうので、
- //パネルにあらかじめ曲名とアーティスト名を埋め込んでおく。
-
- Bitmap bCustomSongNameTexture;
- Image imgCustomSongNameTexture;
-
- Graphics graphics = Graphics.FromImage( new Bitmap( 1, 1 ) );
-
- graphics.PageUnit = GraphicsUnit.Pixel;
- bCustomSongNameTexture = new Bitmap( 240, 40 );
-
- graphics = Graphics.FromImage( bCustomSongNameTexture );
- graphics.DrawImage( bCustomSongNameTexture, 0, 0, 180, 25 );
-
-
- string strPassAfter = "";
- try
- {
- strPassAfter = this.stバー情報[ nバー番号 ].strDTXフォルダのパス;
- }
- catch
- {
- strPassAfter = "";
- }
-
- string strPath = ( strPassAfter + "TitleTexture.png" );
- if( File.Exists( ( strPath ) ) )
- {
- imgCustomSongNameTexture = Image.FromFile( strPath );
- imgCustomSongNameTexture = this.CreateNegativeImage( imgCustomSongNameTexture );
- graphics.DrawImage( imgCustomSongNameTexture, 6, 1, 180, 25 );
- imgCustomSongNameTexture.Dispose();
- }
-
- //CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txカスタム曲名テクスチャ );
- //CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txカスタムアーティスト名テクスチャ );
- CTexture txTex = new CTexture( CDTXMania.app.Device, bCustomSongNameTexture, CDTXMania.TextureFormat, false );
-
- graphics.Dispose();
- bCustomSongNameTexture.Dispose();
-
- return txTex;
- }
- private CTexture tカスタムアーティスト名テクスチャの生成( int nバー番号 )
- {
- //t3D描画の仕様上左詰や右詰が面倒になってしまうので、
- //パネルにあらかじめ曲名とアーティスト名を埋め込んでおく。
-
- Bitmap bCustomArtistNameTexture;
- Image imgCustomArtistNameTexture;
-
- Graphics graphics = Graphics.FromImage( new Bitmap( 1, 1 ) );
-
- graphics.PageUnit = GraphicsUnit.Pixel;
- bCustomArtistNameTexture = new Bitmap( 210, 27 );
-
- graphics = Graphics.FromImage( bCustomArtistNameTexture );
- graphics.DrawImage( bCustomArtistNameTexture, 0, 0, 196, 27 );
-
-
- string strPassAfter = "";
- try
- {
- strPassAfter = this.stバー情報[ nバー番号 ].strDTXフォルダのパス;
- }
- catch
- {
- strPassAfter = "";
- }
-
- string strPath = (strPassAfter + "ArtistTexture.png");
- if (File.Exists((strPath)))
- {
- imgCustomArtistNameTexture = Image.FromFile(strPath);
- imgCustomArtistNameTexture = this.CreateNegativeImage( imgCustomArtistNameTexture );
- graphics.DrawImage(imgCustomArtistNameTexture, 16, 2, 196, 27);
- }
-
- //CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txカスタム曲名テクスチャ );
- //CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txカスタムアーティスト名テクスチャ );
- this.stバー情報[nバー番号].nアーティスト名テクスチャの長さdot = 210;
- CTexture txTex = new CTexture( CDTXMania.app.Device, bCustomArtistNameTexture, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref graphics );
- return txTex;
- }
-
- //DOBON.NETから拝借。
- //http://dobon.net/vb/dotnet/graphics/drawnegativeimage.html
- /// <summary>
- /// 指定された画像からネガティブイメージを作成する
- /// </summary>
- /// <param name="img">基の画像</param>
- /// <returns>作成されたネガティブイメージ</returns>
- public Image CreateNegativeImage( Image img )
- {
- //ネガティブイメージの描画先となるImageオブジェクトを作成
- Bitmap negaImg = new Bitmap( img.Width, img.Height );
- //negaImgのGraphicsオブジェクトを取得
- Graphics g = Graphics.FromImage( negaImg );
-
- //ColorMatrixオブジェクトの作成
- System.Drawing.Imaging.ColorMatrix cm =
- new System.Drawing.Imaging.ColorMatrix();
- //ColorMatrixの行列の値を変更して、色が反転されるようにする
- cm.Matrix00 = -1;
- cm.Matrix11 = -1;
- cm.Matrix22 = -1;
- cm.Matrix33 = 1;
- cm.Matrix40 = cm.Matrix41 = cm.Matrix42 = cm.Matrix44 = 1;
-
- //ImageAttributesオブジェクトの作成
- System.Drawing.Imaging.ImageAttributes ia =
- new System.Drawing.Imaging.ImageAttributes();
- //ColorMatrixを設定する
- ia.SetColorMatrix(cm);
-
- //ImageAttributesを使用して色が反転した画像を描画
- g.DrawImage( img,
- new Rectangle( 0, 0, img.Width, img.Height ),
- 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia );
-
- //リソースを解放する
- g.Dispose();
-
- return negaImg;
- }
//-----------------
#endregion
}
{
setDef = new CSetDef( c曲リストノード.pathSetDefの絶対パス );
nブロック番号inSetDef = c曲リストノード.SetDefのブロック番号;
- n曲番号inブロック = CDTXMania.stage選曲.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( c曲リストノード );
+ if( CDTXMania.bXGRelease ) n曲番号inブロック = CDTXMania.stage選曲XG.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( c曲リストノード );
+ else n曲番号inブロック = CDTXMania.stage選曲GITADORA.act曲リスト.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( c曲リストノード );
}
foreach( CDTXMania.STPlugin stPlugin in CDTXMania.app.listプラグイン )
new ST達成率数字( '%', new Rectangle( 70, 62, 9, 16 ) ),
new ST達成率数字( '.', new Rectangle( 79, 62, 3, 16 ) )
};
-
- private int n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す()
- {
- int num = 0;
- int length = 0;
- for( int i = 0; i < 5; i++ )
- {
- if( ( this.str難易度ラベル[ i ] != null ) && ( this.str難易度ラベル[ i ].Length > 0 ) )
- {
- length = this.str難易度ラベル[ i ].Length;
- }
- if( this.n現在選択中の曲の難易度 == i )
- {
- break;
- }
- if( ( this.str難易度ラベル[ i ] != null ) && ( this.str難易度ラベル.Length > 0 ) )
- {
- num += length + 2;
- }
- }
- if( num >= ( this.n難易度開始文字位置 + 55 ) ) // 0x24 -> 55
- {
- return 1;
- }
- if( ( num + length ) <= this.n難易度開始文字位置 )
- {
- return -1;
- }
- if( ( ( num + length ) - 1 ) >= ( this.n難易度開始文字位置 + 55 ) ) // 0x24 -> 55
- {
- return 1;
- }
- if( num < this.n難易度開始文字位置 )
- {
- return -1;
- }
- return 0;
- }
+
private void t小文字表示(int x, int y, string str)
{
foreach (char ch in str)
x += 8;
}
}
- private void t決定アニメ_難易度パネルを生成する()
- {
- //ギター・ベースの場合、1枚の画像を2回読み込むことになるので回避。
- Image imgPanel;
- imgPanel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_base info panel.png" ) );
- int[] arPanelRectX = new int[] { 164, 326, 650, 488 }; //Drums(使用しない), Guitar, Bass, GuitarF, BassF
-
- #region[ ドラム ]
- if( CDTXMania.ConfigIni.bDrums有効 && imgPanel != null )
- {
- Bitmap bPanel = new Bitmap( 155, 362 );
- Graphics graphics = Graphics.FromImage( bPanel );
-
- Image imgLabel;
- Image imgLevelNum;
-
- graphics.PageUnit = GraphicsUnit.Pixel;
- graphics.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( 2, 2, 155, 362 ), GraphicsUnit.Pixel );
-
- imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
- graphics.DrawImage( imgLabel, new Rectangle( 14, 31, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
-
- imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
-
- //XG譜面
- if( !CDTXMania.stage選曲.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である.Drums )
- {
- #region[ XG譜面 ]
- int n難易度整数;
- int n難易度小数;
- string str難易度;
- n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] / 10;
- n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] - ( n難易度整数 * 10 ) ) * 10;
- n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ];
- str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < this.st大文字位置.Length; j++ )
- {
- if( this.st大文字位置[ j ].ch == str難易度[ 0 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40 );
- graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- for( int j = 0; j < this.st小文字位置.Length; j++ )
- {
- if( this.st小文字位置[ j ].ch == str難易度[ k + 1 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st小文字位置[ j ].pt.X, this.st小文字位置[ j ].pt.Y, 12, 22 );
- graphics.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- graphics.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), new Rectangle( 0, 40, 12, 22 ), GraphicsUnit.Pixel );
- }
- }
- #endregion
- }
- else
- {
- #region[ CLASSIC譜面 ]
- string str難易度;
- str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < 2; j++ )
- {
- for( int k = 0; k < this.st大文字位置.Length; k++ )
- {
- if( this.st大文字位置[ k ].ch == str難易度[ j ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ k ].pt.X, this.st大文字位置[ k ].pt.Y, 22, 40 );
- graphics.DrawImage( imgLevelNum, new Rectangle( 94 + ( 22 * j ), 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- graphics.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- graphics.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- }
- #endregion
- }
-
- this.tx決定後_難易度パネル1P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref bPanel );
- CDTXMania.t安全にDisposeする( ref graphics );
- CDTXMania.t安全にDisposeする( ref imgPanel );
- CDTXMania.t安全にDisposeする( ref imgLabel );
- CDTXMania.t安全にDisposeする( ref imgLevelNum );
- }
- #endregion
- #region[ ギター・ベース ]
- else if( CDTXMania.ConfigIni.bGuitar有効 && imgPanel != null )
- {
- for( int i = 1; i <= 2; i++ )
- {
- Bitmap bPanel = new Bitmap( 155, 362 );
- Graphics gPanel = Graphics.FromImage( bPanel );
-
- Image imgLabel;
- Image imgLevelNum;
-
- gPanel.PageUnit = GraphicsUnit.Pixel;
- gPanel.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( arPanelRectX[ i + ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 1 : -1 ) ], 2, 155, 362 ), GraphicsUnit.Pixel );
-
- imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
- gPanel.DrawImage( imgLabel, new Rectangle( 14, 32, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
-
- imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
-
- //XG譜面
- if( !CDTXMania.stage選曲.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である[ i ] )
- {
- #region[ XG譜面 ]
- int n難易度整数;
- int n難易度小数;
- string str難易度;
- n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] / 10;
- n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] - ( n難易度整数 * 10 ) ) * 10;
- n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ];
- str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < this.st大文字位置.Length; j++ )
- {
- if( this.st大文字位置[ j ].ch == str難易度[ 0 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ j ].pt.X, this.st大文字位置[ j ].pt.Y, 22, 40 );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- for( int j = 0; j < this.st小文字位置.Length; j++ )
- {
- if( this.st小文字位置[ j ].ch == str難易度[ k + 1 ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st小文字位置[ j ].pt.X, this.st小文字位置[ j ].pt.Y, 12, 22 );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
- for( int k = 0; k < 2; k++ )
- {
- gPanel.DrawImage( imgLevelNum, new Rectangle( 113 + ( 12 * k ), 74, 12, 22 ), new Rectangle( 0, 40, 12, 22 ), GraphicsUnit.Pixel );
- }
- }
- #endregion
- }
- else
- {
- #region[ CLASSIC譜面 ]
- string str難易度;
- str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] );
-
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
- {
- for( int j = 0; j < 2; j++ )
- {
- for( int k = 0; k < this.st大文字位置.Length; k++ )
- {
- if( this.st大文字位置[ k ].ch == str難易度[ j ] )
- {
- Rectangle rc画像内の描画領域 = new Rectangle( this.st大文字位置[ k ].pt.X, this.st大文字位置[ k ].pt.Y, 22, 40 );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 94 + ( 22 * j ), 56, 22, 40 ), rc画像内の描画領域, GraphicsUnit.Pixel );
- break;
- }
- }
- }
- }
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
- {
- gPanel.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- gPanel.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
- }
- #endregion
- }
-
- if( i == 1 )
- this.tx決定後_難易度パネル1P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
- else if( i == 2 )
- this.tx決定後_難易度パネル2P = new CTexture( CDTXMania.app.Device, bPanel, CDTXMania.TextureFormat, false );
-
- CDTXMania.t安全にDisposeする( ref bPanel );
- CDTXMania.t安全にDisposeする( ref gPanel );
- CDTXMania.t安全にDisposeする( ref imgLabel );
- CDTXMania.t安全にDisposeする( ref imgLevelNum );
- }
- }
- #endregion
- CDTXMania.t安全にDisposeする( ref imgPanel );
- }
- private Rectangle t指定したラベル名から難易度パネル画像の座標を取得する( string strラベル名 )
- {
- string strRawScriptFile;
-
- Rectangle rect = new Rectangle( 0, 0, 130, 72 );
-
- //ファイルの存在チェック
- if( File.Exists( CSkin.Path( @"Script\difficult.dtxs" ) ) )
- {
- //スクリプトを開く
- StreamReader reader = new StreamReader( CSkin.Path( @"Script\difficult.dtxs" ), Encoding.GetEncoding( "Shift_JIS" ) );
- strRawScriptFile = reader.ReadToEnd();
-
- strRawScriptFile = strRawScriptFile.Replace( Environment.NewLine, "\n" );
- string[] delimiter = { "\n" };
- string[] strSingleLine = strRawScriptFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries );
-
- for( int i = 0; i < strSingleLine.Length; i++ )
- {
- if( strSingleLine[ i ].StartsWith( "//" ) )
- continue; //コメント行の場合は無視
-
- //まずSplit
- string[] arScriptLine = strSingleLine[ i ].Split( ',' );
-
- if( ( arScriptLine.Length >= 4 && arScriptLine.Length <= 5 ) == false )
- continue; //引数が4つか5つじゃなければ無視。
-
- if( arScriptLine[ 0 ] != "6" )
- continue; //使用するシーンが違うなら無視。
-
- if( arScriptLine.Length == 4 )
- {
- if( String.Compare( arScriptLine[ 1 ], strラベル名, true ) != 0 )
- continue; //ラベル名が違うなら無視。大文字小文字区別しない
- }
- else if( arScriptLine.Length == 5 )
- {
- if( arScriptLine[ 4 ] == "1" )
- {
- if( arScriptLine[ 1 ] != strラベル名 )
- continue; //ラベル名が違うなら無視。
- }
- else
- {
- if( String.Compare( arScriptLine[ 1 ], strラベル名, true ) != 0 )
- continue; //ラベル名が違うなら無視。大文字小文字区別しない
- }
- }
- rect.X = Convert.ToInt32( arScriptLine[ 2 ] );
- rect.Y = Convert.ToInt32( arScriptLine[ 3 ] );
-
- reader.Close();
- break;
- }
- }
-
- return rect;
- }
private void t難易度カーソル描画( int x, int current )
{
if( this.tx難易度カーソル != null )
this.ct登場アニメ用[ i ] = new CCounter( -i * 10, 100, 3, CDTXMania.Timer );
this.nスクロールタイマ = CSound管理.rc演奏用タイマ.n現在時刻;
- CDTXMania.stage選曲.t選択曲変更通知();
+ CDTXMania.stage選曲GITADORA.t選択曲変更通知();
base.b初めての進行描画 = false;
}
//this.tPuzzleFIFOTest();
}
+ #region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ]
+ int py;
+ double d = 0;
+ if ( nNumOfItems > 1 )
+ {
+ d = ( 336 - 8 ) / (double) ( nNumOfItems - 1 );
+ py = (int) ( d * ( nCurrentPosition - 1 ) );
+ }
+ else
+ {
+ d = 0;
+ py = 0;
+ }
+ int delta = (int) ( d * this.n現在のスクロールカウンタ / 100 );
+ if ( py + delta <= 336 - 8 )
+ {
+ this.nスクロールバー相対y座標 = py + delta;
+ }
+ #endregion
+
return 0;
}
private CTexture txバー選択中枠;
public STバー tx曲名バー;
public ST選曲バー tx選曲バー;
- private CTexture[] txTumbnail = new CTexture[ 15 ];
+ //private CTexture[] txTumbnail = new CTexture[ 15 ];
private CTexture[] txMusicName = new CTexture[ 15 ];
//private readonly Point[] ptバーの基本座標 = new Point[] {
// new Point(0x2c4, 5), new Point(0x272, 56),
{
nLevel = 99;
}
- this.n現在選択中の曲のレベル[ i ] = nLevel;
this.n現在選択中の曲の最高ランク[ i ] = cスコア.譜面情報.最大ランク[ i ];
this.b現在選択中の曲がフルコンボ[ i ] = cスコア.譜面情報.フルコンボ[ i ];
this.db現在選択中の曲の最高スキル値[ i ] = cスコア.譜面情報.最大スキル[ i ];
public override void On活性化()
{
- this.n現在選択中の曲の難易度 = 0;
- for( int i = 0; i < 3; i++ )
- {
- this.n現在選択中の曲のレベル[ i ] = 0;
- this.db現在選択中の曲の曲別スキル値難易度毎[ i ] = 0.0;
- this.n現在選択中の曲の最高ランク[ i ] = (int)CScoreIni.ERANK.UNKNOWN;
- this.b現在選択中の曲がフルコンボ[ i ] = false;
- this.db現在選択中の曲の最高スキル値[ i ] = 0.0;
- for (int j = 0; j < 5; j++)
- {
- this.n現在選択中の曲のレベル難易度毎DGB[j][i] = 0;
- this.n現在選択中の曲のレベル小数点難易度毎DGB[j][i] = 0;
- this.db現在選択中の曲の最高スキル値難易度毎[j][i] = 0.0;
- this.n現在選択中の曲の最高ランク難易度毎[j][i] = (int)CScoreIni.ERANK.UNKNOWN;
- this.b現在選択中の曲がフルコンボ難易度毎[j][i] = false;
- }
- }
- for( int j = 0; j < 5; j++ )
- {
- this.str難易度ラベル[ j ] = "";
- this.n選択中の曲のレベル難易度毎[ j ] = 0;
-
- this.db現在選択中の曲の曲別スキル値難易度毎[j] = 0.0;
- }
- this.n難易度開始文字位置 = 0;
- this.r直前の曲 = null;
base.On活性化();
}
public override void On非活性化()
}
else if( CDTXMania.ConfigIni.bGuitar有効 )
{
- if( CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 == 100 )
+ if( CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 == 100 )
{
for( int i = 0; i < 5; i++ )
{
else n難易度ラベル合計値2P++;
}
}
- // else if (CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE)
+ // else if (CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE)
// flag = flag + 1;
- // if (this.str難易度ラベル[i] != null || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
+ // if (this.str難易度ラベル[i] != null || CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
// 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));
}
for( int i = 0; i < 2; i++ )
// for (int i = 0; i < 5; i++)
// {
// var mat1 = Matrix.Identity;
- // mat1 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
+ // mat1 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
// mat1 *= Matrix.RotationY(0.0f);
// mat1 *= Matrix.RotationZ(0.0f);
// mat1 *= Matrix.Translation(-228f + (i * 143f), 268f + y差分[i], 0f);
// var mat2 = Matrix.Identity;
- // mat2 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
+ // mat2 *= Matrix.RotationX(1.60f - (float)((float)CDTXMania.stage選曲XG.act曲リスト.ct登場アニメ用[5].n現在の値 * 0.016f));
// mat2 *= Matrix.RotationY(0.0f);
// mat2 *= Matrix.RotationZ(0.0f);
// mat2 *= Matrix.Translation(-355f + (i * 143f), -235f + y差分[i], 0f);
this.t小文字表示(102 + this.n本体X[ j ] + (i * 143), 37 + this.n本体Y[j] - y差分[i], string.Format("{0,2:00}", n難易度小数[i]));
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));
}
- else if ((this.str難易度ラベル[i] != null && !this.b現在選択中の曲に譜面がある[i][j]) || CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
+ else if ((this.str難易度ラベル[i] != null && !this.b現在選択中の曲に譜面がある[i][j]) || CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM)
{
this.t大文字表示(73 + this.n本体X[j] + (i * 143), 19 + this.n本体Y[j] - y差分[i], ("-"));
this.t小文字表示(102 + this.n本体X[j] + (i * 143), 37 + this.n本体Y[j] - y差分[i], ("--"));
/*
if( this.tx決定後_難易度パネル2P == null && CDTXMania.ConfigIni.bGuitar有効 )
this.t決定アニメ_難易度パネルを生成する();
- if( this.tx決定後_難易度パネル2P != null && CDTXMania.stage選曲.r確定されたスコア.譜面情報.b譜面がある.Bass )
+ if( this.tx決定後_難易度パネル2P != null && CDTXMania.stage選曲XG.r確定されたスコア.譜面情報.b譜面がある.Bass )
{
- if( CDTXMania.stage選曲.ct決定演出待機.n現在の値 < 400 )
+ if( CDTXMania.stage選曲XG.ct決定演出待機.n現在の値 < 400 )
{
- 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 ) );
+ 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 ) );
this.tx決定後_難易度パネル2P.t2D描画( CDTXMania.app.Device, 870 + nX, 162 );
}
else
new ST達成率数字( '.', new Rectangle( 79, 62, 3, 16 ) )
};
- private int n現在の難易度ラベルが完全表示されているかを調べてスクロール方向を返す()
- {
- int num = 0;
- int length = 0;
- for( int i = 0; i < 5; i++ )
- {
- if( ( this.str難易度ラベル[ i ] != null ) && ( this.str難易度ラベル[ i ].Length > 0 ) )
- {
- length = this.str難易度ラベル[ i ].Length;
- }
- if( this.n現在選択中の曲の難易度 == i )
- {
- break;
- }
- if( ( this.str難易度ラベル[ i ] != null ) && ( this.str難易度ラベル.Length > 0 ) )
- {
- num += length + 2;
- }
- }
- if( num >= ( this.n難易度開始文字位置 + 55 ) ) // 0x24 -> 55
- {
- return 1;
- }
- if( ( num + length ) <= this.n難易度開始文字位置 )
- {
- return -1;
- }
- if( ( ( num + length ) - 1 ) >= ( this.n難易度開始文字位置 + 55 ) ) // 0x24 -> 55
- {
- return 1;
- }
- if( num < this.n難易度開始文字位置 )
- {
- return -1;
- }
- return 0;
- }
private void t小文字表示(int x, int y, string str)
{
foreach (char ch in str)
graphics.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( 2, 2, 155, 362 ), GraphicsUnit.Pixel );
imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
- graphics.DrawImage( imgLabel, new Rectangle( 14, 31, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲XG.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
+ graphics.DrawImage( imgLabel, new Rectangle( 14, 31, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲XG.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲XG.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
int n難易度整数;
int n難易度小数;
string str難易度;
- n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] / 10;
- n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] - ( n難易度整数 * 10 ) ) * 10;
- n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ];
+ n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ 0 ] / 10;
+ n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ 0 ] - ( n難易度整数 * 10 ) ) * 10;
+ n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ 0 ];
str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
+ if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
{
for( int j = 0; j < this.st大文字位置.Length; j++ )
{
}
}
}
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
+ else if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
{
graphics.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
graphics.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
{
#region[ CLASSIC譜面 ]
string str難易度;
- str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ 0 ] );
+ str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ 0 ] );
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
+ if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
{
for( int j = 0; j < 2; j++ )
{
}
}
}
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
+ else if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
{
graphics.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
graphics.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
gPanel.DrawImage( imgPanel, new Rectangle( 0, 0, 155, 362 ), new Rectangle( arPanelRectX[ i + ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ? 1 : -1 ) ], 2, 155, 362 ), GraphicsUnit.Pixel );
imgLabel = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\6_difficulty panel.png" ) );
- gPanel.DrawImage( imgLabel, new Rectangle( 14, 32, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
+ gPanel.DrawImage( imgLabel, new Rectangle( 14, 32, 130, 72 ), this.t指定したラベル名から難易度パネル画像の座標を取得する( CDTXMania.stage選曲XG.r確定された曲.ar難易度ラベル[ CDTXMania.stage選曲XG.n確定された曲の難易度 ] ), GraphicsUnit.Pixel );
imgLevelNum = CDTXMania.tテクスチャをImageで読み込む( CSkin.Path( @"Graphics\5_LevelNumber.png" ) );
//XG譜面
- if( !CDTXMania.stage選曲.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である[ i ] )
+ if( !CDTXMania.stage選曲XG.r確定されたスコア.譜面情報.b完全にCLASSIC譜面である[ i ] )
{
#region[ XG譜面 ]
int n難易度整数;
int n難易度小数;
string str難易度;
- n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] / 10;
- n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] - ( n難易度整数 * 10 ) ) * 10;
- n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ];
+ n難易度整数 = (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ i ] / 10;
+ n難易度小数 = ( this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ i ] - ( n難易度整数 * 10 ) ) * 10;
+ n難易度小数 += this.n現在選択中の曲のレベル小数点難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ i ];
str難易度 = n難易度整数.ToString() + string.Format( "{0,2:00}", n難易度小数 );
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
+ if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
{
for( int j = 0; j < this.st大文字位置.Length; j++ )
{
}
}
}
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
+ else if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
{
gPanel.DrawImage( imgLevelNum, new Rectangle( 84, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
gPanel.DrawImage( imgLevelNum, new Rectangle( 105, 74, 9, 22 ), new Rectangle( 144, 40, 9, 22 ), GraphicsUnit.Pixel );
{
#region[ CLASSIC譜面 ]
string str難易度;
- str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲.n確定された曲の難易度 ][ i ] );
+ str難易度 = string.Format( "{0,2:00}", (int)this.n現在選択中の曲のレベル難易度毎DGB[ CDTXMania.stage選曲XG.n確定された曲の難易度 ][ i ] );
- if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
+ if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.SCORE )
{
for( int j = 0; j < 2; j++ )
{
}
}
}
- else if( CDTXMania.stage選曲.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
+ else if( CDTXMania.stage選曲XG.r現在選択中の曲.eノード種別 == C曲リストノード.Eノード種別.RANDOM )
{
gPanel.DrawImage( imgLevelNum, new Rectangle( 94, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
gPanel.DrawImage( imgLevelNum, new Rectangle( 116, 55, 22, 40 ), new Rectangle( 0, 0, 22, 40 ), GraphicsUnit.Pixel );
#endregion
CDTXMania.t安全にDisposeする( ref imgPanel );
}
- private Rectangle t指定したラベル名から難易度パネル画像の座標を取得する( string strラベル名 )
- {
- string strRawScriptFile;
-
- Rectangle rect = new Rectangle( 0, 0, 130, 72 );
-
- //ファイルの存在チェック
- if( File.Exists( CSkin.Path( @"Script\difficult.dtxs" ) ) )
- {
- //スクリプトを開く
- StreamReader reader = new StreamReader( CSkin.Path( @"Script\difficult.dtxs" ), Encoding.GetEncoding( "Shift_JIS" ) );
- strRawScriptFile = reader.ReadToEnd();
-
- strRawScriptFile = strRawScriptFile.Replace( Environment.NewLine, "\n" );
- string[] delimiter = { "\n" };
- string[] strSingleLine = strRawScriptFile.Split( delimiter, StringSplitOptions.RemoveEmptyEntries );
-
- for( int i = 0; i < strSingleLine.Length; i++ )
- {
- if( strSingleLine[ i ].StartsWith( "//" ) )
- continue; //コメント行の場合は無視
-
- //まずSplit
- string[] arScriptLine = strSingleLine[ i ].Split( ',' );
-
- if( ( arScriptLine.Length >= 4 && arScriptLine.Length <= 5 ) == false )
- continue; //引数が4つか5つじゃなければ無視。
-
- if( arScriptLine[ 0 ] != "6" )
- continue; //使用するシーンが違うなら無視。
-
- if( arScriptLine.Length == 4 )
- {
- if( String.Compare( arScriptLine[ 1 ], strラベル名, true ) != 0 )
- continue; //ラベル名が違うなら無視。大文字小文字区別しない
- }
- else if( arScriptLine.Length == 5 )
- {
- if( arScriptLine[ 4 ] == "1" )
- {
- if( arScriptLine[ 1 ] != strラベル名 )
- continue; //ラベル名が違うなら無視。
- }
- else
- {
- if( String.Compare( arScriptLine[ 1 ], strラベル名, true ) != 0 )
- continue; //ラベル名が違うなら無視。大文字小文字区別しない
- }
- }
- rect.X = Convert.ToInt32( arScriptLine[ 2 ] );
- rect.Y = Convert.ToInt32( arScriptLine[ 3 ] );
-
- reader.Close();
- break;
- }
- }
-
- return rect;
- }
-
//-----------------
#endregion
}
public CActSelect曲リストXG()
{
- this.r現在選択中の曲 = null;
- this.n現在のアンカ難易度レベル = 0;
- base.b活性化してない = true;
- this.bIsEnumeratingSongs = false;
-
- this.stパネルマップ = null;
- this.stパネルマップ = new STATUSPANEL[ 12 ]; // yyagi: 以下、手抜きの初期化でスマン
- string[] labels = new string[ 12 ] {
- "DTXMANIA", //0
- "DEBUT", //1
- "NOVICE", //2
- "REGULAR", //3
- "EXPERT", //4
- "MASTER", //5
- "BASIC", //6
- "ADVANCED", //7
- "EXTREME", //8
- "RAW", //9
- "RWS", //10
- "REAL" //11
- };
- int[] status = new int[ 12 ] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-
- for( int i = 0; i < 12; i++ )
- {
- this.stパネルマップ[ i ] = default(STATUSPANEL);
- this.stパネルマップ[ i ].status = status[i];
- this.stパネルマップ[ i ].label = labels[i];
- }
}
// CActivity 実装
if( this.b活性化してる )
return;
- this.e楽器パート = E楽器パート.DRUMS;
- this.b登場アニメ全部完了 = false;
- this.n目標のスクロールカウンタ = 0;
- this.n現在のスクロールカウンタ = 0;
- this.nスクロールタイマ = -1;
-
- // フォント作成。
- // 曲リスト文字は2倍(面積4倍)でテクスチャに描画してから縮小表示するので、フォントサイズは2倍とする。
-
- FontStyle regular = FontStyle.Regular;
- if( CDTXMania.ConfigIni.b選曲リストフォントを斜体にする ) regular |= FontStyle.Italic;
- if( CDTXMania.ConfigIni.b選曲リストフォントを太字にする ) regular |= FontStyle.Bold;
- this.ft曲リスト用フォント = new Font(
- CDTXMania.ConfigIni.str選曲リストフォント,
- (float) ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot * 2 * Scale.Y ), // 後でScale.Yを掛けないように直すこと(Config.ini初期値変更)
- regular,
- GraphicsUnit.Pixel
- );
FontStyle fStyle = CDTXMania.ConfigIni.b選曲リストフォントを太字にする ? FontStyle.Bold : FontStyle.Regular;
this.prvPanelFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18, fStyle );
- // 現在選択中の曲がない(=はじめての活性化)なら、現在選択中の曲をルートの先頭ノードに設定する。
-
- if( ( this.r現在選択中の曲 == null ) && ( CDTXMania.Songs管理.list曲ルート.Count > 0 ) )
- this.r現在選択中の曲 = CDTXMania.Songs管理.list曲ルート[ 0 ];
-
-
- // バー情報を初期化する。
-
- this.tバーの初期化();
-
- base.On活性化();
-
- this.t選択曲が変更された(true); // #27648 2012.3.31 yyagi 選曲画面に入った直後の 現在位置/全アイテム数 の表示を正しく行うため
+ base.On活性化();
}
public override void On非活性化()
{
this.ct登場アニメ用[ i ] = new CCounter( -i * 10, 100, 3, CDTXMania.Timer );
this.nスクロールタイマ = CSound管理.rc演奏用タイマ.n現在時刻;
- CDTXMania.stage選曲.t選択曲変更通知();
+ CDTXMania.stage選曲XG.t選択曲変更通知();
base.b初めての進行描画 = false;
}
}
#endregion
}
+
+ #region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ]
+ int py;
+ double d = 0;
+ if ( nNumOfItems > 1 )
+ {
+ d = ( 336 - 8 ) / (double) ( nNumOfItems - 1 );
+ py = (int) ( d * ( nCurrentPosition - 1 ) );
+ }
+ else
+ {
+ d = 0;
+ py = 0;
+ }
+ int delta = (int) ( d * this.n現在のスクロールカウンタ / 100 );
+ if ( py + delta <= 336 - 8 )
+ {
+ this.nスクロールバー相対y座標 = py + delta;
+ }
+ #endregion
return 0;
}
#region [ private ]
//-----------------
-
- /// <summary>
- /// <para>SSTFファイル絶対パス(key)とサムネイル画像(value)との辞書。</para>
- /// <para>アプリの起動から終了まで単純に増加を続け、要素が減ることはない。</para>
- /// <para>正直この方法は好ましくないような気がする。</para>
- /// </summary>
- protected Dictionary<string, CTexture> dicThumbnail = new Dictionary<string, CTexture>();
- protected ST中心点[] stマトリックス座標 = new ST中心点[] {
+ private ST中心点[] stマトリックス座標 = new ST中心点[] {
#region [ 実は円弧配置になってない。射影行列間違ってるよスターレインボウ見せる気かよ… ]
//-----------------
new ST中心点() { x = -940.0000f, y = 4f, z = 320f, rotY = 0.4150f },
};
private CTexture txSongNotFound, txEnumeratingSongs;
- private CTexture[] txTumbnail = new CTexture[ 15 ];
+ //private CTexture[] txTumbnail = new CTexture[ 15 ];
private CTexture txクリアランプ;
private CTexture tx選曲パネル;
private CTexture tx選択されている曲の曲名;
private CTexture txパネル;
private CTexture txパネル帯;
private CPrivateFastFont prvPanelFont;
- protected STバー tx曲名バー;
- protected STバー情報[] stバー情報 = new STバー情報[ 15 ];
- protected ST選曲バー tx選曲バー;
+ //protected STバー tx曲名バー;
+ //protected STバー情報[] stバー情報 = new STバー情報[ 15 ];
+ //protected ST選曲バー tx選曲バー;
//選択した後の演出用
//難易度ラベル、レベル、オプション →ステータスパネルクラスへ
public override void tバーの初期化()
{
C曲リストノード song = this.r現在選択中の曲;
-
+
if( song == null )
return;
song = this.r次の曲( song );
}
- this.n現在の選択行 = 7;
+ this.n現在の選択行 = 7;
}
private void tパスを指定してサムネイル画像を生成する( int nバー番号, string strDTXPath, Eバー種別 eType )
{
Graphics graphics = Graphics.FromImage( bSongPanel );
Image imgSongPanel;
- Image imgSongJacket;
+ //Image imgSongJacket;
Image imgCustomSongNameTexture;
Image imgCuttomArtistNameTexture;
bool bFoundTitleTexture = false;
CDTXMania.t安全にDisposeする( ref imgSongPanel );
CDTXMania.t安全にDisposeする( ref graphics );
}
- catch( CTextureCreateFailedException )
+ catch( Exception ex )
{
- Trace.TraceError( "曲名テクスチャの作成に失敗しました。[{0}]", str曲名 );
+ Trace.TraceError( ex.StackTrace );
+ //Trace.TraceError( "曲名テクスチャの作成に失敗しました。[{0}]", str曲名 );
this.stバー情報[ nバー番号 ].txパネル = null;
}
}
// #35411 2015.08.19 chnmr0 add ゴースト機能のためList chip 読み込み後楽器パート出現順インデックスを割り振る
- int[] curCount = new int[(int)E楽器パート.UNKNOWN];
- for (int i = 0; i < curCount.Length; ++i)
- {
- curCount[i] = 0;
- }
- foreach (CDTX.CChip chip in CDTXMania.DTX.listChip)
+ try
{
- if (chip.e楽器パート != E楽器パート.UNKNOWN)
+ int[] curCount = new int[(int)E楽器パート.UNKNOWN];
+ for (int i = 0; i < curCount.Length; ++i)
{
- chip.n楽器パートでの出現順 = curCount[(int)chip.e楽器パート]++;
- if( CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ] != null )
+ curCount[i] = 0;
+ }
+ foreach (CDTX.CChip chip in CDTXMania.DTX.listChip)
+ {
+ if (chip.e楽器パート != E楽器パート.UNKNOWN)
{
- var lag = new STGhostLag();
- lag.index = chip.n楽器パートでの出現順;
- lag.nJudgeTime = chip.n発声時刻ms + CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ];
- lag.nLagTime = CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ];
+ chip.n楽器パートでの出現順 = curCount[(int)chip.e楽器パート]++;
+ if( CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ] != null )
+ {
+ var lag = new STGhostLag();
+ lag.index = chip.n楽器パートでの出現順;
+ lag.nJudgeTime = chip.n発声時刻ms + CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ];
+ lag.nLagTime = CDTXMania.listTargetGhsotLag[ (int)chip.e楽器パート ][ chip.n楽器パートでの出現順 ];
- this.stGhostLag[ (int)chip.e楽器パート ].Add( lag );
+ this.stGhostLag[ (int)chip.e楽器パート ].Add( lag );
+ }
}
}
- }
- //演奏記録をゴーストから逆生成
- for( int i = 0; i < 3; i++ )
- {
- int nNowCombo = 0;
- int nMaxCombo = 0;
- CDTXMania.listTargetGhostScoreData[ i ] = new CScoreIni.C演奏記録();
- if( this.stGhostLag[ i ] == null )
- continue;
- for( int j = 0; j < this.stGhostLag[ i ].Count; j++ )
+ //演奏記録をゴーストから逆生成
+ for( int i = 0; i < 3; i++ )
{
- int ghostLag = 128;
- ghostLag = this.stGhostLag[ i ][ j ].nLagTime;
- // 上位8ビットが1ならコンボが途切れている(ギターBAD空打ちでコンボ数を再現するための措置)
- if (ghostLag > 255)
- {
- nNowCombo = 0;
- }
- ghostLag = (ghostLag & 255) - 128;
-
- if( ghostLag <= 127 )
+ int nNowCombo = 0;
+ int nMaxCombo = 0;
+ CDTXMania.listTargetGhostScoreData[ i ] = new CScoreIni.C演奏記録();
+ if( this.stGhostLag[ i ] == null )
+ continue;
+ for( int j = 0; j < this.stGhostLag[ i ].Count; j++ )
{
- E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(ghostLag, 0);
-
- switch( eJudge )
+ int ghostLag = 128;
+ ghostLag = this.stGhostLag[ i ][ j ].nLagTime;
+ // 上位8ビットが1ならコンボが途切れている(ギターBAD空打ちでコンボ数を再現するための措置)
+ if (ghostLag > 255)
{
- case E判定.Perfect:
- case E判定.XPerfect:
- CDTXMania.listTargetGhostScoreData[ i ].nPerfect数++;
- break;
- case E判定.Great:
- CDTXMania.listTargetGhostScoreData[ i ].nGreat数++;
- break;
- case E判定.Good:
- CDTXMania.listTargetGhostScoreData[ i ].nGood数++;
- break;
- case E判定.Poor:
- CDTXMania.listTargetGhostScoreData[ i ].nPoor数++;
- break;
- case E判定.Miss:
- case E判定.Bad:
- CDTXMania.listTargetGhostScoreData[ i ].nMiss数++;
- break;
+ nNowCombo = 0;
}
- switch( eJudge )
+ ghostLag = (ghostLag & 255) - 128;
+
+ if( ghostLag <= 127 )
{
- case E判定.Perfect:
- case E判定.Great:
- case E判定.Good:
- case E判定.XPerfect:
- nNowCombo++;
- CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 );
- break;
- case E判定.Poor:
- case E判定.Miss:
- case E判定.Bad:
- CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 );
- nNowCombo = 0;
- break;
+ E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(ghostLag, 0);
+
+ switch( eJudge )
+ {
+ case E判定.Perfect:
+ case E判定.XPerfect:
+ CDTXMania.listTargetGhostScoreData[ i ].nPerfect数++;
+ break;
+ case E判定.Great:
+ CDTXMania.listTargetGhostScoreData[ i ].nGreat数++;
+ break;
+ case E判定.Good:
+ CDTXMania.listTargetGhostScoreData[ i ].nGood数++;
+ break;
+ case E判定.Poor:
+ CDTXMania.listTargetGhostScoreData[ i ].nPoor数++;
+ break;
+ case E判定.Miss:
+ case E判定.Bad:
+ CDTXMania.listTargetGhostScoreData[ i ].nMiss数++;
+ break;
+ }
+ switch( eJudge )
+ {
+ case E判定.Perfect:
+ case E判定.Great:
+ case E判定.Good:
+ case E判定.XPerfect:
+ nNowCombo++;
+ CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 );
+ break;
+ case E判定.Poor:
+ case E判定.Miss:
+ case E判定.Bad:
+ CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = Math.Max( nNowCombo, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 );
+ nNowCombo = 0;
+ break;
+ }
+ //Trace.WriteLine( eJudge.ToString() + " " + nNowCombo.ToString() + "Combo Max:" + nMaxCombo.ToString() + "Combo" );
}
- //Trace.WriteLine( eJudge.ToString() + " " + nNowCombo.ToString() + "Combo Max:" + nMaxCombo.ToString() + "Combo" );
+ }
+ //CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = nMaxCombo;
+ int nTotal = CDTXMania.DTX.n可視チップ数.Drums;
+ if( i == 1 ) nTotal = CDTXMania.DTX.n可視チップ数.Guitar;
+ else if( i == 2 ) nTotal = CDTXMania.DTX.n可視チップ数.Bass;
+ if( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
+ {
+ CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay );
+ }
+ else
+ {
+ CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.tXG演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay );
}
}
- //CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数 = nMaxCombo;
- int nTotal = CDTXMania.DTX.n可視チップ数.Drums;
- if( i == 1 ) nTotal = CDTXMania.DTX.n可視チップ数.Guitar;
- else if( i == 2 ) nTotal = CDTXMania.DTX.n可視チップ数.Bass;
- if( CDTXMania.ConfigIni.eSkillMode == ESkillType.DTXMania )
- {
- CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay );
- }
- else
- {
- CDTXMania.listTargetGhostScoreData[ i ].db演奏型スキル値 = CScoreIni.tXG演奏型スキルを計算して返す( nTotal, CDTXMania.listTargetGhostScoreData[ i ].nPerfect数, CDTXMania.listTargetGhostScoreData[ i ].nGreat数, CDTXMania.listTargetGhostScoreData[ i ].nGood数, CDTXMania.listTargetGhostScoreData[ i ].nPoor数, CDTXMania.listTargetGhostScoreData[ i ].nMiss数, CDTXMania.listTargetGhostScoreData[ i ].n最大コンボ数, (E楽器パート)i, CDTXMania.listTargetGhostScoreData[ i ].bAutoPlay );
- }
}
+ catch( Exception ex )
+ {
+ Trace.TraceError( "ゴーストデータの読み込みに失敗しました。" + ex.StackTrace );
+ }
+
span = (TimeSpan) ( DateTime.Now - timeBeginLoad );
Trace.TraceInformation( "DTX読込所要時間: {0}", span.ToString() );
{ // → songs.db等の書き込み時だと音切れするっぽい
actEnumSongs.On非活性化();
EnumSongs.SongListEnumCompletelyDone();
- CDTXMania.stage選曲.bIsEnumeratingSongs = false;
+ if( CDTXMania.bXGRelease ) {
+ CDTXMania.stage選曲XG.bIsEnumeratingSongs = false;
+ } else {
+ CDTXMania.stage選曲GITADORA.bIsEnumeratingSongs = false;
+ }
+
}
#region [ 曲検索スレッドの起動/終了 ] // ここに"Enumerating Songs..."表示を集約
if ( !CDTXMania.bコンパクトモード )
!EnumSongs.IsSongListEnumStarted )
{
actEnumSongs.On活性化();
- CDTXMania.stage選曲.bIsEnumeratingSongs = true;
+ if( CDTXMania.bXGRelease ) CDTXMania.stage選曲XG.bIsEnumeratingSongs = true;
+ else CDTXMania.stage選曲GITADORA.bIsEnumeratingSongs = true;
EnumSongs.Init( CDTXMania.Songs管理.listSongsDB, CDTXMania.Songs管理.nSongsDBから取得できたスコア数 ); // songs.db情報と、取得した曲数を、新インスタンスにも与える
EnumSongs.StartEnumFromDisk(); // 曲検索スレッドの起動・開始
if ( CDTXMania.Songs管理.nSongsDBから取得できたスコア数 == 0 ) // もし初回起動なら、検索スレッドのプライオリティをLowestでなくNormalにする
if ( EnumSongs.IsSongListEnumerated )
{
actEnumSongs.On非活性化();
- CDTXMania.stage選曲.bIsEnumeratingSongs = false;
+ if( CDTXMania.bXGRelease ) CDTXMania.stage選曲XG.bIsEnumeratingSongs = false;
+ else CDTXMania.stage選曲GITADORA.bIsEnumeratingSongs = false;
bool bRemakeSongTitleBar = ( r現在のステージ.eステージID == CStage.Eステージ.選曲 ) ? true : false;
- CDTXMania.stage選曲.Refresh( EnumSongs.Songs管理, bRemakeSongTitleBar );
+ if( CDTXMania.bXGRelease ) CDTXMania.stage選曲XG.Refresh( EnumSongs.Songs管理, bRemakeSongTitleBar );
+ else CDTXMania.stage選曲GITADORA.Refresh( EnumSongs.Songs管理, bRemakeSongTitleBar );
EnumSongs.SongListEnumCompletelyDone();
}
#endregion