fix duplicate ScreenGameplay overlays, broken DancingState transitions
This commit is contained in:
@@ -65,7 +65,6 @@ static ThemeMetric<float> SECONDS_BETWEEN_COMMENTS ("ScreenGameplay","SecondsBet
|
|||||||
/* Global, so it's accessible from ShowSavePrompt: */
|
/* Global, so it's accessible from ShowSavePrompt: */
|
||||||
static float g_fOldOffset; // used on offset screen to calculate difference
|
static float g_fOldOffset; // used on offset screen to calculate difference
|
||||||
|
|
||||||
AutoScreenMessage( SM_PlayReady )
|
|
||||||
AutoScreenMessage( SM_PlayGo )
|
AutoScreenMessage( SM_PlayGo )
|
||||||
|
|
||||||
// received while STATE_DANCING
|
// received while STATE_DANCING
|
||||||
@@ -572,11 +571,6 @@ void ScreenGameplay::Init()
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Overlay.Load( THEME->GetPathB(m_sName,"overlay") );
|
|
||||||
m_Overlay->SetDrawOrder( DRAW_ORDER_OVERLAY );
|
|
||||||
this->AddChild( m_Overlay );
|
|
||||||
|
|
||||||
|
|
||||||
if( !GAMESTATE->m_bDemonstrationOrJukebox ) // only load if we're going to use it
|
if( !GAMESTATE->m_bDemonstrationOrJukebox ) // only load if we're going to use it
|
||||||
{
|
{
|
||||||
m_Ready.Load( THEME->GetPathB(m_sName,"ready") );
|
m_Ready.Load( THEME->GetPathB(m_sName,"ready") );
|
||||||
@@ -1250,10 +1244,6 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
m_pSoundMusic->Play( &p );
|
m_pSoundMusic->Play( &p );
|
||||||
|
|
||||||
UpdateSongPosition(0);
|
UpdateSongPosition(0);
|
||||||
|
|
||||||
//We need to artifically trigger the sm_playeready so we can end game
|
|
||||||
//We want to post so this happens only after we're done what we're doing.
|
|
||||||
SCREENMAN->PostMessageToTopScreen( SM_PlayReady, 0.0 );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1271,8 +1261,6 @@ void ScreenGameplay::Update( float fDeltaTime )
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*float delay =*/ StartPlayingSong( fMinTimeToNotes, fMinTimeToMusic );
|
/*float delay =*/ StartPlayingSong( fMinTimeToNotes, fMinTimeToMusic );
|
||||||
|
|
||||||
m_In.StartTransitioning( SM_PlayReady );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2081,7 +2069,7 @@ void ScreenGameplay::StageFinished( bool bBackedOut )
|
|||||||
void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM )
|
||||||
{
|
{
|
||||||
CHECKPOINT_M( ssprintf("HandleScreenMessage(%i)", SM) );
|
CHECKPOINT_M( ssprintf("HandleScreenMessage(%i)", SM) );
|
||||||
if( SM == SM_PlayReady )
|
if( SM == SM_DoneFadingIn )
|
||||||
{
|
{
|
||||||
SOUND->PlayOnceFromAnnouncer( "gameplay ready" );
|
SOUND->PlayOnceFromAnnouncer( "gameplay ready" );
|
||||||
m_Ready.StartTransitioning( SM_PlayGo );
|
m_Ready.StartTransitioning( SM_PlayGo );
|
||||||
@@ -2411,7 +2399,6 @@ void ScreenGameplay::TweenOnScreen()
|
|||||||
ON_COMMAND( m_DifficultyIcon[p] );
|
ON_COMMAND( m_DifficultyIcon[p] );
|
||||||
ON_COMMAND( m_DifficultyMeter[p] );
|
ON_COMMAND( m_DifficultyMeter[p] );
|
||||||
}
|
}
|
||||||
m_Overlay->PlayCommand("On");
|
|
||||||
|
|
||||||
if (m_ShowScoreboard)
|
if (m_ShowScoreboard)
|
||||||
FOREACH_NSScoreBoardColumn( sc )
|
FOREACH_NSScoreBoardColumn( sc )
|
||||||
@@ -2420,6 +2407,8 @@ void ScreenGameplay::TweenOnScreen()
|
|||||||
|
|
||||||
void ScreenGameplay::TweenOffScreen()
|
void ScreenGameplay::TweenOffScreen()
|
||||||
{
|
{
|
||||||
|
ScreenWithMenuElements::TweenOffScreen();
|
||||||
|
|
||||||
OFF_COMMAND( m_sprLifeFrame );
|
OFF_COMMAND( m_sprLifeFrame );
|
||||||
OFF_COMMAND( m_sprStage );
|
OFF_COMMAND( m_sprStage );
|
||||||
OFF_COMMAND( m_sprCourseSongNumber );
|
OFF_COMMAND( m_sprCourseSongNumber );
|
||||||
@@ -2448,7 +2437,6 @@ void ScreenGameplay::TweenOffScreen()
|
|||||||
OFF_COMMAND( m_DifficultyIcon[p] );
|
OFF_COMMAND( m_DifficultyIcon[p] );
|
||||||
OFF_COMMAND( m_DifficultyMeter[p] );
|
OFF_COMMAND( m_DifficultyMeter[p] );
|
||||||
}
|
}
|
||||||
m_Overlay->PlayCommand("Off");
|
|
||||||
|
|
||||||
if (m_ShowScoreboard)
|
if (m_ShowScoreboard)
|
||||||
FOREACH_NSScoreBoardColumn( sc )
|
FOREACH_NSScoreBoardColumn( sc )
|
||||||
|
|||||||
@@ -139,7 +139,6 @@ protected:
|
|||||||
Transition m_Toasty; // easter egg
|
Transition m_Toasty; // easter egg
|
||||||
Transition m_Win[NUM_PLAYERS];
|
Transition m_Win[NUM_PLAYERS];
|
||||||
Transition m_Draw;
|
Transition m_Draw;
|
||||||
AutoActor m_Overlay;
|
|
||||||
|
|
||||||
BitmapText m_textSurviveTime; // used in extra stage
|
BitmapText m_textSurviveTime; // used in extra stage
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ enum ScreenMessage {
|
|||||||
SM_DoneOpeningWipingLeft,
|
SM_DoneOpeningWipingLeft,
|
||||||
SM_DoneOpeningWipingRight,
|
SM_DoneOpeningWipingRight,
|
||||||
SM_MenuTimer,
|
SM_MenuTimer,
|
||||||
|
SM_DoneFadingIn,
|
||||||
SM_BeginFadingOut,
|
SM_BeginFadingOut,
|
||||||
SM_GoToNextScreen,
|
SM_GoToNextScreen,
|
||||||
SM_GoToPrevScreen,
|
SM_GoToPrevScreen,
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ void ScreenWithMenuElements::Init()
|
|||||||
m_Cancel.SetDrawOrder( DRAW_ORDER_TRANSITIONS );
|
m_Cancel.SetDrawOrder( DRAW_ORDER_TRANSITIONS );
|
||||||
this->AddChild( &m_Cancel );
|
this->AddChild( &m_Cancel );
|
||||||
|
|
||||||
m_In.StartTransitioning();
|
m_In.StartTransitioning( SM_DoneFadingIn );
|
||||||
}
|
}
|
||||||
|
|
||||||
ScreenWithMenuElements::~ScreenWithMenuElements()
|
ScreenWithMenuElements::~ScreenWithMenuElements()
|
||||||
@@ -164,6 +164,25 @@ void ScreenWithMenuElements::ResetTimer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScreenWithMenuElements::StartTransitioning( ScreenMessage smSendWhenDone )
|
void ScreenWithMenuElements::StartTransitioning( ScreenMessage smSendWhenDone )
|
||||||
|
{
|
||||||
|
TweenOffScreen();
|
||||||
|
|
||||||
|
m_Out.StartTransitioning(smSendWhenDone);
|
||||||
|
|
||||||
|
/* Ack. If the transition finishes transparent (eg. _options to options),
|
||||||
|
* then we don't want to send the message until all of the *actors* are
|
||||||
|
* done tweening. However, if it finishes with something onscreen (most
|
||||||
|
* of the rest), we have to send the message immediately after it finishes,
|
||||||
|
* or we'll draw a frame without the transition.
|
||||||
|
*
|
||||||
|
* For now, I'll make the SMMAX2 option tweening faster. */
|
||||||
|
/* This includes all of the actors: */
|
||||||
|
// float TimeUntilFinished = GetTweenTimeLeft();
|
||||||
|
// TimeUntilFinished = max(TimeUntilFinished, m_Out.GetLengthSeconds());
|
||||||
|
// SCREENMAN->PostMessageToTopScreen( smSendWhenDone, TimeUntilFinished );
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScreenWithMenuElements::TweenOffScreen()
|
||||||
{
|
{
|
||||||
if( m_bTimerEnabled )
|
if( m_bTimerEnabled )
|
||||||
{
|
{
|
||||||
@@ -183,19 +202,6 @@ void ScreenWithMenuElements::StartTransitioning( ScreenMessage smSendWhenDone )
|
|||||||
|
|
||||||
SCREENMAN->PlaySharedBackgroundOffCommand();
|
SCREENMAN->PlaySharedBackgroundOffCommand();
|
||||||
|
|
||||||
m_Out.StartTransitioning(smSendWhenDone);
|
|
||||||
|
|
||||||
/* Ack. If the transition finishes transparent (eg. _options to options),
|
|
||||||
* then we don't want to send the message until all of the *actors* are
|
|
||||||
* done tweening. However, if it finishes with something onscreen (most
|
|
||||||
* of the rest), we have to send the message immediately after it finishes,
|
|
||||||
* or we'll draw a frame without the transition.
|
|
||||||
*
|
|
||||||
* For now, I'll make the SMMAX2 option tweening faster. */
|
|
||||||
/* This includes all of the actors: */
|
|
||||||
// float TimeUntilFinished = GetTweenTimeLeft();
|
|
||||||
// TimeUntilFinished = max(TimeUntilFinished, m_Out.GetLengthSeconds());
|
|
||||||
// SCREENMAN->PostMessageToTopScreen( smSendWhenDone, TimeUntilFinished );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenWithMenuElements::Cancel( ScreenMessage smSendWhenDone )
|
void ScreenWithMenuElements::Cancel( ScreenMessage smSendWhenDone )
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ public:
|
|||||||
void StopTimer();
|
void StopTimer();
|
||||||
void ResetTimer();
|
void ResetTimer();
|
||||||
|
|
||||||
|
void TweenOffScreen();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void StartPlayingMusic();
|
virtual void StartPlayingMusic();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user