/* If this returns true, a low-resolution banner was loaded, and the full-res * banner should be loaded later. */ bool FadingBanner::LoadFromCachedBanner( const CString &path ) { /* If we're already on the given banner, don't fade again. */ if( path != "" && m_Banner[GetBackIndex()].GetTexturePath() == path ) return false; if( path == "" ) { LoadFallback(); return false; } /* If we're currently fading to the given banner, go through this again, * which will cause the fade-in to be further delayed. */ RageTextureID ID; bool bLowRes = (PREFSMAN->m_BannerCache != PrefsManager::BNCACHE_FULL); if( !bLowRes ) { ID = path; Sprite::SongBannerTexture( ID ); } else { /* Try to load the low quality version. */ ID = BANNERCACHE->LoadCachedBanner( path ); } if( !TEXTUREMAN->IsTextureRegistered(ID) ) { /* 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 ) return false; if( IsAFile(path) ) Load( path ); else LoadFallback(); return false; } BeforeChange(); m_Banner[GetBackIndex()].Load( ID ); return bLowRes; }
void FadingBanner::DrawPrimitives() { // draw manually // ActorFrame::DrawPrimitives(); m_Banner[GetBackIndex()].Draw(); m_Banner[m_iIndexFront].Draw(); }
void FadingBanner::BeforeChange() { m_Banner[m_iIndexFront].SetDiffuse( RageColor(1,1,1,1) ); m_iIndexFront = GetBackIndex(); m_Banner[m_iIndexFront].SetDiffuse( RageColor(1,1,1,1) ); m_Banner[m_iIndexFront].StopTweening(); m_Banner[m_iIndexFront].BeginTweening( FADE_SECONDS ); // fade out m_Banner[m_iIndexFront].SetDiffuse( RageColor(1,1,1,0) ); /* We're about to load a banner. It'll probably cause a frame skip or * two. Skip an update, so the fade-in doesn't skip. */ m_bSkipNextBannerUpdate = true; }
bool FadingBanner::Load( RageTextureID ID ) { BeforeChange(); bool bRet = m_Banner[GetBackIndex()].Load(ID); return bRet; }
void FadingBanner::LoadFallback() { BeforeChange(); m_Banner[GetBackIndex()].LoadFallback(); }
void FadingBanner::LoadRandom() { BeforeChange(); m_Banner[GetBackIndex()].LoadRandom(); }
void FadingBanner::LoadAllMusic() { BeforeChange(); m_Banner[GetBackIndex()].LoadAllMusic(); }