public bool bUse556x710BGAAVI;\r
public STDGBVALUE<List<int>> listAutoGhostLag;\r
public STDGBVALUE<List<int>> listTargetGhsotLag;\r
+ public STDGBVALUE<int> n使用レーン数;\r
\r
#if TEST_NOTEOFFMODE\r
public STLANEVALUE<bool> b演奏で直前の音を消音する;\r
this.nPolyphonicSounds = CDTXMania.Instance.ConfigIni.nPoliphonicSounds;\r
this.dbDTXVPlaySpeed = 1.0f;\r
this.bUse556x710BGAAVI = false;\r
+ this.n使用レーン数 = new STDGBVALUE<int>();\r
\r
#if TEST_NOTEOFFMODE\r
this.bHH演奏で直前のHHを消音する = true;\r
}\r
}\r
#endregion\r
+ \r
+ // #36177 使用レーン数の表示 add ikanick 16.03.20\r
+ #region [ 使用レーン数カウント ]\r
+ \r
+ for (E楽器パート inst = E楽器パート.DRUMS; inst <= E楽器パート.BASS; ++inst)\r
+ {\r
+ this.n使用レーン数[inst] = 0;\r
+ }\r
+ this.n使用レーン数.Drums = 0;\r
+ foreach (CChip chip in this.listChip)\r
+ {\r
+ int ch = (int)chip.eチャンネル番号;\r
+ if (chip.bDrums可視チップ) {\r
+ if ( this.n使用レーン数.Drums == 0 ) this.n使用レーン数.Drums = 6;\r
+ if ( this.n使用レーン数.Drums < 10 ) {\r
+ if ( ( chip.eチャンネル番号 == Ech定義.FloorTom )\r
+ || ( chip.eチャンネル番号 == Ech定義.HiHatOpen )\r
+ || ( chip.eチャンネル番号 == Ech定義.RideCymbal )\r
+ || ( chip.eチャンネル番号 == Ech定義.LeftCymbal ) )\r
+ {\r
+ this.n使用レーン数.Drums = 10;\r
+ }\r
+ }\r
+ if ( this.n使用レーン数.Drums < 12 ) {\r
+ if ( ( chip.eチャンネル番号 == Ech定義.LeftPedal )\r
+ || ( chip.eチャンネル番号 == Ech定義.LeftBassDrum ) )\r
+ {\r
+ this.n使用レーン数.Drums = 12;\r
+ }\r
+ }\r
+ }\r
+ if (chip.bGuitar可視チップ) {\r
+ // 5レーン未対応\r
+ //if ( this.n使用レーン数.Guitar == 0 ) this.n使用レーン数.Guitar = 3;\r
+ }\r
+ if (chip.bBass可視チップ) {\r
+ // 5レーン未対応\r
+ //if ( this.n使用レーン数.Bass == 0 ) this.n使用レーン数.Bass = 3;\r
+ }\r
+ }\r
+\r
+ #endregion\r
+\r
}\r
}\r
}\r
cスコア.譜面情報.曲種別 = (EDTX種別)br.ReadInt32();\r
cスコア.譜面情報.Bpm = br.ReadDouble();\r
cスコア.譜面情報.Duration = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Drums = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Guitar = br.ReadInt32();\r
+ cスコア.譜面情報.使用レーン数.Bass = br.ReadInt32();\r
\r
//Debug.WriteLine( "songs.db: " + cスコア.ファイル情報.ファイルの絶対パス );\r
return cスコア;\r
{\r
if ((c曲リストノード.arスコア[i] != null) && !c曲リストノード.arスコア[i].bSongDBにキャッシュがあった)\r
{\r
- #region [ DTX ファイルのヘッダだけ読み込み、Cスコア.譜面情報 を設定する ]\r
+ #region [ Cスコア.譜面情報 を設定する ]\r
//-----------------\r
string path = c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス;\r
if (File.Exists(path))\r
{\r
try\r
{\r
- CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス, true);\r
+ CDTX cdtx = new CDTX(c曲リストノード.arスコア[i].ファイル情報.ファイルの絶対パス,false);//DTX ファイルのヘッダだけ読み込んでいたが、使用レーン数の集計の為全て読み込みに変更\r
c曲リストノード.arスコア[i].譜面情報.タイトル = cdtx.TITLE;\r
c曲リストノード.arスコア[i].譜面情報.アーティスト名 = cdtx.ARTIST;\r
c曲リストノード.arスコア[i].譜面情報.コメント = cdtx.COMMENT;\r
c曲リストノード.arスコア[i].譜面情報.曲種別 = cdtx.e種別;\r
c曲リストノード.arスコア[i].譜面情報.Bpm = cdtx.BPM;\r
c曲リストノード.arスコア[i].譜面情報.Duration = 0; // (cdtx.listChip == null)? 0 : cdtx.listChip[ cdtx.listChip.Count - 1 ].n発声時刻ms;\r
+ c曲リストノード.arスコア[i].譜面情報.使用レーン数.Drums = cdtx.n使用レーン数.Drums;\r
+ c曲リストノード.arスコア[i].譜面情報.使用レーン数.Guitar = cdtx.n使用レーン数.Guitar;\r
+ c曲リストノード.arスコア[i].譜面情報.使用レーン数.Bass = cdtx.n使用レーン数.Bass;\r
this.nファイルから反映できたスコア数++;\r
cdtx.On非活性化();\r
//Debug.WriteLine( "★" + this.nファイルから反映できたスコア数 + " " + c曲リストノード.arスコア[ i ].譜面情報.タイトル );\r
sb.Append(", type=" + c曲リストノード.arスコア[i].譜面情報.曲種別);\r
sb.Append(", bpm=" + c曲リストノード.arスコア[i].譜面情報.Bpm);\r
// sb.Append( ", duration=" + c曲リストノード.arスコア[ i ].譜面情報.Duration );\r
+ sb.Append(", lnDr=" + c曲リストノード.arスコア[i].譜面情報.使用レーン数.Drums);\r
+ sb.Append(", lnGt=" + c曲リストノード.arスコア[i].譜面情報.使用レーン数.Guitar);\r
+ sb.Append(", lnBs=" + c曲リストノード.arスコア[i].譜面情報.使用レーン数.Bass);\r
Trace.TraceInformation(sb.ToString());\r
}\r
//-----------------\r
bw.Write((int)node.arスコア[i].譜面情報.曲種別);\r
bw.Write(node.arスコア[i].譜面情報.Bpm);\r
bw.Write(node.arスコア[i].譜面情報.Duration);\r
+ bw.Write(node.arスコア[i].譜面情報.使用レーン数.Drums);\r
+ bw.Write(node.arスコア[i].譜面情報.使用レーン数.Guitar);\r
+ bw.Write(node.arスコア[i].譜面情報.使用レーン数.Bass);\r
this.nSongsDBへ出力できたスコア数++;\r
}\r
}\r
public STDGBVALUE<double> 最大スキル;\r
public STDGBVALUE<bool> フルコンボ;\r
public STDGBVALUE<int> 演奏回数;\r
+ public STDGBVALUE<int> 使用レーン数;\r
public STHISTORY 演奏履歴;\r
public bool レベルを非表示にする;\r
public EDTX種別 曲種別;\r
this.譜面情報.曲種別 = EDTX種別.DTX;\r
this.譜面情報.Bpm = 120.0;\r
this.譜面情報.Duration = 0;\r
+ this.譜面情報.使用レーン数 = new STDGBVALUE<int>();\r
}\r
}\r
}\r
{\r
if (!CDTXMania.Instance.stage選曲.bスクロール中 && (((this.ct遅延表示 != null) && (this.ct遅延表示.n現在の値 > 0)) && !this.b新しいプレビューファイルをまだ読み込んでいない))\r
{\r
- int x = this.n本体X + (int)(0x12 * Scale.X);\r
- int y = this.n本体Y + (int)(0x10 * Scale.Y);\r
+ int x = this.n本体X + (int)(18 * Scale.X);\r
+ int y = this.n本体Y + (int)(16 * Scale.Y);\r
\r
if (this.rAVI != null)\r
{\r
\r
int width = cmg.width;\r
int height = cmg.height;\r
- this.r表示するプレビュー画像.vc拡大縮小倍率.X = cmg.magX; // ( num4 * Scale.X ) / WIDTH_HD_SET;\r
- this.r表示するプレビュー画像.vc拡大縮小倍率.Y = cmg.magY; // ( num4 * Scale.X ) / WIDTH_HD_SET;\r
+ this.r表示するプレビュー画像.vc拡大縮小倍率.X = cmg.magX;\r
+ this.r表示するプレビュー画像.vc拡大縮小倍率.Y = cmg.magY;\r
\r
- x += (width - ((int)(width * mag))) / 2;\r
- y += (height - ((int)(height * mag))) / 2;\r
+ x += (int)((612 - width * cmg.magX ) / 2 );\r
+ y += (int)((605 - height * cmg.magY ) / 2 );\r
this.r表示するプレビュー画像.n透明度 = (int)(255f * num3);\r
this.r表示するプレビュー画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
}\r
for (E楽器パート m = E楽器パート.DRUMS; m <= E楽器パート.BASS; m++)\r
{\r
this.stバー情報[index].nスキル値[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];\r
+ this.stバー情報[index].n使用レーン数[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[m];\r
}\r
song = this.r次の曲(song);\r
}\r
this.tx選曲バー.Score = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar score selected.png"), false);\r
this.tx選曲バー.Box = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar box selected.png"), false);\r
this.tx選曲バー.Other = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar other selected.png"), false);\r
-\r
+ \r
this.txスキル数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on list.png"), false);\r
+ this.tx使用レーン数数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on gauge etc.png"), false);\r
for (int i = 0; i < 13; i++)\r
this.t曲名バーの生成(i, this.stバー情報[i].strタイトル文字列, this.stバー情報[i].col文字色);\r
\r
\r
for (int i = 0; i < 13; i++)\r
TextureFactory.t安全にDisposeする(ref this.stバー情報[i].txタイトル名);\r
-\r
+ \r
TextureFactory.t安全にDisposeする(ref this.txスキル数字);\r
+ TextureFactory.t安全にDisposeする(ref this.tx使用レーン数数字);\r
TextureFactory.t安全にDisposeする(ref this.txEnumeratingSongs);\r
TextureFactory.t安全にDisposeする(ref this.txSongNotFound);\r
TextureFactory.t安全にDisposeする(ref this.tx曲名バー.Score);\r
for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
{\r
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];\r
+ this.stバー情報[index].n使用レーン数[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[i];\r
}\r
\r
// 1行(100カウント)移動完了。\r
for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
{\r
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];\r
+ this.stバー情報[index].n使用レーン数[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[i];\r
}\r
\r
\r
this.tスキル値の描画(x + (int)(28 * Scale.X), y + (int)(59), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
//-----------------\r
#endregion\r
+ #region [ 使用レーン数を描画。]\r
+ //-----------------\r
+ if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+ this.t使用レーン数の描画(x + (int)(0 * Scale.X), y + (int)53, this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
+ //-----------------\r
+ #endregion\r
}\r
else\r
{\r
this.tスキル値の描画(x + (int)(14 * Scale.X), y + (int)(14 * Scale.Y), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
//-----------------\r
#endregion\r
+ #region [ 使用レーン数を描画。]\r
+ //-----------------\r
+ if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+ this.t使用レーン数の描画(x + (int)(-14 * Scale.X), y + (int)(11 * Scale.Y), this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
+ //-----------------\r
+ #endregion\r
}\r
}\r
}\r
);\r
//-----------------\r
#endregion\r
+ #region [ 使用レーン数を描画。]\r
+ //-----------------\r
+ if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+ this.t使用レーン数の描画(\r
+ (int)(216 * Scale.X),\r
+ (int)(208 * Scale.Y),\r
+ this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]\r
+ );\r
+ //-----------------\r
+ #endregion\r
}\r
else\r
{\r
this.tスキル値の描画(x + (int)(14 * Scale.X), y + (int)(14 * Scale.Y), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
//-----------------\r
#endregion\r
+ #region [ 使用レーン数を描画。]\r
+ //-----------------\r
+ if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+ this.t使用レーン数の描画(x + (int)(-14 * Scale.X), y + (int)(11 * Scale.Y), this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
+ //-----------------\r
+ #endregion\r
}\r
}\r
//-----------------\r
public string strタイトル文字列;\r
public CTexture txタイトル名;\r
public STDGBVALUE<int> nスキル値;\r
+ public STDGBVALUE<int> n使用レーン数;\r
public Color col文字色;\r
}\r
\r
private STバー情報[] stバー情報 = new STバー情報[13];\r
private CTexture txSongNotFound, txEnumeratingSongs;\r
private CTexture txスキル数字;\r
+ private CTexture tx使用レーン数数字;\r
private CTexture txアイテム数数字;\r
private STバー tx曲名バー;\r
private ST選曲バー tx選曲バー;\r
for (E楽器パート j = E楽器パート.DRUMS; j <= E楽器パート.BASS; j++)\r
{\r
this.stバー情報[i].nスキル値[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[j];\r
+ this.stバー情報[i].n使用レーン数[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[j];\r
}\r
\r
song = this.r次の曲(song);\r
}\r
if (this.txアイテム数数字 != null)\r
{\r
- this.txアイテム数数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(8 * Scale.X), (int)(12 * Scale.Y)));\r
+ this.txアイテム数数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(8 * Scale.X), (int)(10 * Scale.Y)));\r
+ }\r
+ }\r
+ \r
+ private void t使用レーン数の描画(int x, int y, int n使用レーン数)\r
+ {\r
+ // #36177 使用レーン数の表示 add ikanick 16.03.20\r
+ if ( n使用レーン数 == 0 )\r
+ return;\r
+\r
+ int n十の位 = n使用レーン数 / 10;\r
+ int n一の位 = n使用レーン数 % 10;\r
+ \r
+ // 十の位の描画。\r
+ if ( n十の位 != 0 )\r
+ this.t使用レーン数の描画_1桁描画(x + (int)(8 * Scale.X), y, n十の位);\r
+\r
+ // 一の位の描画。\r
+ this.t使用レーン数の描画_1桁描画(x + (int)(13 * Scale.X), y, n一の位);\r
+ }\r
+ private void t使用レーン数の描画_1桁描画(int x, int y, int n数値)\r
+ {\r
+ int dx, dy;\r
+ dx = (n数値 % 6) * (int)(8 * Scale.X);\r
+ dy = (n数値 / 6) * (int)(11 * Scale.Y);\r
+\r
+ if (this.tx使用レーン数数字 != null)\r
+ {\r
+ this.tx使用レーン数数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(8 * Scale.X), (int)(10 * Scale.Y)));\r
}\r
}\r
//-----------------\r
this.n本体Y * Scale.Y\r
);\r
}\r
- int x = this.n本体X + 0x11;\r
- int y = this.n本体Y + 0x10;\r
+ int x = (int)(( this.n本体X + 17 ) * Scale.X);\r
+ int y = (int)(( this.n本体Y + 16 ) * Scale.Y);\r
//if ( ( ( this.nAVI再生開始時刻 != -1 ) && ( this.avi != null ) ) && ( this.sfリザルトAVI画像 != null ) )\r
if (this.rAVI != null)\r
{\r
CPreviewMagnifier cmg = new CPreviewMagnifier();\r
cmg.GetMagnifier(this.r表示するリザルト画像.sz画像サイズ.Width, this.r表示するリザルト画像.sz画像サイズ.Height, 1.0f, 1.0f, true);\r
\r
- if (cmg.width < 0xcc) x += (204 - cmg.width) / 2;\r
- if (cmg.height < 269) y += (269 - cmg.height) / 2;\r
this.r表示するリザルト画像.vc拡大縮小倍率.X = cmg.magX;\r
this.r表示するリザルト画像.vc拡大縮小倍率.Y = cmg.magY;\r
this.r表示するリザルト画像.vc拡大縮小倍率.Z = 1f;\r
- this.r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
+ x += (int)((612 - cmg.width * cmg.magX ) / 2 );\r
+ y += (int)((605 - cmg.height * cmg.magY ) / 2 );\r
+ this.r表示するリザルト画像.t2D描画(CDTXMania.Instance.Device, x, y);\r
+\r
+\r
}\r
#endregion\r
if ((CDTXMania.Instance.DTX.GENRE != null) && (CDTXMania.Instance.DTX.GENRE.Length > 0))\r
this.bIsPreview = bIsPreview;\r
\r
// #35820 画像サイズに関係なく、プレビュー領域に合わせる add ikanick 15.12.08\r
- this.width = width_fhd_set;\r
- this.height = height_fhd_set;\r
- this.magX = magX_org * width_vga_set / width_org * Scale.X;\r
- this.magY = magY_org * height_vga_set / height_org * Scale.Y;\r
+ // #36176 プレビュー画像については、前仕様(204x269)画像はアスペクト比を維持する change ikanick 16.03.20\r
+ \r
+ this.width = width_org;\r
+ this.height = height_org;\r
+ this.magX = magX_org * width_fhd_set / width_org;\r
+ this.magY = magY_org * height_fhd_set / height_org;\r
+ if (bIsPreview && width_org == 204 && height_org == 269)\r
+ {\r
+ this.magX = magX_org * width_fhd_set / width_org * ( 204f / 269 );\r
+ }\r
return;\r
\r
#if false // FHD対応の名残\r