From 230d89eb5e7926aa9f2f1f0f506498de2c1c854e Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Wed, 2 May 2007 02:10:40 +0000 Subject: [PATCH] Banner::LoadFromCachedBanner --- stepmania/src/Banner.cpp | 36 ++++++++++++++++++++++++++++++++++++ stepmania/src/Banner.h | 1 + 2 files changed, 37 insertions(+) diff --git a/stepmania/src/Banner.cpp b/stepmania/src/Banner.cpp index 3a82e1d4a7..e1e374bcf1 100644 --- a/stepmania/src/Banner.cpp +++ b/stepmania/src/Banner.cpp @@ -1,5 +1,6 @@ #include "global.h" #include "Banner.h" +#include "BannerCache.h" #include "SongManager.h" #include "RageUtil.h" #include "song.h" @@ -10,6 +11,7 @@ #include "CharacterManager.h" #include "ActorUtil.h" #include "UnlockManager.h" +#include "PrefsManager.h" REGISTER_ACTOR_CLASS( Banner ) @@ -43,6 +45,34 @@ void Banner::Load( RageTextureID ID, bool bIsBanner ) TEXTUREMAN->EnableOddDimensionWarning(); }; +void Banner::LoadFromCachedBanner( const RString &sPath ) +{ + if( sPath.empty() ) + { + LoadFallback(); + return; + } + + RageTextureID ID; + bool bLowRes = (PREFSMAN->m_BannerCache != BNCACHE_FULL); + if( !bLowRes ) + { + ID = Sprite::SongBannerTexture( sPath ); + } + else + { + /* Try to load the low quality version. */ + ID = BANNERCACHE->LoadCachedBanner( sPath ); + } + + if( TEXTUREMAN->IsTextureRegistered(ID) ) + Load( ID ); + else if( IsAFile(sPath) ) + Load( sPath ); + else + LoadFallback(); +} + void Banner::Update( float fDeltaTime ) { Sprite::Update( fDeltaTime ); @@ -205,6 +235,11 @@ public: else { Course *pC = Luna::check(L,1); p->LoadFromCourse( pC ); } return 0; } + static int LoadFromCachedBanner( T* p, lua_State *L ) + { + p->LoadFromCachedBanner( SArg(1) ); + return 0; + } static int LoadIconFromCharacter( T* p, lua_State *L ) { if( lua_isnil(L,1) ) { p->LoadIconFromCharacter( NULL ); } @@ -236,6 +271,7 @@ public: ADD_METHOD( ScaleToClipped ); ADD_METHOD( LoadFromSong ); ADD_METHOD( LoadFromCourse ); + ADD_METHOD( LoadFromCachedBanner ); ADD_METHOD( LoadIconFromCharacter ); ADD_METHOD( LoadCardFromCharacter ); ADD_METHOD( LoadBannerFromUnlockEntry ); diff --git a/stepmania/src/Banner.h b/stepmania/src/Banner.h index c56acaef99..d5179a38ad 100644 --- a/stepmania/src/Banner.h +++ b/stepmania/src/Banner.h @@ -19,6 +19,7 @@ public: void Load( RageTextureID ID, bool bIsBanner ); virtual void Load( RageTextureID ID ) { Load( ID, true ); } + void LoadFromCachedBanner( const RString &sPath ); virtual void Update( float fDeltaTime );