1
0
mirror of synced 2024-12-01 02:27:21 +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]);
}
}
else if (strCommand == "SongSelect_Scroll_Interval")
{
SongSelect_Scroll_Interval = float.Parse(strParam);
}
else if (strCommand == "SongSelect_DanStatus_Offset_X")
{
string[] strSplit = strParam.Split(',');
@ -1882,6 +1886,30 @@ namespace TJAPlayer3
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")
{
string[] strSplit = strParam.Split(',');
@ -3220,6 +3248,46 @@ namespace TJAPlayer3
{
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")
{
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_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_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_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_SENote_Size = new int[] { 136, 30 };
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_Y = new int[] { 152, 328 };
public int[] Game_Judge_Move = new int[] { 0, 20 };

View File

@ -6427,6 +6427,16 @@ namespace TJAPlayer3
private CPrivateFastFont pf歌詞フォント;
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))
{
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.listWAV = new Dictionary<int, CWAV>();
this.listBPM = new Dictionary<int, CBPM>();
this.listSCROLL = new Dictionary<int, CSCROLL>();

View File

@ -31,11 +31,15 @@ namespace TJAPlayer3
{
get
{
if( this.n目標のスクロールカウンタ == 0 )
{
return ( this.n現在のスクロールカウンタ != 0 );
return ctScrollCounter.n現在の値 != ctScrollCounter.n終了値;
}
return true;
}
public double fNowScrollAnime
{
get
{
double value = ctScrollCounter.n現在の値 / 1000.0;
return Math.Sin(value * Math.PI / 2.0);
}
}
public int n現在のアンカ難易度レベル
@ -400,11 +404,131 @@ namespace TJAPlayer3
{
if( this.r現在選択中の曲 != null )
{
nNowChange = 1;
ctScoreFrameAnime.t停止();
ctScoreFrameAnime.n現在の値 = 0;
ctBarOpen.t停止();
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;
}
@ -412,11 +536,138 @@ namespace TJAPlayer3
{
if( this.r現在選択中の曲 != null )
{
nNowChange = -1;
ctScoreFrameAnime.t停止();
ctScoreFrameAnime.n現在の値 = 0;
ctBarOpen.t停止();
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;
}
@ -686,9 +937,7 @@ namespace TJAPlayer3
this.b登場アニメ全部完了 = false;
this.n目標のスクロールカウンタ = 0;
this.n現在のスクロールカウンタ = 0;
this.nスクロールタイマ = -1;
this.ctScrollCounter = new CCounter(0, 1000, TJAPlayer3.Skin.SongSelect_Scroll_Interval, TJAPlayer3.Timer);
// フォント作成。
// 曲リスト文字は2倍(面積4倍)でテクスチャに描画してから縮小表示するので、フォントサイズは2倍とする。
@ -850,7 +1099,6 @@ namespace TJAPlayer3
//-----------------
if (this.b初めての進行描画)
{
this.nスクロールタイマ = (long)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
TJAPlayer3.stage選曲.t選択曲変更通知();
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;
{
#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座標 = 665; //選択曲バーの座標用
int barCenterNum = (TJAPlayer3.Skin.SongSelect_Bar_Count - 1) / 2;
if (this.ctScrollCounter.n現在の値 == this.ctScrollCounter.n終了値)
{
nNowChange = 0;
}
#region [ (2) ]
//-----------------
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++) // パネルは全13枚。
{
if ((i == 0 && this.n現在のスクロールカウンタ > 0) || // 最上行は、上に移動中なら表示しない。
(i == TJAPlayer3.Skin.SongSelect_Bar_Count - 1 && this.n現在のスクロールカウンタ < 0)) // 最下行は、下に移動中なら表示しない。
int index = i + nNowChange;
if (((index < 0 || index >= TJAPlayer3.Skin.SongSelect_Bar_Count) && this.ctScrollCounter.n現在の値 != this.ctScrollCounter.n終了値))
continue;
int nパネル番号 = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
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座標;
#region [Positions and layouts]
@ -1291,11 +1237,11 @@ namespace TJAPlayer3
#endregion
// x set here
int xAnime = xZahyou + ((int)((xNextZahyou - xZahyou)
* (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));
int xAnime = xZahyou + (int)((xNextZahyou - xZahyou)
* (1.0 - fNowScrollAnime));
int y = yZahyou + ((int)((yNextZahyou - yZahyou)
* (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));
int y = yZahyou + (int)((yNextZahyou - yZahyou)
* (1.0 - fNowScrollAnime));
// (B) スクロール中の選択曲バー、またはその他のバーの描画。
@ -1477,7 +1423,7 @@ namespace TJAPlayer3
if (n現在のスクロールカウンタ != 0 || n見た目の行番号 != barCenterNum)
if (ctScrollCounter.n現在の値 != ctScrollCounter.n終了値 || n見た目の行番号 != barCenterNum)
{
int songType = 0;
if (this.stバー情報[nパネル番号].ar難易度[(int)Difficulty.Dan] >= 0)
@ -1518,17 +1464,19 @@ namespace TJAPlayer3
else
ResolveTitleTexture(this.stバー情報[nパネル番号].ttkタイトル, TJAPlayer3.Skin.SongSelect_VerticalText).Opacity = 255;
if (n現在のスクロールカウンタ != 0)
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]);
if (ctScrollCounter.n現在の値 != ctScrollCounter.n終了値)
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)
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
if (this.n現在のスクロールカウンタ == 0)
if (this.ctScrollCounter.n現在の値 == this.ctScrollCounter.n終了値)
{
#region [ Draw BarCenter ]
@ -2039,20 +1987,22 @@ namespace TJAPlayer3
for (int i = 0; i < TJAPlayer3.Skin.SongSelect_Bar_Count; i++) // パネルは全13枚。
{
if ((i == 0 && this.n現在のスクロールカウンタ > 0) || // 最上行は、上に移動中なら表示しない。
(i == TJAPlayer3.Skin.SongSelect_Bar_Count - 1 && this.n現在のスクロールカウンタ < 0)) // 最下行は、下に移動中なら表示しない。
int index = i + nNowChange;
if (((index < 0 || index >= TJAPlayer3.Skin.SongSelect_Bar_Count) && this.ctScrollCounter.n現在の値 != this.ctScrollCounter.n終了値))
continue;
int nパネル番号 = (((this.n現在の選択行 - barCenterNum) + i) + TJAPlayer3.Skin.SongSelect_Bar_Count) % TJAPlayer3.Skin.SongSelect_Bar_Count;
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 = 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;
@ -2107,10 +2057,10 @@ namespace TJAPlayer3
if (this.ttk選択している曲の曲名 != null)
{
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),
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));
}
}
@ -2119,10 +2069,10 @@ namespace TJAPlayer3
if (this.ttk選択している曲の曲名 != null)
{
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),
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));
}
}
@ -2472,10 +2422,10 @@ namespace TJAPlayer3
= new Dictionary<TitleTextureKey, CTexture>();
private Font ft曲リスト用フォント;
private long nスクロールタイマ;
public int n現在のスクロールカウンタ;
//public int n現在のスクロールカウンタ;
private int n現在の選択行;
private int n目標のスクロールカウンタ;
//private int n目標のスクロールカウンタ;
private CCounter ctScrollCounter;
/*
private readonly Point[] ptバーの座標 = new Point[] {
@ -2495,6 +2445,42 @@ namespace TJAPlayer3
private int nCurrentPosition = 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)
{
if (changeColor)

View File

@ -396,6 +396,7 @@ namespace TJAPlayer3
}
this.nJPOSSCROLL = new int[ 5 ];
this.bLEVELHOLD = new bool[]{ false, false, false, false, false };
this.JPOSCROLLX = new int[5];
// Double play set here
@ -661,6 +662,12 @@ namespace TJAPlayer3
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
{
get
@ -668,29 +675,38 @@ namespace TJAPlayer3
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
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] * 1),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 2),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 3),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 4)
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) + GetJPOSCROLLX(1),
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) + GetJPOSCROLLX(3),
TJAPlayer3.Skin.nScrollField_5P[0] + (TJAPlayer3.Skin.Game_UIMove_5P[0] * 4) + GetJPOSCROLLX(4)
};
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
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] * 1),
TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 2),
TJAPlayer3.Skin.nScrollField_4P[0] + (TJAPlayer3.Skin.Game_UIMove_4P[0] * 3)
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) + GetJPOSCROLLX(1),
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) + GetJPOSCROLLX(3)
};
}
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
{
get
@ -698,25 +714,28 @@ namespace TJAPlayer3
if (TJAPlayer3.ConfigIni.nPlayerCount == 5)
{
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] * 1),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 2),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 3),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 4)
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) + GetJPOSCROLLY(1),
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) + GetJPOSCROLLY(3),
TJAPlayer3.Skin.nScrollField_5P[1] + (TJAPlayer3.Skin.Game_UIMove_5P[1] * 4) + GetJPOSCROLLY(4)
};
}
else if (TJAPlayer3.ConfigIni.nPlayerCount == 4 || TJAPlayer3.ConfigIni.nPlayerCount == 3)
{
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] * 1),
TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 2),
TJAPlayer3.Skin.nScrollField_4P[1] + (TJAPlayer3.Skin.Game_UIMove_4P[1] * 3)
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) + GetJPOSCROLLY(1),
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) + GetJPOSCROLLY(3)
};
}
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:
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移動方向);
}
else
{
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.t判定枠移動2(dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].db移動時間, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動距離px, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動方向);
}
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.t判定枠移動(dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].db移動時間, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動距離px, dTX.listJPOSSCROLL[nJPOSSCROLL[nPlayer]].n移動方向, nPlayer);
this.nJPOSSCROLL[ nPlayer ]++;
pChip.bHit = true;
}
@ -4342,13 +4354,15 @@ namespace TJAPlayer3
{
this.t演奏位置の変更(0, i);
this.actPlayInfo.NowMeasure[i] = 0;
JPOSCROLLX[i] = 0;
JPOSCROLLY[i] = 0;
}
TJAPlayer3.stage演奏ドラム画面.On活性化();
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
{
this.chip現在処理中の連打チップ[ i ] = null;
this.actChara.b風船連打中[i] = false;
this.actChara.ChangeAnime(i, CAct演奏Drumsキャラクター.Anime.Normal, true);
this.actChara.ReturnDefaultAnime(i, true);
}
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拡大縮小倍率.Y = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Broke[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device,
(TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0])
+ chara_x,
chara_y);
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
}
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)
{
@ -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拡大縮小倍率.Y = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Miss[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device,
(TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0])
+ chara_x,
chara_y);
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
}
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)
{
@ -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拡大縮小倍率.Y = charaScale;
TJAPlayer3.Tx.Characters_Balloon_Breaking[this.iCurrentCharacter[i]][nNowCharaFrame[i]].t2D描画(TJAPlayer3.app.Device,
(TJAPlayer3.Skin.nScrollFieldX[0] - TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.nDefaultJudgePos[0, 0]) +
chara_x,
chara_y);
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i) + chara_x,
TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i) + chara_y);
}
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)
{

View File

@ -286,8 +286,10 @@ namespace TJAPlayer3
nX = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[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判定.Great:
@ -375,6 +377,8 @@ namespace TJAPlayer3
x = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_X[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);
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].nY座標 = 0;
this.n総移動時間[i] = -1;
}
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);
base.On活性化();
}
@ -56,10 +52,6 @@ namespace TJAPlayer3
this.st状態[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;
base.On非活性化();
@ -723,46 +715,28 @@ namespace TJAPlayer3
}
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);
TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[0] = this.n移動開始X + (int)((((int)nTime - this.n移動開始時刻) / (double)(this.n総移動時間)) * this.n移動距離px);
if (n移動方向[i] == 1)
{
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
{
TJAPlayer3.Skin.nScrollFieldX[0] = this.n移動開始X - (int)((((int)nTime - this.n移動開始時刻) / (double)(this.n総移動時間)) * this.n移動距離px);
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]);
}
if (((int)nTime) > this.n移動開始時刻 + this.n総移動時間)
if (((int)nTime) > this.n移動開始時刻[i] + this.n総移動時間[i])
{
this.n総移動時間 = -1;
TJAPlayer3.Skin.nScrollFieldX[0] = this.n移動目的場所X;
TJAPlayer3.stage演奏ドラム画面.FlyingNotes.StartPointX[0] = this.n移動目的場所X;
this.n総移動時間[i] = -1;
TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[i] = this.n移動目的場所X[i];
//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;
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];
y = TJAPlayer3.Skin.Game_Effects_Hit_Explosion_Y[i];
}
x += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(i);
y += TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLY(i);
switch (st状態[i].judge)
{
@ -974,31 +952,19 @@ namespace TJAPlayer3
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移動開始X = TJAPlayer3.Skin.nScrollFieldX[0];
this.n総移動時間 = (int)(db移動時間 * 1000);
this.n移動方向 = n移動方向;
this.n移動距離px = n移動px;
this.n移動開始時刻[nPlayer] = (int)(CSound管理.rc演奏用タイマ.n現在時刻 * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0));
this.n移動開始X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer];
this.n総移動時間[nPlayer] = (int)(db移動時間 * 1000);
this.n移動方向[nPlayer] = n移動方向;
this.n移動距離px[nPlayer] = n移動px;
if (n移動方向 == 0)
this.n移動目的場所X = TJAPlayer3.Skin.nScrollFieldX[0] - n移動px;
this.n移動目的場所X[nPlayer] = TJAPlayer3.stage演奏ドラム画面.JPOSCROLLX[nPlayer] - n移動px;
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 ]
//-----------------
//private CTexture txLane;
@ -1056,21 +1022,12 @@ namespace TJAPlayer3
}
private int n総移動時間;
private int n移動開始X;
private int n移動開始時刻;
private int n移動距離px;
private int n移動目的場所X;
private int n移動方向;
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];
private int[] n総移動時間 = new int[5];
private int[] n移動開始X = new int[5];
private int[] n移動開始時刻 = new int[5];
private int[] n移動距離px = new int[5];
private int[] n移動目的場所X = new int[5];
private int[] n移動方向 = new int[5];
//-----------------
#endregion

View File

@ -78,8 +78,8 @@ namespace TJAPlayer3
x = TJAPlayer3.Skin.Game_Judge_X[j];
y = TJAPlayer3.Skin.Game_Judge_Y[j];
}
x += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[0]);
y += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[1]);
x += (moveValue * TJAPlayer3.Skin.Game_Judge_Move[0]) + TJAPlayer3.stage演奏ドラム画面.GetJPOSCROLLX(j);
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.t2D描画(TJAPlayer3.app.Device, x, y, JudgeAnimes[j, i].rc);

View File

@ -2034,12 +2034,11 @@ namespace TJAPlayer3
switch (TJAPlayer3.ConfigIni.nPlayerCount)
{
case 0:
case 1:
case 2:
nSenotesX = TJAPlayer3.Skin.nSENotesX[nPlayer];
nSenotesY = TJAPlayer3.Skin.nSENotesY[nPlayer];
break;
case 2:
case 3:
case 4:
nSenotesX = TJAPlayer3.Skin.nSENotes_4P[0];
@ -2052,7 +2051,7 @@ namespace TJAPlayer3
}
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 ) );
@ -2080,17 +2079,29 @@ namespace TJAPlayer3
case 0x1A:
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 (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.DisplaySENotes(nPlayer, x + nSenotesX, y + nSenotesY, pChip);
@ -2125,12 +2136,11 @@ namespace TJAPlayer3
switch (TJAPlayer3.ConfigIni.nPlayerCount)
{
case 0:
case 1:
case 2:
nSenotesX = TJAPlayer3.Skin.nSENotesX[nPlayer];
nSenotesY = TJAPlayer3.Skin.nSENotesY[nPlayer];
break;
case 2:
case 3:
case 4:
nSenotesX = TJAPlayer3.Skin.nSENotes_4P[0];

View File

@ -129,8 +129,8 @@ namespace TJAPlayer3
double value = (Flying[i].Counter.n現在の値 / 140.0);
Flying[i].X = StartPointX[Flying[i].Player] + (movingDistanceX * value);
Flying[i].Y = TJAPlayer3.Skin.Game_Effect_FlyingNotes_StartPoint_Y[Flying[i].Player] + (int)(movingDistanceY * 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] + 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);
if (TJAPlayer3.Skin.Game_Effect_FlyingNotes_IsUsingEasing)

View File

@ -23,6 +23,19 @@ Game_SENote_Size=136,30
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_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_Scroll_Interval=0.12
SongSelect_Bar_Title_Offset=316,62
SongSelect_Bar_SubTitle_Offset=316,90
@ -48,6 +51,9 @@ SongSelect_FavoriteStatus_Offset=90,30
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