diff --git a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs index ff637667..14b267d3 100644 --- a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs +++ b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs @@ -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];