1
0
mirror of synced 2024-09-24 03:28:19 +02:00

Feature 2 : DaniDoujou saves and Nijiiro ranks implemented, improved the DaniDoujou results screen (V0.3.4)

This commit is contained in:
0aubsq 2021-10-07 00:27:53 +02:00
parent 3d9d6e6be9
commit 57a1dd949b
6 changed files with 194 additions and 31 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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<CDTX.DanSongs> 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");
}
}

View File

@ -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

@ -1 +1 @@
Subproject commit e01331dafed845940b747a9e7432acc07dc88f97
Subproject commit 36df7a30586d91bd23e8110dd2c3d79714ba8cd5