(Actually, that tap score wasn't needed, but it could be useful later, so
I won't bother to remove it.) Don't trigger an NG if the hold tap was missed completely, and don't apply any associated penalties.
This commit is contained in:
@@ -214,10 +214,10 @@ void Player::Update( float fDeltaTime )
|
|||||||
|
|
||||||
// if they got a bad score or haven't stepped on the corresponding tap yet
|
// if they got a bad score or haven't stepped on the corresponding tap yet
|
||||||
const TapNoteScore tns = m_TapNoteScores[hn.m_iTrack][iHoldStartIndex];
|
const TapNoteScore tns = m_TapNoteScores[hn.m_iTrack][iHoldStartIndex];
|
||||||
|
const bool bSteppedOnTapNote = tns != TNS_NONE && tns != TNS_MISS; // did they step on the start of this hold?
|
||||||
|
|
||||||
if( hn.m_fStartBeat < fSongBeat && fSongBeat < hn.m_fEndBeat ) // if the song beat is in the range of this hold
|
if( hn.m_fStartBeat < fSongBeat && fSongBeat < hn.m_fEndBeat ) // if the song beat is in the range of this hold
|
||||||
{
|
{
|
||||||
const bool bSteppedOnTapNote = tns != TNS_NONE && tns != TNS_MISS; // did they step on the start of this hold?
|
|
||||||
const bool bIsHoldingButton = INPUTMAPPER->IsButtonDown( GameI ) || PREFSMAN->m_bAutoPlay || GAMESTATE->m_bDemonstration;
|
const bool bIsHoldingButton = INPUTMAPPER->IsButtonDown( GameI ) || PREFSMAN->m_bAutoPlay || GAMESTATE->m_bDemonstration;
|
||||||
|
|
||||||
m_NoteField.m_bIsHoldingHoldNote[i] = bIsHoldingButton && bSteppedOnTapNote; // set host flag so NoteField can do intelligent drawing
|
m_NoteField.m_bIsHoldingHoldNote[i] = bIsHoldingButton && bSteppedOnTapNote; // set host flag so NoteField can do intelligent drawing
|
||||||
@@ -247,8 +247,9 @@ void Player::Update( float fDeltaTime )
|
|||||||
m_NoteField.m_fHoldNoteLife[i] = fLife; // update the NoteField display
|
m_NoteField.m_fHoldNoteLife[i] = fLife; // update the NoteField display
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for NG
|
/* check for NG. If the head was missed completely, don't count
|
||||||
if( fLife == 0 ) // the player has not pressed the button for a long time!
|
* an NG. */
|
||||||
|
if( bSteppedOnTapNote && fLife == 0 ) // the player has not pressed the button for a long time!
|
||||||
{
|
{
|
||||||
hns = HNS_NG;
|
hns = HNS_NG;
|
||||||
HandleNoteScore( hns, tns );
|
HandleNoteScore( hns, tns );
|
||||||
@@ -257,9 +258,8 @@ void Player::Update( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check for OK
|
// check for OK
|
||||||
if( fSongBeat >= hn.m_fEndBeat ) // if this HoldNote is in the past
|
if( fSongBeat >= hn.m_fEndBeat && fLife > 0 ) // if this HoldNote is in the past
|
||||||
{
|
{
|
||||||
// At this point fLife > 0, or else we would have marked it NG above
|
|
||||||
fLife = 1;
|
fLife = 1;
|
||||||
hns = HNS_OK;
|
hns = HNS_OK;
|
||||||
HandleNoteScore( hns, tns );
|
HandleNoteScore( hns, tns );
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ protected:
|
|||||||
int UpdateTapNotesMissedOlderThan( float fMissIfOlderThanThisBeat );
|
int UpdateTapNotesMissedOlderThan( float fMissIfOlderThanThisBeat );
|
||||||
void OnRowDestroyed( int col, int iStepIndex );
|
void OnRowDestroyed( int col, int iStepIndex );
|
||||||
void HandleNoteScore( TapNoteScore score, int iNumTapsInRow );
|
void HandleNoteScore( TapNoteScore score, int iNumTapsInRow );
|
||||||
void HandleNoteScore( HoldNoteScore score );
|
void HandleNoteScore( HoldNoteScore score, TapNoteScore TapNoteScore );
|
||||||
|
|
||||||
static float GetMaxBeatDifference();
|
static float GetMaxBeatDifference();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user