implement not changing banners when fast if banners aren't preloaded

This commit is contained in:
Glenn Maynard
2003-06-11 01:48:25 +00:00
parent b9b19858d9
commit 61e8c60d1e
3 changed files with 22 additions and 3 deletions
+19 -3
View File
@@ -22,6 +22,7 @@ static const float FadeTime = 0.25;
FadingBanner::FadingBanner()
{
m_bMovingFast = false;
m_iIndexFront = 0;
for( int i=0; i<2; i++ )
this->AddChild( &m_Banner[i] );
@@ -86,9 +87,13 @@ void FadingBanner::BeforeChange()
/* If this returns false, the banner couldn't be loaded. */
bool FadingBanner::LoadFromCachedBanner( const CString &path )
{
/* No matter what we load, ensure we don't fade to a stale path. */
m_sPendingBanner = "";
if( TEXTUREMAN->IsTextureRegistered( Banner::BannerTex( path ) ) )
{
/* The actual file is already cached. Use it. */
BeforeChange();
m_Banner[GetBackIndex()].Load( Banner::BannerTex(path) );
return true;
}
@@ -98,6 +103,7 @@ bool FadingBanner::LoadFromCachedBanner( const CString &path )
if( !TEXTUREMAN->IsTextureRegistered(ID) )
return false;
BeforeChange();
m_Banner[GetBackIndex()].Load( ID );
m_sPendingBanner = path;
m_PendingTimer.GetDeltaTime(); /* reset */
@@ -107,10 +113,20 @@ bool FadingBanner::LoadFromCachedBanner( const CString &path )
void FadingBanner::LoadFromSong( Song* pSong )
{
BeforeChange();
if( !LoadFromCachedBanner(pSong->GetBannerPath()) )
m_Banner[GetBackIndex()].LoadFromSong( pSong );
{
/* Oops. We couldn't load a banner quickly. We can load the actual
* banner, but that's slow, so we don't want to do that when we're moving
* fast on the music wheel. In that case, we should just keep the banner
* that's there (or load a "moving fast" banner). Once we settle down,
* we'll get called again and load the real banner. */
if( !m_bMovingFast )
{
BeforeChange();
m_Banner[GetBackIndex()].LoadFromSong( pSong );
}
}
}
void FadingBanner::LoadAllMusic()
+2
View File
@@ -31,6 +31,7 @@ public:
void LoadRandom();
void LoadFallback();
void SetMovingFast( bool fast ) { m_bMovingFast=fast; }
virtual void Update( float fDeltaTime );
virtual void DrawPrimitives();
@@ -45,6 +46,7 @@ protected:
CString m_sPendingBanner;
RageTimer m_PendingTimer;
bool m_bMovingFast;
};
#endif
+1
View File
@@ -778,6 +778,7 @@ void ScreenSelectMusic::AfterMusicChange()
m_arrayNotes[pn].clear();
bool no_banner_change = false;
m_Banner.SetMovingFast( !!m_MusicWheel.IsMoving() );
// if(PREFSMAN->m_BannerCacheType == PREFSMAN->preload_none && m_MusicWheel.IsMoving())
// {
/* If we're moving fast and we didn't preload banners, don't touch it. */