feat (RateModsAffectFGChanges): Actually implemented

I'm trying to transfer the nITG implementation for now
This commit is contained in:
FMS-Cat
2020-10-20 02:16:02 +09:00
parent a6dd6f4ad7
commit 7d2a70db23
5 changed files with 283 additions and 271 deletions
+1 -1
View File
@@ -730,7 +730,7 @@ void BackgroundImpl::Layer::UpdateCurBGChange( const Song *pSong, float fLastMus
pSong->m_SongTiming.GetBeatAndBPSFromElapsedTime(beat_info);
// Calls to Update() should *not* be scaled by music rate; fCurrentTime is. Undo it.
const float fRate = GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
const float fRate = PREFSMAN->m_bRateModsAffectTweens ? 1.0f : GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
// Find the BGSegment we're in
const int i = FindBGSegmentForBeat(beat_info.beat);
+1 -1
View File
@@ -73,7 +73,7 @@ void Foreground::LoadFromSong( const Song *pSong )
void Foreground::Update( float fDeltaTime )
{
// Calls to Update() should *not* be scaled by music rate. Undo it.
const float fRate = GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
const float fRate = PREFSMAN->m_bRateModsAffectTweens ? 1.0f : GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate;
for( unsigned i=0; i < m_BGAnimations.size(); ++i )
{
+3 -1
View File
@@ -111,8 +111,10 @@ void PlayerOptions::Init()
void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds )
{
const float fRateMult = PREFSMAN->m_bRateModsAffectTweens ? GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate : 1.0f;
#define APPROACH( opt ) \
fapproach( m_ ## opt, other.m_ ## opt, fDeltaSeconds * other.m_Speed ## opt );
fapproach( m_ ## opt, other.m_ ## opt, fRateMult * fDeltaSeconds * other.m_Speed ## opt );
#define DO_COPY( x ) \
x = other.x;
+9
View File
@@ -1651,6 +1651,8 @@ void ScreenEdit::Update( float fDeltaTime )
{
m_PlayerStateEdit.Update( fDeltaTime );
const float fRate = PREFSMAN->m_bRateModsAffectTweens ? GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate : 1.0f;
if( m_pSoundMusic->IsPlaying() )
{
RageTimer tm;
@@ -1755,7 +1757,14 @@ void ScreenEdit::Update( float fDeltaTime )
}
//LOG->Trace( "ScreenEdit::Update(%f)", fDeltaTime );
if( m_EditState == STATE_PLAYING )
{
ScreenWithMenuElements::Update( fDeltaTime * fRate );
}
else
{
ScreenWithMenuElements::Update( fDeltaTime );
}
// Update trailing beat
+2 -1
View File
@@ -1701,7 +1701,8 @@ void ScreenGameplay::Update( float fDeltaTime )
}
else
{
Screen::Update( fDeltaTime );
const float fRate = PREFSMAN->m_bRateModsAffectTweens ? GAMESTATE->m_SongOptions.GetCurrent().m_fMusicRate : 1.0f;
Screen::Update( fDeltaTime * fRate );
}
/* This happens if ScreenDemonstration::HandleScreenMessage sets a new screen when