1
0
mirror of synced 2024-11-28 09:20:53 +01:00

Fix #254 and fix an issue with score ranks where 2P roll count were dependent on 1P ones, making Omega rank unreachable in some cases

This commit is contained in:
0aubsq 2022-06-15 01:47:13 +02:00
parent 3b7f139468
commit fea443281c
2 changed files with 48 additions and 15 deletions

View File

@ -92,15 +92,21 @@ namespace TJAPlayer3
// CStage 実装
public int[] nNoteCount = new int[2];
public int[] nBalloonCount = new int[2];
public double[] nAddScoreNiji = new double[2];
public int[] nNoteCount = new int[4];
public int[] nBalloonCount = new int[4];
public double[] nRollTimeMs = new double[4];
public double[] nAddScoreNiji = new double[4];
public override void On活性化()
{
listChip = new List<CDTX.CChip>[ 4 ];
for( int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++ )
{
nNoteCount[i] = 0;
nBalloonCount[i] = 0;
nRollTimeMs[i] = 0;
nAddScoreNiji[i] = 0;
switch( i )
{
case 0:
@ -135,18 +141,31 @@ namespace TJAPlayer3
if (TJAPlayer3.DTX.bチップがある.Branch)
{
nNoteCount[0] = TJAPlayer3.DTX.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count();
for (int i = 0; i < TJAPlayer3.DTX.listChip_Branch[2].Count; i++)
{
nNoteCount[0] = TJAPlayer3.DTX.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count();
nBalloonCount[0] += TJAPlayer3.DTX.listChip_Branch[2][i].nRollCount;
var chip = TJAPlayer3.DTX.listChip_Branch[2][i];
//nBalloonCount[0] += TJAPlayer3.DTX.listChip_Branch[2][i].nRollCount;
nBalloonCount[0] += TJAPlayer3.DTX.listChip_Branch[2][i].nBalloon;
if (NotesManager.IsRoll(chip))
{
nRollTimeMs[0] += (chip.nーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
}
//pChip.n発声時刻ms
}
}
else
{
nNoteCount[0] = TJAPlayer3.DTX.listChip.Where(num => NotesManager.IsMissableNote(num)).Count();
for (int i = 0; i < TJAPlayer3.DTX.listChip.Count; i++)
{
nNoteCount[0] = TJAPlayer3.DTX.listChip.Where(num => NotesManager.IsMissableNote(num)).Count();
nBalloonCount[0] += TJAPlayer3.DTX.listChip[i].nRollCount;
var chip = TJAPlayer3.DTX.listChip[i];
//nBalloonCount[0] += TJAPlayer3.DTX.listChip[i].nRollCount;
nBalloonCount[0] += TJAPlayer3.DTX.listChip[i].nBalloon;
if (NotesManager.IsRoll(chip))
{
nRollTimeMs[0] += (chip.nーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
}
}
}
@ -155,18 +174,30 @@ namespace TJAPlayer3
{
if (TJAPlayer3.DTX_2P.bチップがある.Branch)
{
nNoteCount[1] = TJAPlayer3.DTX_2P.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count();
for (int i = 0; i < TJAPlayer3.DTX_2P.listChip_Branch[2].Count; i++)
{
nNoteCount[1] = TJAPlayer3.DTX_2P.listChip_Branch[2].Where(num => NotesManager.IsMissableNote(num)).Count();
nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip_Branch[2][i].nRollCount;
var chip = TJAPlayer3.DTX_2P.listChip_Branch[2][i];
//nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip_Branch[2][i].nRollCount;
nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip_Branch[2][i].nBalloon;
if (NotesManager.IsRoll(chip))
{
nRollTimeMs[1] += (chip.nーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
}
}
}
else
{
nNoteCount[1] = TJAPlayer3.DTX_2P.listChip.Where(num => NotesManager.IsMissableNote(num)).Count();
for (int i = 0; i < TJAPlayer3.DTX_2P.listChip.Count; i++)
{
nNoteCount[1] = TJAPlayer3.DTX_2P.listChip.Where(num => NotesManager.IsMissableNote(num)).Count();
nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip[i].nRollCount;
var chip = TJAPlayer3.DTX_2P.listChip[i];
//nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip[i].nRollCount;
nBalloonCount[1] += TJAPlayer3.DTX_2P.listChip[i].nBalloon;
if (NotesManager.IsRoll(chip))
{
nRollTimeMs[1] += (chip.nーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
}
}
}
}
@ -181,7 +212,7 @@ namespace TJAPlayer3
}
else
{
nAddScoreNiji[k] = (double)Math.Ceiling((decimal)(1000000 - (nBalloonCount[k] * 100)) / nNoteCount[k] / 10) * 10;
nAddScoreNiji[k] = (double)Math.Ceiling((decimal)(1000000 - (nBalloonCount[k] * 100) - (nRollTimeMs[k] * 100 * 16.6)) / nNoteCount[k] / 10) * 10;
}
}

View File

@ -12,20 +12,22 @@ namespace TJAPlayer3
public override void On活性化()
{
double RollTimems = 0;
/*
foreach (var chip in TJAPlayer3.DTX.listChip)
{
//if (chip.nチャンネル番号 == 21 || chip.nチャンネル番号 == 22)
if (NotesManager.IsRoll(chip))
{
RollTimems += (chip.nーツ終了時刻ms - chip.n発声時刻ms) / 1000.0;
}
}
*/
this.ScoreRank = new int[] { 500000, 600000, 700000, 800000, 900000, 950000,
Math.Max(1000000, (int)(TJAPlayer3.stage演奏ドラム画面.nAddScoreNiji[0] * TJAPlayer3.stage演奏ドラム画面.nNoteCount[0]) + (int)(TJAPlayer3.stage演奏ドラム画面.nBalloonCount[0] * 100) + (int)(Math.Ceiling(RollTimems * 16.6 / 10) * 100 * 10)) };
Math.Max(1000000, (int)(TJAPlayer3.stage演奏ドラム画面.nAddScoreNiji[0] * TJAPlayer3.stage演奏ドラム画面.nNoteCount[0]) + (int)(TJAPlayer3.stage演奏ドラム画面.nBalloonCount[0] * 100) + (int)(Math.Ceiling(TJAPlayer3.stage演奏ドラム画面.nRollTimeMs[0] * 16.6 / 10) * 100 * 10)) };
this.ScoreRank2P = new int[] { 500000, 600000, 700000, 800000, 900000, 950000,
Math.Max(1000000, (int)(TJAPlayer3.stage演奏ドラム画面.nAddScoreNiji[1] * TJAPlayer3.stage演奏ドラム画面.nNoteCount[1]) + (int)(TJAPlayer3.stage演奏ドラム画面.nBalloonCount[1] * 100) + (int)(Math.Ceiling(RollTimems * 16.6 / 10) * 100 * 10)) };
Math.Max(1000000, (int)(TJAPlayer3.stage演奏ドラム画面.nAddScoreNiji[1] * TJAPlayer3.stage演奏ドラム画面.nNoteCount[1]) + (int)(TJAPlayer3.stage演奏ドラム画面.nBalloonCount[1] * 100) + (int)(Math.Ceiling(TJAPlayer3.stage演奏ドラム画面.nRollTimeMs[1] * 16.6 / 10) * 100 * 10)) };
for (int i = 0; i < 7; i++)
{