reset the demonstration timer when a key is pressed

This commit is contained in:
Glenn Maynard
2003-01-07 01:37:21 +00:00
parent 1c976dc338
commit f61196ffb8
2 changed files with 72 additions and 57 deletions
+59 -48
View File
@@ -65,8 +65,7 @@ const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = {
const ScreenMessage SM_PlayAttract = ScreenMessage(SM_User+1);
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+12);
const ScreenMessage SM_FadeToDemonstration = ScreenMessage(SM_User+13);
const ScreenMessage SM_GoToDemonstration = ScreenMessage(SM_User+14);
const ScreenMessage SM_GoToDemonstration = ScreenMessage(SM_User+13);
ScreenTitleMenu::ScreenTitleMenu()
@@ -174,7 +173,6 @@ ScreenTitleMenu::ScreenTitleMenu()
SOUNDMAN->PlayMusic( THEME->GetPathTo("Sounds","title menu music") );
this->SendScreenMessage( SM_PlayAttract, SECONDS_BETWEEN_ATTRACT );
this->SendScreenMessage( SM_FadeToDemonstration, SECONDS_BEFORE_DEMONSTRATION );
}
@@ -191,62 +189,29 @@ void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType ty
if( m_Fade.IsClosing() )
return;
/* Reset the demonstration timer when a key is pressed. */
TimeToDemonstration.GetDeltaTime();
if(DeviceI.device == DEVICE_KEYBOARD && DeviceI.button == SDLK_F1 && type == IET_FIRST_PRESS)
{
this->SendScreenMessage( SM_FadeToDemonstration, 0 );
FadeToDemonstration();
return;
}
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
}
void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
void ScreenTitleMenu::Update( float fDelta )
{
switch( SM )
if(TimeToDemonstration.PeekDeltaTime() >= SECONDS_BEFORE_DEMONSTRATION)
{
case SM_PlayAttract:
m_soundAttract.PlayRandom();
this->SendScreenMessage( SM_PlayAttract, SECONDS_BETWEEN_ATTRACT );
break;
case SM_GoToNextScreen:
switch( m_TitleMenuChoice )
{
case CHOICE_GAME_START:
SCREENMAN->SetNewScreen( NEXT_SCREEN );
break;
case CHOICE_SELECT_GAME:
SCREENMAN->SetNewScreen( "ScreenSelectGame" );
break;
case CHOICE_MAP_INSTRUMENTS:
SCREENMAN->SetNewScreen( "ScreenMapControllers" );
break;
case CHOICE_INPUT_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenInputOptions" );
break;
case CHOICE_MACHINE_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenMachineOptions" );
break;
case CHOICE_GRAPHIC_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenGraphicOptions" );
break;
case CHOICE_APPEARANCE_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenAppearanceOptions" );
break;
#ifdef _DEBUG
case CHOICE_SANDBOX:
SCREENMAN->SetNewScreen( "ScreenSandbox" );
break;
#endif
case CHOICE_EDIT:
SCREENMAN->SetNewScreen( "ScreenEditMenu" );
break;
case CHOICE_EXIT:
default:
RAGE_ASSERT_M(0, "CHOICE_EXIT reached?"); // should never get here
break;
FadeToDemonstration();
TimeToDemonstration.GetDeltaTime();
}
break;
case SM_FadeToDemonstration:
Screen::Update(fDelta);
}
void ScreenTitleMenu::FadeToDemonstration()
{
// Set up the game state for a demonstration
switch( GAMESTATE->m_CurGame )
@@ -297,6 +262,52 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
GAMESTATE->m_bDemonstration = true;
m_Fade.CloseWipingRight( SM_GoToDemonstration );
}
void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
{
switch( SM )
{
case SM_PlayAttract:
m_soundAttract.PlayRandom();
this->SendScreenMessage( SM_PlayAttract, SECONDS_BETWEEN_ATTRACT );
break;
case SM_GoToNextScreen:
switch( m_TitleMenuChoice )
{
case CHOICE_GAME_START:
SCREENMAN->SetNewScreen( NEXT_SCREEN );
break;
case CHOICE_SELECT_GAME:
SCREENMAN->SetNewScreen( "ScreenSelectGame" );
break;
case CHOICE_MAP_INSTRUMENTS:
SCREENMAN->SetNewScreen( "ScreenMapControllers" );
break;
case CHOICE_INPUT_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenInputOptions" );
break;
case CHOICE_MACHINE_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenMachineOptions" );
break;
case CHOICE_GRAPHIC_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenGraphicOptions" );
break;
case CHOICE_APPEARANCE_OPTIONS:
SCREENMAN->SetNewScreen( "ScreenAppearanceOptions" );
break;
#ifdef _DEBUG
case CHOICE_SANDBOX:
SCREENMAN->SetNewScreen( "ScreenSandbox" );
break;
#endif
case CHOICE_EDIT:
SCREENMAN->SetNewScreen( "ScreenEditMenu" );
break;
case CHOICE_EXIT:
default:
RAGE_ASSERT_M(0, "CHOICE_EXIT reached?"); // should never get here
break;
}
break;
case SM_GoToDemonstration:
{
+5 -1
View File
@@ -15,7 +15,7 @@
#include "TransitionFade.h"
#include "RandomSample.h"
#include "BGAnimation.h"
#include "RageTimer.h"
class ScreenTitleMenu : public Screen
@@ -25,6 +25,7 @@ public:
virtual ~ScreenTitleMenu();
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
virtual void Update( float fDelta );
virtual void HandleScreenMessage( const ScreenMessage SM );
enum TitleMenuChoice {
@@ -50,6 +51,7 @@ private:
void MenuDown( PlayerNumber pn );
void MenuBack( PlayerNumber pn );
void MenuStart( PlayerNumber pn );
void FadeToDemonstration();
TitleMenuChoice m_TitleMenuChoice;
@@ -66,6 +68,8 @@ private:
RandomSample m_soundChange;
RandomSample m_soundSelect;
RandomSample m_soundInvalid;
RageTimer TimeToDemonstration;
};