| 7 |
using System.Drawing.Imaging; |
using System.Drawing.Imaging; |
| 8 |
using System.Diagnostics; |
using System.Diagnostics; |
| 9 |
using System.Drawing.Text; |
using System.Drawing.Text; |
| 10 |
|
using System.IO; |
| 11 |
using SlimDX; |
using SlimDX; |
| 12 |
using FDK; |
using FDK; |
| 13 |
|
|
| 14 |
namespace DTXMania |
namespace DTXMania |
| 15 |
{ |
{ |
| 16 |
|
//ここをXG風にする際に使ったコードはSSTから拝借、改造している。 |
| 17 |
internal class CActSelect曲リスト : CActivity |
internal class CActSelect曲リスト : CActivity |
| 18 |
{ |
{ |
| 19 |
|
|
| 20 |
// プロパティ |
// プロパティ |
| 21 |
|
|
| 22 |
public bool bIsEnumeratingSongs |
public bool bIsEnumeratingSongs |
| 83 |
this.n現在のアンカ難易度レベル = 0; |
this.n現在のアンカ難易度レベル = 0; |
| 84 |
base.b活性化してない = true; |
base.b活性化してない = true; |
| 85 |
this.bIsEnumeratingSongs = false; |
this.bIsEnumeratingSongs = false; |
| 86 |
|
|
| 87 |
|
|
| 88 |
|
this.stパネルマップ = null; |
| 89 |
|
this.stパネルマップ = new STATUSPANEL[12]; // yyagi: 以下、手抜きの初期化でスマン |
| 90 |
|
string[] labels = new string[12] { |
| 91 |
|
"DTXMANIA", //0 |
| 92 |
|
"DEBUT", //1 |
| 93 |
|
"NOVICE", //2 |
| 94 |
|
"REGULAR", //3 |
| 95 |
|
"EXPERT", //4 |
| 96 |
|
"MASTER", //5 |
| 97 |
|
"BASIC", //6 |
| 98 |
|
"ADVANCED", //7 |
| 99 |
|
"EXTREME", //8 |
| 100 |
|
"RAW", //9 |
| 101 |
|
"RWS", //10 |
| 102 |
|
"REAL" //11 |
| 103 |
|
}; |
| 104 |
|
int[] status = new int[12] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; |
| 105 |
|
|
| 106 |
|
for (int i = 0; i < 12; i++) |
| 107 |
|
{ |
| 108 |
|
this.stパネルマップ[i] = default(STATUSPANEL); |
| 109 |
|
this.stパネルマップ[i].status = status[i]; |
| 110 |
|
this.stパネルマップ[i].label = labels[i]; |
| 111 |
|
} |
| 112 |
} |
} |
| 113 |
|
|
| 114 |
|
|
| 193 |
|
|
| 194 |
|
|
| 195 |
public delegate void DGSortFunc( List<C曲リストノード> songList, E楽器パート eInst, int order, params object[] p); |
public delegate void DGSortFunc( List<C曲リストノード> songList, E楽器パート eInst, int order, params object[] p); |
| 196 |
|
/// <summary> |
| 197 |
|
/// 主にCSong管理.cs内にあるソート機能を、delegateで呼び出す。 |
| 198 |
|
/// </summary> |
| 199 |
|
/// <param name="sf">ソート用に呼び出すメソッド</param> |
| 200 |
|
/// <param name="eInst">ソート基準とする楽器</param> |
| 201 |
|
/// <param name="order">-1=降順, 1=昇順</param> |
| 202 |
public void t曲リストのソート( DGSortFunc sf, E楽器パート eInst, int order, params object[] p ) |
public void t曲リストのソート( DGSortFunc sf, E楽器パート eInst, int order, params object[] p ) |
| 203 |
{ |
{ |
| 204 |
List<C曲リストノード> songList = GetSongListWithinMe( this.r現在選択中の曲 ); |
List<C曲リストノード> songList = GetSongListWithinMe( this.r現在選択中の曲 ); |
| 205 |
if ( songList == null ) |
if ( songList == null ) |
| 206 |
{ |
{ |
| 207 |
|
// 何もしない; |
| 208 |
} |
} |
| 209 |
else |
else |
| 210 |
{ |
{ |
| 211 |
|
// CDTXMania.Songs管理.t曲リストのソート3_演奏回数の多い順( songList, eInst, order ); |
| 212 |
sf( songList, eInst, order, p ); |
sf( songList, eInst, order, p ); |
| 213 |
|
// this.r現在選択中の曲 = CDTXMania |
| 214 |
this.t現在選択中の曲を元に曲バーを再構成する(); |
this.t現在選択中の曲を元に曲バーを再構成する(); |
| 215 |
} |
} |
| 216 |
} |
} |
| 217 |
|
|
| 218 |
public bool tBOXに入る() |
public bool tBOXに入る() |
| 219 |
{ |
{ |
| 220 |
|
//Trace.TraceInformation( "box enter" ); |
| 221 |
|
//Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ); |
| 222 |
|
//Trace.TraceInformation( "Skin現在System : " + CSkin.strSystemSkinSubfolderFullName ); |
| 223 |
|
//Trace.TraceInformation( "Skin現在BoxDef : " + CSkin.strBoxDefSkinSubfolderFullName ); |
| 224 |
|
//Trace.TraceInformation( "Skin現在: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) ); |
| 225 |
|
//Trace.TraceInformation( "Skin現pt: " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ); |
| 226 |
|
//Trace.TraceInformation( "Skin指定: " + CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ); |
| 227 |
|
//Trace.TraceInformation( "Skinpath: " + this.r現在選択中の曲.strSkinPath ); |
| 228 |
bool ret = false; |
bool ret = false; |
| 229 |
if ( CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( false ) ) != CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) |
if ( CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( false ) ) != CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) |
| 230 |
&& CSkin.bUseBoxDefSkin ) |
&& CSkin.bUseBoxDefSkin ) |
| 231 |
{ |
{ |
| 232 |
ret = true; |
ret = true; |
| 233 |
// BOXに入るときは、スキン変更発生時のみboxdefスキン設定の更新を行う |
// BOXに入るときは、スキン変更発生時のみboxdefスキン設定の更新を行う |
| 234 |
CDTXMania.Skin.SetCurrentSkinSubfolderFullName( |
CDTXMania.Skin.SetCurrentSkinSubfolderFullName( |
| 235 |
CDTXMania.Skin.GetSkinSubfolderFullNameFromSkinName( CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ), false ); |
CDTXMania.Skin.GetSkinSubfolderFullNameFromSkinName( CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ), false ); |
| 236 |
} |
} |
| 237 |
|
|
| 238 |
|
//Trace.TraceInformation( "Skin変更: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) ); |
| 239 |
|
//Trace.TraceInformation( "Skin変更Current : "+ CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ); |
| 240 |
|
//Trace.TraceInformation( "Skin変更System : "+ CSkin.strSystemSkinSubfolderFullName ); |
| 241 |
|
//Trace.TraceInformation( "Skin変更BoxDef : "+ CSkin.strBoxDefSkinSubfolderFullName ); |
| 242 |
|
if( this.tx選択されている曲の曲名 != null ) |
| 243 |
|
{ |
| 244 |
|
this.tx選択されている曲の曲名.Dispose(); |
| 245 |
|
this.tx選択されている曲のアーティスト名.Dispose(); |
| 246 |
|
this.tx選択されている曲の曲名 = null; |
| 247 |
|
this.tx選択されている曲のアーティスト名 = null; |
| 248 |
|
} |
| 249 |
if( ( this.r現在選択中の曲.list子リスト != null ) && ( this.r現在選択中の曲.list子リスト.Count > 0 ) ) |
if( ( this.r現在選択中の曲.list子リスト != null ) && ( this.r現在選択中の曲.list子リスト.Count > 0 ) ) |
| 250 |
{ |
{ |
| 251 |
this.r現在選択中の曲 = this.r現在選択中の曲.list子リスト[ 0 ]; |
this.r現在選択中の曲 = this.r現在選択中の曲.list子リスト[ 0 ]; |
| 256 |
} |
} |
| 257 |
public bool tBOXを出る() |
public bool tBOXを出る() |
| 258 |
{ |
{ |
| 259 |
|
//Trace.TraceInformation( "box exit" ); |
| 260 |
|
//Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ); |
| 261 |
|
//Trace.TraceInformation( "Skin現在System : " + CSkin.strSystemSkinSubfolderFullName ); |
| 262 |
|
//Trace.TraceInformation( "Skin現在BoxDef : " + CSkin.strBoxDefSkinSubfolderFullName ); |
| 263 |
|
//Trace.TraceInformation( "Skin現在: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) ); |
| 264 |
|
//Trace.TraceInformation( "Skin現pt: " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ); |
| 265 |
|
//Trace.TraceInformation( "Skin指定: " + CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ); |
| 266 |
|
//Trace.TraceInformation( "Skinpath: " + this.r現在選択中の曲.strSkinPath ); |
| 267 |
bool ret = false; |
bool ret = false; |
| 268 |
if ( CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( false ) ) != CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) |
if ( CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( false ) ) != CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) |
| 269 |
&& CSkin.bUseBoxDefSkin ) |
&& CSkin.bUseBoxDefSkin ) |
| 270 |
{ |
{ |
| 271 |
ret = true; |
ret = true; |
| 272 |
} |
} |
| 273 |
|
// スキン変更が発生しなくても、boxdef圏外に出る場合は、boxdefスキン設定の更新が必要 |
| 274 |
|
// (ユーザーがboxdefスキンをConfig指定している場合への対応のために必要) |
| 275 |
|
// tBoxに入る()とは処理が微妙に異なるので注意 |
| 276 |
CDTXMania.Skin.SetCurrentSkinSubfolderFullName( |
CDTXMania.Skin.SetCurrentSkinSubfolderFullName( |
| 277 |
( this.r現在選択中の曲.strSkinPath == "" ) ? "" : CDTXMania.Skin.GetSkinSubfolderFullNameFromSkinName( CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ), false ); |
( this.r現在選択中の曲.strSkinPath == "" ) ? "" : CDTXMania.Skin.GetSkinSubfolderFullNameFromSkinName( CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ), false ); |
| 278 |
if ( this.r現在選択中の曲.r親ノード != null ) |
//Trace.TraceInformation( "SKIN変更: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) ); |
| 279 |
|
//Trace.TraceInformation( "SKIN変更Current : "+ CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ); |
| 280 |
|
//Trace.TraceInformation( "SKIN変更System : "+ CSkin.strSystemSkinSubfolderFullName ); |
| 281 |
|
//Trace.TraceInformation( "SKIN変更BoxDef : "+ CSkin.strBoxDefSkinSubfolderFullName ); |
| 282 |
|
if( this.tx選択されている曲の曲名 != null ) |
| 283 |
|
{ |
| 284 |
|
this.tx選択されている曲の曲名.Dispose(); |
| 285 |
|
this.tx選択されている曲のアーティスト名.Dispose(); |
| 286 |
|
this.tx選択されている曲の曲名 = null; |
| 287 |
|
this.tx選択されている曲のアーティスト名 = null; |
| 288 |
|
} |
| 289 |
|
if ( this.r現在選択中の曲.r親ノード != null ) |
| 290 |
{ |
{ |
| 291 |
this.r現在選択中の曲 = this.r現在選択中の曲.r親ノード; |
this.r現在選択中の曲 = this.r現在選択中の曲.r親ノード; |
| 292 |
this.t現在選択中の曲を元に曲バーを再構成する(); |
this.t現在選択中の曲を元に曲バーを再構成する(); |
| 300 |
for( int i = 0; i < 13; i++ ) |
for( int i = 0; i < 13; i++ ) |
| 301 |
{ |
{ |
| 302 |
this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 ); |
this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 ); |
| 303 |
|
this.tアーティスト名テクスチャの生成( i, this.stバー情報[ i ].strアーティスト名 ); |
| 304 |
|
//this.tパネルの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].strアーティスト名, this.stバー情報[ i ].col文字色 ); |
| 305 |
|
if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strDTXフォルダのパス ) ) |
| 306 |
|
{ |
| 307 |
|
//txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) ); |
| 308 |
|
this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strDTXフォルダのパス, this.stバー情報[ i ].eバー種別 ); |
| 309 |
|
this.dicThumbnail.Add( this.stバー情報[ i ].strDTXフォルダのパス, this.txTumbnail[ i ] ); |
| 310 |
|
} |
| 311 |
|
txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strDTXフォルダのパス ]; |
| 312 |
} |
} |
| 313 |
} |
} |
| 314 |
public void t次に移動() |
public void t次に移動() |
| 359 |
song = this.r次の曲( song ); |
song = this.r次の曲( song ); |
| 360 |
} |
} |
| 361 |
|
|
| 362 |
|
this.tラベル名からステータスパネルを決定する( this.r現在選択中の曲.ar難易度ラベル[ this.n現在選択中の曲の現在の難易度レベル ] ); |
| 363 |
|
|
| 364 |
|
switch( this.nIndex ) |
| 365 |
|
{ |
| 366 |
|
case 2: |
| 367 |
|
CDTXMania.Skin.soundNovice.t再生する(); |
| 368 |
|
string strnov = CSkin.Path( @"Sounds\Novice.ogg" ); |
| 369 |
|
if( !File.Exists( strnov ) ) |
| 370 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 371 |
|
break; |
| 372 |
|
|
| 373 |
|
case 3: |
| 374 |
|
CDTXMania.Skin.soundRegular.t再生する(); |
| 375 |
|
string strreg = CSkin.Path( @"Sounds\Regular.ogg" ); |
| 376 |
|
if( !File.Exists( strreg ) ) |
| 377 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 378 |
|
break; |
| 379 |
|
|
| 380 |
|
case 4: |
| 381 |
|
CDTXMania.Skin.soundExpert.t再生する(); |
| 382 |
|
string strexp = CSkin.Path( @"Sounds\Expert.ogg" ); |
| 383 |
|
if( !File.Exists( strexp ) ) |
| 384 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 385 |
|
break; |
| 386 |
|
|
| 387 |
|
case 5: |
| 388 |
|
CDTXMania.Skin.soundMaster.t再生する(); |
| 389 |
|
string strmas = CSkin.Path( @"Sounds\Master.ogg" ); |
| 390 |
|
if( !File.Exists( strmas ) ) |
| 391 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 392 |
|
break; |
| 393 |
|
|
| 394 |
|
case 6: |
| 395 |
|
CDTXMania.Skin.soundBasic.t再生する(); |
| 396 |
|
string strbsc = CSkin.Path( @"Sounds\Basic.ogg" ); |
| 397 |
|
if( !File.Exists( strbsc ) ) |
| 398 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 399 |
|
break; |
| 400 |
|
|
| 401 |
|
case 7: |
| 402 |
|
CDTXMania.Skin.soundAdvanced.t再生する(); |
| 403 |
|
string stradv = CSkin.Path( @"Sounds\Advanced.ogg" ); |
| 404 |
|
if( !File.Exists( stradv ) ) |
| 405 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 406 |
|
break; |
| 407 |
|
|
| 408 |
|
case 8: |
| 409 |
|
CDTXMania.Skin.soundExtreme.t再生する(); |
| 410 |
|
string strext = CSkin.Path( @"Sounds\Extreme.ogg" ); |
| 411 |
|
if( !File.Exists( strext ) ) |
| 412 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 413 |
|
break; |
| 414 |
|
|
| 415 |
|
default: |
| 416 |
|
CDTXMania.Skin.sound変更音.t再生する(); |
| 417 |
|
break; |
| 418 |
|
} |
| 419 |
|
|
| 420 |
// 選曲ステージに変更通知を発出し、関係Activityの対応を行ってもらう。 |
// 選曲ステージに変更通知を発出し、関係Activityの対応を行ってもらう。 |
| 421 |
|
|
| 422 |
CDTXMania.stage選曲.t選択曲変更通知(); |
CDTXMania.stage選曲.t選択曲変更通知(); |
| 423 |
} |
} |
| 424 |
|
|
| 425 |
|
|
| 426 |
|
public void tラベル名からステータスパネルを決定する(string strラベル名) |
| 427 |
|
{ |
| 428 |
|
if (string.IsNullOrEmpty(strラベル名)) |
| 429 |
|
{ |
| 430 |
|
this.nIndex = 0; |
| 431 |
|
} |
| 432 |
|
else |
| 433 |
|
{ |
| 434 |
|
STATUSPANEL[] array = this.stパネルマップ; |
| 435 |
|
for (int i = 0; i < array.Length; i++) |
| 436 |
|
{ |
| 437 |
|
STATUSPANEL sTATUSPANEL = array[i]; |
| 438 |
|
if (strラベル名.Equals(sTATUSPANEL.label, StringComparison.CurrentCultureIgnoreCase)) |
| 439 |
|
{ |
| 440 |
|
this.nIndex = sTATUSPANEL.status; |
| 441 |
|
return; |
| 442 |
|
} |
| 443 |
|
this.nIndex++; |
| 444 |
|
} |
| 445 |
|
} |
| 446 |
|
} |
| 447 |
|
|
| 448 |
/// <summary> |
/// <summary> |
| 449 |
/// 曲リストをリセットする |
/// 曲リストをリセットする |
| 553 |
if( CDTXMania.ConfigIni.b選曲リストフォントを斜体にする ) regular |= FontStyle.Italic; |
if( CDTXMania.ConfigIni.b選曲リストフォントを斜体にする ) regular |= FontStyle.Italic; |
| 554 |
if( CDTXMania.ConfigIni.b選曲リストフォントを太字にする ) regular |= FontStyle.Bold; |
if( CDTXMania.ConfigIni.b選曲リストフォントを太字にする ) regular |= FontStyle.Bold; |
| 555 |
this.ft曲リスト用フォント = new Font( CDTXMania.ConfigIni.str選曲リストフォント, (float) ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot * 2 ), regular, GraphicsUnit.Pixel ); |
this.ft曲リスト用フォント = new Font( CDTXMania.ConfigIni.str選曲リストフォント, (float) ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot * 2 ), regular, GraphicsUnit.Pixel ); |
| 556 |
|
//this.prvFont = new CPrivateFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 28, FontStyle.Regular ); |
| 557 |
|
|
| 558 |
// 現在選択中の曲がない(=はじめての活性化)なら、現在選択中の曲をルートの先頭ノードに設定する。 |
// 現在選択中の曲がない(=はじめての活性化)なら、現在選択中の曲をルートの先頭ノードに設定する。 |
| 559 |
|
|
| 575 |
return; |
return; |
| 576 |
|
|
| 577 |
CDTXMania.t安全にDisposeする( ref this.ft曲リスト用フォント ); |
CDTXMania.t安全にDisposeする( ref this.ft曲リスト用フォント ); |
| 578 |
|
this.prvFont.Dispose(); |
| 579 |
|
|
| 580 |
for( int i = 0; i < 13; i++ ) |
for( int i = 0; i < 13; i++ ) |
| 581 |
this.ct登場アニメ用[ i ] = null; |
this.ct登場アニメ用[ i ] = null; |
| 593 |
this.tx選曲バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score selected.png" ), false ); |
this.tx選曲バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar score selected.png" ), false ); |
| 594 |
this.tx選曲バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box selected.png" ), false ); |
this.tx選曲バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar box selected.png" ), false ); |
| 595 |
this.tx選曲バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false ); |
this.tx選曲バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_bar other selected.png" ), false ); |
| 596 |
this.txスキル数字 = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on list.png"), false); |
this.txスキル数字 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\ScreenSelect skill number on list.png" ), false ); |
| 597 |
for( int i = 0; i < 13; i++ ) |
this.tx選曲パネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_image_panel.png")); |
| 598 |
this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 ); |
this.txパネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_music panel.png")); |
| 599 |
|
//this.txジャケットボックスクローズ = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_preimage backbox.png") ); |
| 600 |
|
//this.txジャケットランダム = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_preimage random.png") ); |
| 601 |
|
this.tx帯 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_backpanel.png" ) ); |
| 602 |
|
this.tx色帯 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\5_ColorBar.png" ) ); |
| 603 |
|
this.txランプ用帯 = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_lamppanel.png" )); |
| 604 |
|
this.txクリアランプ = CDTXMania.tテクスチャの生成( CSkin.Path(@"Graphics\5_Clearlamp.png") ); |
| 605 |
|
#region[ テクスチャの復元 ] |
| 606 |
|
int nKeys = this.dicThumbnail.Count; |
| 607 |
|
string[] keys = new string[ nKeys ]; |
| 608 |
|
this.dicThumbnail.Keys.CopyTo( keys, 0 ); |
| 609 |
|
foreach (var key in keys) |
| 610 |
|
this.dicThumbnail[ key ] = this.tパスを指定してサムネイル画像を生成して返す( 0, key, this.stバー情報[ 0 ].eバー種別 );; |
| 611 |
|
|
| 612 |
|
//ここは最初に表示される画像の復元に必要。 |
| 613 |
|
for (int i = 0; i < 13; i++) |
| 614 |
|
{ |
| 615 |
|
this.t曲名バーの生成(i, this.stバー情報[i].strタイトル文字列, this.stバー情報[i].col文字色); |
| 616 |
|
this.tアーティスト名テクスチャの生成( i, this.stバー情報[ i ].strアーティスト名 ); |
| 617 |
|
//this.tパネルの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].strアーティスト名, this.stバー情報[ i ].col文字色 ); |
| 618 |
|
//this.tパスを指定してサムネイル画像を生成する(i, this.stバー情報[i].strDTXフォルダのパス, this.stバー情報[i].eバー種別); |
| 619 |
|
if( this.stバー情報[ i ].strDTXフォルダのパス != null ) |
| 620 |
|
{ |
| 621 |
|
if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strDTXフォルダのパス ) ) |
| 622 |
|
{ |
| 623 |
|
//txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) ); |
| 624 |
|
this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strDTXフォルダのパス, this.stバー情報[ i ].eバー種別 ); |
| 625 |
|
this.dicThumbnail.Add( this.stバー情報[ i ].strDTXフォルダのパス, this.txTumbnail[ i ] ); |
| 626 |
|
} |
| 627 |
|
txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strDTXフォルダのパス ]; |
| 628 |
|
} |
| 629 |
|
} |
| 630 |
|
#endregion |
| 631 |
|
|
| 632 |
|
|
| 633 |
int c = ( CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja" ) ? 0 : 1; |
int c = ( CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja" ) ? 0 : 1; |
| 634 |
#region [ Songs not found画像 ] |
#region [ Songs not found画像 ] |
| 661 |
#region [ "曲データを検索しています"画像 ] |
#region [ "曲データを検索しています"画像 ] |
| 662 |
try |
try |
| 663 |
{ |
{ |
| 664 |
using ( Bitmap image = new Bitmap( 1280, 200 ) ) |
using ( Bitmap image = new Bitmap( 640, 96 ) ) |
| 665 |
using ( Graphics graphics = Graphics.FromImage( image ) ) |
using ( Graphics graphics = Graphics.FromImage( image ) ) |
| 666 |
{ |
{ |
| 667 |
string[] s1 = { "曲データを検索しています。", "Now enumerating songs." }; |
string[] s1 = { "曲データを検索しています。", "Now enumerating songs." }; |
| 683 |
} |
} |
| 684 |
#endregion |
#endregion |
| 685 |
#region [ 曲数表示 ] |
#region [ 曲数表示 ] |
| 686 |
this.txアイテム数数字 = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_skill number on gauge etc.png"), false); |
this.txアイテム数数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect skill number on gauge etc.png" ), false ); |
| 687 |
#endregion |
#endregion |
| 688 |
base.OnManagedリソースの作成(); |
|
| 689 |
|
base.OnManagedリソースの作成(); |
| 690 |
} |
} |
| 691 |
public override void OnManagedリソースの解放() |
public override void OnManagedリソースの解放() |
| 692 |
{ |
{ |
| 695 |
|
|
| 696 |
CDTXMania.t安全にDisposeする( ref this.txアイテム数数字 ); |
CDTXMania.t安全にDisposeする( ref this.txアイテム数数字 ); |
| 697 |
|
|
| 698 |
for( int i = 0; i < 13; i++ ) |
for ( int i = 0; i < 13; i++ ) |
| 699 |
CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txタイトル名 ); |
{ |
| 700 |
|
CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txタイトル名 ); |
| 701 |
|
CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txアーティスト名 ); |
| 702 |
|
} |
| 703 |
|
|
| 704 |
|
if( this.tx選択されている曲の曲名 != null ) |
| 705 |
|
{ |
| 706 |
|
this.tx選択されている曲の曲名.Dispose(); |
| 707 |
|
this.tx選択されている曲のアーティスト名.Dispose(); |
| 708 |
|
this.tx選択されている曲の曲名 = null; |
| 709 |
|
this.tx選択されている曲のアーティスト名 = null; |
| 710 |
|
} |
| 711 |
|
#region[ ジャケット画像の解放 ] |
| 712 |
|
int nKeys = this.dicThumbnail.Count; |
| 713 |
|
string[] keys = new string[ nKeys ]; |
| 714 |
|
this.dicThumbnail.Keys.CopyTo( keys, 0 ); |
| 715 |
|
foreach( var key in keys ) |
| 716 |
|
{ |
| 717 |
|
C共通.tDisposeする( this.dicThumbnail[ key ] ); |
| 718 |
|
this.dicThumbnail[ key ] = null; |
| 719 |
|
} |
| 720 |
|
#endregion |
| 721 |
|
|
| 722 |
CDTXMania.t安全にDisposeする( ref this.txスキル数字 ); |
CDTXMania.t安全にDisposeする( ref this.txスキル数字 ); |
| 723 |
CDTXMania.t安全にDisposeする( ref this.txEnumeratingSongs ); |
CDTXMania.t安全にDisposeする( ref this.txEnumeratingSongs ); |
| 724 |
CDTXMania.t安全にDisposeする( ref this.txSongNotFound ); |
CDTXMania.t安全にDisposeする( ref this.txSongNotFound ); |
| 725 |
CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Score ); |
CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Score ); |
| 728 |
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Score ); |
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Score ); |
| 729 |
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Box ); |
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Box ); |
| 730 |
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Other ); |
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Other ); |
| 731 |
|
CDTXMania.t安全にDisposeする( ref this.tx選曲パネル ); |
| 732 |
|
CDTXMania.t安全にDisposeする( ref this.txパネル ); |
| 733 |
|
CDTXMania.t安全にDisposeする( ref this.txクリアランプ ); |
| 734 |
|
//CDTXMania.t安全にDisposeする( ref this.txジャケットボックスクローズ ); |
| 735 |
|
//CDTXMania.t安全にDisposeする( ref this.txジャケットランダム ); |
| 736 |
|
CDTXMania.t安全にDisposeする( ref this.tx帯 ); |
| 737 |
|
CDTXMania.t安全にDisposeする( ref this.tx色帯 ); |
| 738 |
|
CDTXMania.t安全にDisposeする( ref this.txランプ用帯 ); |
| 739 |
|
|
| 740 |
base.OnManagedリソースの解放(); |
base.OnManagedリソースの解放(); |
| 741 |
} |
} |
| 795 |
break; |
break; |
| 796 |
} |
} |
| 797 |
} |
} |
|
|
|
|
|
|
| 798 |
//----------------- |
//----------------- |
| 799 |
#endregion |
#endregion |
| 800 |
} |
} |
| 802 |
{ |
{ |
| 803 |
#region [ (2) 通常フェーズの進行。] |
#region [ (2) 通常フェーズの進行。] |
| 804 |
//----------------- |
//----------------- |
| 805 |
long n現在時刻 = CDTXMania.Timer.n現在時刻; |
long n現在時刻 = CSound管理.rc演奏用タイマ.n現在時刻; |
| 806 |
|
|
| 807 |
if( n現在時刻 < this.nスクロールタイマ ) // 念のため |
if( n現在時刻 < this.nスクロールタイマ ) // 念のため |
| 808 |
this.nスクロールタイマ = n現在時刻; |
this.nスクロールタイマ = n現在時刻; |
| 864 |
this.r現在選択中の曲 = this.r次の曲( this.r現在選択中の曲 ); |
this.r現在選択中の曲 = this.r次の曲( this.r現在選択中の曲 ); |
| 865 |
this.n現在の選択行 = ( this.n現在の選択行 + 1 ) % 13; |
this.n現在の選択行 = ( this.n現在の選択行 + 1 ) % 13; |
| 866 |
|
|
|
|
|
| 867 |
// 選択曲から7つ下のパネル(=新しく最下部に表示されるパネル。消えてしまう一番上のパネルを再利用する)に、新しい曲の情報を記載する。 |
// 選択曲から7つ下のパネル(=新しく最下部に表示されるパネル。消えてしまう一番上のパネルを再利用する)に、新しい曲の情報を記載する。 |
| 868 |
|
|
| 869 |
C曲リストノード song = this.r現在選択中の曲; |
C曲リストノード song = this.r現在選択中の曲; |
| 872 |
|
|
| 873 |
int index = ( this.n現在の選択行 + 7 ) % 13; // 新しく最下部に表示されるパネルのインデックス(0~12)。 |
int index = ( this.n現在の選択行 + 7 ) % 13; // 新しく最下部に表示されるパネルのインデックス(0~12)。 |
| 874 |
this.stバー情報[ index ].strタイトル文字列 = song.strタイトル; |
this.stバー情報[ index ].strタイトル文字列 = song.strタイトル; |
| 875 |
|
this.stバー情報[ index ].strアーティスト名 = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.アーティスト名; |
| 876 |
this.stバー情報[ index ].col文字色 = song.col文字色; |
this.stバー情報[ index ].col文字色 = song.col文字色; |
| 877 |
|
this.stバー情報[ index ].strDTXフォルダのパス = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].ファイル情報.フォルダの絶対パス + song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.Preimage; |
| 878 |
this.t曲名バーの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].col文字色 ); |
this.t曲名バーの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].col文字色 ); |
| 879 |
|
this.tアーティスト名テクスチャの生成( index, this.stバー情報[ index ].strアーティスト名 ); |
| 880 |
|
//this.tパネルの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].strアーティスト名, this.stバー情報[ index ].col文字色 ); |
| 881 |
|
|
| 882 |
|
if( !this.dicThumbnail.ContainsKey( this.stバー情報[ index ].strDTXフォルダのパス ) ) |
| 883 |
|
{ |
| 884 |
|
//txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) ); |
| 885 |
|
this.tパスを指定してサムネイル画像を生成する( index, this.stバー情報[ index ].strDTXフォルダのパス, this.stバー情報[ index ].eバー種別 ); |
| 886 |
|
this.dicThumbnail.Add( this.stバー情報[ index ].strDTXフォルダのパス, this.txTumbnail[ index ] ); |
| 887 |
|
} |
| 888 |
|
txTumbnail[ index ] = this.dicThumbnail[ this.stバー情報[ index ].strDTXフォルダのパス ]; |
| 889 |
|
|
| 890 |
|
|
| 891 |
// stバー情報[] の内容を1行ずつずらす。 |
// stバー情報[] の内容を1行ずつずらす。 |
| 907 |
for( int i = 0; i < 3; i++ ) |
for( int i = 0; i < 3; i++ ) |
| 908 |
this.stバー情報[ index ].nスキル値[ i ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ i ]; |
this.stバー情報[ index ].nスキル値[ i ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ i ]; |
| 909 |
|
|
|
|
|
| 910 |
// 1行(100カウント)移動完了。 |
// 1行(100カウント)移動完了。 |
| 911 |
|
|
| 912 |
this.n現在のスクロールカウンタ -= 100; |
this.n現在のスクロールカウンタ -= 100; |
| 913 |
this.n目標のスクロールカウンタ -= 100; |
this.n目標のスクロールカウンタ -= 100; |
| 914 |
|
|
| 915 |
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新 |
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新 |
| 916 |
|
if( this.tx選択されている曲の曲名 != null && this.tx選択されている曲のアーティスト名 != null ) |
| 917 |
|
{ |
| 918 |
|
this.tx選択されている曲の曲名.Dispose(); |
| 919 |
|
this.tx選択されている曲のアーティスト名.Dispose(); |
| 920 |
|
this.tx選択されている曲の曲名 = null; |
| 921 |
|
this.tx選択されている曲のアーティスト名 = null; |
| 922 |
|
} |
| 923 |
|
|
| 924 |
if( this.n目標のスクロールカウンタ == 0 ) |
if( this.n目標のスクロールカウンタ == 0 ) |
| 925 |
CDTXMania.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更! |
CDTXMania.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更! |
| 937 |
this.r現在選択中の曲 = this.r前の曲( this.r現在選択中の曲 ); |
this.r現在選択中の曲 = this.r前の曲( this.r現在選択中の曲 ); |
| 938 |
this.n現在の選択行 = ( ( this.n現在の選択行 - 1 ) + 13 ) % 13; |
this.n現在の選択行 = ( ( this.n現在の選択行 - 1 ) + 13 ) % 13; |
| 939 |
|
|
|
|
|
| 940 |
// 選択曲から5つ上のパネル(=新しく最上部に表示されるパネル。消えてしまう一番下のパネルを再利用する)に、新しい曲の情報を記載する。 |
// 選択曲から5つ上のパネル(=新しく最上部に表示されるパネル。消えてしまう一番下のパネルを再利用する)に、新しい曲の情報を記載する。 |
| 941 |
|
|
| 942 |
C曲リストノード song = this.r現在選択中の曲; |
C曲リストノード song = this.r現在選択中の曲; |
| 945 |
|
|
| 946 |
int index = ( ( this.n現在の選択行 - 5 ) + 13 ) % 13; // 新しく最上部に表示されるパネルのインデックス(0~12)。 |
int index = ( ( this.n現在の選択行 - 5 ) + 13 ) % 13; // 新しく最上部に表示されるパネルのインデックス(0~12)。 |
| 947 |
this.stバー情報[ index ].strタイトル文字列 = song.strタイトル; |
this.stバー情報[ index ].strタイトル文字列 = song.strタイトル; |
| 948 |
|
this.stバー情報[ index ].strアーティスト名 = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song) ].譜面情報.アーティスト名; |
| 949 |
this.stバー情報[ index ].col文字色 = song.col文字色; |
this.stバー情報[ index ].col文字色 = song.col文字色; |
| 950 |
|
this.stバー情報[ index ].strDTXフォルダのパス = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].ファイル情報.フォルダの絶対パス + song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.Preimage; |
| 951 |
this.t曲名バーの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].col文字色 ); |
this.t曲名バーの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].col文字色 ); |
| 952 |
|
this.tアーティスト名テクスチャの生成( index, this.stバー情報[ index ].strアーティスト名 ); |
| 953 |
|
//this.tパネルの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].strアーティスト名, this.stバー情報[ index ].col文字色 ); |
| 954 |
|
|
| 955 |
|
if( !this.dicThumbnail.ContainsKey( this.stバー情報[ index ].strDTXフォルダのパス ) ) |
| 956 |
|
{ |
| 957 |
|
//txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) ); |
| 958 |
|
this.tパスを指定してサムネイル画像を生成する( index, this.stバー情報[ index ].strDTXフォルダのパス, this.stバー情報[ index ].eバー種別 ); |
| 959 |
|
this.dicThumbnail.Add( this.stバー情報[ index ].strDTXフォルダのパス, this.txTumbnail[ index ] ); |
| 960 |
|
} |
| 961 |
|
txTumbnail[ index ] = this.dicThumbnail[ this.stバー情報[ index ].strDTXフォルダのパス ]; |
| 962 |
|
|
| 963 |
|
|
| 964 |
// stバー情報[] の内容を1行ずつずらす。 |
// stバー情報[] の内容を1行ずつずらす。 |
| 986 |
this.n現在のスクロールカウンタ += 100; |
this.n現在のスクロールカウンタ += 100; |
| 987 |
this.n目標のスクロールカウンタ += 100; |
this.n目標のスクロールカウンタ += 100; |
| 988 |
|
|
| 989 |
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新 |
|
| 990 |
|
this.t選択曲が変更された( false ); // スクロールバー用に今何番目を選択しているかを更新 |
| 991 |
|
if( this.tx選択されている曲の曲名 != null && this.tx選択されている曲のアーティスト名 != null ) |
| 992 |
|
{ |
| 993 |
|
this.tx選択されている曲の曲名.Dispose(); |
| 994 |
|
this.tx選択されている曲のアーティスト名.Dispose(); |
| 995 |
|
this.tx選択されている曲の曲名 = null; |
| 996 |
|
this.tx選択されている曲のアーティスト名 = null; |
| 997 |
|
} |
| 998 |
|
|
| 999 |
if( this.n目標のスクロールカウンタ == 0 ) |
if( this.n目標のスクロールカウンタ == 0 ) |
| 1000 |
CDTXMania.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更! |
CDTXMania.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更! |
| 1025 |
else |
else |
| 1026 |
{ |
{ |
| 1027 |
if ( this.txSongNotFound != null ) |
if ( this.txSongNotFound != null ) |
| 1028 |
this.txSongNotFound.t2D描画( CDTXMania.app.Device, 640, 400 ); |
this.txSongNotFound.t2D描画( CDTXMania.app.Device, 320, 160 ); |
| 1029 |
} |
} |
| 1030 |
//----------------- |
//----------------- |
| 1031 |
#endregion |
#endregion |
| 1032 |
|
|
| 1033 |
return 0; |
return 0; |
| 1034 |
} |
} |
| 1035 |
|
var bar = SlimDX.Matrix.Identity; |
| 1036 |
|
var barL = SlimDX.Matrix.Identity; |
| 1037 |
|
bar *= SlimDX.Matrix.RotationY(-0.415f); |
| 1038 |
|
barL *= SlimDX.Matrix.RotationY(0.415f); |
| 1039 |
|
bar *= SlimDX.Matrix.Translation(540f, 20f, -24f); |
| 1040 |
|
barL *= SlimDX.Matrix.Translation(-540f, 20f, -24f); |
| 1041 |
|
bar *= SlimDX.Matrix.Scaling(1.0f, 0.65f, 1.0f); |
| 1042 |
|
barL *= SlimDX.Matrix.Scaling(1.0f, 0.65f, 1.0f); |
| 1043 |
|
|
| 1044 |
|
this.tx帯.t3D描画(CDTXMania.app.Device, bar); //右の帯。 |
| 1045 |
|
this.tx帯.t3D描画(CDTXMania.app.Device, barL); //右の帯。 |
| 1046 |
|
this.tx色帯.n透明度 = 155 + this.ct登場アニメ用[10].n現在の値; |
| 1047 |
|
this.tx色帯.t3D描画( CDTXMania.app.Device, bar ); |
| 1048 |
|
this.tx色帯.t3D描画( CDTXMania.app.Device, barL ); |
| 1049 |
|
|
| 1050 |
|
#region [ デバッグ補助 ] |
| 1051 |
|
//----------------- |
| 1052 |
|
/* |
| 1053 |
|
stマトリックス座標 = new ST中心点[] { |
| 1054 |
|
new ST中心点() { x = -940.0000f, y = 4f, z = 320f, rotY = 0.4150f }, |
| 1055 |
|
new ST中心点() { x = -740.0000f, y = 4f, z = 230f, rotY = 0.4150f }, |
| 1056 |
|
new ST中心点() { x = -550.0000f, y = 4f, z = 150f, rotY = 0.4150f }, |
| 1057 |
|
new ST中心点() { x = -370.0000f, y = 4f, z = 70f, rotY = 0.4150f }, |
| 1058 |
|
new ST中心点() { x = -194.0000f, y = 4f, z = -6f, rotY = 0.4150f }, |
| 1059 |
|
new ST中心点() { x = 6.00002622683f, y = 2f, z = 0f, rotY = 0f }, |
| 1060 |
|
new ST中心点() { x = 204.0000f, y = 4f, z = 0f, rotY = -0.4150f }, |
| 1061 |
|
new ST中心点() { x = 362.0000f, y = 4f, z = 70f, rotY = -0.4150f }, |
| 1062 |
|
new ST中心点() { x = 528.0000f, y = 4f, z = 146f, rotY = -0.4150f }, |
| 1063 |
|
new ST中心点() { x = 686.0000f, y = 4f, z = 212f, rotY = -0.4150f }, |
| 1064 |
|
new ST中心点() { x = 848.0000f, y = 4f, z = 282f, rotY = -0.4150f }, |
| 1065 |
|
new ST中心点() { x = 1200.0000f, y = 4f, z = 450f, rotY = -0.4150f }, |
| 1066 |
|
new ST中心点() { x = 1500.0000f, y = 4f, z = -289.5575f, rotY = -0.9279888f }, |
| 1067 |
|
new ST中心点() { x = 1500.0000f, y = 4f, z = -289.5575f, rotY = -0.9279888f }, |
| 1068 |
|
}; |
| 1069 |
|
*/ |
| 1070 |
|
//----------------- |
| 1071 |
|
#endregion |
| 1072 |
|
|
| 1073 |
|
|
| 1074 |
if( !this.b登場アニメ全部完了 ) |
if( !this.b登場アニメ全部完了 ) |
| 1075 |
{ |
{ |
| 1079 |
{ |
{ |
| 1080 |
if( this.ct登場アニメ用[ i ].n現在の値 >= 0 ) |
if( this.ct登場アニメ用[ i ].n現在の値 >= 0 ) |
| 1081 |
{ |
{ |
|
double db割合0to1 = ( (double) this.ct登場アニメ用[ i ].n現在の値 ) / 100.0; |
|
|
double db回転率 = Math.Sin( Math.PI * 3 / 5 * db割合0to1 ); |
|
| 1082 |
int nパネル番号 = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13; |
int nパネル番号 = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13; |
| 1083 |
|
|
| 1084 |
if( i == 5 ) |
if (i == 6) |
| 1085 |
|
{ |
| 1086 |
|
#region [ ジャケット画像の描画 ] |
| 1087 |
|
//----------------- |
| 1088 |
|
if( this.txパネル != null ) |
| 1089 |
|
{ |
| 1090 |
|
var mat = SlimDX.Matrix.Identity; |
| 1091 |
|
mat *= SlimDX.Matrix.Scaling(0.62f, 0.88f, 1.0f); |
| 1092 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1093 |
|
mat *= SlimDX.Matrix.Translation( |
| 1094 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1095 |
|
(this.stマトリックス座標[i].y + 2 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1096 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1097 |
|
this.txパネル.t3D描画(CDTXMania.app.Device, mat); |
| 1098 |
|
} |
| 1099 |
|
if (this.txTumbnail[nパネル番号] != null) |
| 1100 |
|
{ |
| 1101 |
|
float f拡大率 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width; |
| 1102 |
|
float f拡大率2 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height; |
| 1103 |
|
var mat = SlimDX.Matrix.Identity; |
| 1104 |
|
mat *= SlimDX.Matrix.Scaling(f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f); |
| 1105 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1106 |
|
mat *= SlimDX.Matrix.Translation( |
| 1107 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1108 |
|
(this.stマトリックス座標[i].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率 - 1f, |
| 1109 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1110 |
|
this.txTumbnail[nパネル番号].t3D描画(CDTXMania.app.Device, mat); |
| 1111 |
|
} |
| 1112 |
|
//----------------- |
| 1113 |
|
#endregion |
| 1114 |
|
#region [ タイトル名テクスチャを描画。] |
| 1115 |
|
//----------------- |
| 1116 |
|
if (this.stバー情報[nパネル番号].txタイトル名 != null) |
| 1117 |
|
{ |
| 1118 |
|
//this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 0x58, y + 8 ); |
| 1119 |
|
var mat = SlimDX.Matrix.Identity; |
| 1120 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1121 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1122 |
|
mat *= SlimDX.Matrix.Translation( |
| 1123 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1124 |
|
(this.stマトリックス座標[i].y + 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1125 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1126 |
|
this.stバー情報[nパネル番号].txタイトル名.t3D描画(CDTXMania.app.Device, mat); |
| 1127 |
|
} |
| 1128 |
|
if (this.stバー情報[nパネル番号].txアーティスト名 != null) |
| 1129 |
|
{ |
| 1130 |
|
var mat = SlimDX.Matrix.Identity; |
| 1131 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1132 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1133 |
|
mat *= SlimDX.Matrix.Translation( |
| 1134 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1135 |
|
(this.stマトリックス座標[i].y - 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1136 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1137 |
|
this.stバー情報[nパネル番号].txアーティスト名.t3D描画(CDTXMania.app.Device, mat); |
| 1138 |
|
} |
| 1139 |
|
//----------------- |
| 1140 |
|
#endregion |
| 1141 |
|
this.tx選曲パネル.t2D描画(CDTXMania.app.Device, 761, 233, new Rectangle(304, 70, 59, 242)); |
| 1142 |
|
} |
| 1143 |
|
else if( i == 5 ) |
| 1144 |
{ |
{ |
| 1145 |
// (A) 選択曲パネルを描画。 |
// (A) 選択曲パネルを描画。 |
| 1146 |
|
this.tx選曲パネル.t2D描画(CDTXMania.app.Device, 531, 243, new Rectangle(74, 80, 230, 230)); //真ん中の部分は別々に描画。 |
| 1147 |
#region [ バーテクスチャを描画。] |
this.txランプ用帯.t3D描画( CDTXMania.app.Device, bar ); //右の帯。 |
| 1148 |
|
this.txランプ用帯.t3D描画( CDTXMania.app.Device, barL ); //右の帯。 |
| 1149 |
|
#region [ バーテクスチャを描画。] |
| 1150 |
//----------------- |
//----------------- |
| 1151 |
int width = (int) ( 425.0 / Math.Sin( Math.PI * 3 / 5 ) ); |
if (this.txパネル != null) |
| 1152 |
int x = 410 - ( (int) ( width * db回転率 ) ); |
{ |
| 1153 |
int y = 300; |
var mat = SlimDX.Matrix.Identity; |
| 1154 |
this.tバーの描画( 410, 270, this.stバー情報[ nパネル番号 ].eバー種別, true ); |
mat *= SlimDX.Matrix.Scaling(0.8f, 0.8f, 1.0f); |
| 1155 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1156 |
|
mat *= SlimDX.Matrix.Translation( |
| 1157 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1158 |
|
(this.stマトリックス座標[i].y + 2 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1159 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1160 |
|
this.txパネル.t3D描画(CDTXMania.app.Device, mat); |
| 1161 |
|
} |
| 1162 |
|
this.tx選曲パネル.t2D描画(CDTXMania.app.Device, 457, 163, new Rectangle(0, 0, 363, 368)); |
| 1163 |
//----------------- |
//----------------- |
| 1164 |
#endregion |
#endregion |
| 1165 |
|
#region [ ジャケット画像の描画 ] |
| 1166 |
|
//----------------- |
| 1167 |
|
if( this.txTumbnail[nパネル番号] != null ) |
| 1168 |
|
{ |
| 1169 |
|
float f拡大率 = (float)218.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width; |
| 1170 |
|
float f拡大率2 = (float)218.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height; |
| 1171 |
|
var mat = SlimDX.Matrix.Identity; |
| 1172 |
|
mat *= SlimDX.Matrix.Scaling(f拡大率 * CTexture.f画面比率, f拡大率2 * CTexture.f画面比率, 1.0f); |
| 1173 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1174 |
|
mat *= SlimDX.Matrix.Translation( |
| 1175 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1176 |
|
(this.stマトリックス座標[i].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1177 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1178 |
|
this.txTumbnail[nパネル番号].t3D描画(CDTXMania.app.Device, mat); |
| 1179 |
|
} |
| 1180 |
|
for( int la = 0; la < 5 ; la++ ) |
| 1181 |
|
{ |
| 1182 |
|
if( CDTXMania.stage選曲.r現在選択中の曲.ar難易度ラベル[ la ] != null ) |
| 1183 |
|
this.txクリアランプ.t2D描画(CDTXMania.app.Device, 506, 292 - la * 13, new Rectangle((CDTXMania.stage選曲.r現在選択中の曲.arスコア[la].譜面情報.最大スキル.Drums != 0 ? 11 + la * 11 : 0), ( CDTXMania.stage選曲.r現在選択中の曲.arスコア[la].譜面情報.フルコンボ.Drums ? 10 : 0), 11, 10)); |
| 1184 |
|
} |
| 1185 |
|
//----------------- |
| 1186 |
|
#endregion |
| 1187 |
#region [ タイトル名テクスチャを描画。] |
#region [ タイトル名テクスチャを描画。] |
| 1188 |
//----------------- |
//----------------- |
| 1189 |
if( this.stバー情報[ nパネル番号 ].txタイトル名 != null ) |
this.tx選択されている曲の曲名 = this.t指定された文字テクスチャを生成する( this.stバー情報[ nパネル番号 ].strタイトル文字列 ); |
| 1190 |
this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, 530 , 300 ); |
this.tx選択されている曲のアーティスト名 = this.t指定された文字テクスチャを生成する( this.stバー情報[ nパネル番号 ].strアーティスト名 ); |
| 1191 |
//----------------- |
if( this.tx選択されている曲の曲名 != null ) |
| 1192 |
#endregion |
this.tx選択されている曲の曲名.t2D描画( CDTXMania.app.Device, 552, 210 ); |
| 1193 |
#region [ スキル値を描画。] |
if (this.tx選択されている曲のアーティスト名 != null) |
| 1194 |
//----------------- |
this.tx選択されている曲のアーティスト名.t2D描画(CDTXMania.app.Device, 770 - this.stバー情報[ nパネル番号 ].nアーティスト名テクスチャの長さdot, 470); |
| 1195 |
if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) ) |
//if( this.stバー情報[ nパネル番号 ].txタイトル名 != null ) |
| 1196 |
this.tスキル値の描画( 490, 312 , this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] ); |
// this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, 556, 210 ); |
| 1197 |
|
//if (this.stバー情報[ nパネル番号 ].txアーティスト名 != null) |
| 1198 |
|
// this.stバー情報[ nパネル番号 ].txアーティスト名.t2D描画(CDTXMania.app.Device, 560 - 770 - this.stバー情報[ nパネル番号 ].nアーティスト名テクスチャの長さdot, 402); |
| 1199 |
//----------------- |
//----------------- |
| 1200 |
#endregion |
#endregion |
| 1201 |
} |
} |
| 1202 |
else |
else |
| 1203 |
{ |
{ |
| 1204 |
// (B) その他のパネルの描画。 |
// (B) その他のパネルの描画。 |
| 1205 |
|
#region [ ジャケット画像の描画 ] |
| 1206 |
#region [ バーテクスチャの描画。] |
//----------------- |
| 1207 |
//----------------- |
if (this.txパネル != null) |
| 1208 |
int width = (int) ( ( (double) ( ( 720 - this.ptバーの基本座標[ i ].X ) + 1 ) ) / Math.Sin( Math.PI * 3 / 5 ) ); |
{ |
| 1209 |
int x = 720 - ( (int) ( width * db回転率 ) ); |
var mat = SlimDX.Matrix.Identity; |
| 1210 |
int y = this.ptバーの基本座標[ i ].Y; |
mat *= SlimDX.Matrix.Scaling(0.62f, 0.88f, 1.0f); |
| 1211 |
this.tバーの描画( x, y, this.stバー情報[ nパネル番号 ].eバー種別, false ); |
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1212 |
//----------------- |
mat *= SlimDX.Matrix.Translation( |
| 1213 |
#endregion |
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1214 |
|
(this.stマトリックス座標[i].y + 2 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1215 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1216 |
|
this.txパネル.t3D描画(CDTXMania.app.Device, mat); |
| 1217 |
|
} |
| 1218 |
|
if (this.txTumbnail[ nパネル番号 ] != null) |
| 1219 |
|
{ |
| 1220 |
|
float f拡大率 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width; |
| 1221 |
|
float f拡大率2 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height; |
| 1222 |
|
var mat = SlimDX.Matrix.Identity; |
| 1223 |
|
mat *= SlimDX.Matrix.Scaling(f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f); |
| 1224 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1225 |
|
mat *= SlimDX.Matrix.Translation( |
| 1226 |
|
(this.stマトリックス座標[ i ].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1227 |
|
(this.stマトリックス座標[ i ].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1228 |
|
(this.stマトリックス座標[ i ].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1229 |
|
this.txTumbnail[nパネル番号].t3D描画(CDTXMania.app.Device, mat); |
| 1230 |
|
} |
| 1231 |
|
//----------------- |
| 1232 |
|
#endregion |
| 1233 |
#region [ タイトル名テクスチャを描画。] |
#region [ タイトル名テクスチャを描画。] |
| 1234 |
//----------------- |
//----------------- |
| 1235 |
if( this.stバー情報[ nパネル番号 ].txタイトル名 != null ) |
this.txランプ用帯.t3D描画( CDTXMania.app.Device, bar ); //右の帯。 |
| 1236 |
this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 88 , y + 6 ); |
this.tx選曲パネル.t2D描画( CDTXMania.app.Device, 761, 233, new Rectangle( 304, 70, 59, 242 ) ); |
| 1237 |
//----------------- |
if (this.stバー情報[ nパネル番号 ].txタイトル名 != null) |
| 1238 |
#endregion |
{ |
| 1239 |
#region [ スキル値を描画。] |
var mat = SlimDX.Matrix.Identity; |
| 1240 |
//----------------- |
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1241 |
if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) ) |
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1242 |
this.tスキル値の描画( x + 34, y + 18, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] ); |
mat *= SlimDX.Matrix.Translation( |
| 1243 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1244 |
|
(this.stマトリックス座標[i].y + 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1245 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1246 |
|
this.stバー情報[nパネル番号].txタイトル名.t3D描画(CDTXMania.app.Device, mat); |
| 1247 |
|
} |
| 1248 |
|
if (this.stバー情報[nパネル番号].txアーティスト名 != null) |
| 1249 |
|
{ |
| 1250 |
|
var mat = SlimDX.Matrix.Identity; |
| 1251 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1252 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1253 |
|
mat *= SlimDX.Matrix.Translation( |
| 1254 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1255 |
|
(this.stマトリックス座標[i].y - 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1256 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1257 |
|
this.stバー情報[nパネル番号].txアーティスト名.t3D描画(CDTXMania.app.Device, mat); |
| 1258 |
|
} |
| 1259 |
//----------------- |
//----------------- |
| 1260 |
#endregion |
#endregion |
| 1261 |
} |
} |
| 1263 |
} |
} |
| 1264 |
//----------------- |
//----------------- |
| 1265 |
#endregion |
#endregion |
| 1266 |
|
|
| 1267 |
} |
} |
| 1268 |
else |
else |
| 1269 |
{ |
{ |
| 1270 |
|
|
| 1271 |
#region [ (2) 通常フェーズの描画。] |
#region [ (2) 通常フェーズの描画。] |
| 1272 |
//----------------- |
//----------------- |
| 1273 |
for( int i = 0; i < 13; i++ ) // パネルは全13枚。 |
for( int i = 0; i < 13; i++ ) // パネルは全13枚。 |
| 1274 |
{ |
{ |
|
if( ( i == 0 && this.n現在のスクロールカウンタ > 0 ) || // 最上行は、上に移動中なら表示しない。 |
|
|
( i == 12 && this.n現在のスクロールカウンタ < 0 ) ) // 最下行は、下に移動中なら表示しない。 |
|
|
continue; |
|
|
|
|
| 1275 |
int nパネル番号 = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13; |
int nパネル番号 = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13; |
| 1276 |
int n見た目の行番号 = i; |
int n見た目の行番号 = i; |
| 1277 |
int n次のパネル番号 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( i + 1 ) % 13 ) : ( ( ( i - 1 ) + 13 ) % 13 ); |
int n次のパネル番号 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( i + 1 ) % 13 ) : ( ( ( i - 1 ) + 13 ) % 13 ); |
| 1278 |
int x = this.ptバーの基本座標[ n見た目の行番号 ].X + ( (int) ( ( this.ptバーの基本座標[ n次のパネル番号 ].X - this.ptバーの基本座標[ n見た目の行番号 ].X ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) ); |
int x = this.ptバーの基本座標[ n見た目の行番号 ].X + ( (int) ( ( this.ptバーの基本座標[ n次のパネル番号 ].X - this.ptバーの基本座標[ n見た目の行番号 ].X ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) ); |
| 1279 |
int y = this.ptバーの基本座標[ n見た目の行番号 ].Y + ( (int) ( ( this.ptバーの基本座標[ n次のパネル番号 ].Y - this.ptバーの基本座標[ n見た目の行番号 ].Y ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) ); |
int y = this.ptバーの基本座標[ n見た目の行番号 ].Y + ( (int) ( ( this.ptバーの基本座標[ n次のパネル番号 ].Y - this.ptバーの基本座標[ n見た目の行番号 ].Y ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) ); |
| 1280 |
|
float fX = this.n現在のスクロールカウンタ <= 0 ? this.stマトリックス座標[ n見た目の行番号 ].x + ( ( ( this.stマトリックス座標[ n次のパネル番号 ].x - this.stマトリックス座標[ n見た目の行番号 ].x ) * ( ( this.n現在のスクロールカウンタ ) ) / 100.0f ) ) : |
| 1281 |
if( ( i == 5 ) && ( this.n現在のスクロールカウンタ == 0 ) ) |
this.stマトリックス座標[ n見た目の行番号 ].x + ( ( ( this.stマトリックス座標[ n次のパネル番号 ].x + this.stマトリックス座標[ n見た目の行番号 ].x ) * ( ( this.n現在のスクロールカウンタ ) ) / 100.0f ) ); |
|
{ |
|
|
// (A) スクロールが停止しているときの選択曲バーの描画。 |
|
| 1282 |
|
|
| 1283 |
#region [ バーテクスチャを描画。] |
float fY = this.n現在のスクロールカウンタ <= 0 ? this.stマトリックス座標[ n見た目の行番号 ].y + ( ( ( this.stマトリックス座標[ n次のパネル番号 ].y - this.stマトリックス座標[ n見た目の行番号 ].y ) * ( ( this.n現在のスクロールカウンタ ) ) / 100.0f ) ) : |
| 1284 |
//----------------- |
this.stマトリックス座標[ n見た目の行番号 ].y + ( ( ( this.stマトリックス座標[ n次のパネル番号 ].y - this.stマトリックス座標[ n見た目の行番号 ].y ) * ( ( this.n現在のスクロールカウンタ ) ) / 100.0f ) ); |
|
this.tバーの描画( 410, 270, this.stバー情報[ nパネル番号 ].eバー種別, true ); |
|
|
//----------------- |
|
|
#endregion |
|
|
#region [ タイトル名テクスチャを描画。] |
|
|
//----------------- |
|
|
if( this.stバー情報[ nパネル番号 ].txタイトル名 != null ) |
|
|
this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, 530, 300 ); |
|
|
//----------------- |
|
|
#endregion |
|
|
#region [ スキル値を描画。] |
|
|
//----------------- |
|
|
if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) ) |
|
|
this.tスキル値の描画( 490, 312, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] ); |
|
|
//----------------- |
|
|
#endregion |
|
|
} |
|
|
else |
|
|
{ |
|
|
// (B) スクロール中の選択曲バー、またはその他のバーの描画。 |
|
| 1285 |
|
|
| 1286 |
#region [ バーテクスチャを描画。] |
float fZ = this.n現在のスクロールカウンタ <= 0 ? this.stマトリックス座標[ n見た目の行番号 ].z + ( ( ( this.stマトリックス座標[ n次のパネル番号 ].z - this.stマトリックス座標[ n見た目の行番号 ].z ) * ( ( this.n現在のスクロールカウンタ ) ) / 100.0f ) ) : |
| 1287 |
//----------------- |
this.stマトリックス座標[ n見た目の行番号 ].z + ( ( ( this.stマトリックス座標[ n次のパネル番号 ].z + this.stマトリックス座標[ n見た目の行番号 ].z ) * ( ( this.n現在のスクロールカウンタ ) ) / 100.0f ) ); |
| 1288 |
this.tバーの描画( x, y, this.stバー情報[ nパネル番号 ].eバー種別, false ); |
|
| 1289 |
//----------------- |
if (i == 6) |
| 1290 |
#endregion |
{ |
| 1291 |
|
#region [ ジャケット画像の描画 ] |
| 1292 |
|
//----------------- |
| 1293 |
|
if( this.txパネル != null ) |
| 1294 |
|
{ |
| 1295 |
|
var mat = SlimDX.Matrix.Identity; |
| 1296 |
|
mat *= SlimDX.Matrix.Scaling(0.62f, 0.88f, 1.0f); |
| 1297 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1298 |
|
mat *= SlimDX.Matrix.Translation( |
| 1299 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1300 |
|
(this.stマトリックス座標[i].y + 2 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1301 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1302 |
|
this.txパネル.t3D描画(CDTXMania.app.Device, mat); |
| 1303 |
|
} |
| 1304 |
|
if (this.txTumbnail[nパネル番号] != null) |
| 1305 |
|
{ |
| 1306 |
|
float f拡大率 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width; |
| 1307 |
|
float f拡大率2 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height; |
| 1308 |
|
var mat = SlimDX.Matrix.Identity; |
| 1309 |
|
mat *= SlimDX.Matrix.Scaling(f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f); |
| 1310 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1311 |
|
mat *= SlimDX.Matrix.Translation( |
| 1312 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1313 |
|
(this.stマトリックス座標[i].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率 - 1f, |
| 1314 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1315 |
|
this.txTumbnail[nパネル番号].t3D描画(CDTXMania.app.Device, mat); |
| 1316 |
|
} |
| 1317 |
|
//----------------- |
| 1318 |
|
#endregion |
| 1319 |
|
#region [ タイトル名テクスチャを描画。] |
| 1320 |
|
//----------------- |
| 1321 |
|
if (this.stバー情報[nパネル番号].txタイトル名 != null) |
| 1322 |
|
{ |
| 1323 |
|
//this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 0x58, y + 8 ); |
| 1324 |
|
var mat = SlimDX.Matrix.Identity; |
| 1325 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1326 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1327 |
|
mat *= SlimDX.Matrix.Translation( |
| 1328 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1329 |
|
(this.stマトリックス座標[i].y + 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1330 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1331 |
|
this.stバー情報[nパネル番号].txタイトル名.t3D描画(CDTXMania.app.Device, mat); |
| 1332 |
|
} |
| 1333 |
|
if (this.stバー情報[nパネル番号].txアーティスト名 != null) |
| 1334 |
|
{ |
| 1335 |
|
var mat = SlimDX.Matrix.Identity; |
| 1336 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1337 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1338 |
|
mat *= SlimDX.Matrix.Translation( |
| 1339 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1340 |
|
(this.stマトリックス座標[i].y - 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1341 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1342 |
|
this.stバー情報[nパネル番号].txアーティスト名.t3D描画(CDTXMania.app.Device, mat); |
| 1343 |
|
} |
| 1344 |
|
//----------------- |
| 1345 |
|
#endregion |
| 1346 |
|
} |
| 1347 |
|
else if( ( i == 5 ) ) |
| 1348 |
|
{ |
| 1349 |
|
this.txランプ用帯.t3D描画( CDTXMania.app.Device, barL ); //右の帯。 |
| 1350 |
|
for (int la = 0; la < 5; la++) |
| 1351 |
|
{ |
| 1352 |
|
//if( this.stバー情報[ 6 ].ar難易度ラベル[ la ] != null ) |
| 1353 |
|
{ |
| 1354 |
|
var lamp = SlimDX.Matrix.Identity; |
| 1355 |
|
lamp *= SlimDX.Matrix.Translation( |
| 1356 |
|
( this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x ) )) * CTexture.f画面比率, |
| 1357 |
|
( this.stマトリックス座標[i].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y ) ) ) * CTexture.f画面比率 - 1f - la * 13f, |
| 1358 |
|
( this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z ) ) ) * CTexture.f画面比率); |
| 1359 |
|
|
| 1360 |
|
//this.txクリアランプ.t3D描画( CDTXMania.app.Device, lamp, new Rectangle((CDTXMania.stage選曲.r現在選択中の曲.arスコア[la].譜面情報.最大スキル.Drums != 0 ? 11 + la * 11 : 0), (CDTXMania.stage選曲.r現在選択中の曲.arスコア[la].譜面情報.フルコンボ.Drums ? 10 : 0), 11, 10)); |
| 1361 |
|
} |
| 1362 |
|
} |
| 1363 |
|
this.tx選曲パネル.t2D描画(CDTXMania.app.Device, 531, 243, new Rectangle(74, 80, 230, 230)); //真ん中の部分は別々に描画。 |
| 1364 |
|
// (A) スクロールが停止しているときの選択曲バーの描画。 |
| 1365 |
|
#region [ ジャケット画像の描画 ] |
| 1366 |
|
//----------------- |
| 1367 |
|
if (this.txパネル != null) |
| 1368 |
|
{ |
| 1369 |
|
var mat = SlimDX.Matrix.Identity; |
| 1370 |
|
mat *= SlimDX.Matrix.Scaling(CTexture.f画面比率, CTexture.f画面比率, 1.0f); |
| 1371 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1372 |
|
mat *= SlimDX.Matrix.Translation( |
| 1373 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1374 |
|
(this.stマトリックス座標[i].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1375 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1376 |
|
this.txパネル.t3D描画(CDTXMania.app.Device, mat); |
| 1377 |
|
} |
| 1378 |
|
this.tx選曲パネル.t2D描画(CDTXMania.app.Device, 457, 163, new Rectangle(0, 0, 363, 368)); |
| 1379 |
|
|
| 1380 |
|
for( int la = 0; la < 5 ; la++ ) |
| 1381 |
|
{ |
| 1382 |
|
if( CDTXMania.stage選曲.r現在選択中の曲.ar難易度ラベル[ la ] != null ) |
| 1383 |
|
this.txクリアランプ.t2D描画(CDTXMania.app.Device, 506, 292 - la * 13, new Rectangle((CDTXMania.stage選曲.r現在選択中の曲.arスコア[la].譜面情報.最大スキル.Drums != 0 ? 11 + la * 11 : 0), ( CDTXMania.stage選曲.r現在選択中の曲.arスコア[la].譜面情報.フルコンボ.Drums ? 10 : 0), 11, 10)); |
| 1384 |
|
} |
| 1385 |
|
if( this.txTumbnail[ nパネル番号 ] != null ) |
| 1386 |
|
{ |
| 1387 |
|
float f拡大率 = (float)218.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width; |
| 1388 |
|
float f拡大率2 = (float)218.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height; |
| 1389 |
|
this.txTumbnail[ nパネル番号 ].vc拡大縮小倍率 = new Vector3( f拡大率, f拡大率2, 1.0f ); |
| 1390 |
|
this.txTumbnail[ nパネル番号 ].t2D描画(CDTXMania.app.Device, 537, 249 ); |
| 1391 |
|
this.txTumbnail[ nパネル番号 ].vc拡大縮小倍率 = new Vector3( 1.0f, 1.0f, 1.0f ); |
| 1392 |
|
} |
| 1393 |
|
//----------------- |
| 1394 |
|
#endregion |
| 1395 |
#region [ タイトル名テクスチャを描画。] |
#region [ タイトル名テクスチャを描画。] |
| 1396 |
//----------------- |
//----------------- |
| 1397 |
if( this.stバー情報[ nパネル番号 ].txタイトル名 != null ) |
if( this.tx選択されている曲の曲名 == null ) |
| 1398 |
this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 0x58, y + 6 ); |
{ |
| 1399 |
//----------------- |
this.tx選択されている曲の曲名 = this.t指定された文字テクスチャを生成する( this.stバー情報[ nパネル番号 ].strタイトル文字列 ); |
| 1400 |
#endregion |
this.tx選択されている曲のアーティスト名 = this.t指定された文字テクスチャを生成する( this.stバー情報[ nパネル番号 ].strアーティスト名 ); |
| 1401 |
#region [ スキル値を描画。] |
} |
| 1402 |
//----------------- |
if( this.tx選択されている曲の曲名 != null ) |
| 1403 |
if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) ) |
this.tx選択されている曲の曲名.t2D描画( CDTXMania.app.Device, 552, 210 ); |
| 1404 |
this.tスキル値の描画( x + 34, y + 18, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] ); |
if( this.tx選択されている曲のアーティスト名 != null ) |
| 1405 |
|
this.tx選択されている曲のアーティスト名.t2D描画( CDTXMania.app.Device, 770 - this.stバー情報[ nパネル番号 ].nアーティスト名テクスチャの長さdot, 470); |
| 1406 |
|
//if( this.stバー情報[ nパネル番号 ].txタイトル名 != null ) |
| 1407 |
|
// this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, 556, 210 ); |
| 1408 |
|
//if (this.stバー情報[ nパネル番号 ].txアーティスト名 != null) |
| 1409 |
|
// this.stバー情報[ nパネル番号 ].txアーティスト名.t2D描画(CDTXMania.app.Device, 560 - 770 - this.stバー情報[ nパネル番号 ].nアーティスト名テクスチャの長さdot, 402); |
| 1410 |
//----------------- |
//----------------- |
| 1411 |
#endregion |
#endregion |
| 1412 |
} |
} |
| 1413 |
|
else if (i >= 12) |
| 1414 |
|
{ |
| 1415 |
|
} |
| 1416 |
|
else |
| 1417 |
|
{ |
| 1418 |
|
// (B) スクロール中の選択曲バー、またはその他のバーの描画。 |
| 1419 |
|
this.txランプ用帯.t3D描画( CDTXMania.app.Device, bar ); //右の帯。 |
| 1420 |
|
this.tx選曲パネル.t2D描画(CDTXMania.app.Device, 761, 233, new Rectangle(304, 70, 59, 242)); |
| 1421 |
|
#region [ ジャケット画像の描画 ] |
| 1422 |
|
//----------------- |
| 1423 |
|
if (this.txパネル != null) |
| 1424 |
|
{ |
| 1425 |
|
var mat = SlimDX.Matrix.Identity; |
| 1426 |
|
mat *= SlimDX.Matrix.Scaling(0.62f, 0.88f, 1.0f); |
| 1427 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1428 |
|
mat *= SlimDX.Matrix.Translation( |
| 1429 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1430 |
|
(this.stマトリックス座標[i].y + 2 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1431 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1432 |
|
this.txパネル.t3D描画(CDTXMania.app.Device, mat); |
| 1433 |
|
} |
| 1434 |
|
if (this.txTumbnail[nパネル番号] != null) |
| 1435 |
|
{ |
| 1436 |
|
float f拡大率 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width ; |
| 1437 |
|
float f拡大率2 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height; |
| 1438 |
|
var mat = SlimDX.Matrix.Identity; |
| 1439 |
|
mat *= SlimDX.Matrix.Scaling(f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f); |
| 1440 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1441 |
|
mat *= SlimDX.Matrix.Translation( |
| 1442 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1443 |
|
(this.stマトリックス座標[i].y + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1444 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1445 |
|
this.txTumbnail[nパネル番号].t3D描画(CDTXMania.app.Device, mat); |
| 1446 |
|
} |
| 1447 |
|
//----------------- |
| 1448 |
|
#endregion |
| 1449 |
|
#region [ タイトル名テクスチャを描画。] |
| 1450 |
|
//----------------- |
| 1451 |
|
if (this.stバー情報[nパネル番号].txタイトル名 != null) |
| 1452 |
|
{ |
| 1453 |
|
//this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 0x58, y + 8 ); |
| 1454 |
|
var mat = SlimDX.Matrix.Identity; |
| 1455 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1456 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1457 |
|
mat *= SlimDX.Matrix.Translation( |
| 1458 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1459 |
|
(this.stマトリックス座標[i].y + 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1460 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1461 |
|
this.stバー情報[nパネル番号].txタイトル名.t3D描画(CDTXMania.app.Device, mat); |
| 1462 |
|
} |
| 1463 |
|
if (this.stバー情報[nパネル番号].txアーティスト名 != null) |
| 1464 |
|
{ |
| 1465 |
|
var mat = SlimDX.Matrix.Identity; |
| 1466 |
|
mat *= SlimDX.Matrix.Scaling(0.35f, 0.45f, 1.0f); |
| 1467 |
|
mat *= SlimDX.Matrix.RotationY(this.stマトリックス座標[i].rotY + (this.stマトリックス座標[i].rotY - this.stマトリックス座標[i].rotY)); |
| 1468 |
|
mat *= SlimDX.Matrix.Translation( |
| 1469 |
|
(this.stマトリックス座標[i].x + (int)((this.stマトリックス座標[i].x - this.stマトリックス座標[i].x))) * CTexture.f画面比率, |
| 1470 |
|
(this.stマトリックス座標[i].y - 110 + (int)((this.stマトリックス座標[i].y - this.stマトリックス座標[i].y))) * CTexture.f画面比率, |
| 1471 |
|
(this.stマトリックス座標[i].z + (int)((this.stマトリックス座標[i].z - this.stマトリックス座標[i].z))) * CTexture.f画面比率); |
| 1472 |
|
this.stバー情報[nパネル番号].txアーティスト名.t3D描画(CDTXMania.app.Device, mat); |
| 1473 |
|
} |
| 1474 |
|
//----------------- |
| 1475 |
|
#endregion |
| 1476 |
|
|
| 1477 |
|
#region [ スキル値を描画。] |
| 1478 |
|
//----------------- |
| 1479 |
|
//if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) ) |
| 1480 |
|
//this.tスキル値の描画( x + 34, y + 18, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] ); |
| 1481 |
|
//----------------- |
| 1482 |
|
#endregion |
| 1483 |
|
} |
| 1484 |
} |
} |
| 1485 |
//----------------- |
//----------------- |
| 1486 |
#endregion |
#endregion |
| 1487 |
|
|
| 1488 |
} |
} |
| 1489 |
#region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ] |
#region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ] |
| 1490 |
int py; |
int py; |
| 1491 |
double d = 0; |
double d = 0; |
| 1492 |
if ( nNumOfItems > 1 ) |
if ( nNumOfItems > 1 ) |
| 1493 |
{ |
{ |
| 1494 |
d = ( 336 - 6 - 8 ) / (double) ( nNumOfItems - 1 ); |
d = ( 336 - 8 ) / (double) ( nNumOfItems - 1 ); |
| 1495 |
py = (int) ( d * ( nCurrentPosition - 1 ) ); |
py = (int) ( d * ( nCurrentPosition - 1 ) ); |
| 1496 |
} |
} |
| 1497 |
else |
else |
| 1500 |
py = 0; |
py = 0; |
| 1501 |
} |
} |
| 1502 |
int delta = (int) ( d * this.n現在のスクロールカウンタ / 100 ); |
int delta = (int) ( d * this.n現在のスクロールカウンタ / 100 ); |
| 1503 |
if ( py + delta <= 336 - 6 - 8 ) |
if ( py + delta <= 336 - 8 ) |
| 1504 |
{ |
{ |
| 1505 |
this.nスクロールバー相対y座標 = py + delta; |
this.nスクロールバー相対y座標 = py + delta; |
| 1506 |
} |
} |
| 1517 |
|
|
| 1518 |
#region [ private ] |
#region [ private ] |
| 1519 |
//----------------- |
//----------------- |
| 1520 |
private enum Eバー種別 { Score, Box, Other } |
private enum Eバー種別 { Score, Box, Other, Random, BackBox } |
| 1521 |
|
|
| 1522 |
private struct STバー |
private struct STバー |
| 1523 |
{ |
{ |
| 1524 |
public CTexture Score; |
public CTexture Score; |
| 1525 |
public CTexture Box; |
public CTexture Box; |
| 1526 |
public CTexture Other; |
public CTexture Other; |
| 1527 |
|
public CTexture Random; |
| 1528 |
|
public CTexture BackBox; |
| 1529 |
public CTexture this[ int index ] |
public CTexture this[ int index ] |
| 1530 |
{ |
{ |
| 1531 |
get |
get |
| 1540 |
|
|
| 1541 |
case 2: |
case 2: |
| 1542 |
return this.Other; |
return this.Other; |
| 1543 |
|
|
| 1544 |
|
case 3: |
| 1545 |
|
return this.Random; |
| 1546 |
|
|
| 1547 |
|
case 4: |
| 1548 |
|
return this.BackBox; |
| 1549 |
} |
} |
| 1550 |
throw new IndexOutOfRangeException(); |
throw new IndexOutOfRangeException(); |
| 1551 |
} |
} |
| 1564 |
case 2: |
case 2: |
| 1565 |
this.Other = value; |
this.Other = value; |
| 1566 |
return; |
return; |
| 1567 |
|
|
| 1568 |
|
case 3: |
| 1569 |
|
this.Random = value; |
| 1570 |
|
return; |
| 1571 |
|
|
| 1572 |
|
case 4: |
| 1573 |
|
this.BackBox = value; |
| 1574 |
|
return; |
| 1575 |
} |
} |
| 1576 |
throw new IndexOutOfRangeException(); |
throw new IndexOutOfRangeException(); |
| 1577 |
} |
} |
| 1582 |
{ |
{ |
| 1583 |
public CActSelect曲リスト.Eバー種別 eバー種別; |
public CActSelect曲リスト.Eバー種別 eバー種別; |
| 1584 |
public string strタイトル文字列; |
public string strタイトル文字列; |
| 1585 |
|
public string strアーティスト名; |
| 1586 |
public CTexture txタイトル名; |
public CTexture txタイトル名; |
| 1587 |
|
public CTexture txアーティスト名; |
| 1588 |
|
public CTexture txパネル; |
| 1589 |
|
public int nアーティスト名テクスチャの長さdot; |
| 1590 |
|
public int nタイトル名テクスチャの長さdot; |
| 1591 |
public STDGBVALUE<int> nスキル値; |
public STDGBVALUE<int> nスキル値; |
| 1592 |
public Color col文字色; |
public Color col文字色; |
| 1593 |
|
public string strDTXフォルダのパス; |
| 1594 |
|
public string[] ar難易度ラベル; |
| 1595 |
|
public Cスコア.ST譜面情報 ar譜面情報; |
| 1596 |
} |
} |
| 1597 |
|
|
| 1598 |
private struct ST選曲バー |
private struct ST選曲バー |
| 1638 |
} |
} |
| 1639 |
} |
} |
| 1640 |
|
|
| 1641 |
private bool b登場アニメ全部完了; |
protected struct ST中心点 |
| 1642 |
|
{ |
| 1643 |
|
public float x; |
| 1644 |
|
public float y; |
| 1645 |
|
public float z; |
| 1646 |
|
public float rotY; |
| 1647 |
|
} |
| 1648 |
|
/// <summary> |
| 1649 |
|
/// <para>SSTFファイル絶対パス(key)とサムネイル画像(value)との辞書。</para> |
| 1650 |
|
/// <para>アプリの起動から終了まで単純に増加を続け、要素が減ることはない。</para> |
| 1651 |
|
/// </summary> |
| 1652 |
|
protected Dictionary<string, CTexture> dicThumbnail = new Dictionary<string, CTexture>(); |
| 1653 |
|
|
| 1654 |
|
/// <summary> |
| 1655 |
|
/// <para>SSTFファイル絶対パス(key)とプロパティ画像(value)との辞書。</para> |
| 1656 |
|
/// <para>アプリの起動から終了まで単純に増加を続け、要素が減ることはない。</para> |
| 1657 |
|
/// </summary> |
| 1658 |
|
protected Dictionary<string, CTexture> dicProperty = new Dictionary<string, CTexture>(); |
| 1659 |
|
|
| 1660 |
|
protected ST中心点[] stマトリックス座標 = new ST中心点[] { |
| 1661 |
|
#region [ 実は円弧配置になってない。射影行列間違ってるよスターレインボウ見せる気かよ… ] |
| 1662 |
|
//----------------- |
| 1663 |
|
new ST中心点() { x = -940.0000f, y = 4f, z = 320f, rotY = 0.4150f }, |
| 1664 |
|
new ST中心点() { x = -740.0000f, y = 4f, z = 230f, rotY = 0.4150f }, |
| 1665 |
|
new ST中心点() { x = -550.0000f, y = 4f, z = 150f, rotY = 0.4150f }, |
| 1666 |
|
new ST中心点() { x = -370.0000f, y = 4f, z = 70f, rotY = 0.4150f }, |
| 1667 |
|
new ST中心点() { x = -194.0000f, y = 4f, z = -6f, rotY = 0.4150f }, |
| 1668 |
|
new ST中心点() { x = 6.00002622683f, y = 2f, z = 0f, rotY = 0f }, |
| 1669 |
|
new ST中心点() { x = 204.0000f, y = 4f, z = 0f, rotY = -0.4150f }, |
| 1670 |
|
new ST中心点() { x = 362.0000f, y = 4f, z = 70f, rotY = -0.4150f }, |
| 1671 |
|
new ST中心点() { x = 528.0000f, y = 4f, z = 146f, rotY = -0.4150f }, |
| 1672 |
|
new ST中心点() { x = 686.0000f, y = 4f, z = 212f, rotY = -0.4150f }, |
| 1673 |
|
new ST中心点() { x = 848.0000f, y = 4f, z = 282f, rotY = -0.4150f }, |
| 1674 |
|
new ST中心点() { x = 1200.0000f, y = 4f, z = 450f, rotY = -0.4150f }, |
| 1675 |
|
new ST中心点() { x = 1500.0000f, y = 4f, z = -289.5575f, rotY = -0.9279888f }, |
| 1676 |
|
new ST中心点() { x = 1500.0000f, y = 4f, z = -289.5575f, rotY = -0.9279888f }, |
| 1677 |
|
//----------------- |
| 1678 |
|
#endregion |
| 1679 |
|
}; |
| 1680 |
|
|
| 1681 |
|
protected readonly ST中心点[] stマトリックス曲名座標 = new ST中心点[] { |
| 1682 |
|
#region [ 実は円弧配置になってない。射影行列間違ってるよスターレインボウ見せる気かよ… ] |
| 1683 |
|
//----------------- |
| 1684 |
|
new ST中心点() { x = -980.0000f, y = 2f, z = 360f, rotY = 0.4000f }, |
| 1685 |
|
new ST中心点() { x = -780.0000f, y = 2f, z = 270f, rotY = 0.4000f }, |
| 1686 |
|
new ST中心点() { x = -590.0000f, y = 2f, z = 180f, rotY = 0.4000f }, |
| 1687 |
|
new ST中心点() { x = -400.0000f, y = 2f, z = 90f, rotY = 0.4000f }, |
| 1688 |
|
new ST中心点() { x = -210.0000f, y = 2f, z = 0f, rotY = 0.4000f }, |
| 1689 |
|
new ST中心点() { x = 6.00002622683f, y = 2f, z = 0f, rotY = 0f }, |
| 1690 |
|
new ST中心点() { x = 210.0000f, y = 2f, z = 0f, rotY = -0.4000f }, |
| 1691 |
|
new ST中心点() { x = 400.0000f, y = 2f, z = 90f, rotY = -0.4f }, |
| 1692 |
|
new ST中心点() { x = 590.0000f, y = 2f, z = 180f, rotY = -0.4f }, |
| 1693 |
|
new ST中心点() { x = 780.0000f, y = 2f, z = 270f, rotY = -0.4f }, |
| 1694 |
|
new ST中心点() { x = 980.0000f, y = 2f, z = 360f, rotY = -0.4f }, |
| 1695 |
|
new ST中心点() { x = 1200.0000f, y = 2f, z = 450f, rotY = -0.4f }, |
| 1696 |
|
new ST中心点() { x = 1500.0000f, y = 2f, z = -289.5575f, rotY = -0.9279888f }, |
| 1697 |
|
new ST中心点() { x = 1500.0000f, y = 2f, z = -289.5575f, rotY = -0.9279888f }, |
| 1698 |
|
//----------------- |
| 1699 |
|
#endregion |
| 1700 |
|
}; |
| 1701 |
|
[StructLayout(LayoutKind.Sequential)] |
| 1702 |
|
public struct STATUSPANEL |
| 1703 |
|
{ |
| 1704 |
|
public string label; |
| 1705 |
|
public int status; |
| 1706 |
|
} |
| 1707 |
|
public int nIndex; |
| 1708 |
|
public STATUSPANEL[] stパネルマップ; |
| 1709 |
|
|
| 1710 |
|
public bool b登場アニメ全部完了; |
| 1711 |
private Color color文字影 = Color.FromArgb( 0x40, 10, 10, 10 ); |
private Color color文字影 = Color.FromArgb( 0x40, 10, 10, 10 ); |
| 1712 |
private CCounter[] ct登場アニメ用 = new CCounter[ 13 ]; |
public CCounter[] ct登場アニメ用 = new CCounter[ 13 ]; |
| 1713 |
private E楽器パート e楽器パート; |
private E楽器パート e楽器パート; |
| 1714 |
private Font ft曲リスト用フォント; |
private Font ft曲リスト用フォント; |
| 1715 |
private long nスクロールタイマ; |
private long nスクロールタイマ; |
| 1716 |
private int n現在のスクロールカウンタ; |
private int n現在のスクロールカウンタ; |
| 1717 |
private int n現在の選択行; |
private int n現在の選択行; |
| 1718 |
private int n目標のスクロールカウンタ; |
private int n目標のスクロールカウンタ; |
| 1719 |
private readonly Point[] ptバーの基本座標 = new Point[] { new Point(0x2c4, 30), new Point(0x272, 0x51), new Point(0x242, 0x84), new Point(0x222, 0xb7), new Point(0x210, 0xea), new Point(0x1d0, 0x127), new Point(0x224, 0x183), new Point(0x242, 0x1b6), new Point(0x270, 0x1e9), new Point(0x2ae, 540), new Point(0x314, 0x24f), new Point(0x3e4, 0x282), new Point(0x500, 0x2b5) }; |
private readonly Point[] ptバーの基本座標 = new Point[] { new Point(0x2c4, 30), new Point(0x272, 0x51), new Point(0x242, 0x84), new Point(0x222, 0xb7), new Point(0x210, 0xea), new Point(0x1d0, 0x127), new Point(0x224, 0x183), new Point(0x242, 0x1b6), new Point(0x270, 0x1e9), new Point(0x2ae, 540), new Point(0x314, 0x24f), new Point(0x3e4, 0x282), new Point(0x500, 0x2b5) }; |
| 1720 |
private STバー情報[] stバー情報 = new STバー情報[ 13 ]; |
private STバー情報[] stバー情報 = new STバー情報[ 13 ]; |
| 1721 |
private CTexture txSongNotFound, txEnumeratingSongs; |
private CTexture txSongNotFound, txEnumeratingSongs; |
| 1722 |
private CTexture txスキル数字; |
private CTexture txスキル数字; |
| 1723 |
private CTexture txアイテム数数字; |
private CTexture txアイテム数数字; |
| 1724 |
private STバー tx曲名バー; |
private STバー tx曲名バー; |
| 1725 |
private ST選曲バー tx選曲バー; |
private ST選曲バー tx選曲バー; |
| 1726 |
|
private CTexture[] txTumbnail = new CTexture[13]; |
| 1727 |
|
private CTexture tx選曲パネル; |
| 1728 |
|
private CTexture txパネル; |
| 1729 |
|
private CTexture txジャケットランダム; |
| 1730 |
|
private CTexture txジャケットボックスクローズ; |
| 1731 |
|
private CTexture tx帯; |
| 1732 |
|
private CTexture tx色帯; |
| 1733 |
|
private CTexture txランプ用帯; |
| 1734 |
|
private CTexture tx選択されている曲の曲名; |
| 1735 |
|
private CTexture tx選択されている曲のアーティスト名; |
| 1736 |
|
private CTexture txクリアランプ; |
| 1737 |
|
//CPrivateFont prvFont; |
| 1738 |
|
CPrivateFastFont prvFont; |
| 1739 |
|
|
| 1740 |
private int nCurrentPosition = 0; |
private int nCurrentPosition = 0; |
| 1741 |
private int nNumOfItems = 0; |
private int nNumOfItems = 0; |
| 1752 |
return Eバー種別.Score; |
return Eバー種別.Score; |
| 1753 |
|
|
| 1754 |
case C曲リストノード.Eノード種別.BOX: |
case C曲リストノード.Eノード種別.BOX: |
|
case C曲リストノード.Eノード種別.BACKBOX: |
|
| 1755 |
return Eバー種別.Box; |
return Eバー種別.Box; |
| 1756 |
|
|
| 1757 |
|
case C曲リストノード.Eノード種別.BACKBOX: |
| 1758 |
|
return Eバー種別.BackBox; |
| 1759 |
|
|
| 1760 |
|
case C曲リストノード.Eノード種別.RANDOM: |
| 1761 |
|
return Eバー種別.Random; |
| 1762 |
} |
} |
| 1763 |
} |
} |
| 1764 |
return Eバー種別.Other; |
return Eバー種別.Other; |
| 1866 |
for( int i = 0; i < 13; i++ ) |
for( int i = 0; i < 13; i++ ) |
| 1867 |
{ |
{ |
| 1868 |
this.stバー情報[ i ].strタイトル文字列 = song.strタイトル; |
this.stバー情報[ i ].strタイトル文字列 = song.strタイトル; |
| 1869 |
|
this.stバー情報[ i ].strアーティスト名 = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.アーティスト名; |
| 1870 |
this.stバー情報[ i ].col文字色 = song.col文字色; |
this.stバー情報[ i ].col文字色 = song.col文字色; |
| 1871 |
this.stバー情報[ i ].eバー種別 = this.e曲のバー種別を返す( song ); |
this.stバー情報[ i ].eバー種別 = this.e曲のバー種別を返す( song ); |
| 1872 |
|
this.stバー情報[ i ].ar譜面情報 = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報; |
| 1873 |
|
|
| 1874 |
|
for( int n = 0; n < 5; n++ ) |
| 1875 |
|
{ |
| 1876 |
|
//this.stバー情報[ i ].ar難易度ラベル[ n ]; |
| 1877 |
|
|
| 1878 |
|
//if( this.stバー情報[ i ].ar難易度ラベル[ n ] != null ) |
| 1879 |
|
//this.stバー情報[ i ].ar難易度ラベル[ n ] = song.ar難易度ラベル[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ]; |
| 1880 |
|
} |
| 1881 |
|
|
| 1882 |
|
this.stバー情報[ i ].strDTXフォルダのパス = song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].ファイル情報.フォルダの絶対パス + song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.Preimage; |
| 1883 |
|
//this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strDTXフォルダのパス, this.stバー情報[ i ].eバー種別 ); |
| 1884 |
|
if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strDTXフォルダのパス ) ) |
| 1885 |
|
{ |
| 1886 |
|
//txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) ); |
| 1887 |
|
this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strDTXフォルダのパス, this.stバー情報[ i ].eバー種別 ); |
| 1888 |
|
this.dicThumbnail.Add( this.stバー情報[ i ].strDTXフォルダのパス, this.txTumbnail[ i ] ); |
| 1889 |
|
} |
| 1890 |
|
txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strDTXフォルダのパス ]; |
| 1891 |
|
|
| 1892 |
for( int j = 0; j < 3; j++ ) |
for( int j = 0; j < 3; j++ ) |
| 1893 |
this.stバー情報[ i ].nスキル値[ j ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ j ]; |
this.stバー情報[ i ].nスキル値[ j ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ j ]; |
| 1894 |
|
|
| 1939 |
#endregion |
#endregion |
| 1940 |
} |
} |
| 1941 |
} |
} |
| 1942 |
|
private void tパスを指定してサムネイル画像を生成する( int nバー番号, string strDTXPath, Eバー種別 eType ) |
| 1943 |
|
{ |
| 1944 |
|
if (nバー番号 < 0 || nバー番号 > 12) |
| 1945 |
|
return; |
| 1946 |
|
|
| 1947 |
|
//try |
| 1948 |
|
{ |
| 1949 |
|
//if (eType == Eバー種別.Score || eType == Eバー種別.Box) |
| 1950 |
|
{ |
| 1951 |
|
if (!File.Exists(strDTXPath)) |
| 1952 |
|
{ |
| 1953 |
|
this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false); |
| 1954 |
|
} |
| 1955 |
|
else |
| 1956 |
|
{ |
| 1957 |
|
this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(strDTXPath); |
| 1958 |
|
} |
| 1959 |
|
} |
| 1960 |
|
//else if (eType == Eバー種別.Random) |
| 1961 |
|
{ |
| 1962 |
|
//this.txTumbnail[ nバー番号 ] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage random.png"), false); |
| 1963 |
|
} |
| 1964 |
|
//else if (eType == Eバー種別.BackBox) |
| 1965 |
|
{ |
| 1966 |
|
//if(this.txジャケットボックスクローズ != null) |
| 1967 |
|
//this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage random.png"), false); |
| 1968 |
|
} |
| 1969 |
|
} |
| 1970 |
|
/* |
| 1971 |
|
catch( CTextureCreateFailedException ) |
| 1972 |
|
{ |
| 1973 |
|
if ( this.txジャケット指定が無い場合の画像 != null ) |
| 1974 |
|
{ |
| 1975 |
|
this.txTumbnail[ nバー番号 ] = this.txジャケット指定が無い場合の画像; |
| 1976 |
|
} |
| 1977 |
|
else |
| 1978 |
|
{ |
| 1979 |
|
this.txTumbnail[ nバー番号 ] = null; |
| 1980 |
|
} |
| 1981 |
|
} |
| 1982 |
|
*/ |
| 1983 |
|
} |
| 1984 |
|
private CTexture tパスを指定してサムネイル画像を生成して返す( int nバー番号, string strDTXPath, Eバー種別 eType ) |
| 1985 |
|
{ |
| 1986 |
|
if (nバー番号 < 0 || nバー番号 > 12) |
| 1987 |
|
return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false); |
| 1988 |
|
|
| 1989 |
|
//try |
| 1990 |
|
{ |
| 1991 |
|
//if (eType == Eバー種別.Score || eType == Eバー種別.Box) |
| 1992 |
|
{ |
| 1993 |
|
if (!File.Exists(strDTXPath)) |
| 1994 |
|
{ |
| 1995 |
|
return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false); |
| 1996 |
|
} |
| 1997 |
|
else |
| 1998 |
|
{ |
| 1999 |
|
return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(strDTXPath); |
| 2000 |
|
} |
| 2001 |
|
} |
| 2002 |
|
//else if (eType == Eバー種別.Random) |
| 2003 |
|
{ |
| 2004 |
|
// if(this.txジャケットランダム != null) |
| 2005 |
|
// this.txTumbnail[nバー番号] = this.txジャケットランダム; |
| 2006 |
|
} |
| 2007 |
|
//else if (eType == Eバー種別.BackBox) |
| 2008 |
|
{ |
| 2009 |
|
// if(this.txジャケットボックスクローズ != null) |
| 2010 |
|
// this.txTumbnail[nバー番号] = this.txジャケットボックスクローズ; |
| 2011 |
|
} |
| 2012 |
|
} |
| 2013 |
|
/* |
| 2014 |
|
catch( CTextureCreateFailedException ) |
| 2015 |
|
{ |
| 2016 |
|
if ( this.txジャケット指定が無い場合の画像 != null ) |
| 2017 |
|
{ |
| 2018 |
|
this.txTumbnail[ nバー番号 ] = this.txジャケット指定が無い場合の画像; |
| 2019 |
|
} |
| 2020 |
|
else |
| 2021 |
|
{ |
| 2022 |
|
this.txTumbnail[ nバー番号 ] = null; |
| 2023 |
|
} |
| 2024 |
|
} |
| 2025 |
|
*/ |
| 2026 |
|
} |
| 2027 |
|
private CTexture t指定された文字テクスチャを生成する( string str文字 ) |
| 2028 |
|
{ |
| 2029 |
|
//2013.09.05.kairera0467 中央にしか使用することはないので、色は黒固定。 |
| 2030 |
|
//現在は機能しない(面倒なので実装してない)が、そのうち使用する予定。 |
| 2031 |
|
//PrivateFontの試験運転も兼ねて。 |
| 2032 |
|
//CPrivateFastFont |
| 2033 |
|
prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 28, FontStyle.Regular ); |
| 2034 |
|
Bitmap bmp = prvFont.DrawPrivateFont( str文字, Color.Black, Color.Transparent ); |
| 2035 |
|
|
| 2036 |
|
SizeF sz曲名; |
| 2037 |
|
|
| 2038 |
|
#region [ 曲名表示に必要となるサイズを取得する。] |
| 2039 |
|
//----------------- |
| 2040 |
|
using( var bmpDummy = new Bitmap(1, 1) ) |
| 2041 |
|
{ |
| 2042 |
|
var g = Graphics.FromImage( bmpDummy ); |
| 2043 |
|
g.PageUnit = GraphicsUnit.Pixel; |
| 2044 |
|
sz曲名 = g.MeasureString( str文字, this.ft曲リスト用フォント); |
| 2045 |
|
//this.stバー情報[ nバー番号 ].nタイトル名テクスチャの長さdot = (int)g.MeasureString(str文字, this.ft曲リスト用フォント).Width; |
| 2046 |
|
} |
| 2047 |
|
//----------------- |
| 2048 |
|
#endregion |
| 2049 |
|
int n最大幅px = 200; |
| 2050 |
|
int height = 25; |
| 2051 |
|
int width = (int)((sz曲名.Width + 2) * 0.5f); |
| 2052 |
|
if (width > (CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2)) |
| 2053 |
|
width = CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2; // 右端断ち切れ仕方ないよね |
| 2054 |
|
|
| 2055 |
|
float f拡大率X = (width <= n最大幅px) ? 0.5f : (((float)n最大幅px / (float)width) * 0.5f); // 長い文字列は横方向に圧縮。 |
| 2056 |
|
|
| 2057 |
|
CTexture tx文字テクスチャ = CDTXMania.tテクスチャの生成( bmp, false ); |
| 2058 |
|
tx文字テクスチャ.vc拡大縮小倍率 = new Vector3( f拡大率X, 0.5f, 1f ); |
| 2059 |
|
|
| 2060 |
|
//prvFont.Dispose(); |
| 2061 |
|
bmp.Dispose(); |
| 2062 |
|
|
| 2063 |
|
return tx文字テクスチャ; |
| 2064 |
|
} |
| 2065 |
|
private void tパネルの生成( int nバー番号, string str曲名, string strアーティスト名, Color color ) |
| 2066 |
|
{ |
| 2067 |
|
//t3D描画の仕様上左詰や右詰が面倒になってしまうので、 |
| 2068 |
|
//パネルにあらかじめ曲名とアーティスト名を埋め込んでおく。 |
| 2069 |
|
if( nバー番号 < 0 || nバー番号 > 12 ) |
| 2070 |
|
return; |
| 2071 |
|
try |
| 2072 |
|
{ |
| 2073 |
|
Bitmap b4font; |
| 2074 |
|
Bitmap bSongPanel; |
| 2075 |
|
Image imgSongPanel; |
| 2076 |
|
SizeF sz曲名; |
| 2077 |
|
SizeF szアーティスト名; |
| 2078 |
|
|
| 2079 |
|
b4font = new Bitmap( 1, 1 ); |
| 2080 |
|
Graphics graphics = Graphics.FromImage( b4font ); |
| 2081 |
|
graphics.PageUnit = GraphicsUnit.Pixel; |
| 2082 |
|
imgSongPanel= Image.FromFile( CSkin.Path( @"Graphics\5_music panel.png" ) ); |
| 2083 |
|
bSongPanel = new Bitmap( 223, 279 ); |
| 2084 |
|
|
| 2085 |
|
graphics = Graphics.FromImage( bSongPanel ); |
| 2086 |
|
graphics.DrawImage( imgSongPanel, 0, 0, 223, 279 ); |
| 2087 |
|
|
| 2088 |
|
|
| 2089 |
|
#region [ 曲名表示に必要となるサイズを取得する。] |
| 2090 |
|
//----------------- |
| 2091 |
|
using( var bmpDummy = new Bitmap( 1, 1 ) ) |
| 2092 |
|
{ |
| 2093 |
|
var g = Graphics.FromImage( bmpDummy ); |
| 2094 |
|
g.PageUnit = GraphicsUnit.Pixel; |
| 2095 |
|
sz曲名 = g.MeasureString( str曲名, this.ft曲リスト用フォント ); |
| 2096 |
|
szアーティスト名 = g.MeasureString( strアーティスト名, this.ft曲リスト用フォント ); |
| 2097 |
|
this.stバー情報[ nバー番号 ].nタイトル名テクスチャの長さdot = (int) g.MeasureString( str曲名, this.ft曲リスト用フォント ).Width; |
| 2098 |
|
} |
| 2099 |
|
//----------------- |
| 2100 |
|
#endregion |
| 2101 |
|
|
| 2102 |
|
int n最大幅px = 200; |
| 2103 |
|
int height = 25; |
| 2104 |
|
int width = (int) ( ( sz曲名.Width + 2 ) ); |
| 2105 |
|
if( width > ( CDTXMania.app.Device.Capabilities.MaxTextureWidth ) ) |
| 2106 |
|
width = CDTXMania.app.Device.Capabilities.MaxTextureWidth; // 右端断ち切れ仕方ないよね |
| 2107 |
|
|
| 2108 |
|
float f拡大率X = ( width <= n最大幅px ) ? 1 : ( ( (float) n最大幅px / (float) width ) ); // 長い文字列は横方向に圧縮。 |
| 2109 |
|
|
| 2110 |
|
using( var bmp = new Bitmap( width, height, PixelFormat.Format32bppArgb ) ) // 2倍(面積4倍)のBitmapを確保。(0.5倍で表示する前提。) |
| 2111 |
|
using( var g = Graphics.FromImage( bmp ) ) |
| 2112 |
|
{ |
| 2113 |
|
graphics.TextRenderingHint = TextRenderingHint.AntiAlias; |
| 2114 |
|
float y = ( ( ( float ) bmp.Height ) ) - ( ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot ) ); |
| 2115 |
|
//graphics.DrawString( str曲名, this.ft曲リスト用フォント, new SolidBrush( this.color文字影 ), (float) 2f, (float) ( y + 2f ) ); |
| 2116 |
|
graphics.DrawString( str曲名, this.ft曲リスト用フォント, new SolidBrush( color ), 5f, y ); |
| 2117 |
|
graphics.DrawString( strアーティスト名, this.ft曲リスト用フォント, new SolidBrush( this.color文字影 ), (float)234f, 258f); |
| 2118 |
|
graphics.DrawString( strアーティスト名, this.ft曲リスト用フォント, new SolidBrush( Color.White ), 234f, 258f ); |
| 2119 |
|
|
| 2120 |
|
CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txパネル ); |
| 2121 |
|
|
| 2122 |
|
this.stバー情報[ nバー番号 ].txパネル = new CTexture( CDTXMania.app.Device, bSongPanel, CDTXMania.TextureFormat, false ); |
| 2123 |
|
} |
| 2124 |
|
|
| 2125 |
|
|
| 2126 |
|
} |
| 2127 |
|
catch( CTextureCreateFailedException ) |
| 2128 |
|
{ |
| 2129 |
|
Trace.TraceError( "曲名テクスチャの作成に失敗しました。[{0}]", str曲名 ); |
| 2130 |
|
this.stバー情報[ nバー番号 ].txタイトル名 = null; |
| 2131 |
|
} |
| 2132 |
|
|
| 2133 |
|
} |
| 2134 |
private void t曲名バーの生成( int nバー番号, string str曲名, Color color ) |
private void t曲名バーの生成( int nバー番号, string str曲名, Color color ) |
| 2135 |
{ |
{ |
| 2136 |
if( nバー番号 < 0 || nバー番号 > 12 ) |
if( nバー番号 < 0 || nバー番号 > 12 ) |
| 2147 |
var g = Graphics.FromImage( bmpDummy ); |
var g = Graphics.FromImage( bmpDummy ); |
| 2148 |
g.PageUnit = GraphicsUnit.Pixel; |
g.PageUnit = GraphicsUnit.Pixel; |
| 2149 |
sz曲名 = g.MeasureString( str曲名, this.ft曲リスト用フォント ); |
sz曲名 = g.MeasureString( str曲名, this.ft曲リスト用フォント ); |
| 2150 |
|
this.stバー情報[ nバー番号 ].nタイトル名テクスチャの長さdot = (int) g.MeasureString( str曲名, this.ft曲リスト用フォント ).Width; |
| 2151 |
} |
} |
| 2152 |
//----------------- |
//----------------- |
| 2153 |
#endregion |
#endregion |
| 2154 |
|
|
| 2155 |
int n最大幅px = 0x310; |
int n最大幅px = 200; |
| 2156 |
int height = 0x25; |
int height = 25; |
| 2157 |
int width = (int) ( ( sz曲名.Width + 2 ) * 0.5f ); |
int width = (int) ( ( sz曲名.Width + 2 ) * 0.5f ); |
| 2158 |
if( width > ( CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2 ) ) |
if( width > ( CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2 ) ) |
| 2159 |
width = CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2; // 右端断ち切れ仕方ないよね |
width = CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2; // 右端断ち切れ仕方ないよね |
| 2170 |
|
|
| 2171 |
CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txタイトル名 ); |
CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txタイトル名 ); |
| 2172 |
|
|
| 2173 |
this.stバー情報[ nバー番号 ].txタイトル名 = new CTexture( CDTXMania.app.Device, bmp, CDTXMania.TextureFormat ); |
this.stバー情報[ nバー番号 ].txタイトル名 = new CTexture( CDTXMania.app.Device, bmp, CDTXMania.TextureFormat, false ); |
| 2174 |
this.stバー情報[ nバー番号 ].txタイトル名.vc拡大縮小倍率 = new Vector3( f拡大率X, 0.5f, 1f ); |
this.stバー情報[ nバー番号 ].txタイトル名.vc拡大縮小倍率 = new Vector3( f拡大率X, 0.5f, 1f ); |
| 2175 |
} |
} |
| 2176 |
} |
} |
| 2180 |
this.stバー情報[ nバー番号 ].txタイトル名 = null; |
this.stバー情報[ nバー番号 ].txタイトル名 = null; |
| 2181 |
} |
} |
| 2182 |
} |
} |
| 2183 |
|
private void tアーティスト名テクスチャの生成( int nバー番号, string strアーティスト名 ) |
| 2184 |
|
{ |
| 2185 |
|
if( nバー番号 < 0 || nバー番号 > 12 ) |
| 2186 |
|
return; |
| 2187 |
|
|
| 2188 |
|
try |
| 2189 |
|
{ |
| 2190 |
|
SizeF szアーティスト名; |
| 2191 |
|
|
| 2192 |
|
#region [ 曲名表示に必要となるサイズを取得する。] |
| 2193 |
|
//----------------- |
| 2194 |
|
using( var bmpDummy = new Bitmap( 1, 1 ) ) |
| 2195 |
|
{ |
| 2196 |
|
var g = Graphics.FromImage( bmpDummy ); |
| 2197 |
|
g.PageUnit = GraphicsUnit.Pixel; |
| 2198 |
|
szアーティスト名 = g.MeasureString( strアーティスト名, this.ft曲リスト用フォント ); |
| 2199 |
|
} |
| 2200 |
|
//----------------- |
| 2201 |
|
#endregion |
| 2202 |
|
|
| 2203 |
|
int n最大幅px = 210; |
| 2204 |
|
int height = 25; |
| 2205 |
|
int width = (int) ( ( szアーティスト名.Width + 2 ) * 0.5f ); |
| 2206 |
|
if( width > ( CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2 ) ) |
| 2207 |
|
width = CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2; // 右端断ち切れ仕方ないよね |
| 2208 |
|
|
| 2209 |
|
float f拡大率X = ( width <= n最大幅px ) ? 0.5f : ( ( (float) n最大幅px / (float) width ) * 0.5f ); // 長い文字列は横方向に圧縮。 |
| 2210 |
|
|
| 2211 |
|
using( var bmp = new Bitmap( width * 2, height * 2, PixelFormat.Format32bppArgb ) ) // 2倍(面積4倍)のBitmapを確保。(0.5倍で表示する前提。) |
| 2212 |
|
using( var g = Graphics.FromImage( bmp ) ) |
| 2213 |
|
{ |
| 2214 |
|
g.TextRenderingHint = TextRenderingHint.AntiAlias; |
| 2215 |
|
float y = ( ( ( float ) bmp.Height ) / 2f ) - ( ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot * 2f ) / 2f ); |
| 2216 |
|
g.DrawString( strアーティスト名, this.ft曲リスト用フォント, new SolidBrush( this.color文字影 ), (float)2f, (float)(y + 2f)); |
| 2217 |
|
g.DrawString( strアーティスト名, this.ft曲リスト用フォント, new SolidBrush( Color.White ), 0f, y ); |
| 2218 |
|
|
| 2219 |
|
CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txアーティスト名 ); |
| 2220 |
|
this.stバー情報[ nバー番号 ].nアーティスト名テクスチャの長さdot = (int)((g.MeasureString(strアーティスト名, this.ft曲リスト用フォント).Width) * f拡大率X); |
| 2221 |
|
this.stバー情報[ nバー番号 ].txアーティスト名 = new CTexture( CDTXMania.app.Device, bmp, CDTXMania.TextureFormat, false ); |
| 2222 |
|
this.stバー情報[ nバー番号 ].txアーティスト名.vc拡大縮小倍率 = new Vector3( f拡大率X, 0.5f, 1f ); |
| 2223 |
|
} |
| 2224 |
|
} |
| 2225 |
|
catch( CTextureCreateFailedException ) |
| 2226 |
|
{ |
| 2227 |
|
Trace.TraceError( "曲名テクスチャの作成に失敗しました。[{0}]", strアーティスト名 ); |
| 2228 |
|
this.stバー情報[ nバー番号 ].txアーティスト名 = null; |
| 2229 |
|
} |
| 2230 |
|
} |
| 2231 |
private void tアイテム数の描画() |
private void tアイテム数の描画() |
| 2232 |
{ |
{ |
| 2233 |
string s = nCurrentPosition.ToString() + "/" + nNumOfItems.ToString(); |
string s = nCurrentPosition.ToString() + "/" + nNumOfItems.ToString(); |
| 2251 |
else |
else |
| 2252 |
{ |
{ |
| 2253 |
int n = (int) s数値 - (int) '0'; |
int n = (int) s数値 - (int) '0'; |
| 2254 |
dx = ( n % 6 ) * 16; |
dx = ( n % 6 ) * 8; |
| 2255 |
dy = ( n / 6 ) * 16; |
dy = ( n / 6 ) * 12; |
| 2256 |
} |
} |
| 2257 |
if ( this.txアイテム数数字 != null ) |
if ( this.txアイテム数数字 != null ) |
| 2258 |
{ |
{ |