diff --git a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs index 3f71e477..3985f556 100644 --- a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs +++ b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs @@ -137,11 +137,6 @@ namespace TJAPlayer3 ModeSelect_Bar_Chara[i] = TxC(TITLE + @"ModeSelect_Bar_Chara_" + i.ToString() + ".png"); } - for(int i = 0; i < 6; i++) - { - ModeSelect_Bar_Text[i] = TxC(TITLE + @"ModeSelect_Bar_Text_" + i.ToString() + ".png"); - } - ModeSelect_Bar[6] = TxC(TITLE + @"ModeSelect_Bar_Overlay.png"); #endregion @@ -267,8 +262,9 @@ namespace TJAPlayer3 Dani_Soul_Number = TxC(DANISELECT + "SoulNumber.png"); Dani_Exam_Number = TxC(DANISELECT + "ExamNumber.png"); Dani_Bar_Center = TxC(DANISELECT + "Bar_Center.png"); + Dani_Plate = TxC(DANISELECT + "Plate.png"); - for (int i = 0; i < 2; i++) + for (int i = 0; i < Challenge_Select.Length; i++) Challenge_Select[i] = TxC(DANISELECT + "Challenge_Select_" + i.ToString() + ".png"); #endregion @@ -922,6 +918,7 @@ namespace TJAPlayer3 public CTexture[] NamePlate_Effect = new CTexture[5]; #endregion #region 1_タイトル画面 + public CTexture Title_Background, Entry_Bar, Entry_Bar_Text; @@ -934,7 +931,7 @@ namespace TJAPlayer3 public CTexture[] Entry_Donchan_Normal = new CTexture[13]; public CTexture[] ModeSelect_Bar = new CTexture[7]; public CTexture[] ModeSelect_Bar_Chara = new CTexture[6]; - public CTexture[] ModeSelect_Bar_Text = new CTexture[6]; + #endregion #region 2_コンフィグ画面 @@ -1005,8 +1002,9 @@ namespace TJAPlayer3 public CTexture Dani_Soul_Number; public CTexture Dani_Exam_Number; public CTexture Dani_Bar_Center; + public CTexture Dani_Plate; - public CTexture[] Challenge_Select = new CTexture[2]; + public CTexture[] Challenge_Select = new CTexture[3]; #endregion diff --git a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs index 60a67b12..9e6394af 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); + ctDanTick = new CCounter(0, 510, 3, TJAPlayer3.Timer); + ctExamConditionsAnim = new CCounter(0, 4000, 1, TJAPlayer3.Timer); stバー情報 = new STバー情報[TJAPlayer3.Songs管理.list曲ルート_Dan.Count]; @@ -82,6 +84,7 @@ namespace TJAPlayer3 ctDaniMoveAnime.t進行(); ctDaniIn.t進行(); ctDanAnimeIn.t進行(); + ctDanTick.t進行Loop(); ctExamConditionsAnim.t進行Loop(); @@ -92,10 +95,10 @@ namespace TJAPlayer3 ctDanAnimeIn.t開始(0, 90, 2f, TJAPlayer3.Timer); DaniInAnime = true; } - } - + } + #region [ バー表示 ] - + if (stバー情報.Length != 0) { TJAPlayer3.Tx.DanC_ExamType.vc拡大縮小倍率.X = 0.81f; @@ -131,6 +134,68 @@ namespace TJAPlayer3 #endregion + #region [Upper plates] + + // stバー情報[n現在の選択行] + + int tickWidth = TJAPlayer3.Tx.Dani_Plate.szテクスチャサイズ.Width / 7; + int tickHeight = TJAPlayer3.Tx.Dani_Plate.szテクスチャサイズ.Height; + + for (int idx = -13; idx < 14; idx++) + { + int currentSong = n現在の選択行 + idx; + + if (currentSong < 0) + continue; + if (currentSong >= stバー情報.Length) + break; + + int xPos = 640 + idx * (tickWidth - 4); + int yPos = idx == 0 ? 25 : 10; + + + + #region [Plate background] + + TJAPlayer3.Tx.Dani_Plate.Opacity = 255; + TJAPlayer3.Tx.Dani_Plate.t2D拡大率考慮上中央基準描画(TJAPlayer3.app.Device, xPos, yPos, new Rectangle(0, 0, tickWidth, tickHeight)); + + #endregion + + #region [Dan grade title] + + TJAPlayer3.stage選曲.act曲リスト.ResolveTitleTextureTate(stバー情報[currentSong].ttkタイトル[stバー情報[currentSong].ttkタイトル.Length - 1]) + .t2D拡大率考慮上中央基準描画(TJAPlayer3.app.Device, xPos + 2, yPos + 36); + + #endregion + + + #region [Plate flash] + + if (idx == 0) + { + TJAPlayer3.Tx.Dani_Plate.Opacity = Math.Abs(255 - ctDanTick.n現在の値); + TJAPlayer3.Tx.Dani_Plate.t2D拡大率考慮上中央基準描画(TJAPlayer3.app.Device, xPos, yPos, new Rectangle(tickWidth * 6, 0, tickWidth, tickHeight)); + } + + #endregion + + #region [Goukaku plate] + + int currentRank = Math.Min(stバー情報[currentSong].clearGrade, 6) - 1; + + if (currentRank >= 0) + { + TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 0.24f; + TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 0.24f; + TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮上中央基準描画(TJAPlayer3.app.Device, xPos - 2, yPos - 24, new Rectangle(334 * currentRank, 0, 334, 334)); + } + + #endregion + } + + #endregion + return 0; } @@ -143,6 +208,8 @@ namespace TJAPlayer3 private CCounter ctDanAnimeIn; + private CCounter ctDanTick; + private CCounter ctDaniMoveAnime; public int n現在の選択行; @@ -205,7 +272,7 @@ namespace TJAPlayer3 #region [Song information] - for (int i = 0; i < stバー情報[currentSong].ttkタイトル.Length; i++) + for (int i = 0; i < stバー情報[currentSong].ttkタイトル.Length - 1; 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)); @@ -304,7 +371,7 @@ namespace TJAPlayer3 { var song = TJAPlayer3.Songs管理.list曲ルート_Dan[i]; - stバー情報[i].ttkタイトル = new TitleTextureKey[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count]; + stバー情報[i].ttkタイトル = new TitleTextureKey[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count + 1]; stバー情報[i].n曲難易度 = new int[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count]; stバー情報[i].n曲レベル = new int[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count]; for (int j = 0; j < TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count; j++) @@ -313,7 +380,12 @@ namespace TJAPlayer3 stバー情報[i].n曲難易度[j] = song.DanSongs[j].Difficulty; stバー情報[i].n曲レベル[j] = song.DanSongs[j].Level; stバー情報[i].List_DanSongs = song.DanSongs; - } + } + + + string tmp = song.strタイトル.Substring(0, 2); + stバー情報[i].ttkタイトル[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count] = new TitleTextureKey(tmp, pfDanSong, Color.Black, Color.Transparent, 700); + stバー情報[i].clearGrade = song.arスコア[6].譜面情報.nクリア[0]; stバー情報[i].txBarCenter = TJAPlayer3.tテクスチャの生成(Path.GetDirectoryName(song.arスコア[6].ファイル情報.ファイルの絶対パス) + @"\Bar_Center.png"); stバー情報[i].txDanPlate = TJAPlayer3.tテクスチャの生成(Path.GetDirectoryName(song.arスコア[6].ファイル情報.ファイルの絶対パス) + @"\Dan_Plate.png"); diff --git a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位挑戦選択画面.cs b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位挑戦選択画面.cs index 684c0007..395ef619 100644 --- a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位挑戦選択画面.cs +++ b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位挑戦選択画面.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Drawing; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -34,7 +36,12 @@ namespace TJAPlayer3 TJAPlayer3.Tx.Challenge_Select[0].Opacity = TJAPlayer3.stage段位選択.bDifficultyIn ? ctBarIn.n現在の値 : 255 - ctBarOut.n現在の値; TJAPlayer3.Tx.Challenge_Select[1].Opacity = TJAPlayer3.stage段位選択.bDifficultyIn ? ctBarIn.n現在の値 : 255 - ctBarOut.n現在の値; + TJAPlayer3.Tx.Challenge_Select[2].Opacity = TJAPlayer3.stage段位選択.bDifficultyIn ? ctBarIn.n現在の値 : 255 - ctBarOut.n現在の値; + TJAPlayer3.Tx.Challenge_Select[0].t2D描画(TJAPlayer3.app.Device, 0, 0); + + TJAPlayer3.Tx.Challenge_Select[2].t2D描画(TJAPlayer3.app.Device, 228 + 228 * (2 - n現在の選択行), 0, new Rectangle(228 + 228 * (2 - n現在の選択行), 0, 228, 720)); + TJAPlayer3.Tx.Challenge_Select[1].t2D描画(TJAPlayer3.app.Device, 0, 0); if (ctBarIn.b終了値に達した && !TJAPlayer3.stage段位選択.b選択した) diff --git a/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs b/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs index 8e21543f..4c0a55b1 100644 --- a/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs +++ b/TJAPlayer3/Stages/05.SongSelect/CActSelect曲リスト.cs @@ -2356,8 +2356,39 @@ namespace TJAPlayer3 } return texture; - } + } + + #region [Yes I do code bloating, what will you do ? =)] + public CTexture ResolveTitleTextureTate(TitleTextureKey titleTextureKey) + { + if (!_titledictionary.TryGetValue(titleTextureKey, out var texture)) + { + texture = GenerateTitleTextureTate(titleTextureKey); + _titledictionary.Add(titleTextureKey, texture); + } + + return texture; + } + + private static CTexture GenerateTitleTextureTate(TitleTextureKey titleTextureKey) + { + using (var bmp = new Bitmap(titleTextureKey.cPrivateFastFont.DrawPrivateFont( + titleTextureKey.str文字, titleTextureKey.forecolor, titleTextureKey.backcolor, true))) + { + CTexture tx文字テクスチャ = TJAPlayer3.tテクスチャの生成(bmp, false); + if (tx文字テクスチャ.szテクスチャサイズ.Width > titleTextureKey.maxWidth) + { + tx文字テクスチャ.vc拡大縮小倍率.X = (float)(((double)titleTextureKey.maxWidth) / tx文字テクスチャ.szテクスチャサイズ.Width); + tx文字テクスチャ.vc拡大縮小倍率.Y = (float)(((double)titleTextureKey.maxWidth) / tx文字テクスチャ.szテクスチャサイズ.Width); + } + + return tx文字テクスチャ; + } + } + + #endregion + private static CTexture GenerateTitleTexture(TitleTextureKey titleTextureKey) { using (var bmp = new Bitmap(titleTextureKey.cPrivateFastFont.DrawPrivateFont(