1
0
mirror of synced 2025-01-19 01:24:08 +01:00

Fix highscore displays in certain cases, score ranks for tower charts (only on save file for now, no graphics yet)

This commit is contained in:
0aubsq 2021-12-23 17:03:05 +01:00
parent 11096f5f90
commit b10814c60f

View File

@ -278,12 +278,7 @@ namespace TJAPlayer3
*/
#endregion
}
else
{
#region [Old save file calculation method for Dan/Tower charts, will update those later]
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
/* == Specific format for DaniDoujou charts ==
**
@ -322,7 +317,16 @@ namespace TJAPlayer3
}
}
this.st演奏記録[0].nクリア[0] = Math.Max(ini[0].stセクション[0].nクリア[0], clearValue);
if (isAutoDisabled(0))
{
ini[0].stセクション[0].nクリア[0] = Math.Max(ini[0].stセクション[0].nクリア[0], clearValue);
ini[0].stセクション[0].nハイスコア[0] = Math.Max(ini[0].stセクション[0].nハイスコア[0], (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, 0)); ;
if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
ini[0].t書き出し(str[0]);
}
// this.st演奏記録[0].nクリア[0] = Math.Max(ini[0].stセクション[0].nクリア[0], clearValue);
// Unlock dan grade
if (clearValue > 0)
@ -344,25 +348,52 @@ namespace TJAPlayer3
#region [Tower scores]
int tmpClear = 0;
double progress = CFloorManagement.LastRegisteredFloor / (double)TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTotalFloor;
if (CFloorManagement.CurrentNumberOfLives > 0)
// Clear badges : 10% (E), 25% (D), 50% (C), 75% (B), Clear (A), FC (S), DFC (X)
bool[] conditions =
{
tmpClear++;
if (this.st演奏記録.Drums.nMiss数 == 0)
progress >= 0.1,
progress >= 0.25,
progress >= 0.5,
progress >= 0.75,
CFloorManagement.CurrentNumberOfLives > 0,
this.st演奏記録.Drums.nMiss数 == 0,
this.st演奏記録.Drums.nGreat数 == 0
};
for (int i = 0; i < conditions.Length; i++)
{
if (conditions[i] == true)
tmpClear++;
if (this.st演奏記録.Drums.nGreat数 == 0)
tmpClear++;
else
break;
}
if (isAutoDisabled(0))
{
ini[0].stセクション[0].nクリア[0] = Math.Max(ini[0].stセクション[0].nクリア[0], tmpClear);
ini[0].stセクション[0].nスコアランク[0] = Math.Max(ini[0].stセクション[0].nスコアランク[0], CFloorManagement.LastRegisteredFloor);
ini[0].stセクション[0].nハイスコア[0] = Math.Max(ini[0].stセクション[0].nハイスコア[0], (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, 0)); ;
if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
ini[0].t書き出し(str[0]);
}
this.st演奏記録[0].nクリア[0] = Math.Max(ini[0].stセクション[0].nクリア[0], tmpClear);
this.st演奏記録[0].nスコアランク[0] = Math.Max(ini[0].stセクション[0].nスコアランク[0], CFloorManagement.LastRegisteredFloor);
// this.st演奏記録[0].nクリア[0] = Math.Max(ini[0].stセクション[0].nクリア[0], tmpClear);
// this.st演奏記録[0].nスコアランク[0] = Math.Max(ini[0].stセクション[0].nスコアランク[0], CFloorManagement.LastRegisteredFloor);
#endregion
}
else
{
#region [Legacy]
/*
// 新記録スコアチェック
if ((this.st演奏記録[0].nスコア > ini[0].stセクション[0].nスコア) && !TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
@ -372,11 +403,10 @@ namespace TJAPlayer3
}
// Header hi-score
/*
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Tower)
if (this.st演奏記録[0].nスコア > ini[0].stセクション[0].nスコア)
this.st演奏記録[0].nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] = (int)st演奏記録[0].nスコア;
*/
//if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Tower)
// if (this.st演奏記録[0].nスコア > ini[0].stセクション[0].nスコア)
// this.st演奏記録[0].nハイスコア[TJAPlayer3.stage選曲.n確定された曲の難易度[0]] = (int)st演奏記録[0].nスコア;
// 新記録スキルチェック
if (this.st演奏記録[0].db演奏型スキル値 > ini[0].stセクション[0].db演奏型スキル値)
@ -408,6 +438,8 @@ namespace TJAPlayer3
if (TJAPlayer3.ConfigIni.bScoreIniを出力する)
ini[0].t書き出し(str[0]);
*/
#endregion
@ -675,10 +707,7 @@ namespace TJAPlayer3
{
this.ct登場用 = null;
}
//CDTXMania.tテクスチャの解放( ref this.tx背景 );
//CDTXMania.tテクスチャの解放( ref this.tx上部パネル );
//CDTXMania.tテクスチャの解放( ref this.tx下部パネル );
//CDTXMania.tテクスチャの解放( ref this.txオプションパネル );
Dan_Plate?.Dispose();
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
@ -1257,6 +1286,8 @@ namespace TJAPlayer3
{
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Dan && TJAPlayer3.stage選曲.n確定された曲の難易度[0] != (int)Difficulty.Tower)
{
#region [Update status]
Cスコア cScore = TJAPlayer3.stage選曲.r確定されたスコア;
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
@ -1272,12 +1303,18 @@ namespace TJAPlayer3
if (cScore.GPInfo[actualPlayer].nScoreRank[TJAPlayer3.stage選曲.n確定された曲の難易度[i]] < nスコアランク[i])
cScore.GPInfo[actualPlayer].nScoreRank[TJAPlayer3.stage選曲.n確定された曲の難易度[i]] = nスコアランク[i];
if (cScore.GPInfo[actualPlayer].nHighScore[TJAPlayer3.stage選曲.n確定された曲の難易度[i]] < (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, i))
cScore.GPInfo[actualPlayer].nHighScore[TJAPlayer3.stage選曲.n確定された曲の難易度[i]] = (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, i);
}
#endregion
}
else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
#region [Dan update status]
Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア;
Exam.Status examStatus = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C);
@ -1307,10 +1344,59 @@ namespace TJAPlayer3
int actualPlayer = TJAPlayer3.SaveFile;
if (!TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
{
cスコア.GPInfo[actualPlayer].nClear[0] = Math.Max(cスコア.GPInfo[actualPlayer].nClear[0], clearValue);
if (cスコア.GPInfo[actualPlayer].nHighScore[0] < (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, 0))
cスコア.GPInfo[actualPlayer].nHighScore[0] = (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, 0);
}
#endregion
//cスコア.譜面情報.nクリア[0] = Math.Max(cスコア.譜面情報.nクリア[0], clearValue);
}
else if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Tower)
{
#region [Update Tower status]
Cスコア cスコア = TJAPlayer3.stage選曲.r確定されたスコア;
int actualPlayer = TJAPlayer3.SaveFile;
int tmpClear = 0;
double progress = CFloorManagement.LastRegisteredFloor / (double)TJAPlayer3.stage選曲.r確定された曲.arスコア[5]..nTotalFloor;
// Clear badges : 10% (E), 25% (D), 50% (C), 75% (B), Clear (A), FC (S), DFC (X)
bool[] conditions =
{
progress >= 0.1,
progress >= 0.25,
progress >= 0.5,
progress >= 0.75,
CFloorManagement.CurrentNumberOfLives > 0,
this.st演奏記録.Drums.nMiss数 == 0,
this.st演奏記録.Drums.nGreat数 == 0
};
for (int i = 0; i < conditions.Length; i++)
{
if (conditions[i] == true)
tmpClear++;
else
break;
}
if (!TJAPlayer3.ConfigIni.b太鼓パートAutoPlay)
{
cスコア.GPInfo[actualPlayer].nClear[0] = Math.Max(cスコア.GPInfo[actualPlayer].nClear[0], tmpClear);
cスコア.GPInfo[actualPlayer].nScoreRank[0] = Math.Max(cスコア.GPInfo[actualPlayer].nScoreRank[0], CFloorManagement.LastRegisteredFloor);
if (cスコア.GPInfo[actualPlayer].nHighScore[0] < (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, 0))
cスコア.GPInfo[actualPlayer].nHighScore[0] = (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(E楽器パート.DRUMS, 0);
}
#endregion
}
}
//---------------------
#endregion