display "hold back" message
This commit is contained in:
@@ -850,7 +850,63 @@ void ScreenGameplay::DrawPrimitives()
|
|||||||
void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
||||||
{
|
{
|
||||||
//LOG->Trace( "ScreenGameplay::Input()" );
|
//LOG->Trace( "ScreenGameplay::Input()" );
|
||||||
if(type == IET_RELEASE) return; // don't care
|
|
||||||
|
if( MenuI.IsValid() &&
|
||||||
|
MenuI.button == MENU_BUTTON_BACK &&
|
||||||
|
m_DancingState != STATE_OUTRO &&
|
||||||
|
!m_Fade.IsClosing() )
|
||||||
|
{
|
||||||
|
if( PREFSMAN->m_bDelayedEscape && type==IET_FIRST_PRESS)
|
||||||
|
{
|
||||||
|
m_textDebug.SetText( "Continue holding BACK to quit" );
|
||||||
|
m_textDebug.StopTweening();
|
||||||
|
m_textDebug.SetDiffuse( RageColor(1,1,1,0) );
|
||||||
|
m_textDebug.BeginTweening( 1/8.f );
|
||||||
|
m_textDebug.SetTweenDiffuse( RageColor(1,1,1,1) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( PREFSMAN->m_bDelayedEscape && type==IET_RELEASE )
|
||||||
|
{
|
||||||
|
m_textDebug.StopTweening();
|
||||||
|
m_textDebug.BeginTweening( 1/8.f );
|
||||||
|
m_textDebug.SetTweenDiffuse( RageColor(1,1,1,0) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (!PREFSMAN->m_bDelayedEscape && type==IET_FIRST_PRESS) ||
|
||||||
|
(DeviceI.device==DEVICE_KEYBOARD && type==IET_SLOW_REPEAT) ||
|
||||||
|
(DeviceI.device!=DEVICE_KEYBOARD && type==IET_FAST_REPEAT) )
|
||||||
|
{
|
||||||
|
m_DancingState = STATE_OUTRO;
|
||||||
|
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu back") );
|
||||||
|
/* Hmm. There are a bunch of subtly different ways we can
|
||||||
|
* tween out:
|
||||||
|
* 1. Keep rendering the song, and keep it moving. This might
|
||||||
|
* cause problems if the cancel and the end of the song overlap.
|
||||||
|
* 2. Stop the song completely, so all song motion under the tween
|
||||||
|
* ceases.
|
||||||
|
* 3. Stop the song, but keep effects (eg. Drunk) running.
|
||||||
|
* 4. Don't display the song at all.
|
||||||
|
*
|
||||||
|
* We're doing #3. I'm not sure which is best.
|
||||||
|
*
|
||||||
|
* We have to pause the music, not stop it. If we stop it,
|
||||||
|
* its position will be 0, and we'll render the *start*
|
||||||
|
* of the song while we tween out, which looks really strange.
|
||||||
|
* -glenn
|
||||||
|
*/
|
||||||
|
/* but with the new sound code, Stop leaves the position alone -glenn (XXX remove this comment) */
|
||||||
|
m_soundMusic.StopPlaying();
|
||||||
|
|
||||||
|
this->ClearMessageQueue();
|
||||||
|
m_Fade.CloseWipingLeft( SM_SaveChangedBeforeGoingBack );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Nothing else cares about releases. */
|
||||||
|
if(type == IET_RELEASE) return;
|
||||||
|
|
||||||
// Handle special keys to adjust the offset
|
// Handle special keys to adjust the offset
|
||||||
if( DeviceI.device == DEVICE_KEYBOARD )
|
if( DeviceI.device == DEVICE_KEYBOARD )
|
||||||
@@ -933,41 +989,6 @@ void ScreenGameplay::Input( const DeviceInput& DeviceI, const InputEventType typ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( MenuI.IsValid() &&
|
|
||||||
MenuI.button == MENU_BUTTON_BACK &&
|
|
||||||
m_DancingState != STATE_OUTRO &&
|
|
||||||
!m_Fade.IsClosing() )
|
|
||||||
{
|
|
||||||
if( !PREFSMAN->m_bDelayedEscape ||
|
|
||||||
(DeviceI.device==DEVICE_KEYBOARD && type==IET_SLOW_REPEAT) ||
|
|
||||||
(DeviceI.device!=DEVICE_KEYBOARD && type==IET_FAST_REPEAT) )
|
|
||||||
{
|
|
||||||
m_DancingState = STATE_OUTRO;
|
|
||||||
SOUNDMAN->PlayOnce( THEME->GetPathTo("Sounds","menu back") );
|
|
||||||
/* Hmm. There are a bunch of subtly different ways we can
|
|
||||||
* tween out:
|
|
||||||
* 1. Keep rendering the song, and keep it moving. This might
|
|
||||||
* cause problems if the cancel and the end of the song overlap.
|
|
||||||
* 2. Stop the song completely, so all song motion under the tween
|
|
||||||
* ceases.
|
|
||||||
* 3. Stop the song, but keep effects (eg. Drunk) running.
|
|
||||||
* 4. Don't display the song at all.
|
|
||||||
*
|
|
||||||
* We're doing #3. I'm not sure which is best.
|
|
||||||
*
|
|
||||||
* We have to pause the music, not stop it. If we stop it,
|
|
||||||
* its position will be 0, and we'll render the *start*
|
|
||||||
* of the song while we tween out, which looks really strange.
|
|
||||||
* -glenn
|
|
||||||
*/
|
|
||||||
/* but with the new sound code, Stop leaves the position alone -glenn (XXX remove this comment) */
|
|
||||||
m_soundMusic.StopPlaying();
|
|
||||||
|
|
||||||
this->ClearMessageQueue();
|
|
||||||
m_Fade.CloseWipingLeft( SM_SaveChangedBeforeGoingBack );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// handle a step
|
// handle a step
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user