1
0
mirror of synced 2024-11-24 07:30:21 +01:00

(0.4 part 2) Add an animation to display all exams on the dan selection screen, plus cleaning some code bloating

This commit is contained in:
0aubsq 2021-10-10 06:48:34 +02:00
parent 592f9b7a02
commit 542df02359

View File

@ -46,6 +46,8 @@ namespace TJAPlayer3
ctDanAnimeIn = new CCounter();
ctDaniIn = new CCounter(0, 3000, 1, TJAPlayer3.Timer);
ctExamConditionsAnim = new CCounter(0, 4000, 1, TJAPlayer3.Timer);
stバー情報 = new STバー情報[TJAPlayer3.Songs管理.list曲ルート_Dan.Count];
if (!string.IsNullOrEmpty(TJAPlayer3.ConfigIni.FontName))
@ -81,6 +83,8 @@ namespace TJAPlayer3
ctDaniIn.t進行();
ctDanAnimeIn.t進行();
ctExamConditionsAnim.t進行Loop();
if (ctDaniIn.n現在の値 == 3000)
{
if(!DaniInAnime)
@ -99,176 +103,12 @@ namespace TJAPlayer3
float Anime = ctDanAnimeIn.n現在の値 == 90 ? bLeftMove ? (float)Math.Sin(ctDaniMoveAnime.n現在の値 * (Math.PI / 180)) * 1280 : -((float)Math.Sin(ctDaniMoveAnime.n現在の値 * (Math.PI / 180)) * 1280) : 1280 - (float)Math.Sin(ctDanAnimeIn.n現在の値 * (Math.PI / 180)) * 1280;
#region [ ]
if (stバー情報[n現在の選択行].txBarCenter != null) stバー情報[n現在の選択行].txBarCenter?.t2D描画(TJAPlayer3.app.Device, Anime, 0);
else TJAPlayer3.Tx.Dani_Bar_Center.t2D描画(TJAPlayer3.app.Device, Anime, 0);
if (stバー情報[n現在の選択行].txDanPlate != null) stバー情報[n現在の選択行].txDanPlate.Opacity = 255;
stバー情報[n現在の選択行].txDanPlate?.t2D中心基準描画(TJAPlayer3.app.Device, 173 + Anime, 301);
#region [Goukaku plate]
int currentRank = Math.Min(stバー情報[n現在の選択行].clearGrade, 6) - 1;
if (currentRank >= 0)
{
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 173 + Anime, 422, new Rectangle(334 * currentRank, 0, 334, 334));
}
#endregion
if (stバー情報[n現在の選択行].List_DanSongs[0].Dan_C[0] != null)
tSoulDraw(370 + Anime, 462, stバー情報[n現在の選択行].List_DanSongs[0].Dan_C[0].Value[0].ToString());
for (int i = 0; i < stバー情報[n現在の選択行].ttkタイトル.Length; i++)
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[n現在の選択行].ttkタイトル[i]).t2D描画(TJAPlayer3.app.Device, 401 + Anime, 173 + i * 73);
for (int i = 0; i < stバー情報[n現在の選択行].n曲難易度.Length; i++)
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D中心基準描画(TJAPlayer3.app.Device, 377 + Anime, 180 + i * 73, new Rectangle(stバー情報[n現在の選択行].n曲難易度[i] * 53, 0, 53, 53));
for (int i = 0; i < stバー情報[n現在の選択行].n曲レベル.Length; i++)
this.tLevelNumberDraw(383 + Anime, 207 + i * 73, stバー情報[n現在の選択行].n曲レベル[i].ToString());
for (int j = 1; j < 4; j++) //段位条件のループ(魂ゲージを除く) 縦(y)
{
if (stバー情報[n現在の選択行].List_DanSongs[0].Dan_C[j] != null)
{
TJAPlayer3.Tx.DanC_ExamType?.t2D描画(TJAPlayer3.app.Device, 515 + Anime, 412 + (j - 1) * 88, new Rectangle(0, TJAPlayer3.Skin.Game_DanC_ExamType_Size[1] * (int)stバー情報[n現在の選択行].List_DanSongs[0].Dan_C[j].GetExamType(), TJAPlayer3.Skin.Game_DanC_ExamType_Size[0], TJAPlayer3.Skin.Game_DanC_ExamType_Size[1]));
}
for (int i = 0; i < stバー情報[n現在の選択行].List_DanSongs.Count; i++) //曲ごとのループ(魂ゲージを除く) 横(x)
{
if (stバー情報[n現在の選択行].List_DanSongs[i].Dan_C[j] != null)
{
if (stバー情報[n現在の選択行].List_DanSongs[stバー情報[n現在の選択行].List_DanSongs.Count - 1].Dan_C[j] != null) //個別の条件がありますよー
{
tExamDraw(590 + Anime + i * 220, 455 + (j - 1) * 88, stバー情報[n現在の選択行].List_DanSongs[i].Dan_C[j].Value[0].ToString(), stバー情報[n現在の選択行].List_DanSongs[i].Dan_C[j].GetExamRange());
}
else //全体の条件ですよー
{
tExamDraw(590 + Anime, 455 + (j - 1) * 88, stバー情報[n現在の選択行].List_DanSongs[0].Dan_C[j].Value[0].ToString(), stバー情報[n現在の選択行].List_DanSongs[0].Dan_C[j].GetExamRange());
}
}
}
}
#endregion
tDrawDanSelectedLevel(Anime);
if (bLeftMove && n現在の選択行 - 1 >= 0)
{
#region [ ]
if (stバー情報[n現在の選択行 - 1].txBarCenter != null) stバー情報[n現在の選択行 - 1].txBarCenter?.t2D描画(TJAPlayer3.app.Device, -1280 + Anime, 0);
else TJAPlayer3.Tx.Dani_Bar_Center.t2D描画(TJAPlayer3.app.Device, -1280 + Anime, 0);
if (stバー情報[n現在の選択行 - 1].txDanPlate != null) stバー情報[n現在の選択行 - 1].txDanPlate.Opacity = 255;
stバー情報[n現在の選択行 - 1].txDanPlate?.t2D中心基準描画(TJAPlayer3.app.Device, -1280 + 173 + Anime, 301);
#region [Goukaku plate]
currentRank = Math.Min(stバー情報[n現在の選択行 - 1].clearGrade, 6) - 1;
if (currentRank >= 0)
{
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, -1280 + 173 + Anime, 422, new Rectangle(334 * currentRank, 0, 334, 334));
}
#endregion
if (stバー情報[n現在の選択行 - 1].List_DanSongs[0].Dan_C[0] != null)
tSoulDraw(-1280 + 370 + Anime, 462, stバー情報[n現在の選択行 - 1].List_DanSongs[0].Dan_C[0].Value[0].ToString());
for (int i = 0; i < stバー情報[n現在の選択行 - 1].ttkタイトル.Length; i++)
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[n現在の選択行 - 1].ttkタイトル[i]).t2D描画(TJAPlayer3.app.Device, -879 + Anime, 173 + i * 73);
for (int i = 0; i < stバー情報[n現在の選択行 - 1].n曲難易度.Length; i++)
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D中心基準描画(TJAPlayer3.app.Device, -1280 + 377 + +Anime, 180 + i * 73, new Rectangle(stバー情報[n現在の選択行 - 1].n曲難易度[i] * 53, 0, 53, 53));
for (int i = 0; i < stバー情報[n現在の選択行 - 1].n曲レベル.Length; i++)
this.tLevelNumberDraw(-1280 + 383 + Anime, 207 + i * 73, stバー情報[n現在の選択行 - 1].n曲レベル[i].ToString());
for (int j = 1; j < 4; j++) //段位条件のループ(魂ゲージを除く) 縦(y)
{
if (stバー情報[n現在の選択行 - 1].List_DanSongs[0].Dan_C[j] != null)
{
TJAPlayer3.Tx.DanC_ExamType?.t2D描画(TJAPlayer3.app.Device, -1280 + 515 + Anime, 412 + (j - 1) * 88, new Rectangle(0, TJAPlayer3.Skin.Game_DanC_ExamType_Size[1] * (int)stバー情報[n現在の選択行 - 1].List_DanSongs[0].Dan_C[j].GetExamType(), TJAPlayer3.Skin.Game_DanC_ExamType_Size[0], TJAPlayer3.Skin.Game_DanC_ExamType_Size[1]));
}
for (int i = 0; i < stバー情報[n現在の選択行 - 1].List_DanSongs.Count; i++) //曲ごとのループ(魂ゲージを除く) 横(x)
{
if (stバー情報[n現在の選択行 - 1].List_DanSongs[i].Dan_C[j] != null)
{
if (stバー情報[n現在の選択行 - 1].List_DanSongs[stバー情報[n現在の選択行 - 1].List_DanSongs.Count - 1].Dan_C[j] != null) //個別の条件がありますよー
{
tExamDraw(-1280 + 590 + Anime + i * 220, 455 + (j - 1) * 88, stバー情報[n現在の選択行 - 1].List_DanSongs[i].Dan_C[j].Value[0].ToString(), stバー情報[n現在の選択行 - 1].List_DanSongs[i].Dan_C[j].GetExamRange());
}
else //全体の条件ですよー
{
tExamDraw(-1280 + 590 + Anime, 455 + (j - 1) * 88, stバー情報[n現在の選択行 - 1].List_DanSongs[0].Dan_C[j].Value[0].ToString(), stバー情報[n現在の選択行 - 1].List_DanSongs[0].Dan_C[j].GetExamRange());
}
}
}
}
#endregion
}
tDrawDanSelectedLevel(Anime, -1);
if (!bLeftMove && n現在の選択行 + 1 <= stバー情報.Length - 1)
{
#region [ ]
if (stバー情報[n現在の選択行 + 1].txBarCenter != null) stバー情報[n現在の選択行 + 1].txBarCenter?.t2D描画(TJAPlayer3.app.Device, 1280 + Anime, 0);
else TJAPlayer3.Tx.Dani_Bar_Center.t2D描画(TJAPlayer3.app.Device, 1280 + Anime, 0);
if(stバー情報[n現在の選択行 + 1].txDanPlate != null) stバー情報[n現在の選択行 + 1].txDanPlate.Opacity = 255;
stバー情報[n現在の選択行 + 1].txDanPlate?.t2D中心基準描画(TJAPlayer3.app.Device, 1280 + 173 + Anime, 301);
#region [Goukaku plate]
currentRank = Math.Min(stバー情報[n現在の選択行 + 1].clearGrade, 6) - 1;
if (currentRank >= 0)
{
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 1280 + 173 + Anime, 422, new Rectangle(334 * currentRank, 0, 334, 334));
}
#endregion
if (stバー情報[n現在の選択行 + 1].List_DanSongs[0].Dan_C[0] != null)
tSoulDraw(1280 + 370 + Anime, 462, stバー情報[n現在の選択行 + 1].List_DanSongs[0].Dan_C[0].Value[0].ToString());
for (int i = 0; i < stバー情報[n現在の選択行 + 1].ttkタイトル.Length; i++)
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[n現在の選択行 + 1].ttkタイトル[i]).t2D描画(TJAPlayer3.app.Device, 1280 + 401 + Anime, 173 + i * 73);
for (int i = 0; i < stバー情報[n現在の選択行 + 1].n曲難易度.Length; i++)
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D中心基準描画(TJAPlayer3.app.Device, 1280 + 377 + Anime, 180 + i * 73, new Rectangle(stバー情報[n現在の選択行 + 1].n曲難易度[i] * 53, 0, 53, 53));
for (int i = 0; i < stバー情報[n現在の選択行 + 1].n曲レベル.Length; i++)
this.tLevelNumberDraw(1280 + 383 + Anime, 207 + i * 73, stバー情報[n現在の選択行 + 1].n曲レベル[i].ToString());
for (int j = 1; j < 4; j++) //段位条件のループ(魂ゲージを除く) 縦(y)
{
if (stバー情報[n現在の選択行 + 1].List_DanSongs[0].Dan_C[j] != null)
{
TJAPlayer3.Tx.DanC_ExamType?.t2D描画(TJAPlayer3.app.Device, 1280 + 515 + Anime, 412 + (j - 1) * 88, new Rectangle(0, TJAPlayer3.Skin.Game_DanC_ExamType_Size[1] * (int)stバー情報[n現在の選択行 + 1].List_DanSongs[0].Dan_C[j].GetExamType(), TJAPlayer3.Skin.Game_DanC_ExamType_Size[0], TJAPlayer3.Skin.Game_DanC_ExamType_Size[1]));
}
for (int i = 0; i < stバー情報[n現在の選択行 + 1].List_DanSongs.Count; i++) //曲ごとのループ(魂ゲージを除く) 横(x)
{
if (stバー情報[n現在の選択行 + 1].List_DanSongs[i].Dan_C[j] != null)
{
if (stバー情報[n現在の選択行 + 1].List_DanSongs[stバー情報[n現在の選択行 + 1].List_DanSongs.Count - 1].Dan_C[j] != null) //個別の条件がありますよー
{
tExamDraw(1280 + 590 + Anime + i * 220, 455 + (j - 1) * 88, stバー情報[n現在の選択行 + 1].List_DanSongs[i].Dan_C[j].Value[0].ToString(), stバー情報[n現在の選択行 + 1].List_DanSongs[i].Dan_C[j].GetExamRange());
}
else //全体の条件ですよー
{
tExamDraw(1280 + 590 + Anime, 455 + (j - 1) * 88, stバー情報[n現在の選択行 + 1].List_DanSongs[0].Dan_C[j].Value[0].ToString(), stバー情報[n現在の選択行 + 1].List_DanSongs[0].Dan_C[j].GetExamRange());
}
}
}
}
#endregion
}
tDrawDanSelectedLevel(Anime, 1);
}
#endregion
@ -294,6 +134,8 @@ namespace TJAPlayer3
return 0;
}
private CCounter ctExamConditionsAnim;
private bool DaniInAnime;
public CCounter ctDaniIn;
@ -323,9 +165,140 @@ namespace TJAPlayer3
public int clearGrade;
}
private void tDrawDanSelectedLevel(float Anime, int modifier = 0)
{
int scroll = 1280 * modifier;
int currentSong = n現在の選択行 + modifier;
bool over4 = false;
#region [Center bar and Dan plate]
if (stバー情報[currentSong].txBarCenter != null) stバー情報[currentSong].txBarCenter?.t2D描画(TJAPlayer3.app.Device, scroll + Anime, 0);
else TJAPlayer3.Tx.Dani_Bar_Center.t2D描画(TJAPlayer3.app.Device, scroll + Anime, 0);
if (stバー情報[currentSong].txDanPlate != null) stバー情報[currentSong].txDanPlate.Opacity = 255;
stバー情報[currentSong].txDanPlate?.t2D中心基準描画(TJAPlayer3.app.Device, scroll + 173 + Anime, 301);
#endregion
#region [Goukaku plate]
int currentRank = Math.Min(stバー情報[currentSong].clearGrade, 6) - 1;
if (currentRank >= 0)
{
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.8f;
TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, scroll + 173 + Anime, 422, new Rectangle(334 * currentRank, 0, 334, 334));
}
#endregion
#region [Soul gauge condition]
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[0] != null)
tSoulDraw(scroll + 370 + Anime, 462, stバー情報[currentSong].List_DanSongs[0].Dan_C[0].Value[0].ToString());
#endregion
#region [Song information]
for (int i = 0; i < stバー情報[currentSong].ttkタイトル.Length; i++)
TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTexture(stバー情報[currentSong].ttkタイトル[i]).t2D描画(TJAPlayer3.app.Device, scroll + 401 + Anime, 173 + i * 73);
for (int i = 0; i < stバー情報[currentSong].n曲難易度.Length; i++)
TJAPlayer3.Tx.Dani_Difficulty_Cymbol.t2D中心基準描画(TJAPlayer3.app.Device, scroll + 377 + Anime, 180 + i * 73, new Rectangle(stバー情報[currentSong].n曲難易度[i] * 53, 0, 53, 53));
for (int i = 0; i < stバー情報[currentSong].n曲レベル.Length; i++)
this.tLevelNumberDraw(scroll + 383 + Anime, 207 + i * 73, stバー情報[currentSong].n曲レベル[i].ToString());
#endregion
#region [Check if one of the EXAM5,6,7 slots are used]
for (int j = 4; j < CExamInfo.cMaxExam; j++)
{
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[j] != null)
{
over4 = true;
break;
}
}
#endregion
#region [Display dan conditions]
for (int j = 1; j < CExamInfo.cMaxExam; j++) //段位条件のループ(魂ゲージを除く) 縦(y)
{
// Inner index within the exam 3-set
int index = (j - 1) % 3;
#region [Alter opacity if multi-screen exam display]
int opacity = 255;
if (over4 == true)
{
int half = (j - 1) / 3;
int animJauge = ctExamConditionsAnim.n現在の値;
if (half == 0)
{
if (animJauge > 3745)
opacity = animJauge - 3745;
else if (animJauge > 1745)
opacity = 2000 - animJauge;
}
else
{
if (animJauge > 3745)
opacity = 4000 - animJauge;
else if (animJauge > 1745)
opacity = animJauge - 1745;
else
opacity = 0;
}
}
#endregion
#region [Exam type sign]
if (stバー情報[currentSong].List_DanSongs[0].Dan_C[j] != null)
{
TJAPlayer3.Tx.DanC_ExamType.Opacity = opacity;
TJAPlayer3.Tx.DanC_ExamType?.t2D描画(TJAPlayer3.app.Device, scroll + 515 + Anime, 412 + index * 88, new Rectangle(0, TJAPlayer3.Skin.Game_DanC_ExamType_Size[1] * (int)stバー情報[currentSong].List_DanSongs[0].Dan_C[j].GetExamType(), TJAPlayer3.Skin.Game_DanC_ExamType_Size[0], TJAPlayer3.Skin.Game_DanC_ExamType_Size[1]));
}
#endregion
#region [Exam value (individual included)]
for (int i = 0; i < stバー情報[currentSong].List_DanSongs.Count; i++) //曲ごとのループ(魂ゲージを除く) 横(x)
{
if (stバー情報[currentSong].List_DanSongs[i].Dan_C[j] != null)
{
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = opacity;
if (stバー情報[currentSong].List_DanSongs[stバー情報[currentSong].List_DanSongs.Count - 1].Dan_C[j] != null) //個別の条件がありますよー
tExamDraw(scroll + 590 + Anime + i * 220, 455 + index * 88, stバー情報[currentSong].List_DanSongs[i].Dan_C[j].Value[0].ToString(), stバー情報[currentSong].List_DanSongs[i].Dan_C[j].GetExamRange());
else //全体の条件ですよー
tExamDraw(scroll + 590 + Anime, 455 + index * 88, stバー情報[currentSong].List_DanSongs[0].Dan_C[j].Value[0].ToString(), stバー情報[currentSong].List_DanSongs[0].Dan_C[j].GetExamRange());
TJAPlayer3.Tx.Dani_Exam_Number.Opacity = 255;
}
}
#endregion
}
#endregion
}
private void tバーの初期化()
{
for(int i = 0; i < stバー情報.Length; i++)
for (int i = 0; i < stバー情報.Length; i++)
{
var song = TJAPlayer3.Songs管理.list曲ルート_Dan[i];