[editorKeysounds] More attempts, need help.
Anyone want a stab? Main issue: tap + autoKeysound means skipped judgment.
This commit is contained in:
+5
-3
@@ -463,6 +463,7 @@ bool NoteData::IsTap(const TapNote &tn, const int row) const
|
|||||||
{
|
{
|
||||||
return (tn.type != TapNote::empty && tn.type != TapNote::mine
|
return (tn.type != TapNote::empty && tn.type != TapNote::mine
|
||||||
&& tn.type != TapNote::lift && tn.type != TapNote::fake
|
&& tn.type != TapNote::lift && tn.type != TapNote::fake
|
||||||
|
&& tn.type != TapNote::autoKeysound
|
||||||
&& GAMESTATE->GetProcessedTimingData()->IsJudgableAtRow(row));
|
&& GAMESTATE->GetProcessedTimingData()->IsJudgableAtRow(row));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -610,9 +611,10 @@ int NoteData::GetNumRowsWithSimultaneousTaps( int iMinTaps, int iStartIndex, int
|
|||||||
for( int t=0; t<GetNumTracks(); t++ )
|
for( int t=0; t<GetNumTracks(); t++ )
|
||||||
{
|
{
|
||||||
const TapNote &tn = GetTapNote(t, r);
|
const TapNote &tn = GetTapNote(t, r);
|
||||||
if( tn.type != TapNote::mine // mines don't count.
|
if (tn.type != TapNote::mine && // mines don't count.
|
||||||
&& tn.type != TapNote::empty
|
tn.type != TapNote::empty &&
|
||||||
&& tn.type != TapNote::fake)
|
tn.type != TapNote::fake &&
|
||||||
|
tn.type != TapNote::autoKeysound)
|
||||||
iNumNotesThisIndex++;
|
iNumNotesThisIndex++;
|
||||||
}
|
}
|
||||||
if( iNumNotesThisIndex >= iMinTaps )
|
if( iNumNotesThisIndex >= iMinTaps )
|
||||||
|
|||||||
@@ -250,7 +250,10 @@ TapNoteScore NoteDataWithScoring::MinTapNoteScore( const NoteData &in, unsigned
|
|||||||
{
|
{
|
||||||
// Ignore mines (and fake arrows), or the score will always be TNS_None.
|
// Ignore mines (and fake arrows), or the score will always be TNS_None.
|
||||||
const TapNote &tn = in.GetTapNote( t, row );
|
const TapNote &tn = in.GetTapNote( t, row );
|
||||||
if( tn.type == TapNote::empty || tn.type == TapNote::mine || tn.type == TapNote::fake )
|
if (tn.type == TapNote::empty ||
|
||||||
|
tn.type == TapNote::mine ||
|
||||||
|
tn.type == TapNote::fake ||
|
||||||
|
tn.type == TapNote::autoKeysound)
|
||||||
continue;
|
continue;
|
||||||
score = min( score, tn.result.tns );
|
score = min( score, tn.result.tns );
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-10
@@ -1653,7 +1653,7 @@ int Player::GetClosestNoteDirectional( int col, int iStartRow, int iEndRow, bool
|
|||||||
const TapNote &tn = begin->second;
|
const TapNote &tn = begin->second;
|
||||||
if (!m_Timing->IsJudgableAtRow( begin->first ))
|
if (!m_Timing->IsJudgableAtRow( begin->first ))
|
||||||
break;
|
break;
|
||||||
if( tn.type == TapNote::empty )
|
if( tn.type == TapNote::empty || tn.type == TapNote::autoKeysound )
|
||||||
break;
|
break;
|
||||||
if( !bAllowGraded && tn.result.tns != TNS_None )
|
if( !bAllowGraded && tn.result.tns != TNS_None )
|
||||||
break;
|
break;
|
||||||
@@ -2238,9 +2238,11 @@ void Player::StepStrumHopo( int col, int row, const RageTimer &tm, bool bHeld, b
|
|||||||
break;
|
break;
|
||||||
case TapNote::attack:
|
case TapNote::attack:
|
||||||
if( !bRelease && fSecondsFromExact <= GetWindowSeconds(TW_Attack) && !pTN->result.bHidden )
|
if( !bRelease && fSecondsFromExact <= GetWindowSeconds(TW_Attack) && !pTN->result.bHidden )
|
||||||
score = TNS_W2; // sentinel
|
score = AllowW1() ? TNS_W1 : TNS_W2; // sentinel
|
||||||
|
break;
|
||||||
|
case TapNote::autoKeysound:
|
||||||
|
score = AllowW1() ? TNS_W1 : TNS_W2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TapNote::hold_head:
|
case TapNote::hold_head:
|
||||||
// oh wow, this was causing the trigger before the hold heads
|
// oh wow, this was causing the trigger before the hold heads
|
||||||
// bug. (It was fNoteOffset > 0.f before) -DaisuMaster
|
// bug. (It was fNoteOffset > 0.f before) -DaisuMaster
|
||||||
@@ -2744,6 +2746,10 @@ void Player::UpdateTapNotesMissedOlderThan( float fMissIfOlderThanSeconds )
|
|||||||
if( m_pSecondaryScoreKeeper )
|
if( m_pSecondaryScoreKeeper )
|
||||||
m_pSecondaryScoreKeeper->HandleTapScore( tn );
|
m_pSecondaryScoreKeeper->HandleTapScore( tn );
|
||||||
}
|
}
|
||||||
|
else if (tn.type == TapNote::autoKeysound)
|
||||||
|
{
|
||||||
|
tn.result.tns = AllowW1() ? TNS_W1 : TNS_W2; // sentinel
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tn.result.tns = TNS_Miss;
|
tn.result.tns = TNS_Miss;
|
||||||
@@ -2791,7 +2797,9 @@ void Player::UpdateJudgedRows()
|
|||||||
for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack )
|
for( int iTrack = 0; iTrack < m_NoteData.GetNumTracks(); ++iTrack )
|
||||||
{
|
{
|
||||||
const TapNote &tn = m_NoteData.GetTapNote( iTrack, iRow );
|
const TapNote &tn = m_NoteData.GetTapNote( iTrack, iRow );
|
||||||
if( tn.type == TapNote::empty || tn.type == TapNote::mine ) continue;
|
if (tn.type == TapNote::empty ||
|
||||||
|
tn.type == TapNote::mine ||
|
||||||
|
tn.type == TapNote::autoKeysound) continue;
|
||||||
SetJudgment( tn.result.tns, iTrack, tn.result.fTapNoteOffset );
|
SetJudgment( tn.result.tns, iTrack, tn.result.fTapNoteOffset );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2973,8 +2981,11 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now )
|
|||||||
// check to see if there's a note at the crossed row
|
// check to see if there's a note at the crossed row
|
||||||
if( m_pPlayerState->m_PlayerController != PC_HUMAN )
|
if( m_pPlayerState->m_PlayerController != PC_HUMAN )
|
||||||
{
|
{
|
||||||
if(tn.type != TapNote::empty && tn.type != TapNote::fake && tn.result.tns == TNS_None
|
if (tn.type != TapNote::empty &&
|
||||||
&& this->m_Timing->IsJudgableAtRow(iRow) )
|
tn.type != TapNote::fake &&
|
||||||
|
tn.type != TapNote::autoKeysound &&
|
||||||
|
tn.result.tns == TNS_None &&
|
||||||
|
this->m_Timing->IsJudgableAtRow(iRow) )
|
||||||
{
|
{
|
||||||
Step( iTrack, iRow, now, false, false );
|
Step( iTrack, iRow, now, false, false );
|
||||||
if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY )
|
if( m_pPlayerState->m_PlayerController == PC_AUTOPLAY )
|
||||||
@@ -2988,10 +2999,10 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now )
|
|||||||
// handle autokeysounds here.
|
// handle autokeysounds here.
|
||||||
for (int t = 0; t < m_NoteData.GetNumTracks(); ++t)
|
for (int t = 0; t < m_NoteData.GetNumTracks(); ++t)
|
||||||
{
|
{
|
||||||
const TapNote &tn = m_NoteData.GetTapNote(t, iRow);
|
const TapNote &tap = m_NoteData.GetTapNote(t, iRow);
|
||||||
if (tn.type == TapNote::autoKeysound)
|
if (tap.type == TapNote::autoKeysound)
|
||||||
{
|
{
|
||||||
PlayKeysound(tn, TNS_None);
|
PlayKeysound(tap, TNS_None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3151,7 +3162,10 @@ void Player::HandleTapRowScore( unsigned row )
|
|||||||
{
|
{
|
||||||
const TapNote &tn = m_NoteData.GetTapNote( track, row );
|
const TapNote &tn = m_NoteData.GetTapNote( track, row );
|
||||||
// Mines cannot be handled here.
|
// Mines cannot be handled here.
|
||||||
if( tn.type == TapNote::empty || tn.type == TapNote::fake || tn.type == TapNote::mine )
|
if (tn.type == TapNote::empty ||
|
||||||
|
tn.type == TapNote::fake ||
|
||||||
|
tn.type == TapNote::mine ||
|
||||||
|
tn.type == TapNote::autoKeysound)
|
||||||
continue;
|
continue;
|
||||||
if( m_pPrimaryScoreKeeper )
|
if( m_pPrimaryScoreKeeper )
|
||||||
m_pPrimaryScoreKeeper->HandleTapScore( tn );
|
m_pPrimaryScoreKeeper->HandleTapScore( tn );
|
||||||
|
|||||||
Reference in New Issue
Block a user