1
0
mirror of synced 2025-02-16 10:42:39 +01:00

Fix #286 (Add support for individual combo dan conditions)

This commit is contained in:
0aubsq 2022-08-25 03:11:23 +02:00
parent 13e154c20f
commit e767c58452
6 changed files with 47 additions and 11 deletions

View File

@ -395,6 +395,8 @@ namespace TJAPlayer3
if(TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) if(TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{ {
n良 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count]; n良 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count];
nCombo = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count];
nHighestCombo = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count];
n可 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count]; n可 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count];
n不可 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count]; n不可 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count];
n連打 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count]; n連打 = new int[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count];
@ -642,6 +644,8 @@ namespace TJAPlayer3
public STDGBVALUE<CHITCOUNTOFRANK> nヒット数_Auto含まない; public STDGBVALUE<CHITCOUNTOFRANK> nヒット数_Auto含まない;
public STDGBVALUE<CHITCOUNTOFRANK> nヒット数_Auto含む; public STDGBVALUE<CHITCOUNTOFRANK> nヒット数_Auto含む;
public int[] n良; public int[] n良;
public int[] nHighestCombo;
public int[] nCombo;
public int[] n可; public int[] n可;
public int[] n不可; public int[] n不可;
public int[] n連打; public int[] n連打;
@ -787,6 +791,8 @@ namespace TJAPlayer3
} }
} }
internal E判定 e指定時刻からChipのJUDGEを返す(long nTime, CDTX.CChip pChip, int player = 0) internal E判定 e指定時刻からChipのJUDGEを返す(long nTime, CDTX.CChip pChip, int player = 0)
{ {
var e判定 = e指定時刻からChipのJUDGEを返すImpl(nTime, pChip, player); var e判定 = e指定時刻からChipのJUDGEを返すImpl(nTime, pChip, player);
@ -842,6 +848,13 @@ namespace TJAPlayer3
return _timingzonesAreEasy; return _timingzonesAreEasy;
} }
private void tIncreaseComboDan(int danSong)
{
this.nCombo[danSong]++;
if (this.nCombo[danSong] > this.nHighestCombo[danSong])
this.nHighestCombo[danSong] = this.nCombo[danSong];
}
private E判定 e指定時刻からChipのJUDGEを返すImpl( long nTime, CDTX.CChip pChip, int player = 0 ) private E判定 e指定時刻からChipのJUDGEを返すImpl( long nTime, CDTX.CChip pChip, int player = 0 )
{ {
@ -1685,7 +1698,11 @@ namespace TJAPlayer3
this.actCombo.n現在のコンボ数[nPlayer]++; this.actCombo.n現在のコンボ数[nPlayer]++;
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
this.n良[actDan.NowShowingNumber]++; this.n良[actDan.NowShowingNumber]++;
this.tIncreaseComboDan(actDan.NowShowingNumber);
}
if (this.actCombo.ctコンボ加算[nPlayer].b終了値に達してない) if (this.actCombo.ctコンボ加算[nPlayer].b終了値に達してない)
{ {
@ -1715,8 +1732,13 @@ namespace TJAPlayer3
this.actCombo.n現在のコンボ数[ nPlayer ]++; this.actCombo.n現在のコンボ数[ nPlayer ]++;
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
this.n可[actDan.NowShowingNumber]++; this.n可[actDan.NowShowingNumber]++;
this.tIncreaseComboDan(actDan.NowShowingNumber);
}
if (this.actCombo.ctコンボ加算[nPlayer].b終了値に達してない) if (this.actCombo.ctコンボ加算[nPlayer].b終了値に達してない)
{ {
this.actCombo.ctコンボ加算[nPlayer].n現在の値 = 1; this.actCombo.ctコンボ加算[nPlayer].n現在の値 = 1;
@ -1757,6 +1779,8 @@ namespace TJAPlayer3
} }
this.actCombo.n現在のコンボ数[ nPlayer ] = 0; this.actCombo.n現在のコンボ数[ nPlayer ] = 0;
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
this.nCombo[actDan.NowShowingNumber] = 0;
this.actComboVoice.tReset(nPlayer); this.actComboVoice.tReset(nPlayer);
this.bIsMiss[nPlayer] = true; this.bIsMiss[nPlayer] = true;
@ -1779,7 +1803,10 @@ namespace TJAPlayer3
break; break;
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
this.n良[actDan.NowShowingNumber]++; this.n良[actDan.NowShowingNumber]++;
this.tIncreaseComboDan(actDan.NowShowingNumber);
}
this.CBranchScore[nPlayer].nGreat++; this.CBranchScore[nPlayer].nGreat++;
this.CChartScore[nPlayer].nGreat++; this.CChartScore[nPlayer].nGreat++;
@ -1813,7 +1840,10 @@ namespace TJAPlayer3
if (!NotesManager.IsGenericRoll(pChip)) if (!NotesManager.IsGenericRoll(pChip))
{ {
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
{
this.n可[actDan.NowShowingNumber]++; this.n可[actDan.NowShowingNumber]++;
this.tIncreaseComboDan(actDan.NowShowingNumber);
}
this.CBranchScore[nPlayer].nGood++; this.CBranchScore[nPlayer].nGood++;
this.CChartScore[nPlayer].nGood++; this.CChartScore[nPlayer].nGood++;
@ -1855,6 +1885,7 @@ namespace TJAPlayer3
{ {
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan) if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
this.n不可[actDan.NowShowingNumber]++; this.n不可[actDan.NowShowingNumber]++;
this.CBranchScore[nPlayer].nMiss++; this.CBranchScore[nPlayer].nMiss++;
this.CChartScore[nPlayer].nMiss++; this.CChartScore[nPlayer].nMiss++;
@ -1862,6 +1893,8 @@ namespace TJAPlayer3
} }
this.actCombo.n現在のコンボ数[ nPlayer ] = 0; this.actCombo.n現在のコンボ数[ nPlayer ] = 0;
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
this.nCombo[actDan.NowShowingNumber] = 0;
this.actComboVoice.tReset(nPlayer); this.actComboVoice.tReset(nPlayer);

View File

@ -166,10 +166,12 @@ namespace TJAPlayer3
int totalGoods = (int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect; int totalGoods = (int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect;
int totalOks = (int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great; int totalOks = (int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great;
int totalBads = (int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss; int totalBads = (int)TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss;
int totalCombo = (int)TJAPlayer3.stage演奏ドラム画面.actCombo.n現在のコンボ数.[0];
int individualGoods = TJAPlayer3.stage演奏ドラム画面.n良[NowShowingNumber]; int individualGoods = TJAPlayer3.stage演奏ドラム画面.n良[NowShowingNumber];
int individualOks = TJAPlayer3.stage演奏ドラム画面.n可[NowShowingNumber]; int individualOks = TJAPlayer3.stage演奏ドラム画面.n可[NowShowingNumber];
int individualBads = TJAPlayer3.stage演奏ドラム画面.n不可[NowShowingNumber]; int individualBads = TJAPlayer3.stage演奏ドラム画面.n不可[NowShowingNumber];
int individualCombo = TJAPlayer3.stage演奏ドラム画面.nHighestCombo[NowShowingNumber];
int totalADLIBs = TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nADLIB; int totalADLIBs = TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nADLIB;
int totalMines = TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine; int totalMines = TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMine;
@ -210,7 +212,7 @@ namespace TJAPlayer3
isChangedAmount = Challenge[i].Update(ExamChange[i] ? TJAPlayer3.stage演奏ドラム画面.n良[NowShowingNumber] + TJAPlayer3.stage演奏ドラム画面.n可[NowShowingNumber] + TJAPlayer3.stage演奏ドラム画面.n連打[NowShowingNumber] : (int)(TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great + TJAPlayer3.stage演奏ドラム画面.GetRoll(0))); isChangedAmount = Challenge[i].Update(ExamChange[i] ? TJAPlayer3.stage演奏ドラム画面.n良[NowShowingNumber] + TJAPlayer3.stage演奏ドラム画面.n可[NowShowingNumber] + TJAPlayer3.stage演奏ドラム画面.n連打[NowShowingNumber] : (int)(TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Great + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great + TJAPlayer3.stage演奏ドラム画面.GetRoll(0)));
break; break;
case Exam.Type.Combo: case Exam.Type.Combo:
isChangedAmount = Challenge[i].Update((int)TJAPlayer3.stage演奏ドラム画面.actCombo.n現在のコンボ数.[0]); isChangedAmount = Challenge[i].Update(ExamChange[i] ? individualCombo : totalCombo);
break; break;
case Exam.Type.Accuracy: case Exam.Type.Accuracy:
isChangedAmount = Challenge[i].Update(ExamChange[i] ? (int)individualAccuracy : (int)accuracy); isChangedAmount = Challenge[i].Update(ExamChange[i] ? (int)individualAccuracy : (int)accuracy);

View File

@ -22,20 +22,20 @@ namespace TJAPlayer3
["2"] = 2, // Small Ka (Taiko) | Yellow (left) hit (Konga) ["2"] = 2, // Small Ka (Taiko) | Yellow (left) hit (Konga)
["3"] = 3, // Big Don (Taiko) | Pink note (Konga) ["3"] = 3, // Big Don (Taiko) | Pink note (Konga)
["4"] = 4, // Big Ka (Taiko) | Clap (Konga) ["4"] = 4, // Big Ka (Taiko) | Clap (Konga)
["5"] = 5, // Small roll start ["5"] = 5, // Small roll start | Konga red roll
["6"] = 6, // Big roll start ["6"] = 6, // Big roll start | Konga pink roll
["7"] = 7, // Balloon ["7"] = 7, // Balloon
["8"] = 8, // Roll/Balloon end ["8"] = 8, // Roll/Balloon end
["9"] = 7, // Kusudama (Currently treated as balloon) ["9"] = 7, // Kusudama (Coming soon)
["A"] = 10, // Joint Big Don (2P) ["A"] = 10, // Joint Big Don (2P)
["B"] = 11, // Joint Big Ka (2P) ["B"] = 11, // Joint Big Ka (2P)
["C"] = 12, // Mine (Coming soon) ["C"] = 12, // Mine
["D"] = 0, // Unused ["D"] = 7, // ProjectOutfox's Fuse roll (Coming soon)
["E"] = 5, // Unused ["E"] = 0, // Unused
["F"] = 15, // ADLib ["F"] = 15, // ADLib
["G"] = 0xF1, // Green (Purple) double hit note (Coming soon) ["G"] = 0xF1, // Green (Purple) double hit note
["H"] = 16, // Konga clap roll (Coming soon) ["H"] = 16, // Konga clap roll | Taiko big roll
["I"] = 17, // Konga yellow roll (Coming soon) ["I"] = 17, // Konga yellow roll | Taiko small roll
}; };
public static bool FastFlankedParsing(string s) public static bool FastFlankedParsing(string s)

View File

@ -2,6 +2,7 @@ TITLE: Chasing the Wind
SUBTITLE:--DashyDesu SUBTITLE:--DashyDesu
BPM:168 BPM:168
WAVE:Chasing the Wind.ogg WAVE:Chasing the Wind.ogg
PREIMAGE:preimage.jpg
OFFSET:-0.894 OFFSET:-0.894
DEMOSTART:35.715 DEMOSTART:35.715
SCOREMODE:2 SCOREMODE:2

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 KiB

Binary file not shown.