Add TweenOptionsMessageOffImmediately

This commit is contained in:
Chris Danford
2005-06-11 10:30:13 +00:00
parent 12d8415e4a
commit 2c25a3a2dc
+27 -2
View File
@@ -37,11 +37,14 @@ const int NUM_SCORE_DIGITS = 9;
#define SCORE_SORT_CHANGE_COMMAND(i) THEME->GetMetricA(m_sName,ssprintf("ScoreP%iSortChangeCommand", i+1)) #define SCORE_SORT_CHANGE_COMMAND(i) THEME->GetMetricA(m_sName,ssprintf("ScoreP%iSortChangeCommand", i+1))
#define SCORE_FRAME_SORT_CHANGE_COMMAND(i) THEME->GetMetricA(m_sName,ssprintf("ScoreFrameP%iSortChangeCommand", i+1)) #define SCORE_FRAME_SORT_CHANGE_COMMAND(i) THEME->GetMetricA(m_sName,ssprintf("ScoreFrameP%iSortChangeCommand", i+1))
#define METER_TYPE THEME->GetMetric (m_sName,"MeterType") #define METER_TYPE THEME->GetMetric (m_sName,"MeterType")
#define SHOW_OPTIONS_MESSAGE_SECONDS THEME->GetMetricF(m_sName,"ShowOptionsMessageSeconds")
#define TWEEN_OFF_OPTIONS_MESSAGE_IMMEDIATELY THEME->GetMetricB(m_sName,"TweenOptionsMessageOffImmediately")
AutoScreenMessage( SM_AllowOptionsMenuRepeat ) AutoScreenMessage( SM_AllowOptionsMenuRepeat )
AutoScreenMessage( SM_SongChanged ) AutoScreenMessage( SM_SongChanged )
AutoScreenMessage( SM_SortOrderChanging ) AutoScreenMessage( SM_SortOrderChanging )
AutoScreenMessage( SM_SortOrderChanged ) AutoScreenMessage( SM_SortOrderChanged )
AutoScreenMessage( SM_TweenOffOptionsMessage )
static CString g_sCDTitlePath; static CString g_sCDTitlePath;
static bool g_bWantFallbackCdTitle; static bool g_bWantFallbackCdTitle;
@@ -769,7 +772,6 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
MenuI.button == MENU_BUTTON_START && MenuI.button == MENU_BUTTON_START &&
type != IET_RELEASE && type != IET_RELEASE &&
type != IET_LEVEL_CHANGED && type != IET_LEVEL_CHANGED &&
IsTransitioning() &&
OPTIONS_MENU_AVAILABLE.GetValue() ) OPTIONS_MENU_AVAILABLE.GetValue() )
{ {
if(m_bGoToOptions) return; /* got it already */ if(m_bGoToOptions) return; /* got it already */
@@ -782,6 +784,16 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
m_bGoToOptions = true; m_bGoToOptions = true;
m_sprOptionsMessage.SetState( 1 ); m_sprOptionsMessage.SetState( 1 );
SCREENMAN->PlayStartSound(); SCREENMAN->PlayStartSound();
if( TWEEN_OFF_OPTIONS_MESSAGE_IMMEDIATELY )
{
// Send SM_TweenOffOptionsMessage faster. Don't tween off the
// options message until the wheel has finished tweening off though.
this->ClearMessageQueue( SM_TweenOffOptionsMessage );
float fOffCommandLengthSeconds = Actor::GetCommandsLengthSeconds( m_sprOptionsMessage.GetCommand("Off") );
float fSecondsToDelay = max( this->GetTweenTimeLeft() - fOffCommandLengthSeconds, 0 );
this->PostScreenMessage( SM_TweenOffOptionsMessage, fSecondsToDelay );
}
return; return;
} }
@@ -1061,6 +1073,11 @@ void ScreenSelectMusic::HandleScreenMessage( const ScreenMessage SM )
{ {
m_bAllowOptionsMenuRepeat = true; m_bAllowOptionsMenuRepeat = true;
} }
else if( SM == SM_TweenOffOptionsMessage )
{
OFF_COMMAND( m_sprOptionsMessage );
this->HandleScreenMessage( SM_BeginFadingOut );
}
else if( SM == SM_MenuTimer ) else if( SM == SM_MenuTimer )
{ {
if( m_MusicWheel.IsRouletting() ) if( m_MusicWheel.IsRouletting() )
@@ -1256,7 +1273,15 @@ void ScreenSelectMusic::MenuStart( PlayerNumber pn )
m_BackgroundLoader.Abort(); m_BackgroundLoader.Abort();
CheckBackgroundRequests(); CheckBackgroundRequests();
StartTransitioning( SM_BeginFadingOut ); if( OPTIONS_MENU_AVAILABLE )
{
StartTransitioning( SM_None );
this->PostScreenMessage( SM_TweenOffOptionsMessage, SHOW_OPTIONS_MESSAGE_SECONDS );
}
else
{
StartTransitioning( SM_BeginFadingOut );
}
} }
if( GAMESTATE->IsExtraStage() && PREFSMAN->m_bPickExtraStage ) if( GAMESTATE->IsExtraStage() && PREFSMAN->m_bPickExtraStage )