add ImmediateHoldLetGo
This commit is contained in:
@@ -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
@@ -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 )
|
||||||
|
|||||||
Reference in New Issue
Block a user