public CActSelectステータスパネルGITADORA()
{
+ this.tレベル数値フォント初期化();
base.b活性化してない = true;
}
public override void t選択曲が変更された()
this.txNotesDataゲージ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_NotesData gauge.png" ) );
this.txTotalNotes数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_TotalNotes_Number.png" ) );
+ this.txレベル数字_中_整数部 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_LevelNumber Medium Int.png") );
+ this.txレベル数字_中_少数部 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_LevelNumber Medium Decimal.png") );
+ this.txレベル数字_中_小数点 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_LevelNumber Medium Dot.png") );
+
base.OnManagedリソースの作成();
}
}
CDTXMania.tテクスチャの解放( ref this.txNotesDataゲージ );
CDTXMania.tテクスチャの解放( ref this.txTotalNotes数字 );
+ CDTXMania.tテクスチャの解放( ref this.txレベル数字_中_整数部 );
+ CDTXMania.tテクスチャの解放( ref this.txレベル数字_中_少数部 );
+ CDTXMania.tテクスチャの解放( ref this.txレベル数字_中_小数点 );
+
base.OnManagedリソースの解放();
}
}
n難易度小数[ i ] = ( this.n現在選択中の曲のレベル難易度毎DGB[ i ].Drums - (n難易度整数[ i ] * 10 ) ) * 10;
n難易度小数[ i ] += this.n現在選択中の曲のレベル小数点難易度毎DGB[ i ].Drums;
- //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));
- //}
+ if( /* this.str難易度ラベル[ i ] != null && */ this.b現在選択中の曲に譜面がある[ i ].Drums )
+ {
+ //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));
+ this.tレベル値の描画_中( 547, 626 - ( i * 60 ), string.Format("{0:0}", n難易度整数[i]) + "." + string.Format("{0,2:00}", n難易度小数[i]) );
+ }
//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.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( this.b現在選択中の曲に譜面がある[ i ].Drums )
+ //if( this.b現在選択中の曲に譜面がある[ i ].Drums )
+ //{
+ // CDTXMania.act文字コンソール.tPrint( 570, 634 - ( 60 * i ), C文字コンソール.Eフォント種別.白, string.Format( "{0:0}", n難易度整数[i] ) + "." + string.Format("{0,2:00}", n難易度小数[i]) );
+ //}
+ }
+
+ #region [ 選択曲の 最高スキル値の描画 ]
+ //-----------------
+ for (int j = 0; j < 3; j++)
+ {
+ for (int i = 0; i < 5; i++)
{
- CDTXMania.act文字コンソール.tPrint( 570, 634 - ( 60 * i ), C文字コンソール.Eフォント種別.白, string.Format( "{0:0}", n難易度整数[i] ) + "." + string.Format("{0,2:00}", n難易度小数[i]) );
+ if( j == 0 )
+ {
+ if( this.db現在選択中の曲の最高スキル値難易度毎[i][j] != 0.00 )
+ {
+ // ToDo:エクセはどう表示される?
+ CDTXMania.act文字コンソール.tPrint( 450, 645 - ( i * 60 ), C文字コンソール.Eフォント種別.白, string.Format( "{0,6:##0.00}%", this.db現在選択中の曲の最高スキル値難易度毎[ i ][ j ] ) );
+ }
+ }
}
}
+ //-----------------
+ #endregion
this.t難易度カーソル描画( 426, base.n現在選択中の曲の難易度 );
private CTexture txNotesDataゲージ; //クリアバーだけはソフトウェア側で生成する
private CTexture txTotalNotes数字;
+ private CTexture txレベル数字_中_整数部;
+ private CTexture txレベル数字_中_少数部;
+ private CTexture txレベル数字_中_小数点;
+
+ private struct ST数字フォント
+ {
+ public char ch文字;
+ public Rectangle rect;
+ }
+
+ private ST数字フォント[] STレベル数字_中_整数;
+ private ST数字フォント[] STレベル数字_中_少数;
+
+ private void tレベル数値フォント初期化()
+ {
+ this.STレベル数字_中_整数 = new ST数字フォント[]{
+ new ST数字フォント(){ ch文字 = '0', rect = new Rectangle( 0, 0, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '1', rect = new Rectangle( 28, 0, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '2', rect = new Rectangle( 56, 0, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '3', rect = new Rectangle( 84, 0, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '4', rect = new Rectangle( 112, 0, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '5', rect = new Rectangle( 0, 38, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '6', rect = new Rectangle( 28, 38, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '7', rect = new Rectangle( 56, 38, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '8', rect = new Rectangle( 84, 38, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '9', rect = new Rectangle( 112, 38, 28, 38 ) },
+ new ST数字フォント(){ ch文字 = '-', rect = new Rectangle( 140, 0, 28, 38 ) }
+ };
+ this.STレベル数字_中_少数 = new ST数字フォント[]{
+ new ST数字フォント(){ ch文字 = '0', rect = new Rectangle( 0, 0, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '1', rect = new Rectangle( 20, 0, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '2', rect = new Rectangle( 40, 0, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '3', rect = new Rectangle( 60, 0, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '4', rect = new Rectangle( 80, 0, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '5', rect = new Rectangle( 0, 28, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '6', rect = new Rectangle( 20, 28, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '7', rect = new Rectangle( 40, 28, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '8', rect = new Rectangle( 60, 28, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '9', rect = new Rectangle( 80, 28, 20, 28 ) },
+ new ST数字フォント(){ ch文字 = '-', rect = new Rectangle( 100, 0, 20, 28 ) }
+ };
+ }
+
+ // 2019.04.21 kairera0467
+ private void tレベル値の描画_中( int x, int y, string strレベル値 )
+ {
+ //if( dbレベル値 < 0 || dbレベル値 > 10 )
+ // return;
+
+ // 1文字あたりのマージン
+ int n文字間隔_整数部 = 28;
+ int n文字間隔_小数部 = 17;
+ bool b整数部処理中 = true;
+ string formatText = strレベル値;
+
+ for( int i = 0; i < formatText.Length; i++ )
+ {
+ char c = formatText[ i ];
+
+ if( c.Equals( '.' ) )
+ {
+ // 小数点だったら小数点を描画してフラグ切り替えてcontinue
+ this.txレベル数字_中_小数点.t2D描画( CDTXMania.app.Device, x, y + 28 );
+ b整数部処理中 = false;
+ x += 7;
+ continue;
+ }
+ else if( c.Equals( ' ' ) )
+ {
+ // 空白ならなにもせずcontinue
+ continue;
+ }
+
+ for( int j = 0; j < 11; j++ )
+ {
+ if( c.Equals( this.STレベル数字_中_整数[ j ].ch文字 ) )
+ {
+ if( b整数部処理中 )
+ {
+ this.txレベル数字_中_整数部.t2D描画( CDTXMania.app.Device, x, y, this.STレベル数字_中_整数[ j ].rect );
+ x += n文字間隔_整数部;
+ }
+ else
+ {
+ this.txレベル数字_中_少数部.t2D描画( CDTXMania.app.Device, x, y + 9, this.STレベル数字_中_少数[ j ].rect );
+ x += n文字間隔_小数部;
+ }
+ }
+ }
+ }
+ }
+
[StructLayout(LayoutKind.Sequential)]
private struct ST文字位置
{
{
public CActSelect曲リストGITADORA()
{
+ this.tスキル数値フォント初期化();
}
public override void tバーの初期化()
this.txクリアランプ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_Clearlamp.png" ) );
- //this.tx曲名バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score.png" ), false );
- //this.tx曲名バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box.png" ), false );
- //this.tx曲名バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false );
- // this.tx曲名バー.Random = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false );
- // this.tx曲名バー.BackBox = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false );
- //this.tx選曲バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score selected.png" ), false );
- //this.tx選曲バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box selected.png" ), false );
- //this.tx選曲バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false );
- //this.tx選曲バー.Random = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false );
- // this.tx選曲バー.BackBox = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false );
+ //this.tx曲名バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score.png" ), false );
+ //this.tx曲名バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box.png" ), false );
+ //this.tx曲名バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false );
+ //this.tx曲名バー.Random = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false );
+ //this.tx曲名バー.BackBox = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other.png" ), false );
+ //this.tx選曲バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score selected.png" ), false );
+ //this.tx選曲バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box selected.png" ), false );
+ //this.tx選曲バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false );
+ //this.tx選曲バー.Random = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false );
+ //this.tx選曲バー.BackBox = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false );
//this.txスキル数字 = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on list.png"), false);
+ this.txスキル数字_大_整数部 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Skill number Large Int.png") );
+ this.txスキル数字_大_少数部 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Skill number Large Decimal.png") );
+ this.txスキル数字_大_小数点 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Skill number Large Dot.png") );
+
for( int i = 0; i < 15; i++ )
this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 );
CDTXMania.tテクスチャの解放( ref this.txクリアランプ );
+ CDTXMania.tテクスチャの解放( ref this.txスキル数字_大_整数部 );
+ CDTXMania.tテクスチャの解放( ref this.txスキル数字_大_少数部 );
+ CDTXMania.tテクスチャの解放( ref this.txスキル数字_大_小数点 );
+
#region[ ジャケット、曲名テクスチャ画像の解放 ]
// ジャケット
int nKeys = this.dicThumbnail.Count;
{
int n = ( ( ( this.n現在の選択行 - 7 ) + i ) + 15 ) % 15;
this.stバー情報[ n ].eバー種別 = this.e曲のバー種別を返す( song2 );
+ this.stバー情報[ n ].ar譜面情報 = song2.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song2 ) ].譜面情報;
CDTXMania.t安全にDisposeする( ref this.stバー情報[ n ].txタイトル名 );
CDTXMania.t安全にDisposeする( ref this.stバー情報[ n ].txアーティスト名 );
song2 = this.r次の曲( song2 );
{
int n = ( ( ( this.n現在の選択行 - 7 ) + i ) + 15 ) % 15;
this.stバー情報[ n ].eバー種別 = this.e曲のバー種別を返す( song2 );
+ this.stバー情報[ n ].ar譜面情報 = song2.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song2 ) ].譜面情報;
CDTXMania.t安全にDisposeする( ref this.stバー情報[ n ].txタイトル名 );
CDTXMania.t安全にDisposeする( ref this.stバー情報[ n ].txアーティスト名 );
song2 = this.r次の曲( song2 );
//クリアマーク
if( this.stバー情報[ nパネル番号 ].nスキル値.Drums > 0 )
{
- this.txクリアランプ?.t2D描画( CDTXMania.app.Device, 707, y + 2, new Rectangle( 0, this.n現在選択中の曲の現在の難易度レベル * 36, 36, 36 ) );
+ this.txクリアランプ?.t2D描画( CDTXMania.app.Device, 745, y + 2, new Rectangle( 0, this.n現在選択中の曲の現在の難易度レベル * 36, 36, 36 ) );
}
#endregion
#region [ タイトル名テクスチャを描画。]
this.txTumbnail[ nパネル番号 ].t2D描画( CDTXMania.app.Device, 314, 38 );
}
#endregion
+ #region[ 曲別スキル値(左側)を描画 ]
+ this.tスキル値の描画_大( 79, 216, this.r現在選択中の曲.arスコア[ this.n現在選択中の曲の現在の難易度レベル ].譜面情報.最大曲別スキル.Drums );
+
+ #endregion
}
else
{
this.txTumbnail[ nパネル番号 ].t2D描画( CDTXMania.app.Device, 750, y + 7 );
}
//クリアマーク
- if( this.stバー情報[ nパネル番号 ].nスキル値.Drums > 0 )
+ if( this.stバー情報[ nパネル番号 ].ar譜面情報.最大スキル.Drums > 0 )
{
this.txクリアランプ?.t2D描画( CDTXMania.app.Device, 745, y + 2, new Rectangle( 0, this.n現在選択中の曲の現在の難易度レベル * 36, 36, 36 ) );
}
private CTexture txバー選択中;
private CTexture txバー選択中枠;
private CTexture txバー_フォルダ;
+ private CTexture txスキル数字_大_整数部;
+ private CTexture txスキル数字_大_少数部;
+ private CTexture txスキル数字_大_小数点;
public STバー tx曲名バー;
public ST選曲バー tx選曲バー;
//private CTexture[] txTumbnail = new CTexture[ 15 ];
}
}
+
+ private ST数字フォント[] STスキル数字_大_整数;
+ private ST数字フォント[] STスキル数字_大_少数;
+ private struct ST数字フォント
+ {
+ public char ch文字;
+ public Rectangle rect;
+ }
+
+ // デバッグなどを考えてコンストラクタベタ配置ではなくメソッドに分離しておく
+
+ private void tスキル数値フォント初期化()
+ {
+ this.STスキル数字_大_整数 = new ST数字フォント[ 10 ];
+ this.STスキル数字_大_整数[ 0 ] = new ST数字フォント() { ch文字 = '0', rect = new Rectangle( 0, 0, 64, 64 ) };
+ this.STスキル数字_大_整数[ 1 ] = new ST数字フォント() { ch文字 = '1', rect = new Rectangle( 64, 0, 64, 64 ) };
+ this.STスキル数字_大_整数[ 2 ] = new ST数字フォント() { ch文字 = '2', rect = new Rectangle( 128, 0, 64, 64 ) };
+ this.STスキル数字_大_整数[ 3 ] = new ST数字フォント() { ch文字 = '3', rect = new Rectangle( 192, 0, 64, 64 ) };
+ this.STスキル数字_大_整数[ 4 ] = new ST数字フォント() { ch文字 = '4', rect = new Rectangle( 256, 0, 64, 64 ) };
+ this.STスキル数字_大_整数[ 5 ] = new ST数字フォント() { ch文字 = '5', rect = new Rectangle( 0, 64, 64, 64 ) };
+ this.STスキル数字_大_整数[ 6 ] = new ST数字フォント() { ch文字 = '6', rect = new Rectangle( 64, 64, 64, 64 ) };
+ this.STスキル数字_大_整数[ 7 ] = new ST数字フォント() { ch文字 = '7', rect = new Rectangle( 128, 64, 64, 64 ) };
+ this.STスキル数字_大_整数[ 8 ] = new ST数字フォント() { ch文字 = '8', rect = new Rectangle( 192, 64, 64, 64 ) };
+ this.STスキル数字_大_整数[ 9 ] = new ST数字フォント() { ch文字 = '9', rect = new Rectangle( 256, 64, 64, 64 ) };
+ this.STスキル数字_大_少数 = new ST数字フォント[ 10 ];
+ this.STスキル数字_大_少数[ 0 ] = new ST数字フォント() { ch文字 = '0', rect = new Rectangle( 0, 0, 46, 46 ) };
+ this.STスキル数字_大_少数[ 1 ] = new ST数字フォント() { ch文字 = '1', rect = new Rectangle( 0, 0, 46, 46 ) };
+ this.STスキル数字_大_少数[ 2 ] = new ST数字フォント() { ch文字 = '2', rect = new Rectangle( 0, 0, 46, 46 ) };
+ this.STスキル数字_大_少数[ 3 ] = new ST数字フォント() { ch文字 = '3', rect = new Rectangle( 0, 0, 46, 46 ) };
+ this.STスキル数字_大_少数[ 4 ] = new ST数字フォント() { ch文字 = '4', rect = new Rectangle( 0, 0, 46, 46 ) };
+ this.STスキル数字_大_少数[ 5 ] = new ST数字フォント() { ch文字 = '5', rect = new Rectangle( 0, 46, 46, 46 ) };
+ this.STスキル数字_大_少数[ 6 ] = new ST数字フォント() { ch文字 = '6', rect = new Rectangle( 0, 46, 46, 46 ) };
+ this.STスキル数字_大_少数[ 7 ] = new ST数字フォント() { ch文字 = '7', rect = new Rectangle( 0, 46, 46, 46 ) };
+ this.STスキル数字_大_少数[ 8 ] = new ST数字フォント() { ch文字 = '8', rect = new Rectangle( 0, 46, 46, 46 ) };
+ this.STスキル数字_大_少数[ 9 ] = new ST数字フォント() { ch文字 = '9', rect = new Rectangle( 0, 46, 46, 46 ) };
+ }
+
+ // 2019.04.20 kairera0467
+ private void tスキル値の描画_大( int x, int y, double dbスキル値 )
+ {
+ if( dbスキル値 <= 0 || dbスキル値 > 200 )
+ return;
+
+ // 1文字あたりのマージン
+ int n文字間隔_整数部 = 41;
+ int n文字間隔_小数部 = 30;
+ bool b整数部処理中 = true;
+ dbスキル値 = dbスキル値 * 100.0;
+ dbスキル値 = Math.Floor( dbスキル値 );
+ dbスキル値 = dbスキル値 / 100.0;
+ string formatText = string.Format( "{0,6:##0.00}", dbスキル値.ToString() );
+
+ for( int i = 0; i < formatText.Length; i++ )
+ {
+ char c = formatText[ i ];
+
+ if( c.Equals( '.' ) )
+ {
+ // 小数点だったら小数点を描画してフラグ切り替えてcontinue
+ this.txスキル数字_大_小数点.t2D描画( CDTXMania.app.Device, x, y + 54 );
+ b整数部処理中 = false;
+ x += 10;
+ continue;
+ }
+ else if( c.Equals( ' ' ) )
+ {
+ // 空白ならなにもせずcontinue
+ continue;
+ }
+
+ for( int j = 0; j < 10; j++ )
+ {
+ if( c.Equals( this.STスキル数字_大_整数[ j ].ch文字 ) )
+ {
+ if( b整数部処理中 )
+ {
+ this.txスキル数字_大_整数部.t2D描画( CDTXMania.app.Device, x, y, this.STスキル数字_大_整数[ j ].rect );
+ x += n文字間隔_整数部;
+ }
+ else
+ {
+ this.txスキル数字_大_少数部.t2D描画( CDTXMania.app.Device, x, y + 18, this.STスキル数字_大_少数[ j ].rect );
+ x += n文字間隔_小数部;
+ }
+ }
+ }
+ }
+ }
+
//private void tスキル値の描画( int x, int y, int nスキル値 )
//{
// if( nスキル値 <= 0 || nスキル値 > 100 ) // スキル値 0 = 未プレイ なので表示しない。