add disqualifying "cover" modifier: don't show the song background

This commit is contained in:
Glenn Maynard
2004-04-02 00:13:47 +00:00
parent 20edc5037b
commit f9e818794a
4 changed files with 101 additions and 35 deletions
+76 -31
View File
@@ -34,16 +34,16 @@
const float FADE_SECONDS = 1.0f;
#define LEFT_EDGE THEME->GetMetricI("Background","LeftEdge")
#define TOP_EDGE THEME->GetMetricI("Background","TopEdge")
#define RIGHT_EDGE THEME->GetMetricI("Background","RightEdge")
#define BOTTOM_EDGE THEME->GetMetricI("Background","BottomEdge")
#define LEFT_EDGE THEME->GetMetricF("Background","LeftEdge")
#define TOP_EDGE THEME->GetMetricF("Background","TopEdge")
#define RIGHT_EDGE THEME->GetMetricF("Background","RightEdge")
#define BOTTOM_EDGE THEME->GetMetricF("Background","BottomEdge")
CachedThemeMetricB BLINK_DANGER_ALL("Background","BlinkDangerAll");
CachedThemeMetricB DANGER_ALL_IS_OPAQUE("Background","DangerAllIsOpaque");
#define RECT_BACKGROUND RectI(LEFT_EDGE,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE)
#define RECT_BACKGROUND RectF(LEFT_EDGE,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE)
static float g_fBackgroundCenterWidth = 40;
const CString STATIC_BACKGROUND = "static background";
Background::Background()
@@ -64,18 +64,6 @@ Background::Background()
for( p=0; p<NUM_PLAYERS; p++ )
m_DeadPlayer[p].LoadFromAniDir( THEME->GetPathToB(ssprintf("ScreenGameplay dead p%d",p+1)) );
m_quadBGBrightness.StretchTo( RECT_BACKGROUND );
m_quadBGBrightness.SetDiffuse( RageColor(0,0,0,1-PREFSMAN->m_fBGBrightness) );
m_quadBorder[0].StretchTo( RectI(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[0].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[1].StretchTo( RectI(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
m_quadBorder[1].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[2].StretchTo( RectI(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorder[2].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[3].StretchTo( RectI(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[3].SetDiffuse( RageColor(0,0,0,1) );
bool bOneOrMoreChars = false;
bool bShowingBeginnerHelper = false;
for( p=0; p<NUM_PLAYERS; p++ )
@@ -94,6 +82,8 @@ Background::Background()
m_pDancingCharacters = new DancingCharacters;
else
m_pDancingCharacters = NULL;
this->AddChild( &m_Brightness );
}
Background::~Background()
@@ -564,8 +554,6 @@ void Background::Update( float fDeltaTime )
if( m_pDancingCharacters )
m_pDancingCharacters->Update( fDeltaTime );
m_quadBGBrightness.Update( fDeltaTime );
}
void Background::DrawPrimitives()
@@ -573,8 +561,6 @@ void Background::DrawPrimitives()
if( PREFSMAN->m_fBGBrightness == 0 )
return;
ActorFrame::DrawPrimitives();
if( IsDangerAllVisible() )
{
// Since this only shows when DANGER is visible, it will flash red on it's own accord :)
@@ -604,9 +590,7 @@ void Background::DrawPrimitives()
if( m_pDancingCharacters )
m_pDancingCharacters->Draw();
m_quadBGBrightness.Draw();
for( int i=0; i<4; i++ )
m_quadBorder[i].Draw();
ActorFrame::DrawPrimitives();
}
bool Background::IsDangerAllVisible()
@@ -647,15 +631,76 @@ bool Background::IsDeadPlayerVisible( PlayerNumber pn )
}
void Background::FadeIn()
BrightnessOverlay::BrightnessOverlay()
{
m_quadBGBrightness.BeginTweening( 0.5f );
m_quadBGBrightness.SetDiffuse( RageColor(0,0,0,1-PREFSMAN->m_fBGBrightness) );
float fQuadWidth = (RIGHT_EDGE-LEFT_EDGE)/2;
fQuadWidth -= g_fBackgroundCenterWidth/2;
m_quadBGBrightness[0].StretchTo( RectF(LEFT_EDGE,TOP_EDGE,LEFT_EDGE+fQuadWidth,BOTTOM_EDGE) );
m_quadBGBrightnessFade.StretchTo( RectF(LEFT_EDGE+fQuadWidth,TOP_EDGE,RIGHT_EDGE-fQuadWidth,BOTTOM_EDGE) );
m_quadBGBrightness[1].StretchTo( RectF(RIGHT_EDGE-fQuadWidth,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE) );
m_quadBorder[0].StretchTo( RectF(SCREEN_LEFT,SCREEN_TOP,LEFT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[0].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[1].StretchTo( RectF(LEFT_EDGE,SCREEN_TOP,RIGHT_EDGE,TOP_EDGE) );
m_quadBorder[1].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[2].StretchTo( RectF(RIGHT_EDGE,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_quadBorder[2].SetDiffuse( RageColor(0,0,0,1) );
m_quadBorder[3].StretchTo( RectF(LEFT_EDGE,BOTTOM_EDGE,RIGHT_EDGE,SCREEN_BOTTOM) );
m_quadBorder[3].SetDiffuse( RageColor(0,0,0,1) );
this->AddChild( &m_quadBGBrightness[0] );
this->AddChild( &m_quadBGBrightness[1] );
this->AddChild( &m_quadBGBrightnessFade );
this->AddChild( &m_quadBorder[0] );
this->AddChild( &m_quadBorder[1] );
this->AddChild( &m_quadBorder[2] );
this->AddChild( &m_quadBorder[3] );
SetBackgrounds();
}
void Background::FadeOut()
void BrightnessOverlay::Update( float fDeltaTime )
{
m_quadBGBrightness.BeginTweening( 0.5f );
m_quadBGBrightness.SetDiffuse( RageColor(0,0,0,1-0.5f) );
ActorFrame::Update( fDeltaTime );
SetBackgrounds();
}
void BrightnessOverlay::SetBackgrounds()
{
float fLeftBrightness = 1-GAMESTATE->m_PlayerOptions[PLAYER_1].m_fCover;
float fRightBrightness = 1-GAMESTATE->m_PlayerOptions[PLAYER_2].m_fCover;
fLeftBrightness *= PREFSMAN->m_fBGBrightness;
fRightBrightness *= PREFSMAN->m_fBGBrightness;
if( !GAMESTATE->IsHumanPlayer(PLAYER_1) )
fLeftBrightness = fRightBrightness;
if( !GAMESTATE->IsHumanPlayer(PLAYER_2) )
fRightBrightness = fLeftBrightness;
RageColor LeftColor( 0,0,0,1-fLeftBrightness );
RageColor RightColor( 0,0,0,1-fRightBrightness );
m_quadBGBrightness[PLAYER_1].SetDiffuse( LeftColor );
m_quadBGBrightness[PLAYER_2].SetDiffuse( RightColor );
m_quadBGBrightnessFade.SetDiffuseLeftEdge( LeftColor );
m_quadBGBrightnessFade.SetDiffuseRightEdge( RightColor );
}
void BrightnessOverlay::FadeIn()
{
FOREACH_PlayerNumber(pn)
m_quadBGBrightness[pn].BeginTweening( 0.5f );
SetBackgrounds();
}
void BrightnessOverlay::FadeOut()
{
FOREACH_PlayerNumber(pn)
{
m_quadBGBrightness[pn].BeginTweening( 0.5f );
m_quadBGBrightness[pn].SetDiffuse( RageColor(0,0,0,1-0.5f) );
}
}
+18 -4
View File
@@ -20,6 +20,20 @@
#include <deque>
class DancingCharacters;
class BrightnessOverlay: public ActorFrame
{
Quad m_quadBGBrightness[NUM_PLAYERS];
Quad m_quadBGBrightnessFade;
Quad m_quadBorder[4]; // l, t, r, b - cover up the edge of animations that might hang outside of the background rectangle
void SetBackgrounds();
public:
BrightnessOverlay();
void Update( float fDeltaTime );
void FadeIn();
void FadeOut();
};
class Background : public ActorFrame
{
@@ -33,8 +47,8 @@ public:
virtual void Update( float fDeltaTime );
virtual void DrawPrimitives();
void FadeIn();
void FadeOut();
void FadeIn() { m_Brightness.FadeIn(); }
void FadeOut() { m_Brightness.FadeOut(); }
DancingCharacters* GetDancingCharacters() { return m_pDancingCharacters; };
@@ -48,6 +62,7 @@ protected:
bool IsDangerAllVisible();
bool IsDeadPlayerVisible( PlayerNumber pn );
void UpdateCurBGChange( float fCurrentTime );
void SetBackgrounds();
DancingCharacters* m_pDancingCharacters;
@@ -68,8 +83,7 @@ protected:
float m_fSecsLeftInFade;
float m_fLastMusicSeconds;
Quad m_quadBGBrightness;
Quad m_quadBorder[4]; // l, t, r, b - cover up the edge of animations that might hang outside of the background rectangle
BrightnessOverlay m_Brightness;
};
+6
View File
@@ -35,6 +35,7 @@ void PlayerOptions::Init()
ZERO( m_fScrolls ); ONE( m_SpeedfScrolls );
m_fDark = 0; m_SpeedfDark = 1.0f;
m_fBlind = 0; m_SpeedfBlind = 1.0f;
m_fCover = 0; m_SpeedfCover = 1.0f;
m_fPerspectiveTilt = 0; m_SpeedfPerspectiveTilt = 1.0f;
m_fSkew = 0; m_SpeedfSkew = 1.0f;
m_fPassmark = 0; m_SpeedfPassmark = 1.0f;
@@ -62,6 +63,7 @@ void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds )
APP( fScrollSpeed );
APP( fDark );
APP( fBlind );
APP( fCover );
APP( fPerspectiveTilt );
APP( fSkew );
APP( fPassmark );
@@ -134,6 +136,7 @@ CString PlayerOptions::GetString() const
sReturn += AddPart( m_fDark, "Dark");
sReturn += AddPart( m_fBlind, "Blind");
sReturn += AddPart( m_fCover, "Cover");
sReturn += AddPart( m_fPassmark, "Passmark");
@@ -297,6 +300,7 @@ void PlayerOptions::FromString( CString sOptions )
else if( sBit == "nomines" ) m_bTransforms[TRANSFORM_NOMINES] = on;
else if( sBit == "dark" ) SET_FLOAT( fDark )
else if( sBit == "blind" ) SET_FLOAT( fBlind )
else if( sBit == "cover" ) SET_FLOAT( fCover )
else if( sBit == "passmark" ) SET_FLOAT( fPassmark )
else if( sBit == "protiming") m_bProTiming = on;
else if( sBit == "overhead" ) { m_fSkew = 0; m_fPerspectiveTilt = 0; m_SpeedfSkew = m_SpeedfPerspectiveTilt = speed; }
@@ -516,6 +520,7 @@ bool PlayerOptions::operator==( const PlayerOptions &other ) const
COMPARE(m_fScrollBPM);
COMPARE(m_fDark);
COMPARE(m_fBlind);
COMPARE(m_fCover);
COMPARE(m_bProTiming);
COMPARE(m_fPerspectiveTilt);
COMPARE(m_fSkew);
@@ -561,6 +566,7 @@ bool PlayerOptions::IsEasierForSongAndSteps( Song* pSong, Steps* pSteps )
// This makes songs with sparse notes easier.
if( m_bTransforms[TRANSFORM_ECHO] ) return true;
if( m_fCover ) return true;
return false;
}
+1
View File
@@ -108,6 +108,7 @@ struct PlayerOptions
float m_fScrolls[NUM_SCROLLS],m_SpeedfScrolls[NUM_SCROLLS];
float m_fDark, m_SpeedfDark;
float m_fBlind, m_SpeedfBlind;
float m_fCover, m_SpeedfCover; // hide the background per-player--can't think of a good name
float m_fPerspectiveTilt, m_SpeedfPerspectiveTilt; // -1 = near, 0 = overhead, +1 = space
float m_fSkew, m_SpeedfSkew; // 0 = vanish point is in center of player, 1 = vanish point is in center of screen