1
0
mirror of synced 2025-03-01 16:11:02 +01:00
This commit is contained in:
0auBSQ 2023-02-22 02:43:41 +09:00
commit b11519ad9f
12 changed files with 595 additions and 510 deletions

View File

@ -1786,6 +1786,10 @@ namespace TJAPlayer3
SongSelect_Bar_Anim_Y[i] = int.Parse(strSplit[i]); SongSelect_Bar_Anim_Y[i] = int.Parse(strSplit[i]);
} }
} }
else if (strCommand == "SongSelect_Scroll_Interval")
{
SongSelect_Scroll_Interval = float.Parse(strParam);
}
else if (strCommand == "SongSelect_DanStatus_Offset_X") else if (strCommand == "SongSelect_DanStatus_Offset_X")
{ {
string[] strSplit = strParam.Split(','); string[] strSplit = strParam.Split(',');
@ -1882,6 +1886,30 @@ namespace TJAPlayer3
SongSelect_Bar_Title_Offset[i] = int.Parse(strSplit[i]); SongSelect_Bar_Title_Offset[i] = int.Parse(strSplit[i]);
} }
} }
else if (strCommand == "SongSelect_Bar_Box_Offset")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
SongSelect_Bar_Box_Offset[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_Bar_BackBox_Offset")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
SongSelect_Bar_BackBox_Offset[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_Bar_Random_Offset")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
SongSelect_Bar_Random_Offset[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "SongSelect_Bar_SubTitle_Offset") else if (strCommand == "SongSelect_Bar_SubTitle_Offset")
{ {
string[] strSplit = strParam.Split(','); string[] strSplit = strParam.Split(',');
@ -3220,6 +3248,46 @@ namespace TJAPlayer3
{ {
Game_Notes_Interval = int.Parse(strParam); Game_Notes_Interval = int.Parse(strParam);
} }
else if (strCommand == "Game_Notes_Arm_Offset_Left_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Game_Notes_Arm_Offset_Left_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Game_Notes_Arm_Offset_Right_X")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Game_Notes_Arm_Offset_Right_X[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Game_Notes_Arm_Offset_Left_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Game_Notes_Arm_Offset_Left_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Game_Notes_Arm_Offset_Right_Y")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Game_Notes_Arm_Offset_Right_Y[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Game_Notes_Arm_Move")
{
string[] strSplit = strParam.Split(',');
for (int i = 0; i < 2; i++)
{
Game_Notes_Arm_Move[i] = int.Parse(strSplit[i]);
}
}
else if (strCommand == "Game_Judge_X") else if (strCommand == "Game_Judge_X")
{ {
string[] strSplit = strParam.Split(','); string[] strSplit = strParam.Split(',');
@ -7597,7 +7665,12 @@ namespace TJAPlayer3
public int[] SongSelect_Bar_Anim_X = new int[] { 0, 600, 500, 400, 0, -400, -500, -600, 0 }; public int[] SongSelect_Bar_Anim_X = new int[] { 0, 600, 500, 400, 0, -400, -500, -600, 0 };
public int[] SongSelect_Bar_Anim_Y = new int[] { 0, 1800, 1500, 1200, 0, -1200, -1500, -1800, 0 }; public int[] SongSelect_Bar_Anim_Y = new int[] { 0, 1800, 1500, 1200, 0, -1200, -1500, -1800, 0 };
public float SongSelect_Scroll_Interval = 0.12f;
public int[] SongSelect_Bar_Title_Offset = new int[] { 316, 62 }; public int[] SongSelect_Bar_Title_Offset = new int[] { 316, 62 };
public int[] SongSelect_Bar_Box_Offset = new int[] { 316, 62 };
public int[] SongSelect_Bar_BackBox_Offset = new int[] { 316, 62 };
public int[] SongSelect_Bar_Random_Offset = new int[] { 316, 62 };
public int[] SongSelect_Bar_SubTitle_Offset = new int[] { 316, 90 }; public int[] SongSelect_Bar_SubTitle_Offset = new int[] { 316, 90 };
public int[] SongSelect_DanStatus_Offset_X = new int[] { 30, 602 }; public int[] SongSelect_DanStatus_Offset_X = new int[] { 30, 602 };
@ -7898,6 +7971,14 @@ namespace TJAPlayer3
public int[] Game_Notes_Size = new int[] { 130, 130 }; public int[] Game_Notes_Size = new int[] { 130, 130 };
public int[] Game_SENote_Size = new int[] { 136, 30 }; public int[] Game_SENote_Size = new int[] { 136, 30 };
public int Game_Notes_Interval = 960; public int Game_Notes_Interval = 960;
public int[] Game_Notes_Arm_Offset_Left_X = new int[] { 25, 25 };
public int[] Game_Notes_Arm_Offset_Right_X = new int[] { 60, 60 };
public int[] Game_Notes_Arm_Offset_Left_Y = new int[] { 74, -44 };
public int[] Game_Notes_Arm_Offset_Right_Y = new int[] { 104, -14 };
public int[] Game_Notes_Arm_Move = new int[] { 0, 30 };
public int[] Game_Judge_X = new int[] { 364, 364 }; public int[] Game_Judge_X = new int[] { 364, 364 };
public int[] Game_Judge_Y = new int[] { 152, 328 }; public int[] Game_Judge_Y = new int[] { 152, 328 };
public int[] Game_Judge_Move = new int[] { 0, 20 }; public int[] Game_Judge_Move = new int[] { 0, 20 };

View File

@ -6427,6 +6427,16 @@ namespace TJAPlayer3
private CPrivateFastFont pf歌詞フォント; private CPrivateFastFont pf歌詞フォント;
public override void On活性化() public override void On活性化()
{ {
if (TJAPlayer3.r現在のステージ.eステージID == CStage.Eステージ.)
{
//まさかこれが原因で曲の読み込みが停止するとは思わなかった...
//どういうことかというとスキンを読み込むときに...いや厳密には
//RefleshSkinを呼び出した後一回Disposeしてnullにして解放(その後にまたインスタンスを作成する)するんだけど
//その時にここでTJAPlayer3.Skinを参照して例外が出ていたんだ....
//いやいや! なんでTJAPlayer3.Skinをnullにした瞬間に参照されるんだ!と思った方もいるかもしれないですが
//実は曲の読み込みはマルチスレッドで実行されているのでnullにした瞬間に参照される可能性も十分にある
//それならアプリが終了するんじゃないかと思ったのだけどtryを使ってい曲の読み込みを続行していた...
//いやーマルチスレッドって難しいね!
if (!string.IsNullOrEmpty(TJAPlayer3.Skin.Game_Lyric_FontName)) if (!string.IsNullOrEmpty(TJAPlayer3.Skin.Game_Lyric_FontName))
{ {
this.pf歌詞フォント = new CPrivateFastFont(new FontFamily(TJAPlayer3.Skin.Game_Lyric_FontName), TJAPlayer3.Skin.Game_Lyric_FontSize); this.pf歌詞フォント = new CPrivateFastFont(new FontFamily(TJAPlayer3.Skin.Game_Lyric_FontName), TJAPlayer3.Skin.Game_Lyric_FontSize);
@ -6435,6 +6445,7 @@ namespace TJAPlayer3
{ {
this.pf歌詞フォント = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.Game_Lyric_FontSize); this.pf歌詞フォント = new CPrivateFastFont(new FontFamily("MS UI Gothic"), TJAPlayer3.Skin.Game_Lyric_FontSize);
} }
}
this.listWAV = new Dictionary<int, CWAV>(); this.listWAV = new Dictionary<int, CWAV>();
this.listBPM = new Dictionary<int, CBPM>(); this.listBPM = new Dictionary<int, CBPM>();
this.listSCROLL = new Dictionary<int, CSCROLL>(); this.listSCROLL = new Dictionary<int, CSCROLL>();

View File

@ -31,11 +31,15 @@ namespace TJAPlayer3
{ {
get get
{ {
if( this.n目標のスクロールカウンタ == 0 ) return ctScrollCounter.n現在の値 != ctScrollCounter.n終了値;
{
return ( this.n現在のスクロールカウンタ != 0 );
} }
return true; }
public double fNowScrollAnime
{
get
{
double value = ctScrollCounter.n現在の値 / 1000.0;
return Math.Sin(value * Math.PI / 2.0);
} }
} }
public int n現在のアンカ難易度レベル public int n現在のアンカ難易度レベル
@ -400,11 +404,131 @@ namespace TJAPlayer3
{ {
if( this.r現在選択中の曲 != null ) if( this.r現在選択中の曲 != null )
{ {
nNowChange = 1;
ctScoreFrameAnime.t停止(); ctScoreFrameAnime.t停止();
ctScoreFrameAnime.n現在の値 = 0; ctScoreFrameAnime.n現在の値 = 0;
ctBarOpen.t停止(); ctBarOpen.t停止();
ctBarOpen.n現在の値 = 0; ctBarOpen.n現在の値 = 0;
this.n目標のスクロールカウンタ += 100; this.ctScrollCounter = new CCounter(0, 1000, TJAPlayer3.Skin.SongSelect_Scroll_Interval, TJAPlayer3.Timer);
#region [ ]
//-----------------
int barCenterNum = (TJAPlayer3.Skin.SongSelect_Bar_Count - 1) / 2;
// 選択曲と選択行を1つ下の行に移動。
tChangeSong(1);
this.n現在の選択行 = (this.n現在の選択行 + 1) % TJAPlayer3.Skin.SongSelect_Bar_Count;
// 選択曲から7つ下のパネル(=新しく最下部に表示されるパネル。消えてしまう一番上のパネルを再利用する)に、新しい曲の情報を記載する。
var song = this.rGetSideSong(barCenterNum);
int index = (this.n現在の選択行 + barCenterNum) % TJAPlayer3.Skin.SongSelect_Bar_Count; // 新しく最下部に表示されるパネルのインデックス012
this.stバー情報[index].strタイトル文字列 = song.strタイトル;
this.stバー情報[index].ForeColor = song.ForeColor;
this.stバー情報[index].BackColor = song.BackColor;
this.stバー情報[index].BoxColor = song.BoxColor;
this.stバー情報[index].BgColor = song.BgColor;
// Set default if unchanged here
this.stバー情報[index].BoxType = song.BoxType;
this.stバー情報[index].BgType = song.BgType;
this.stバー情報[index].BgTypeChanged = song.isChangedBgType;
this.stバー情報[index].BoxTypeChanged = song.isChangedBoxType;
this.stバー情報[index].BoxChara = song.BoxChara;
this.stバー情報[index].BoxCharaChanged = song.isChangedBoxChara;
this.stバー情報[index].strジャンル = song.strジャンル;
this.stバー情報[index].strサブタイトル = song.strサブタイトル;
this.stバー情報[index].ar難易度 = song.nLevel;
for (int f = 0; f < (int)Difficulty.Total; f++)
{
if (song.arスコア[f] != null)
this.stバー情報[index].b分岐 = song.arスコア[f]..b譜面分岐;
}
#region [Reroll cases]
if (stバー情報[index].nクリア == null)
this.stバー情報[index].nクリア = new int[2][];
if (stバー情報[index].nスコアランク == null)
this.stバー情報[index].nスコアランク = new int[2][];
for (int i = 0; i < 2; i++)
{
this.stバー情報[index].nクリア[i] = new int[5];
this.stバー情報[index].nスコアランク[i] = new int[5];
int ap = TJAPlayer3.GetActualPlayer(i);
var sr = song.arスコア[n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)];
this.stバー情報[index].nクリア[i] = sr.GPInfo[ap].nClear;
this.stバー情報[index].nスコアランク[i] = sr.GPInfo[ap].nScoreRank;
}
this.stバー情報[index].csu = song.uniqueId;
this.stバー情報[index].reference = song;
#endregion
// stバー情報[] の内容を1行ずつずらす。
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++)
{
C曲リストード song2 = this.rGetSideSong(i - barCenterNum);
int n = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
this.stバー情報[n].eバー種別 = this.e曲のバー種別を返す(song2);
this.stバー情報[n].ttkタイトル = this.ttk曲名テクスチャを生成する(this.stバー情報[n].strタイトル文字列, this.stバー情報[n].ForeColor, this.stバー情報[n].BackColor, stバー情報[n].eバー種別 == Eバー種別.Box ? this.pfBoxName : this.pfMusicName);
}
// 新しく最下部に表示されるパネル用のスキル値を取得。
for (int i = 0; i < 3; i++)
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)]..[i];
// 1行(100カウント)移動完了。
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新
{
TJAPlayer3.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更!
ctBarOpen.t開始(0, 260, 2, TJAPlayer3.Timer);
TJAPlayer3.stage選曲.NowGenre = this.r現在選択中の曲.strジャンル;
TJAPlayer3.stage選曲.NowBg = this.r現在選択中の曲.BgType;
TJAPlayer3.stage選曲.NowBgColor = this.r現在選択中の曲.BgColor;
TJAPlayer3.stage選曲.NowUseGenre = !this.r現在選択中の曲.isChangedBgType;
ctScoreFrameAnime.t開始(0, 6000, 1, TJAPlayer3.Timer);
}
//-----------------
#endregion
if (this.ttk選択している曲の曲名 != null)
{
this.ttk選択している曲の曲名 = null;
this.b選択曲が変更された = false;
}
if (this.ttk選択している曲のサブタイトル != null)
{
this.ttk選択している曲のサブタイトル = null;
this.b選択曲が変更された = false;
}
} }
this.b選択曲が変更された = true; this.b選択曲が変更された = true;
} }
@ -412,11 +536,138 @@ namespace TJAPlayer3
{ {
if( this.r現在選択中の曲 != null ) if( this.r現在選択中の曲 != null )
{ {
nNowChange = -1;
ctScoreFrameAnime.t停止(); ctScoreFrameAnime.t停止();
ctScoreFrameAnime.n現在の値 = 0; ctScoreFrameAnime.n現在の値 = 0;
ctBarOpen.t停止(); ctBarOpen.t停止();
ctBarOpen.n現在の値 = 0; ctBarOpen.n現在の値 = 0;
this.n目標のスクロールカウンタ -= 100; this.ctScrollCounter = new CCounter(0, 1000, TJAPlayer3.Skin.SongSelect_Scroll_Interval, TJAPlayer3.Timer);
#region [ ]
//-----------------
int barCenterNum = (TJAPlayer3.Skin.SongSelect_Bar_Count - 1) / 2;
// 選択曲と選択行を1つ上の行に移動。
tChangeSong(-1);
this.n現在の選択行 = ((this.n現在の選択行 - 1) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
// 選択曲から5つ上のパネル(=新しく最上部に表示されるパネル。消えてしまう一番下のパネルを再利用する)に、新しい曲の情報を記載する。
var song = this.rGetSideSong(-barCenterNum);
int index = ((this.n現在の選択行 - barCenterNum) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count; // 新しく最上部に表示されるパネルのインデックス012
this.stバー情報[index].strタイトル文字列 = song.strタイトル;
this.stバー情報[index].ForeColor = song.ForeColor;
this.stバー情報[index].BackColor = song.BackColor;
this.stバー情報[index].BoxColor = song.BoxColor;
this.stバー情報[index].BgColor = song.BgColor;
// Set default if unchanged here
this.stバー情報[index].BoxType = song.BoxType;
this.stバー情報[index].BgType = song.BgType;
this.stバー情報[index].BgTypeChanged = song.isChangedBgType;
this.stバー情報[index].BoxTypeChanged = song.isChangedBoxType;
this.stバー情報[index].BoxChara = song.BoxChara;
this.stバー情報[index].BoxCharaChanged = song.isChangedBoxChara;
this.stバー情報[index].strサブタイトル = song.strサブタイトル;
this.stバー情報[index].strジャンル = song.strジャンル;
this.stバー情報[index].ar難易度 = song.nLevel;
for (int f = 0; f < (int)Difficulty.Total; f++)
{
if (song.arスコア[f] != null)
this.stバー情報[index].b分岐 = song.arスコア[f]..b譜面分岐;
}
/*
if (stバー情報[index].nクリア == null)
this.stバー情報[index].nクリア = new int[5];
if (stバー情報[index].nスコアランク == null)
this.stバー情報[index].nスコアランク = new int[5];
for (int i = 0; i <= (int)Difficulty.Edit; i++)
{
if (song.arスコア[i] != null)
{
this.stバー情報[index].nクリア = song.arスコア[i]..nクリア;
this.stバー情報[index].nスコアランク = song.arスコア[i]..nスコアランク;
}
}
*/
#region [Reroll cases]
if (stバー情報[index].nクリア == null)
this.stバー情報[index].nクリア = new int[2][];
if (stバー情報[index].nスコアランク == null)
this.stバー情報[index].nスコアランク = new int[2][];
for (int i = 0; i < 2; i++)
{
this.stバー情報[index].nクリア[i] = new int[5];
this.stバー情報[index].nスコアランク[i] = new int[5];
int ap = TJAPlayer3.GetActualPlayer(i);
var sr = song.arスコア[n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)];
this.stバー情報[index].nクリア[i] = sr.GPInfo[ap].nClear;
this.stバー情報[index].nスコアランク[i] = sr.GPInfo[ap].nScoreRank;
}
this.stバー情報[index].csu = song.uniqueId;
this.stバー情報[index].reference = song;
#endregion
// stバー情報[] の内容を1行ずつずらす。
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++)
{
int n = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
var song2 = this.rGetSideSong(i - barCenterNum);
this.stバー情報[n].eバー種別 = this.e曲のバー種別を返す(song2);
this.stバー情報[n].ttkタイトル = this.ttk曲名テクスチャを生成する(this.stバー情報[n].strタイトル文字列, this.stバー情報[n].ForeColor, this.stバー情報[n].BackColor, stバー情報[n].eバー種別 == Eバー種別.Box ? this.pfBoxName : this.pfMusicName);
}
// 新しく最上部に表示されるパネル用のスキル値を取得。
for (int i = 0; i < 3; i++)
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)]..[i];
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新
this.ttk選択している曲の曲名 = null;
this.ttk選択している曲のサブタイトル = null;
TJAPlayer3.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更!
ctBarOpen.t開始(0, 260, 2, TJAPlayer3.Timer);
TJAPlayer3.stage選曲.NowGenre = this.r現在選択中の曲.strジャンル;
TJAPlayer3.stage選曲.NowBg = this.r現在選択中の曲.BgType;
TJAPlayer3.stage選曲.NowBgColor = this.r現在選択中の曲.BgColor;
TJAPlayer3.stage選曲.NowUseGenre = !this.r現在選択中の曲.isChangedBgType;
ctScoreFrameAnime.t開始(0, 6000, 1, TJAPlayer3.Timer);
//-----------------
#endregion
if (this.ttk選択している曲の曲名 != null)
{
this.ttk選択している曲の曲名 = null;
this.b選択曲が変更された = false;
}
if (this.ttk選択している曲のサブタイトル != null)
{
this.ttk選択している曲のサブタイトル = null;
this.b選択曲が変更された = false;
}
} }
this.b選択曲が変更された = true; this.b選択曲が変更された = true;
} }
@ -686,9 +937,7 @@ namespace TJAPlayer3
this.b登場アニメ全部完了 = false; this.b登場アニメ全部完了 = false;
this.n目標のスクロールカウンタ = 0; this.ctScrollCounter = new CCounter(0, 1000, TJAPlayer3.Skin.SongSelect_Scroll_Interval, TJAPlayer3.Timer);
this.n現在のスクロールカウンタ = 0;
this.nスクロールタイマ = -1;
// フォント作成。 // フォント作成。
// 曲リスト文字は2倍(面積4倍)でテクスチャに描画してから縮小表示するので、フォントサイズは2倍とする。 // 曲リスト文字は2倍(面積4倍)でテクスチャに描画してから縮小表示するので、フォントサイズは2倍とする。
@ -850,7 +1099,6 @@ namespace TJAPlayer3
//----------------- //-----------------
if (this.b初めての進行描画) if (this.b初めての進行描画)
{ {
this.nスクロールタイマ = (long)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
TJAPlayer3.stage選曲.t選択曲変更通知(); TJAPlayer3.stage選曲.t選択曲変更通知();
ctBarOpen.t開始(0, 260, 2, TJAPlayer3.Timer); ctBarOpen.t開始(0, 260, 2, TJAPlayer3.Timer);
@ -917,336 +1165,34 @@ namespace TJAPlayer3
} }
} }
int barCenterNum = (TJAPlayer3.Skin.SongSelect_Bar_Count - 1) / 2; this.ctScrollCounter.t進行();
// 進行。 // 進行。
if (n現在のスクロールカウンタ == 0) ct三角矢印アニメ.t進行Loop(); if (this.ctScrollCounter.n現在の値 == this.ctScrollCounter.n終了値) ct三角矢印アニメ.t進行Loop();
else ct三角矢印アニメ.n現在の値 = 0; else ct三角矢印アニメ.n現在の値 = 0;
{
#region [ (2) ]
//-----------------
long n現在時刻 = CSound管理.rc演奏用タイマ.n現在時刻;
if (n現在時刻 < this.nスクロールタイマ) // 念のため
this.nスクロールタイマ = n現在時刻;
const int nアニメ間隔 = 2;
while ((n現在時刻 - this.nスクロールタイマ) >= nアニメ間隔)
{
int n加速度 = 1;
int n残距離 = Math.Abs((int)(this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ));
#region [ n加速度を多くする]
//-----------------
if (n残距離 <= 10)
{
n加速度 = 1;
}
else if (n残距離 <= 100)
{
n加速度 = 2;
}
else if (n残距離 <= 300)
{
n加速度 = 3;
}
else if (n残距離 <= 500)
{
n加速度 = 4;
}
else
{
n加速度 = 650;
}
//-----------------
#endregion
#region [ ]
//-----------------
if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ) // (A) 正の方向に未達の場合:
{
this.n現在のスクロールカウンタ += n加速度; // カウンタを正方向に移動する。
if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)
this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ; // 到着!スクロール停止!
}
else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ) // (B) 負の方向に未達の場合:
{
this.n現在のスクロールカウンタ -= n加速度; // カウンタを負方向に移動する。
if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ) // 到着!スクロール停止!
this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;
}
//-----------------
#endregion
if (this.n現在のスクロールカウンタ >= 100) // 100カウント。
{
#region [ ]
//-----------------
// 選択曲と選択行を1つ下の行に移動。
tChangeSong(1);
this.n現在の選択行 = (this.n現在の選択行 + 1) % TJAPlayer3.Skin.SongSelect_Bar_Count;
// 選択曲から7つ下のパネル(=新しく最下部に表示されるパネル。消えてしまう一番上のパネルを再利用する)に、新しい曲の情報を記載する。
var song = this.rGetSideSong(barCenterNum);
int index = (this.n現在の選択行 + barCenterNum) % TJAPlayer3.Skin.SongSelect_Bar_Count; // 新しく最下部に表示されるパネルのインデックス012
this.stバー情報[index].strタイトル文字列 = song.strタイトル;
this.stバー情報[index].ForeColor = song.ForeColor;
this.stバー情報[index].BackColor = song.BackColor;
this.stバー情報[index].BoxColor = song.BoxColor;
this.stバー情報[index].BgColor = song.BgColor;
// Set default if unchanged here
this.stバー情報[index].BoxType = song.BoxType;
this.stバー情報[index].BgType = song.BgType;
this.stバー情報[index].BgTypeChanged = song.isChangedBgType;
this.stバー情報[index].BoxTypeChanged = song.isChangedBoxType;
this.stバー情報[index].BoxChara = song.BoxChara;
this.stバー情報[index].BoxCharaChanged = song.isChangedBoxChara;
this.stバー情報[index].strジャンル = song.strジャンル;
this.stバー情報[index].strサブタイトル = song.strサブタイトル;
this.stバー情報[index].ar難易度 = song.nLevel;
for (int f = 0; f < (int)Difficulty.Total; f++)
{
if (song.arスコア[f] != null)
this.stバー情報[index].b分岐 = song.arスコア[f]..b譜面分岐;
}
#region [Reroll cases]
if (stバー情報[index].nクリア == null)
this.stバー情報[index].nクリア = new int[2][];
if (stバー情報[index].nスコアランク == null)
this.stバー情報[index].nスコアランク = new int[2][];
for (int i = 0; i < 2; i++)
{
this.stバー情報[index].nクリア[i] = new int[5];
this.stバー情報[index].nスコアランク[i] = new int[5];
int ap = TJAPlayer3.GetActualPlayer(i);
var sr = song.arスコア[n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)];
this.stバー情報[index].nクリア[i] = sr.GPInfo[ap].nClear;
this.stバー情報[index].nスコアランク[i] = sr.GPInfo[ap].nScoreRank;
}
this.stバー情報[index].csu = song.uniqueId;
this.stバー情報[index].reference = song;
#endregion
// stバー情報[] の内容を1行ずつずらす。
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++)
{
C曲リストード song2 = this.rGetSideSong(i - barCenterNum);
int n = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
this.stバー情報[n].eバー種別 = this.e曲のバー種別を返す(song2);
this.stバー情報[n].ttkタイトル = this.ttk曲名テクスチャを生成する(this.stバー情報[n].strタイトル文字列, this.stバー情報[n].ForeColor, this.stバー情報[n].BackColor, stバー情報[n].eバー種別 == Eバー種別.Box ? this.pfBoxName : this.pfMusicName);
}
// 新しく最下部に表示されるパネル用のスキル値を取得。
for (int i = 0; i < 3; i++)
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)]..[i];
// 1行(100カウント)移動完了。
this.n現在のスクロールカウンタ -= 100;
this.n目標のスクロールカウンタ -= 100;
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新
if (this.n目標のスクロールカウンタ == 0)
{
TJAPlayer3.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更!
ctBarOpen.t開始(0, 260, 2, TJAPlayer3.Timer);
TJAPlayer3.stage選曲.NowGenre = this.r現在選択中の曲.strジャンル;
TJAPlayer3.stage選曲.NowBg = this.r現在選択中の曲.BgType;
TJAPlayer3.stage選曲.NowBgColor = this.r現在選択中の曲.BgColor;
TJAPlayer3.stage選曲.NowUseGenre = !this.r現在選択中の曲.isChangedBgType;
ctScoreFrameAnime.t開始(0, 6000, 1, TJAPlayer3.Timer);
}
//-----------------
#endregion
}
else if (this.n現在のスクロールカウンタ <= -100)
{
#region [ ]
//-----------------
// 選択曲と選択行を1つ上の行に移動。
tChangeSong(-1);
this.n現在の選択行 = ((this.n現在の選択行 - 1) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
// 選択曲から5つ上のパネル(=新しく最上部に表示されるパネル。消えてしまう一番下のパネルを再利用する)に、新しい曲の情報を記載する。
var song = this.rGetSideSong(-barCenterNum);
int index = ((this.n現在の選択行 - barCenterNum) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count; // 新しく最上部に表示されるパネルのインデックス012
this.stバー情報[index].strタイトル文字列 = song.strタイトル;
this.stバー情報[index].ForeColor = song.ForeColor;
this.stバー情報[index].BackColor = song.BackColor;
this.stバー情報[index].BoxColor = song.BoxColor;
this.stバー情報[index].BgColor = song.BgColor;
// Set default if unchanged here
this.stバー情報[index].BoxType = song.BoxType;
this.stバー情報[index].BgType = song.BgType;
this.stバー情報[index].BgTypeChanged = song.isChangedBgType;
this.stバー情報[index].BoxTypeChanged = song.isChangedBoxType;
this.stバー情報[index].BoxChara = song.BoxChara;
this.stバー情報[index].BoxCharaChanged = song.isChangedBoxChara;
this.stバー情報[index].strサブタイトル = song.strサブタイトル;
this.stバー情報[index].strジャンル = song.strジャンル;
this.stバー情報[index].ar難易度 = song.nLevel;
for (int f = 0; f < (int)Difficulty.Total; f++)
{
if (song.arスコア[f] != null)
this.stバー情報[index].b分岐 = song.arスコア[f]..b譜面分岐;
}
/*
if (stバー情報[index].nクリア == null)
this.stバー情報[index].nクリア = new int[5];
if (stバー情報[index].nスコアランク == null)
this.stバー情報[index].nスコアランク = new int[5];
for (int i = 0; i <= (int)Difficulty.Edit; i++)
{
if (song.arスコア[i] != null)
{
this.stバー情報[index].nクリア = song.arスコア[i]..nクリア;
this.stバー情報[index].nスコアランク = song.arスコア[i]..nスコアランク;
}
}
*/
#region [Reroll cases]
if (stバー情報[index].nクリア == null)
this.stバー情報[index].nクリア = new int[2][];
if (stバー情報[index].nスコアランク == null)
this.stバー情報[index].nスコアランク = new int[2][];
for (int i = 0; i < 2; i++)
{
this.stバー情報[index].nクリア[i] = new int[5];
this.stバー情報[index].nスコアランク[i] = new int[5];
int ap = TJAPlayer3.GetActualPlayer(i);
var sr = song.arスコア[n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)];
this.stバー情報[index].nクリア[i] = sr.GPInfo[ap].nClear;
this.stバー情報[index].nスコアランク[i] = sr.GPInfo[ap].nScoreRank;
}
this.stバー情報[index].csu = song.uniqueId;
this.stバー情報[index].reference = song;
#endregion
// stバー情報[] の内容を1行ずつずらす。
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++)
{
int n = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
var song2 = this.rGetSideSong(i - barCenterNum);
this.stバー情報[n].eバー種別 = this.e曲のバー種別を返す(song2);
this.stバー情報[n].ttkタイトル = this.ttk曲名テクスチャを生成する(this.stバー情報[n].strタイトル文字列, this.stバー情報[n].ForeColor, this.stバー情報[n].BackColor, stバー情報[n].eバー種別 == Eバー種別.Box ? this.pfBoxName : this.pfMusicName);
}
// 新しく最上部に表示されるパネル用のスキル値を取得。
for (int i = 0; i < 3; i++)
this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)]..[i];
// 1行(100カウント)移動完了。
this.n現在のスクロールカウンタ += 100;
this.n目標のスクロールカウンタ += 100;
this.t選択曲が変更された(false); // スクロールバー用に今何番目を選択しているかを更新
this.ttk選択している曲の曲名 = null;
this.ttk選択している曲のサブタイトル = null;
if (this.n目標のスクロールカウンタ == 0)
{
TJAPlayer3.stage選曲.t選択曲変更通知(); // スクロール完了=選択曲変更!
ctBarOpen.t開始(0, 260, 2, TJAPlayer3.Timer);
TJAPlayer3.stage選曲.NowGenre = this.r現在選択中の曲.strジャンル;
TJAPlayer3.stage選曲.NowBg = this.r現在選択中の曲.BgType;
TJAPlayer3.stage選曲.NowBgColor = this.r現在選択中の曲.BgColor;
TJAPlayer3.stage選曲.NowUseGenre = !this.r現在選択中の曲.isChangedBgType;
ctScoreFrameAnime.t開始(0, 6000, 1, TJAPlayer3.Timer);
}
//-----------------
#endregion
}
if (this.b選択曲が変更された && n現在のスクロールカウンタ == 0)
{
if (this.ttk選択している曲の曲名 != null)
{
this.ttk選択している曲の曲名 = null;
this.b選択曲が変更された = false;
}
if (this.ttk選択している曲のサブタイトル != null)
{
this.ttk選択している曲のサブタイトル = null;
this.b選択曲が変更された = false;
}
}
this.nスクロールタイマ += nアニメ間隔;
}
//-----------------
#endregion
}
int i選曲バーX座標 = 673; //選曲バーの座標用 int i選曲バーX座標 = 673; //選曲バーの座標用
int i選択曲バーX座標 = 665; //選択曲バーの座標用 int i選択曲バーX座標 = 665; //選択曲バーの座標用
int barCenterNum = (TJAPlayer3.Skin.SongSelect_Bar_Count - 1) / 2;
if (this.ctScrollCounter.n現在の値 == this.ctScrollCounter.n終了値)
{
nNowChange = 0;
}
#region [ (2) ] #region [ (2) ]
//----------------- //-----------------
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++) // パネルは全13枚。 for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++) // パネルは全13枚。
{ {
if ((i == 0 && this.n現在のスクロールカウンタ > 0) || // 最上行は、上に移動中なら表示しない。 int index = i + nNowChange;
(i == TJAPlayer3.Skin.SongSelect_Bar_Count - 1 && this.n現在のスクロールカウンタ < 0)) // 最下行は、下に移動中なら表示しない。 if (((index < 0 || index >= TJAPlayer3.Skin.SongSelect_Bar_Count) && this.ctScrollCounter.n現在の値 != this.ctScrollCounter.n終了値))
continue; continue;
int nパネル番号 = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count; int nパネル番号 = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
int n見た目の行番号 = i; int n見た目の行番号 = i;
int n次のパネル番号 = (this.n現在のスクロールカウンタ <= 0) ? ((i + 1) % TJAPlayer3.Skin.SongSelect_Bar_Count) : (((i - 1) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count); int n次のパネル番号 = (index % TJAPlayer3.Skin.SongSelect_Bar_Count);
int x = i選曲バーX座標; int x = i選曲バーX座標;
#region [Positions and layouts] #region [Positions and layouts]
@ -1291,11 +1237,11 @@ namespace TJAPlayer3
#endregion #endregion
// x set here // x set here
int xAnime = xZahyou + ((int)((xNextZahyou - xZahyou) int xAnime = xZahyou + (int)((xNextZahyou - xZahyou)
* (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0))); * (1.0 - fNowScrollAnime));
int y = yZahyou + ((int)((yNextZahyou - yZahyou) int y = yZahyou + (int)((yNextZahyou - yZahyou)
* (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0))); * (1.0 - fNowScrollAnime));
// (B) スクロール中の選択曲バー、またはその他のバーの描画。 // (B) スクロール中の選択曲バー、またはその他のバーの描画。
@ -1477,7 +1423,7 @@ namespace TJAPlayer3
if (n現在のスクロールカウンタ != 0 || n見た目の行番号 != barCenterNum) if (ctScrollCounter.n現在の値 != ctScrollCounter.n終了値 || n見た目の行番号 != barCenterNum)
{ {
int songType = 0; int songType = 0;
if (this.stバー情報[nパネル番号].ar難易度[(int)Difficulty.Dan] >= 0) if (this.stバー情報[nパネル番号].ar難易度[(int)Difficulty.Dan] >= 0)
@ -1518,17 +1464,19 @@ namespace TJAPlayer3
else else
ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).Opacity = 255; ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).Opacity = 255;
if (n現在のスクロールカウンタ != 0) if (ctScrollCounter.n現在の値 != ctScrollCounter.n終了値)
ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, xAnime - Box_X + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[0], y - Box_Y + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[1]); ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device,
xAnime - Box_X + GetTitleOffsetX(this.stバー情報[nパネル番号].eバー種別), y - Box_Y + GetTitleOffsetY(this.stバー情報[nパネル番号].eバー種別));
else if (n見た目の行番号 != barCenterNum) else if (n見た目の行番号 != barCenterNum)
ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, xAnime - Box_X + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[0], y - Box_Y + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[1]); ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device,
xAnime - Box_X + GetTitleOffsetX(this.stバー情報[nパネル番号].eバー種別), y - Box_Y + GetTitleOffsetY(this.stバー情報[nパネル番号].eバー種別));
#endregion #endregion
//----------------- //-----------------
} }
#endregion #endregion
if (this.n現在のスクロールカウンタ == 0) if (this.ctScrollCounter.n現在の値 == this.ctScrollCounter.n終了値)
{ {
#region [ Draw BarCenter ] #region [ Draw BarCenter ]
@ -2039,20 +1987,22 @@ namespace TJAPlayer3
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++) // パネルは全13枚。 for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++) // パネルは全13枚。
{ {
if ((i == 0 && this.n現在のスクロールカウンタ > 0) || // 最上行は、上に移動中なら表示しない。 int index = i + nNowChange;
(i == TJAPlayer3.Skin.SongSelect_Bar_Count - 1 && this.n現在のスクロールカウンタ < 0)) // 最下行は、下に移動中なら表示しない。 if (((index < 0 || index >= TJAPlayer3.Skin.SongSelect_Bar_Count) && this.ctScrollCounter.n現在の値 != this.ctScrollCounter.n終了値))
continue; continue;
int nパネル番号 = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count; int nパネル番号 = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
int n見た目の行番号 = i; int n見た目の行番号 = i;
int n次のパネル番号 = (this.n現在のスクロールカウンタ <= 0) ? ((i + 1) % TJAPlayer3.Skin.SongSelect_Bar_Count) : (((i - 1) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count); int n次のパネル番号 = ((i + nNowChange) % TJAPlayer3.Skin.SongSelect_Bar_Count);
//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 ) ) );
int x = i選曲バーX座標; int x = i選曲バーX座標;
int xAnime = TJAPlayer3.Skin.SongSelect_Bar_X[n見た目の行番号] + ((int)((TJAPlayer3.Skin.SongSelect_Bar_X[n次のパネル番号] - TJAPlayer3.Skin.SongSelect_Bar_X[n見た目の行番号]) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0))); int xAnime = TJAPlayer3.Skin.SongSelect_Bar_X[n見た目の行番号] + ((int)((TJAPlayer3.Skin.SongSelect_Bar_X[n次のパネル番号] - TJAPlayer3.Skin.SongSelect_Bar_X[n見た目の行番号]) *
fNowScrollAnime));
int y = TJAPlayer3.Skin.SongSelect_Bar_Y[n見た目の行番号] + ((int)((TJAPlayer3.Skin.SongSelect_Bar_Y[n次のパネル番号] - TJAPlayer3.Skin.SongSelect_Bar_Y[n見た目の行番号]) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0))); int y = TJAPlayer3.Skin.SongSelect_Bar_Y[n見た目の行番号] + ((int)((TJAPlayer3.Skin.SongSelect_Bar_Y[n次のパネル番号] - TJAPlayer3.Skin.SongSelect_Bar_Y[n見た目の行番号]) *
fNowScrollAnime));
if ((i == barCenterNum) && (this.n現在のスクロールカウンタ == 0)) if ((i == barCenterNum) && ctScrollCounter.n現在の値 == ctScrollCounter.n終了値)
{ {
CTexture tx選択している曲のサブタイトル = null; CTexture tx選択している曲のサブタイトル = null;
@ -2107,10 +2057,10 @@ namespace TJAPlayer3
if (this.ttk選択している曲の曲名 != null) if (this.ttk選択している曲の曲名 != null)
{ {
ResolveTitleTexture(this.ttk選択している曲の曲名, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, ResolveTitleTexture(this.ttk選択している曲の曲名, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device,
xAnime + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[0] + xAnime + GetTitleOffsetX(this.stバー情報[nパネル番号].eバー種別) +
(r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMoveX : centerMoveX / 1.1f) : 0), (r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMoveX : centerMoveX / 1.1f) : 0),
y + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[1] - y + GetTitleOffsetY(this.stバー情報[nパネル番号].eバー種別) -
(r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMove : centerMove / 1.1f) : 0)); (r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMove : centerMove / 1.1f) : 0));
} }
} }
@ -2119,10 +2069,10 @@ namespace TJAPlayer3
if (this.ttk選択している曲の曲名 != null) if (this.ttk選択している曲の曲名 != null)
{ {
ResolveTitleTexture(this.ttk選択している曲の曲名, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, ResolveTitleTexture(this.ttk選択している曲の曲名, TJAPlayer3.Skin.SongSelect_VerticalText).t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device,
xAnime + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[0] + xAnime + GetTitleOffsetX(this.stバー情報[nパネル番号].eバー種別) +
(r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMoveX : centerMoveX / 1.1f) : 0), (r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMoveX : centerMoveX / 1.1f) : 0),
y + TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[1] - y + GetTitleOffsetY(this.stバー情報[nパネル番号].eバー種別) -
(r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMove : centerMove / 1.1f) : 0)); (r現在選択中の曲.eード種別 != C曲リストード.Eード種別.BACKBOX ? (this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Box ? centerMove : centerMove / 1.1f) : 0));
} }
} }
@ -2472,10 +2422,10 @@ namespace TJAPlayer3
= new Dictionary<TitleTextureKey, CTexture>(); = new Dictionary<TitleTextureKey, CTexture>();
private Font ft曲リスト用フォント; private Font ft曲リスト用フォント;
private long nスクロールタイマ; //public int n現在のスクロールカウンタ;
public int n現在のスクロールカウンタ;
private int n現在の選択行; private int n現在の選択行;
private int n目標のスクロールカウンタ; //private int n目標のスクロールカウンタ;
private CCounter ctScrollCounter;
/* /*
private readonly Point[] ptバーの座標 = new Point[] { private readonly Point[] ptバーの座標 = new Point[] {
@ -2495,6 +2445,42 @@ namespace TJAPlayer3
private int nCurrentPosition = 0; private int nCurrentPosition = 0;
private int nNumOfItems = 0; private int nNumOfItems = 0;
private int nNowChange;
private int GetTitleOffsetX(Eバー種別 bar)
{
switch (bar)
{
case Eバー種別.Score:
return TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[0];
case Eバー種別.Box:
return TJAPlayer3.Skin.SongSelect_Bar_Box_Offset[0];
case Eバー種別.BackBox:
return TJAPlayer3.Skin.SongSelect_Bar_BackBox_Offset[0];
case Eバー種別.Random:
return TJAPlayer3.Skin.SongSelect_Bar_Random_Offset[0];
default:
return TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[0];
}
}
private int GetTitleOffsetY(Eバー種別 bar)
{
switch (bar)
{
case Eバー種別.Score:
return TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[1];
case Eバー種別.Box:
return TJAPlayer3.Skin.SongSelect_Bar_Box_Offset[1];
case Eバー種別.BackBox:
return TJAPlayer3.Skin.SongSelect_Bar_BackBox_Offset[1];
case Eバー種別.Random:
return TJAPlayer3.Skin.SongSelect_Bar_Random_Offset[1];
default:
return TJAPlayer3.Skin.SongSelect_Bar_Title_Offset[1];
}
}
private void DrawBarCenter(CTexture texture, int x, int y, int moveX, int move, bool changeColor, bool drawOverlay, bool fullScaleOverlay) private void DrawBarCenter(CTexture texture, int x, int y, int moveX, int move, bool changeColor, bool drawOverlay, bool fullScaleOverlay)
{ {
if (changeColor) if (changeColor)

View File

@ -396,6 +396,7 @@ namespace TJAPlayer3
} }
this.nJPOSSCROLL = new int[ 5 ]; this.nJPOSSCROLL = new int[ 5 ];
this.bLEVELHOLD = new bool[]{ false, false, false, false, false }; this.bLEVELHOLD = new bool[]{ false, false, false, false, false };
this.JPOSCROLLX = new int[5];
// Double play set here // Double play set here
@ -661,6 +662,12 @@ namespace TJAPlayer3
public int nMine; public int nMine;
} }
public int[] JPOSCROLLX = new int[5];
public int GetJPOSCROLLX(int player)
{
double screen_ratio = TJAPlayer3.Skin.Resolution[0] / 1280.0;
return (int)(JPOSCROLLX[player] * screen_ratio);
}
public int[] NoteOriginX public int[] NoteOriginX
{ {
get get
@ -668,29 +675,38 @@ namespace TJAPlayer3
if (TJAPlayer3.ConfigIni.nPlayerCount == 5) if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{ {
return new int[] { return new int[] {
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 0), TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 0) + GetJPOSCROLLX(0),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 1), TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 1) + GetJPOSCROLLX(1),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 2), TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 2) + GetJPOSCROLLX(2),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 3), TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 3) + GetJPOSCROLLX(3),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 4) TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 4) + GetJPOSCROLLX(4)
}; };
} }
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3) else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{ {
return new int[] { return new int[] {
TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 0), TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 0) + GetJPOSCROLLX(0),
TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 1), TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 1) + GetJPOSCROLLX(1),
TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 2), TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 2) + GetJPOSCROLLX(2),
TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 3) TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 3) + GetJPOSCROLLX(3)
}; };
} }
else else
{ {
return TJAPlayer3.Skin.nScrollFieldX; return new int[] {
TJAPlayer3.Skin.nScrollFieldX[0] + GetJPOSCROLLX(0),
TJAPlayer3.Skin.nScrollFieldX[1] + GetJPOSCROLLX(1)
};
} }
} }
} }
//Unused
public int[] JPOSCROLLY = new int[5];
public int GetJPOSCROLLY(int player)
{
return JPOSCROLLY[player];
}
public int[] NoteOriginY public int[] NoteOriginY
{ {
get get
@ -698,25 +714,28 @@ namespace TJAPlayer3
if (TJAPlayer3.ConfigIni.nPlayerCount == 5) if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{ {
return new int[] { return new int[] {
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 0), TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 0) + GetJPOSCROLLY(0),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 1), TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 1) + GetJPOSCROLLY(1),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 2), TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 2) + GetJPOSCROLLY(2),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 3), TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 3) + GetJPOSCROLLY(3),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 4) TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 4) + GetJPOSCROLLY(4)
}; };
} }
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3) else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{ {
return new int[] { return new int[] {
TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 0), TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 0) + GetJPOSCROLLY(0),
TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 1), TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 1) + GetJPOSCROLLY(1),
TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 2), TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 2) + GetJPOSCROLLY(2),
TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 3) TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 3) + GetJPOSCROLLY(3)
}; };
} }
else else
{ {
return TJAPlayer3.Skin.nScrollFieldY; return new int[] {
TJAPlayer3.Skin.nScrollFieldY[0] + GetJPOSCROLLY(0),
TJAPlayer3.Skin.nScrollFieldY[1] + GetJPOSCROLLY(1)
};
} }
} }
} }
@ -3881,14 +3900,7 @@ namespace TJAPlayer3
case 0xE2: case 0xE2:
if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) ) if( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )
{ {
if (nPlayer == 0) TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.t判定枠移動(dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].db移動時間, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動距離px, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動方向, nPlayer);
{
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.t判定枠移動(dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].db移動時間, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動距離px, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動方向);
}
else
{
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.t判定枠移動2(dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].db移動時間, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動距離px, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動方向);
}
this.nJPOSSCROLL[ nPlayer ]++; this.nJPOSSCROLL[ nPlayer ]++;
pChip.bHit = true; pChip.bHit = true;
} }
@ -4342,13 +4354,15 @@ namespace TJAPlayer3
{ {
this.t演奏位置の変更(0, i); this.t演奏位置の変更(0, i);
this.actPlayInfo.NowMeasure[i] = 0; this.actPlayInfo.NowMeasure[i] = 0;
JPOSCROLLX[i] = 0;
JPOSCROLLY[i] = 0;
} }
TJAPlayer3.stage演奏ドラム画面.On活性化(); TJAPlayer3.stage演奏ドラム画面.On活性化();
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ ) for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
{ {
this.chip現在処理中の連打チップ[ i ] = null; this.chip現在処理中の連打チップ[ i ] = null;
this.actChara.b風船連打中[i] = false; this.actChara.b風船連打中[i] = false;
this.actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Normal, true); this.actChara.ReturnDefaultAnime(i, true);
} }
this.bPAUSE = false; this.bPAUSE = false;
} }

View File

@ -490,13 +490,14 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale; TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale; TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device,
(TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
+ chara_x, TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
chara_y);
} }
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2) if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画((TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0], TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i); TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0],
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
if (endAnime) if (endAnime)
{ {
@ -516,13 +517,14 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale; TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale; TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device,
(TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
+ chara_x, TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
chara_y);
} }
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2) if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画((TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0], TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i); TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0],
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, nowOpacity, true, player : i);
if (endAnime) if (endAnime)
{ {
@ -536,20 +538,21 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale; TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.X = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale; TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].vc拡大縮小倍率.Y = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device, TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device,
(TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) + TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
chara_x, TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
chara_y);
} }
if (TJAPlayer3.ConfigIni.nPlayerCount <= 2) if (TJAPlayer3.ConfigIni.nPlayerCount <= 2)
TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画((TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0], TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, 255, true, player : i); TJAPlayer3.stage演奏ドラム画面.PuchiChara.On進行描画(
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonX[0],
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + TJAPlayer3.Skin.Game_PuchiChara_BalloonY[i], false, 255, true, player : i);
} }
} }
} }
} }
private void ReturnDefaultAnime(int player, bool resetCounter) public void ReturnDefaultAnime(int player, bool resetCounter)
{ {
if (TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[player] && TJAPlayer3.Skin.Characters_GoGoTime_Ptn[this.iCurrentCharacter[player]] != 0) if (TJAPlayer3.stage演奏ドラム画面.bIsGOGOTIME[player] && TJAPlayer3.Skin.Characters_GoGoTime_Ptn[this.iCurrentCharacter[player]] != 0)
{ {

View File

@ -286,8 +286,10 @@ namespace TJAPlayer3
nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer]; nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer]; nY = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
} }
nX += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
nY += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
switch( st状態[ i ].judge ) switch ( st状態[ i ].judge )
{ {
case E判定.Perfect: case E判定.Perfect:
case E判定.Great: case E判定.Great:
@ -375,6 +377,8 @@ namespace TJAPlayer3
x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer]; x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[this.st状態[i].nPlayer];
y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer]; y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[this.st状態[i].nPlayer];
} }
x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(this.st状態[i].nPlayer);
y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(this.st状態[i].nPlayer);
x -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szテクスチャサイズ.Width * (f倍率 - 1.0f) / 2.0f); x -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szテクスチャサイズ.Width * (f倍率 - 1.0f) / 2.0f);
y -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szテクスチャサイズ.Height * (f倍率 - 1.0f) / 2.0f); y -= (TJAPlayer3.Tx.Effects_Hit_Explosion_Big.szテクスチャサイズ.Height * (f倍率 - 1.0f) / 2.0f);

View File

@ -35,16 +35,12 @@ namespace TJAPlayer3
this.stBranch[i].nBranchレイヤー透明度 = 0; this.stBranch[i].nBranchレイヤー透明度 = 0;
this.stBranch[i].nBranch文字透明度 = 0; this.stBranch[i].nBranch文字透明度 = 0;
this.stBranch[i].nY座標 = 0; this.stBranch[i].nY座標 = 0;
this.n総移動時間[i] = -1;
} }
this.ctゴーゴー = new CCounter(); this.ctゴーゴー = new CCounter();
this.n総移動時間 = -1;
this.n総移動時間2 = -1;
this.nDefaultJudgePos[0, 0] = TJAPlayer3.Skin.nScrollFieldX[0];
this.nDefaultJudgePos[0, 1] = TJAPlayer3.Skin.nScrollFieldY[0];
this.nDefaultJudgePos[1, 0] = TJAPlayer3.Skin.nScrollFieldX[1];
this.nDefaultJudgePos[1, 1] = TJAPlayer3.Skin.nScrollFieldY[1];
this.ctゴーゴー炎 = new CCounter(0, 6, 50, TJAPlayer3.Timer); this.ctゴーゴー炎 = new CCounter(0, 6, 50, TJAPlayer3.Timer);
base.On活性化(); base.On活性化();
} }
@ -56,10 +52,6 @@ namespace TJAPlayer3
this.st状態[i].ct進行 = null; this.st状態[i].ct進行 = null;
this.stBranch[i].ct分岐アニメ進行 = null; this.stBranch[i].ct分岐アニメ進行 = null;
} }
TJAPlayer3.Skin.nScrollFieldX[0] = this.nDefaultJudgePos[0, 0];
TJAPlayer3.Skin.nScrollFieldY[0] = this.nDefaultJudgePos[0, 1];
TJAPlayer3.Skin.nScrollFieldX[1] = this.nDefaultJudgePos[1, 0];
TJAPlayer3.Skin.nScrollFieldY[1] = this.nDefaultJudgePos[1, 1];
this.ctゴーゴー = null; this.ctゴーゴー = null;
base.On非活性化(); base.On非活性化();
@ -723,46 +715,28 @@ namespace TJAPlayer3
} }
var nTime = (long)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)); var nTime = (long)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
if (this.n総移動時間 != -1) for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{ {
if (n移動方向 == 1) if (this.n総移動時間[i] != -1)
{ {
TJAPlayer3.Skin.nScrollFieldX[0] = this.n移動開始X + (int)((((int)nTime - this.n移動開始時刻) / (double)(this.n総移動時間)) * this.n移動距離px); if (n移動方向[i] == 1)
TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[0] = this.n移動開始X + (int)((((int)nTime - this.n移動開始時刻) / (double)(this.n総移動時間)) * this.n移動距離px); {
TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動開始X[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
//TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動開始X[i] + (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
} }
else else
{ {
TJAPlayer3.Skin.nScrollFieldX[0] = this.n移動開始X - (int)((((int)nTime - this.n移動開始時刻) / (double)(this.n総移動時間)) * this.n移動距離px); TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動開始X[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[0] = this.n移動開始X - (int)((((int)nTime - this.n移動開始時刻) / (double)(this.n総移動時間)) * this.n移動距離px); //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動開始X[i] - (int)((((int)nTime - this.n移動開始時刻[i]) / (double)(this.n総移動時間[i])) * this.n移動距離px[i]);
} }
if (((int)nTime) > this.n移動開始時刻 + this.n総移動時間) if (((int)nTime) > this.n移動開始時刻[i] + this.n総移動時間[i])
{ {
this.n総移動時間 = -1; this.n総移動時間[i] = -1;
TJAPlayer3.Skin.nScrollFieldX[0] = this.n移動目的場所X; TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動目的場所X[i];
TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[0] = this.n移動目的場所X; //TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[i] = this.n移動目的場所X[i];
} }
} }
if (this.n総移動時間2 != -1)
{
if (n移動方向2 == 1)
{
TJAPlayer3.Skin.nScrollFieldX[1] = this.n移動開始X2 + (int)((((int)nTime - this.n移動開始時刻2) / (double)(this.n総移動時間2)) * this.n移動距離px2);
TJAPlayer3.Skin.Game_Effect_FlyingNotes_StartPoint_X[1] = this.n移動開始X2 + (int)((((int)nTime - this.n移動開始時刻2) / (double)(this.n総移動時間2)) * this.n移動距離px2);
}
else
{
TJAPlayer3.Skin.nScrollFieldX[1] = this.n移動開始X2 - (int)((((int)nTime - this.n移動開始時刻2) / (double)(this.n総移動時間2)) * this.n移動距離px2);
TJAPlayer3.Skin.Game_Effect_FlyingNotes_StartPoint_X[1] = this.n移動開始X2 - (int)((((int)nTime - this.n移動開始時刻2) / (double)(this.n総移動時間2)) * this.n移動距離px2);
}
if (((int)nTime) > this.n移動開始時刻2 + this.n総移動時間2)
{
this.n総移動時間2 = -1;
TJAPlayer3.Skin.nScrollFieldX[1] = this.n移動目的場所X2;
TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[1] = this.n移動目的場所X2;
}
} }
@ -794,7 +768,9 @@ namespace TJAPlayer3
TJAPlayer3.Tx.Judge_Frame.b加算合成 = TJAPlayer3.Skin.Game_JudgeFrame_AddBlend; TJAPlayer3.Tx.Judge_Frame.b加算合成 = TJAPlayer3.Skin.Game_JudgeFrame_AddBlend;
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{ {
TJAPlayer3.Tx.Judge_Frame.t2D描画(TJAPlayer3.app.Device, TJAPlayer3.stage演奏ドラム画面.NoteOriginX[i], TJAPlayer3.stage演奏ドラム画面.NoteOriginY[i], new Rectangle(0, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1])); TJAPlayer3.Tx.Judge_Frame.t2D描画(TJAPlayer3.app.Device,
TJAPlayer3.stage演奏ドラム画面.NoteOriginX[i],
TJAPlayer3.stage演奏ドラム画面.NoteOriginY[i], new Rectangle(0, 0, TJAPlayer3.Skin.Game_Notes_Size[0], TJAPlayer3.Skin.Game_Notes_Size[1]));
} }
} }
@ -886,6 +862,8 @@ namespace TJAPlayer3
x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[i]; x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[i];
y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[i]; y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[i];
} }
x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i);
y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i);
switch (st状態[i].judge) switch (st状態[i].judge)
{ {
@ -974,31 +952,19 @@ namespace TJAPlayer3
TJAPlayer3.stage演奏ドラム画面.actLane.t分岐レイヤー_コース変化(n現在, n次回, nPlayer); TJAPlayer3.stage演奏ドラム画面.actLane.t分岐レイヤー_コース変化(n現在, n次回, nPlayer);
} }
public void t判定枠移動(double db移動時間, int n移動px, int n移動方向) public void t判定枠移動(double db移動時間, int n移動px, int n移動方向, int nPlayer)
{ {
this.n移動開始時刻 = (int)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0)); this.n移動開始時刻[nPlayer] = (int)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
this.n移動開始X = TJAPlayer3.Skin.nScrollFieldX[0]; this.n移動開始X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer];
this.n総移動時間 = (int)(db移動時間 * 1000); this.n総移動時間[nPlayer] = (int)(db移動時間 * 1000);
this.n移動方向 = n移動方向; this.n移動方向[nPlayer] = n移動方向;
this.n移動距離px = n移動px; this.n移動距離px[nPlayer] = n移動px;
if (n移動方向 == 0) if (n移動方向 == 0)
this.n移動目的場所X = TJAPlayer3.Skin.nScrollFieldX[0] - n移動px; this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] - n移動px;
else else
this.n移動目的場所X = TJAPlayer3.Skin.nScrollFieldX[0] + n移動px; this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] + n移動px;
} }
public void t判定枠移動2(double db移動時間, int n移動px, int n移動方向)
{
this.n移動開始時刻2 = (int)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
this.n移動開始X2 = TJAPlayer3.Skin.nScrollFieldX[1];
this.n総移動時間2 = (int)(db移動時間 * 1000);
this.n移動方向2 = n移動方向;
this.n移動距離px2 = n移動px;
if (n移動方向 == 0)
this.n移動目的場所X2 = TJAPlayer3.Skin.nScrollFieldX[1] - n移動px;
else
this.n移動目的場所X2 = TJAPlayer3.Skin.nScrollFieldX[1] + n移動px;
}
#region[ private ] #region[ private ]
//----------------- //-----------------
//private CTexture txLane; //private CTexture txLane;
@ -1056,21 +1022,12 @@ namespace TJAPlayer3
} }
private int n総移動時間; private int[] n総移動時間 = new int[5];
private int n移動開始X; private int[] n移動開始X = new int[5];
private int n移動開始時刻; private int[] n移動開始時刻 = new int[5];
private int n移動距離px; private int[] n移動距離px = new int[5];
private int n移動目的場所X; private int[] n移動目的場所X = new int[5];
private int n移動方向; private int[] n移動方向 = new int[5];
private int n総移動時間2;
private int n移動開始X2;
private int n移動開始時刻2;
private int n移動距離px2;
private int n移動目的場所X2;
private int n移動方向2;
internal int[,] nDefaultJudgePos = new int[5, 2];
//----------------- //-----------------
#endregion #endregion

View File

@ -78,8 +78,8 @@ namespace TJAPlayer3
x = TJAPlayer3.Skin.Game_Judge_X[j]; x = TJAPlayer3.Skin.Game_Judge_X[j];
y = TJAPlayer3.Skin.Game_Judge_Y[j]; y = TJAPlayer3.Skin.Game_Judge_Y[j];
} }
x += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[0]); x += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[0]) + TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(j);
y += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[1]); y += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[1]) + TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(j);
TJAPlayer3.Tx.Judge.Opacity = (int)(255f - (JudgeAnimes[j, i].counter.n現在の値 >= 360 ? ((JudgeAnimes[j, i].counter.n現在の値 - 360) / 50.0f) * 255f : 0f)); TJAPlayer3.Tx.Judge.Opacity = (int)(255f - (JudgeAnimes[j, i].counter.n現在の値 >= 360 ? ((JudgeAnimes[j, i].counter.n現在の値 - 360) / 50.0f) * 255f : 0f));
TJAPlayer3.Tx.Judge.t2D描画(TJAPlayer3.app.Device, x, y, JudgeAnimes[j, i].rc); TJAPlayer3.Tx.Judge.t2D描画(TJAPlayer3.app.Device, x, y, JudgeAnimes[j, i].rc);

View File

@ -2034,12 +2034,11 @@ namespace TJAPlayer3
switch (TJAPlayer3.ConfigIni.nPlayerCount) switch (TJAPlayer3.ConfigIni.nPlayerCount)
{ {
case 0:
case 1: case 1:
case 2:
nSenotesX = TJAPlayer3.Skin.nSENotesX[nPlayer]; nSenotesX = TJAPlayer3.Skin.nSENotesX[nPlayer];
nSenotesY = TJAPlayer3.Skin.nSENotesY[nPlayer]; nSenotesY = TJAPlayer3.Skin.nSENotesY[nPlayer];
break; break;
case 2:
case 3: case 3:
case 4: case 4:
nSenotesX = TJAPlayer3.Skin.nSENotes_4P[0]; nSenotesX = TJAPlayer3.Skin.nSENotes_4P[0];
@ -2052,7 +2051,7 @@ namespace TJAPlayer3
} }
this.ct手つなぎ.t進行Loop(); this.ct手つなぎ.t進行Loop();
int nHand = this.ct手つなぎ.n現在の値 < 30 ? this.ct手つなぎ.n現在の値 : 60 - this.ct手つなぎ.n現在の値; float fHand = (this.ct手つなぎ.n現在の値 < 30 ? this.ct手つなぎ.n現在の値 : 60 - this.ct手つなぎ.n現在の値) / 30.0f;
//x = ( x ) - ( ( int ) ( (TJAPlayer3.Skin.Game_Note_Size[0] * pChip.dbチップサイズ倍率 ) / 2.0 ) ); //x = ( x ) - ( ( int ) ( (TJAPlayer3.Skin.Game_Note_Size[0] * pChip.dbチップサイズ倍率 ) / 2.0 ) );
@ -2080,17 +2079,29 @@ namespace TJAPlayer3
case 0x1A: case 0x1A:
case 0x1B: case 0x1B:
{ {
int moveX = (int)(fHand * TJAPlayer3.Skin.Game_Notes_Arm_Move[0]);
int moveY = (int)(fHand * TJAPlayer3.Skin.Game_Notes_Arm_Move[1]);
if (TJAPlayer3.ConfigIni.eSTEALTH[TJAPlayer3.GetActualPlayer(nPlayer)] == Eステルスモード.OFF && pChip.bShow) if (TJAPlayer3.ConfigIni.eSTEALTH[TJAPlayer3.GetActualPlayer(nPlayer)] == Eステルスモード.OFF && pChip.bShow)
{ {
if (nPlayer == 0) if (nPlayer != TJAPlayer3.ConfigIni.nPlayerCount - 1)
{ {
TJAPlayer3.Tx.Notes_Arm?.t2D上下反転描画(device, x + 25, (y + 74) + nHand); //上から下
TJAPlayer3.Tx.Notes_Arm?.t2D上下反転描画(device, x + 60, (y + 104) - nHand); TJAPlayer3.Tx.Notes_Arm?.t2D上下反転描画(device,
x + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Left_X[0] + moveX,
y + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Left_Y[0] + moveY);
TJAPlayer3.Tx.Notes_Arm?.t2D上下反転描画(device,
x + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Right_X[0] - moveX,
y + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Right_Y[0] - moveY);
} }
else if (nPlayer == 1) if (nPlayer != 0)
{ {
TJAPlayer3.Tx.Notes_Arm?.t2D描画(device, x + 25, (y - 44) + nHand); //下から上
TJAPlayer3.Tx.Notes_Arm?.t2D描画(device, x + 60, (y - 14) - nHand); TJAPlayer3.Tx.Notes_Arm?.t2D描画(device,
x + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Left_X[1] + moveX,
y + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Left_Y[1] + moveY);
TJAPlayer3.Tx.Notes_Arm?.t2D描画(device,
x + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Right_X[1] - moveX,
y + TJAPlayer3.Skin.Game_Notes_Arm_Offset_Right_Y[1] - moveY);
} }
NotesManager.DisplayNote(nPlayer, x, y, pChip, num9); NotesManager.DisplayNote(nPlayer, x, y, pChip, num9);
NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip); NotesManager.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip);
@ -2125,12 +2136,11 @@ namespace TJAPlayer3
switch (TJAPlayer3.ConfigIni.nPlayerCount) switch (TJAPlayer3.ConfigIni.nPlayerCount)
{ {
case 0:
case 1: case 1:
case 2:
nSenotesX = TJAPlayer3.Skin.nSENotesX[nPlayer]; nSenotesX = TJAPlayer3.Skin.nSENotesX[nPlayer];
nSenotesY = TJAPlayer3.Skin.nSENotesY[nPlayer]; nSenotesY = TJAPlayer3.Skin.nSENotesY[nPlayer];
break; break;
case 2:
case 3: case 3:
case 4: case 4:
nSenotesX = TJAPlayer3.Skin.nSENotes_4P[0]; nSenotesX = TJAPlayer3.Skin.nSENotes_4P[0];

View File

@ -129,8 +129,8 @@ namespace TJAPlayer3
double value = (Flying[i].Counter.n現在の値 / 140.0); double value = (Flying[i].Counter.n現在の値 / 140.0);
Flying[i].X = StartPointX[Flying[i].Player] + (movingDistanceX * value); Flying[i].X = StartPointX[Flying[i].Player] + TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(Flying[i].Player) + (movingDistanceX * value);
Flying[i].Y = TJAPlayer3.Skin.Game_Effect_FlyingNotes_StartPoint_Y[Flying[i].Player] + (int)(movingDistanceY * value); Flying[i].Y = TJAPlayer3.Skin.Game_Effect_FlyingNotes_StartPoint_Y[Flying[i].Player] + TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(Flying[i].Player) + (int)(movingDistanceY * value);
Flying[i].Y += Math.Sin(value * Math.PI) * (Flying[i].Player == 0 ? -TJAPlayer3.Skin.Game_Effect_FlyingNotes_Sine : TJAPlayer3.Skin.Game_Effect_FlyingNotes_Sine); Flying[i].Y += Math.Sin(value * Math.PI) * (Flying[i].Player == 0 ? -TJAPlayer3.Skin.Game_Effect_FlyingNotes_Sine : TJAPlayer3.Skin.Game_Effect_FlyingNotes_Sine);
if (TJAPlayer3.Skin.Game_Effect_FlyingNotes_IsUsingEasing) if (TJAPlayer3.Skin.Game_Effect_FlyingNotes_IsUsingEasing)

View File

@ -23,6 +23,19 @@ Game_SENote_Size=136,30
Game_Notes_Interval=960 Game_Notes_Interval=960
Game_Notes_Arm_Offset_Left_X=25,25
Game_Notes_Arm_Offset_Right_X=60,60
Game_Notes_Arm_Offset_Left_Y=74,-44
Game_Notes_Arm_Offset_Right_Y=104,-14
Game_Notes_Arm_Move=0,30
Game_Judge_Meter=0,360 Game_Judge_Meter=0,360
Game_Judge_Meter_Perfect=102,494 Game_Judge_Meter_Perfect=102,494

View File

@ -14,6 +14,9 @@ SongSelect_Bar_Anim_X=0,600,500,400,0,-400,-500,-600,0
SongSelect_Bar_Anim_Y=0,1800,1500,1200,0,-1200,-1500,-1800,0 SongSelect_Bar_Anim_Y=0,1800,1500,1200,0,-1200,-1500,-1800,0
SongSelect_Scroll_Interval=0.12
SongSelect_Bar_Title_Offset=316,62 SongSelect_Bar_Title_Offset=316,62
SongSelect_Bar_SubTitle_Offset=316,90 SongSelect_Bar_SubTitle_Offset=316,90
@ -48,6 +51,9 @@ SongSelect_FavoriteStatus_Offset=90,30
SongSelect_Bar_Title_Offset=316,62 SongSelect_Bar_Title_Offset=316,62
SongSelect_Bar_Box_Offset=316,62
SongSelect_Bar_BackBox_Offset=316,62
SongSelect_Bar_Random_Offset=316,62
SongSelect_Bar_SubTitle_Offset=316,90 SongSelect_Bar_SubTitle_Offset=316,90