diff --git a/stepmania/src/Actor.cpp b/stepmania/src/Actor.cpp index f582db33bc..1e42cf2680 100644 --- a/stepmania/src/Actor.cpp +++ b/stepmania/src/Actor.cpp @@ -102,6 +102,7 @@ void Actor::Update( const float &fDeltaTime ) m_fPercentBetweenColors += m_fDeltaPercentPerSecond * fDeltaTime; if( m_fPercentBetweenColors > 1.0f ) { m_fPercentBetweenColors = 1.0f; + m_bTweeningTowardEndColor = FALSE; } } diff --git a/stepmania/src/TransitionFadeWipe.cpp b/stepmania/src/TransitionFadeWipe.cpp index b4ddf4aeb7..46b53084f2 100644 --- a/stepmania/src/TransitionFadeWipe.cpp +++ b/stepmania/src/TransitionFadeWipe.cpp @@ -1,27 +1,24 @@ #include "stdafx.h" /* ----------------------------------------------------------------------------- - File: TransitionFadeWipe.cpp + File: TransitionStarWipe.cpp - Desc: Fades out or in. + Desc: Black bands (horizontal window blinds) gradually close. Copyright (c) 2001 Chris Danford. All rights reserved. ----------------------------------------------------------------------------- */ - #include "RageUtil.h" #include "TransitionFadeWipe.h" +#include "ScreenDimensions.h" -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 - -#define RECTANGLE_WIDTH 20 -#define NUM_RECTANGLES (SCREEN_WIDTH/RECTANGLE_WIDTH) -#define FADE_RECTS_WIDE (NUM_RECTANGLES/3) // number of rects from fade start to fade end - +//#define RECTANGLE_WIDTH 20 +//#define NUM_RECTANGLES (SCREEN_WIDTH/RECTANGLE_WIDTH) +//#define FADE_RECTS_WIDE (NUM_RECTANGLES/4) // number of rects from fade start to fade end +const float FADE_RECT_WIDTH = SCREEN_WIDTH/2; TransitionFadeWipe::TransitionFadeWipe() @@ -42,49 +39,37 @@ void TransitionFadeWipe::Draw() ///////////////////////// // draw rectangles that get progressively smaller at the edge of the wipe ///////////////////////// - BOOL bLeftEdgeIsDarker = m_TransitionState == opening_left || m_TransitionState == closing_right; - BOOL bFadeIsMovingLeft = m_TransitionState == opening_left || m_TransitionState == closing_left; + bool bLeftEdgeIsDarker = m_TransitionState == opening_left || m_TransitionState == closing_right; + bool bFadeIsMovingLeft = m_TransitionState == opening_left || m_TransitionState == closing_left; - double fPercentComplete = m_fPercentThroughTransition; - double fPercentAlongScreen = bFadeIsMovingLeft ? 1-fPercentComplete : fPercentComplete; + float fPercentComplete = m_fPercentThroughTransition; + float fPercentAlongScreen = bFadeIsMovingLeft ? 1-fPercentComplete*1.3f : fPercentComplete*1.3f; - int iFadeLeftEdge = (int) - (-FADE_RECTS_WIDE + (NUM_RECTANGLES + FADE_RECTS_WIDE) * fPercentAlongScreen); - int iFadeRightEdge = (int) - (0 + (NUM_RECTANGLES + FADE_RECTS_WIDE) * fPercentAlongScreen); - - // draw all rectangles - for( int i=0; i iFadeRightEdge ) - iRectWidth = bLeftEdgeIsDarker ? 0 : RECTANGLE_WIDTH; - //iRectWidth = 0; - else // this is a fading rectangle - { - int iRectsFromLeftFadeEdge = i - iFadeLeftEdge; - double fPercentAlongFade = iRectsFromLeftFadeEdge / (double)FADE_RECTS_WIDE; - double fPercentDarkness = bLeftEdgeIsDarker ? 1-fPercentAlongFade : fPercentAlongFade; - iRectWidth = (int)(RECTANGLE_WIDTH * fPercentDarkness); - - } - //iRectWidth = RECTANGLE_WIDTH; + float fFadeLeftEdgeX = fPercentAlongScreen * SCREEN_WIDTH - FADE_RECT_WIDTH/2; + float fFadeRightEdgeX = fPercentAlongScreen * SCREEN_WIDTH + FADE_RECT_WIDTH/2; - if( iRectWidth > 0 ) - //if( i == iFadeLeftEdge || i == iFadeRightEdge ) - { // draw the rectangle - int iRectAlpha = (int)( iRectWidth * 255.0f / RECTANGLE_WIDTH ); - RECT rect; - SetRect( &rect, iRectX-RECTANGLE_WIDTH/2, 0, - iRectX+RECTANGLE_WIDTH/2, SCREEN_HEIGHT ); - SCREEN->DrawRect( &rect, D3DCOLOR_ARGB(iRectAlpha,0,0,0) ); - } - } // end foreach rect + float fDarkEdgeX = bLeftEdgeIsDarker ? fFadeLeftEdgeX : fFadeRightEdgeX; + float fLightEdgeX = bLeftEdgeIsDarker ? fFadeRightEdgeX : fFadeLeftEdgeX; + + float fDarkOutsideX = bLeftEdgeIsDarker ? fDarkEdgeX - SCREEN_WIDTH*2 : fDarkEdgeX + SCREEN_WIDTH*2; + + // draw dark rect + SCREEN->DrawRect( + CRect(fDarkOutsideX, 0, fDarkEdgeX, SCREEN_HEIGHT), + D3DXCOLOR(0,0,0,1), // up left + D3DXCOLOR(0,0,0,1), // up right + D3DXCOLOR(0,0,0,1), // down left + D3DXCOLOR(0,0,0,1) // down right + ); + + // draw gradient rect + SCREEN->DrawRect( + CRect(fDarkEdgeX, 0, fLightEdgeX, SCREEN_HEIGHT), + D3DXCOLOR(0,0,0,1), // up left + D3DXCOLOR(0,0,0,0), // up right + D3DXCOLOR(0,0,0,1), // down left + D3DXCOLOR(0,0,0,0) // down right + ); }