diff --git a/README.md b/README.md index eed7c84d..2b057864 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ TJAPlayer3-Develop-ReWriteのフォーク, 太鼓の達人 ニジイロVerを切 # In progress -Ver. 0.3.3 +Ver. 0.3.4 Will update this readme later. @@ -21,7 +21,7 @@ Self-made assets will be distributed separately. ``` ☐ Implement 段位道場 results screen -☐ Implement 段位道場 ini save file +☑ Implement 段位道場 ini save file ☑ Implement プチチャラ on menus ☐ Coin earning and change the save file format ☐ Implement 太鼓タワー charts (COURSE: 5) (Ex: https://www.youtube.com/watch?v=rtSe70X1QII) diff --git a/README_SKIN.md b/README_SKIN.md index b6437b71..5ab2ce6b 100644 --- a/README_SKIN.md +++ b/README_SKIN.md @@ -40,6 +40,12 @@ Sound/Result/Donchan/Donchan_Miss.ogg => Sounds/ResultScreen/Donchan_Miss.ogg ## Ver 0.4 ## Sound/Dan/Dan_Result.ogg => Sounds/Dan/Dan_Result.ogg + +Texture/Dan/Result/Rank.png => Graphics/7_DanResult/Rank.png (Resize 2004x334) +Texture/Dan/Result/SongPanel_Base.png => Graphics/7_DanResult/SongPanel_Base.png (Resize 1280x720) +Texture/Dan/Result/StatePanel_Base.png => Graphics/7_DanResult/StatePanel_Base.png (Resize 1280x720) +Texture/Dan/Result/StatePanel_Main.png => Graphics/7_DanResult/StatePanel_Main.png (Resize 1280x720) +Texture/Dan/Result/SongPanel_Main.png => Graphics/7_DanResult/SongPanel_Main.png (Resize 960x512) ``` ## Third step (Second booster) diff --git a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs index 4b39e694..1e1167e9 100644 --- a/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs +++ b/TJAPlayer3/Stages/01.StartUp/TextureLoader.cs @@ -771,10 +771,15 @@ namespace TJAPlayer3 #region [8_DanResults] DanResult_Background = TxC(DANRESULT + @"Background.png"); + DanResult_Rank = TxC(DANRESULT + @"Rank.png"); + DanResult_SongPanel_Base = TxC(DANRESULT + @"SongPanel_Base.png"); + DanResult_StatePanel_Base = TxC(DANRESULT + @"StatePanel_Base.png"); + DanResult_SongPanel_Main = TxC(DANRESULT + @"SongPanel_Main.png"); + DanResult_StatePanel_Main = TxC(DANRESULT + @"StatePanel_Main.png"); #endregion - } + } public void DisposeTexture() { @@ -1116,7 +1121,12 @@ namespace TJAPlayer3 #region [8_DanResults] - public CTexture DanResult_Background; + public CTexture DanResult_Background, + DanResult_Rank, + DanResult_SongPanel_Base, + DanResult_StatePanel_Base, + DanResult_SongPanel_Main, + DanResult_StatePanel_Main; #endregion diff --git a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs index 00f73e6b..ff637667 100644 --- a/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs +++ b/TJAPlayer3/Stages/05.DaniSelect/CActSelect段位リスト.cs @@ -104,8 +104,21 @@ namespace TJAPlayer3 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); + 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()); @@ -149,8 +162,21 @@ namespace TJAPlayer3 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); - + 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()); @@ -196,6 +222,19 @@ namespace TJAPlayer3 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()); @@ -281,26 +320,28 @@ namespace TJAPlayer3 public List List_DanSongs; public CTexture txBarCenter; public CTexture txDanPlate; + public int clearGrade; } private void tバーの初期化() { for(int i = 0; i < stバー情報.Length; i++) { + var song = TJAPlayer3.Songs管理.list曲ルート_Dan[i]; + stバー情報[i].ttkタイトル = new TitleTextureKey[TJAPlayer3.Songs管理.list曲ルート_Dan[i].DanSongs.Count]; 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++) { - var song = TJAPlayer3.Songs管理.list曲ルート_Dan[i]; - stバー情報[i].ttkタイトル[j] = new TitleTextureKey(song.DanSongs[j].bTitleShow ? "???" : song.DanSongs[j].Title, pfDanSong, Color.White, Color.Black, 700); stバー情報[i].n曲難易度[j] = song.DanSongs[j].Difficulty; stバー情報[i].n曲レベル[j] = song.DanSongs[j].Level; stバー情報[i].List_DanSongs = song.DanSongs; - 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"); } + 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/08.Result/CStage結果.cs b/TJAPlayer3/Stages/08.Result/CStage結果.cs index bf0ea476..f92dd71b 100644 --- a/TJAPlayer3/Stages/08.Result/CStage結果.cs +++ b/TJAPlayer3/Stages/08.Result/CStage結果.cs @@ -165,6 +165,8 @@ namespace TJAPlayer3 if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Tower) { + // Regular (Ensou game) Score and Score Rank saves + this.st演奏記録[0].nクリア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] = Math.Max(ini.stセクション[0].nクリア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]], this.nクリア); this.st演奏記録[0].nスコアランク[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] = Math.Max(ini.stセクション[0].nスコアランク[TJAPlayer3.stage選曲.n確定された曲の難易度[0]], this.nスコアランク); @@ -180,6 +182,45 @@ namespace TJAPlayer3 ini.stセクション[0].nスコアランク[i] = this.st演奏記録[0].nスコアランク[i]; } } + else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) + { + /* == Specific format for DaniDoujou charts == + ** + ** Higher is better, takes the Clear1 spot (Usually the spot allocated for Kantan Clear crowns) + ** + ** 0 (Fugoukaku, no insign) + ** Silver Iki (Clear) : 1 (Red Goukaku) / 2 (Gold Goukaku) + ** Gold Iki (Full Combo) : 3 (Red Goukaku) / 4 (Gold Goukaku) + ** Rainbow Iki (Donda Full Combo) : 5 (Red Goukaku) / 6 (Gold Goukaku) + ** + */ + + Exam.Status examStatus = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C); + + int clearValue = 0; + + if (examStatus != Exam.Status.Failure) + { + // Red Goukaku + clearValue += 1; + + // Gold Goukaku + if (examStatus == Exam.Status.Better_Success) + clearValue += 1; + + // Gold Iki + if (this.st演奏記録.Drums.nMiss数 == 0) + { + clearValue += 2; + + // Rainbow Iki + if (this.st演奏記録.Drums.nGreat数 == 0) + clearValue += 2; + } + } + + this.st演奏記録[0].nクリア[0] = Math.Max(ini.stセクション[0].nクリア[0], clearValue); + } // 新記録スコアチェック if ((this.st演奏記録[0].nスコア > ini.stセクション[0].nスコア) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay) @@ -554,6 +595,7 @@ namespace TJAPlayer3 } TJAPlayer3.Tx.DanResult_Background.t2D描画(TJAPlayer3.app.Device, 0, 0); + TJAPlayer3.Tx.DanResult_SongPanel_Base.t2D描画(TJAPlayer3.app.Device, 0, 0); #region [DanPlate] @@ -563,29 +605,64 @@ namespace TJAPlayer3 #endregion - // Placeholder - switch (TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C)) - { - case Exam.Status.Failure: - TJAPlayer3.Tx.Result_Dan?.t2D描画(TJAPlayer3.app.Device, -80, 180, new Rectangle(0, 0, TJAPlayer3.Skin.Result_Dan[0], TJAPlayer3.Skin.Result_Dan[1])); - break; - case Exam.Status.Success: - TJAPlayer3.Tx.Result_Dan?.t2D描画(TJAPlayer3.app.Device, -80, 180, new Rectangle(TJAPlayer3.Skin.Result_Dan[0], 0, TJAPlayer3.Skin.Result_Dan[0], TJAPlayer3.Skin.Result_Dan[1])); - break; - case Exam.Status.Better_Success: - TJAPlayer3.Tx.Result_Dan?.t2D描画(TJAPlayer3.app.Device, -80, 180, new Rectangle(TJAPlayer3.Skin.Result_Dan[0] * 2, 0, TJAPlayer3.Skin.Result_Dan[0], TJAPlayer3.Skin.Result_Dan[1])); - break; - default: - break; - } + #region [Charts Individual Results] + + for (int i = 0; i < TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count; i++) + { + int baseX = 255; + int baseY = 100; + + TJAPlayer3.Tx.DanResult_SongPanel_Main.t2D描画(TJAPlayer3.app.Device, baseX, baseY + 183 * i, new Rectangle(0, 1 + 170 * Math.Min(i, 2), 960, 170)); - if (!b音声再生 && !TJAPlayer3.Skin.bgmDanResult.b再生中) - { - TJAPlayer3.Skin.bgmDanResult.t再生する(); - b音声再生 = true; } + #endregion + + /* + int TmpTimer = Math.Max(0, (2 * 255) - (int)(this.actParameterPanel.ct全体進行.n現在の値 - MountainAppearValue - 255)); + + + TJAPlayer3.Tx.Result_Work[i].Opacity = TmpTimer / 2; + TJAPlayer3.Tx.Result_Work[i].vc拡大縮小倍率.X = 0.6f; + TJAPlayer3.Tx.Result_Work[i].vc拡大縮小倍率.Y = 0.6f; + */ + + // TJAPlayer3.act文字コンソール.tPrint(0, 0, C文字コンソール.Eフォント種別.白, ctMob.n現在の値.ToString()); + + #region [PassLogo] + + Exam.Status examStatus = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C); + + if (examStatus != Exam.Status.Failure) + { + int successType = 0; + + if (examStatus == Exam.Status.Better_Success) + successType += 1; + + int comboType = 0; + if (this.st演奏記録.Drums.nMiss数 == 0) + { + comboType += 1; + + if (this.st演奏記録.Drums.nGreat数 == 0) + comboType += 1; + } + + TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.X = 1f; + TJAPlayer3.Tx.DanResult_Rank.vc拡大縮小倍率.Y = 1f; + TJAPlayer3.Tx.DanResult_Rank.t2D拡大率考慮中央基準描画(TJAPlayer3.app.Device, 130, 380, new Rectangle(334 * (2 * comboType + successType), 0, 334, 334)); + + if (!b音声再生 && !TJAPlayer3.Skin.bgmDanResult.b再生中) + { + TJAPlayer3.Skin.bgmDanResult.t再生する(); + b音声再生 = true; + } + } + + #endregion + #endregion @@ -741,6 +818,35 @@ namespace TJAPlayer3 if (cスコア.譜面情報.nスコアランク[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] < nスコアランク) cスコア.譜面情報.nスコアランク[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] = this.nスコアランク; } + else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) + { + Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア; + + Exam.Status examStatus = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C); + + int clearValue = 0; + + if (examStatus != Exam.Status.Failure) + { + // Red Goukaku + clearValue += 1; + + // Gold Goukaku + if (examStatus == Exam.Status.Better_Success) + clearValue += 1; + + // Gold Iki + if (this.st演奏記録.Drums.nMiss数 == 0) + { + clearValue += 2; + + // Rainbow Iki + if (this.st演奏記録.Drums.nGreat数 == 0) + clearValue += 2; + } + } + cスコア.譜面情報.nクリア[0] = Math.Max(cスコア.譜面情報.nクリア[0], clearValue); + } } //--------------------- #endregion diff --git a/Test/System b/Test/System index e01331da..36df7a30 160000 --- a/Test/System +++ b/Test/System @@ -1 +1 @@ -Subproject commit e01331dafed845940b747a9e7432acc07dc88f97 +Subproject commit 36df7a30586d91bd23e8110dd2c3d79714ba8cd5