add ImmediateHoldLetGo

This commit is contained in:
Chris Danford
2007-03-13 07:07:47 +00:00
parent 356d8d96f5
commit 24353f67ad
2 changed files with 25 additions and 12 deletions
+1
View File
@@ -2233,6 +2233,7 @@ HoldJudgmentsUnderField=false
PenalizeTapScoreNone=false PenalizeTapScoreNone=false
JudgeHoldNotesOnSameRowTogether=false JudgeHoldNotesOnSameRowTogether=false
HoldCheckpoints=false HoldCheckpoints=false
ImmediateHoldLetGo=true
[PlayerShared] [PlayerShared]
Fallback="Player" Fallback="Player"
+24 -12
View File
@@ -129,6 +129,7 @@ Preference<float> g_fTimingWindowStrum ( "TimingWindowStrum", 0.1f ); // max
ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE ( "Player", "PenalizeTapScoreNone" ); ThemeMetric<bool> PENALIZE_TAP_SCORE_NONE ( "Player", "PenalizeTapScoreNone" );
ThemeMetric<bool> JUDGE_HOLD_NOTES_ON_SAME_ROW_TOGETHER ( "Player", "JudgeHoldNotesOnSameRowTogether" ); ThemeMetric<bool> JUDGE_HOLD_NOTES_ON_SAME_ROW_TOGETHER ( "Player", "JudgeHoldNotesOnSameRowTogether" );
ThemeMetric<bool> HOLD_CHECKPOINTS ( "Player", "HoldCheckpoints" ); ThemeMetric<bool> HOLD_CHECKPOINTS ( "Player", "HoldCheckpoints" );
ThemeMetric<bool> IMMEDIATE_HOLD_LET_GO ( "Player", "ImmediateHoldLetGo" );
float Player::GetWindowSeconds( TimingWindow tw ) float Player::GetWindowSeconds( TimingWindow tw )
@@ -896,23 +897,34 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector<TrackRowTap
} }
/* check for LetGo. If the head was missed completely, don't count an LetGo. */ /* check for LetGo. If the head was missed completely, don't count an LetGo. */
if( bSteppedOnTapNote && fLife == 0 ) // the player has not pressed the button for a long time! /* Why? If you never step on the head, then it will be left as HNS_None, which doesn't seem correct. */
hns = HNS_LetGo; if( IMMEDIATE_HOLD_LET_GO )
// check for OK
if( iSongRow >= iMaxEndRow && bSteppedOnTapNote && fLife > 0 ) // if this HoldNote is in the past
{ {
fLife = 1; if( bSteppedOnTapNote && fLife == 0 ) // the player has not pressed the button for a long time!
hns = HNS_Held; hns = HNS_LetGo;
bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD; }
if( m_pNoteField )
// score hold notes that have passed
if( iSongRow >= iMaxEndRow )
{
if( bSteppedOnTapNote && fLife > 0 )
{ {
FOREACH( TrackRowTapNote, vTN, trtn ) fLife = 1;
hns = HNS_Held;
bool bBright = m_pPlayerStageStats && m_pPlayerStageStats->m_iCurCombo>(int)BRIGHT_GHOST_COMBO_THRESHOLD;
if( m_pNoteField )
{ {
int iTrack = trtn->iTrack; FOREACH( TrackRowTapNote, vTN, trtn )
m_pNoteField->DidHoldNote( iTrack, HNS_Held, bBright ); // bright ghost flash {
int iTrack = trtn->iTrack;
m_pNoteField->DidHoldNote( iTrack, HNS_Held, bBright ); // bright ghost flash
}
} }
} }
else
{
hns = HNS_LetGo;
}
} }
FOREACH( TrackRowTapNote, vTN, trtn ) FOREACH( TrackRowTapNote, vTN, trtn )