move Background::LoadFromRandom out
This commit is contained in:
@@ -272,6 +272,39 @@ CString Background::CreateRandomBGA()
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Background::LoadFromRandom( float fFirstBeat, float fLastBeat, const TimingData &timing )
|
||||||
|
{
|
||||||
|
// change BG every 4 bars
|
||||||
|
for( float f=fFirstBeat; f<fLastBeat; f+=BEATS_PER_MEASURE*4 )
|
||||||
|
{
|
||||||
|
// Don't fade. It causes frame rate dip, especially on
|
||||||
|
// slower machines.
|
||||||
|
bool bFade = false;
|
||||||
|
//bool bFade = PREFSMAN->m_BackgroundMode==PrefsManager::BGMODE_RANDOMMOVIES ||
|
||||||
|
// PREFSMAN->m_BackgroundMode==PrefsManager::BGMODE_MOVIEVIS;
|
||||||
|
|
||||||
|
CString sBGName = CreateRandomBGA();
|
||||||
|
if( sBGName != "" )
|
||||||
|
m_aBGChanges.push_back( BackgroundChange(f,sBGName,1.f,bFade) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// change BG every BPM change that is at the beginning of a measure
|
||||||
|
for( unsigned i=0; i<timing.m_BPMSegments.size(); i++ )
|
||||||
|
{
|
||||||
|
const BPMSegment& bpmseg = timing.m_BPMSegments[i];
|
||||||
|
|
||||||
|
if( fmodf(bpmseg.m_fStartBeat, (float)BEATS_PER_MEASURE) != 0 )
|
||||||
|
continue; // skip
|
||||||
|
|
||||||
|
if( bpmseg.m_fStartBeat < fFirstBeat || bpmseg.m_fStartBeat > fLastBeat )
|
||||||
|
continue; // skip
|
||||||
|
|
||||||
|
CString sBGName = CreateRandomBGA();
|
||||||
|
if( sBGName != "" )
|
||||||
|
m_aBGChanges.push_back( BackgroundChange(bpmseg.m_fStartBeat,sBGName) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Background::LoadFromSong( Song* pSong )
|
void Background::LoadFromSong( Song* pSong )
|
||||||
{
|
{
|
||||||
Unload();
|
Unload();
|
||||||
@@ -326,38 +359,7 @@ void Background::LoadFromSong( Song* pSong )
|
|||||||
}
|
}
|
||||||
else // pSong doesn't have an animation plan
|
else // pSong doesn't have an animation plan
|
||||||
{
|
{
|
||||||
const float fFirstBeat = pSong->m_fFirstBeat;
|
LoadFromRandom( pSong->m_fFirstBeat, pSong->m_fLastBeat, pSong->m_Timing );
|
||||||
const float fLastBeat = pSong->m_fLastBeat;
|
|
||||||
|
|
||||||
// change BG every 4 bars
|
|
||||||
for( float f=fFirstBeat; f<fLastBeat; f+=BEATS_PER_MEASURE*4 )
|
|
||||||
{
|
|
||||||
// Don't fade. It causes frame rate dip, especially on
|
|
||||||
// slower machines.
|
|
||||||
bool bFade = false;
|
|
||||||
//bool bFade = PREFSMAN->m_BackgroundMode==PrefsManager::BGMODE_RANDOMMOVIES ||
|
|
||||||
// PREFSMAN->m_BackgroundMode==PrefsManager::BGMODE_MOVIEVIS;
|
|
||||||
|
|
||||||
CString sBGName = CreateRandomBGA();
|
|
||||||
if( sBGName != "" )
|
|
||||||
m_aBGChanges.push_back( BackgroundChange(f,sBGName,1.f,bFade) );
|
|
||||||
}
|
|
||||||
|
|
||||||
// change BG every BPM change that is at the beginning of a measure
|
|
||||||
for( unsigned i=0; i<pSong->m_Timing.m_BPMSegments.size(); i++ )
|
|
||||||
{
|
|
||||||
const BPMSegment& bpmseg = pSong->m_Timing.m_BPMSegments[i];
|
|
||||||
|
|
||||||
if( fmodf(bpmseg.m_fStartBeat, (float)BEATS_PER_MEASURE) != 0 )
|
|
||||||
continue; // skip
|
|
||||||
|
|
||||||
if( bpmseg.m_fStartBeat < fFirstBeat || bpmseg.m_fStartBeat > fLastBeat )
|
|
||||||
continue; // skip
|
|
||||||
|
|
||||||
CString sBGName = CreateRandomBGA();
|
|
||||||
if( sBGName != "" )
|
|
||||||
m_aBGChanges.push_back( BackgroundChange(bpmseg.m_fStartBeat,sBGName) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ public:
|
|||||||
DancingCharacters* GetDancingCharacters() { return m_pDancingCharacters; };
|
DancingCharacters* GetDancingCharacters() { return m_pDancingCharacters; };
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void LoadFromRandom( float fFirstBeat, float fLastBeat, const TimingData &timing );
|
||||||
|
|
||||||
bool IsDangerPlayerVisible( PlayerNumber pn );
|
bool IsDangerPlayerVisible( PlayerNumber pn );
|
||||||
bool IsDangerAllVisible();
|
bool IsDangerAllVisible();
|
||||||
bool IsDeadPlayerVisible( PlayerNumber pn );
|
bool IsDeadPlayerVisible( PlayerNumber pn );
|
||||||
|
|||||||
Reference in New Issue
Block a user