[editorKeysounds] More attempts, need help.

Anyone want a stab?

Main issue: tap + autoKeysound means skipped judgment.
This commit is contained in:
Jason Felds
2012-02-10 23:16:00 -05:00
parent 2f6240d372
commit 22033113a5
3 changed files with 34 additions and 15 deletions
+5 -3
View File
@@ -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 )
+4 -1
View File
@@ -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
View File
@@ -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 );