Apply the Mine Fix patch

Link here: https://gist.github.com/DinsFire64/4a3f763cd3033afd55a176980b32a3b5#file-minefix_rc1-patch
This commit is contained in:
teejusb
2021-08-23 17:52:10 -07:00
parent 0a8bf3b6f2
commit c4990dd7ac
+14 -11
View File
@@ -1064,7 +1064,10 @@ void Player::Update( float fDeltaTime )
/* We want to send the crossed row message exactly when we cross the row--not
* .5 before the row. Use a very slow song (around 2 BPM) as a test case: without
* rounding, autoplay steps early. -glenn */
const int iRowNow = BeatToNoteRowNotRounded( m_pPlayerState->m_Position.m_fSongBeat );
const float fPositionSeconds = m_pPlayerState->m_Position.m_fMusicSeconds - PREFSMAN->m_fPadStickSeconds;
const float fSongBeat = GAMESTATE->m_pCurSong ? GAMESTATE->m_pCurSong->m_SongTiming.GetBeatFromElapsedTime( fPositionSeconds ) : 0;
const int iRowNow = BeatToNoteRowNotRounded( fSongBeat );
if( iRowNow >= 0 )
{
if( GAMESTATE->IsPlayerEnabled(m_pPlayerState) )
@@ -1808,13 +1811,8 @@ int Player::GetClosestNote( int col, int iNoteRow, int iMaxRowsAhead, int iMaxRo
if( iPrevIndex == -1 )
return iNextIndex;
// Get the current time, previous time, and next time.
float fNoteTime = m_pPlayerState->m_Position.m_fMusicSeconds ;
float fNextTime = m_Timing->GetElapsedTimeFromBeat(NoteRowToBeat(iNextIndex));
float fPrevTime = m_Timing->GetElapsedTimeFromBeat(NoteRowToBeat(iPrevIndex));
/* Figure out which row is closer. */
if( fabsf(fNoteTime-fNextTime) > fabsf(fNoteTime-fPrevTime) )
if( abs(iNoteRow-iNextIndex) > abs(iNoteRow-iPrevIndex) )
return iPrevIndex;
else
return iNextIndex;
@@ -2186,10 +2184,10 @@ void Player::Step( int col, int row, const RageTimer &tm, bool bHeld, bool bRele
{
case TapNoteType_Mine:
// Stepped too close to mine?
if( !bRelease && ( REQUIRE_STEP_ON_MINES == !bHeld ) &&
fSecondsFromExact <= GetWindowSeconds(TW_Mine) &&
m_Timing->IsJudgableAtRow(iSongRow))
score = TNS_HitMine;
if(!bRelease &&
(!REQUIRE_STEP_ON_MINES || REQUIRE_STEP_ON_MINES == !bHeld ) &&
fSecondsFromExact <= GetWindowSeconds(TW_Mine))
score = TNS_HitMine;
break;
case TapNoteType_Attack:
if( !bRelease && fSecondsFromExact <= GetWindowSeconds(TW_Attack) && !pTN->result.bHidden )
@@ -3067,6 +3065,11 @@ float Player::GetMaxStepDistanceSeconds()
fMax = max( fMax, GetWindowSeconds(TW_W3) );
fMax = max( fMax, GetWindowSeconds(TW_W2) );
fMax = max( fMax, GetWindowSeconds(TW_W1) );
fMax = max( fMax, GetWindowSeconds(TW_Mine) );
fMax = max( fMax, GetWindowSeconds(TW_Hold) );
fMax = max( fMax, GetWindowSeconds(TW_Roll) );
fMax = max( fMax, GetWindowSeconds(TW_Attack) );
fMax = max( fMax, GetWindowSeconds(TW_Checkpoint) );
float f = GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate * fMax;
return f + m_fMaxInputLatencySeconds;
}