fix dumb diagonal banners in BGAs
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
#include "song.h"
|
#include "song.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "ActorCollision.h"
|
#include "ActorCollision.h"
|
||||||
|
#include "CroppedSprite.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -434,6 +434,12 @@ void BGAnimationLayer::LoadFromAniLayerFile( CString sPath )
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Sprite *NewSprite(bool banner)
|
||||||
|
{
|
||||||
|
if(banner) return new CroppedSprite;
|
||||||
|
return new Sprite;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
||||||
{
|
{
|
||||||
@@ -448,6 +454,8 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
IniFile ini(sPathToIni);
|
IniFile ini(sPathToIni);
|
||||||
ini.ReadFile();
|
ini.ReadFile();
|
||||||
|
|
||||||
|
bool IsBanner = false;
|
||||||
|
|
||||||
CString sFile;
|
CString sFile;
|
||||||
ini.GetValue( sLayer, "File", sFile );
|
ini.GetValue( sLayer, "File", sFile );
|
||||||
|
|
||||||
@@ -468,6 +476,7 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
sPath = pSong->GetBannerPath();
|
sPath = pSong->GetBannerPath();
|
||||||
else
|
else
|
||||||
sPath = THEME->GetPathToG("Common fallback banner");
|
sPath = THEME->GetPathToG("Common fallback banner");
|
||||||
|
IsBanner = true;
|
||||||
}
|
}
|
||||||
else if( sFile == "" )
|
else if( sFile == "" )
|
||||||
{
|
{
|
||||||
@@ -505,13 +514,13 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
switch( m_Type )
|
switch( m_Type )
|
||||||
{
|
{
|
||||||
case TYPE_SPRITE:
|
case TYPE_SPRITE:
|
||||||
m_Sprites.push_back(new Sprite);
|
m_Sprites.push_back(NewSprite(IsBanner));
|
||||||
m_Sprites.back()->Load( sPath );
|
m_Sprites.back()->Load( sPath );
|
||||||
m_Sprites.back()->SetXY( CENTER_X, CENTER_Y );
|
m_Sprites.back()->SetXY( CENTER_X, CENTER_Y );
|
||||||
break;
|
break;
|
||||||
case TYPE_STRETCH:
|
case TYPE_STRETCH:
|
||||||
{
|
{
|
||||||
m_Sprites.push_back(new Sprite);
|
m_Sprites.push_back(NewSprite(IsBanner));
|
||||||
RageTextureID ID(sPath);
|
RageTextureID ID(sPath);
|
||||||
ID.bStretch = true;
|
ID.bStretch = true;
|
||||||
m_Sprites.back()->LoadBG( ID );
|
m_Sprites.back()->LoadBG( ID );
|
||||||
@@ -523,7 +532,7 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
{
|
{
|
||||||
for( int i=0; i<m_iNumParticles; i++ )
|
for( int i=0; i<m_iNumParticles; i++ )
|
||||||
{
|
{
|
||||||
m_Sprites.push_back(new Sprite);
|
m_Sprites.push_back(NewSprite(IsBanner));
|
||||||
m_Sprites.back()->Load( sPath );
|
m_Sprites.back()->Load( sPath );
|
||||||
m_Sprites.back()->SetXY( randomf(SCREEN_LEFT,SCREEN_RIGHT), randomf(SCREEN_TOP,SCREEN_BOTTOM) );
|
m_Sprites.back()->SetXY( randomf(SCREEN_LEFT,SCREEN_RIGHT), randomf(SCREEN_TOP,SCREEN_BOTTOM) );
|
||||||
m_Sprites.back()->SetZoom( randomf(m_fZoomMin,m_fZoomMax) );
|
m_Sprites.back()->SetZoom( randomf(m_fZoomMin,m_fZoomMax) );
|
||||||
@@ -554,7 +563,7 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
unsigned NumSprites = m_iNumTilesWide * m_iNumTilesHigh;
|
unsigned NumSprites = m_iNumTilesWide * m_iNumTilesHigh;
|
||||||
for( unsigned i=0; i<NumSprites; i++ )
|
for( unsigned i=0; i<NumSprites; i++ )
|
||||||
{
|
{
|
||||||
m_Sprites.push_back(new Sprite);
|
m_Sprites.push_back(NewSprite(IsBanner));
|
||||||
m_Sprites.back()->Load( ID );
|
m_Sprites.back()->Load( ID );
|
||||||
m_Sprites.back()->EnableTextureWrapping( true ); // gets rid of some "cracks"
|
m_Sprites.back()->EnableTextureWrapping( true ); // gets rid of some "cracks"
|
||||||
m_Sprites.back()->SetZoom( randomf(m_fZoomMin,m_fZoomMax) );
|
m_Sprites.back()->SetZoom( randomf(m_fZoomMin,m_fZoomMax) );
|
||||||
|
|||||||
Reference in New Issue
Block a user