2002-05-20 08:59:37 +00:00
|
|
|
#include "stdafx.h"
|
|
|
|
|
/*
|
|
|
|
|
-----------------------------------------------------------------------------
|
2002-05-28 20:01:22 +00:00
|
|
|
Class: ScreenTitleMenu
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-05-28 20:01:22 +00:00
|
|
|
Desc: See header.
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
2002-05-28 20:01:22 +00:00
|
|
|
Chris Danford
|
2002-05-20 08:59:37 +00:00
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "ScreenTitleMenu.h"
|
|
|
|
|
#include "ScreenManager.h"
|
|
|
|
|
#include "GameConstantsAndTypes.h"
|
|
|
|
|
#include "RageUtil.h"
|
|
|
|
|
#include "StepMania.h"
|
2002-07-23 01:41:40 +00:00
|
|
|
#include "PrefsManager.h"
|
2002-05-20 08:59:37 +00:00
|
|
|
#include "RageLog.h"
|
|
|
|
|
#include "SongManager.h"
|
|
|
|
|
#include "AnnouncerManager.h"
|
2002-07-23 01:41:40 +00:00
|
|
|
#include "GameState.h"
|
2002-05-28 20:01:22 +00:00
|
|
|
#include "GameManager.h"
|
2002-08-27 03:59:22 +00:00
|
|
|
#include "InputMapper.h"
|
2002-11-11 04:53:31 +00:00
|
|
|
#include "ThemeManager.h"
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = {
|
2002-05-28 20:01:22 +00:00
|
|
|
"GAME START",
|
2002-05-27 08:23:27 +00:00
|
|
|
"SWITCH GAME",
|
2002-07-03 21:27:26 +00:00
|
|
|
"CONFIG KEY/JOY",
|
2002-09-10 09:10:36 +00:00
|
|
|
"INPUT OPTIONS",
|
|
|
|
|
"MACHINE OPTIONS",
|
2002-08-13 23:26:46 +00:00
|
|
|
"GRAPHIC OPTIONS",
|
2002-07-11 19:02:26 +00:00
|
|
|
"APPEARANCE OPTIONS",
|
2002-06-29 11:59:09 +00:00
|
|
|
"EDIT/RECORD/SYNCH",
|
2002-05-20 08:59:37 +00:00
|
|
|
"EXIT",
|
|
|
|
|
};
|
|
|
|
|
|
2002-08-27 03:59:22 +00:00
|
|
|
#define CHOICES_X THEME->GetMetricF("ScreenTitleMenu","ChoicesX")
|
|
|
|
|
#define CHOICES_START_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesStartY")
|
|
|
|
|
#define CHOICES_SPACING_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesSpacingY")
|
2002-09-10 21:16:34 +00:00
|
|
|
#define CHOICES_SHADOW_LENGTH THEME->GetMetricF("ScreenTitleMenu","ChoicesShadowLength")
|
2002-08-27 03:59:22 +00:00
|
|
|
#define HELP_X THEME->GetMetricF("ScreenTitleMenu","HelpX")
|
|
|
|
|
#define HELP_Y THEME->GetMetricF("ScreenTitleMenu","HelpY")
|
|
|
|
|
#define LOGO_X THEME->GetMetricF("ScreenTitleMenu","LogoX")
|
|
|
|
|
#define LOGO_Y THEME->GetMetricF("ScreenTitleMenu","LogoY")
|
|
|
|
|
#define VERSION_X THEME->GetMetricF("ScreenTitleMenu","VersionX")
|
|
|
|
|
#define VERSION_Y THEME->GetMetricF("ScreenTitleMenu","VersionY")
|
|
|
|
|
#define SONGS_X THEME->GetMetricF("ScreenTitleMenu","SongsX")
|
|
|
|
|
#define SONGS_Y THEME->GetMetricF("ScreenTitleMenu","SongsY")
|
|
|
|
|
#define COLOR_NOT_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorNotSelected")
|
|
|
|
|
#define COLOR_SELECTED THEME->GetMetricC("ScreenTitleMenu","ColorSelected")
|
2002-09-03 22:31:06 +00:00
|
|
|
#define ZOOM_NOT_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomNotSelected")
|
|
|
|
|
#define ZOOM_SELECTED THEME->GetMetricF("ScreenTitleMenu","ZoomSelected")
|
2002-08-27 03:59:22 +00:00
|
|
|
#define SECONDS_BEFORE_DEMONSTRATION THEME->GetMetricF("ScreenTitleMenu","SecondsBeforeDemonstration")
|
|
|
|
|
#define SECONDS_BETWEEN_ATTRACT THEME->GetMetricF("ScreenTitleMenu","SecondsBetweenAttract")
|
|
|
|
|
#define HELP_TEXT THEME->GetMetric("ScreenTitleMenu","HelpText")
|
|
|
|
|
#define NEXT_SCREEN THEME->GetMetric("ScreenTitleMenu","NextScreen")
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
const ScreenMessage SM_PlayAttract = ScreenMessage(SM_User+1);
|
2002-08-13 23:26:46 +00:00
|
|
|
const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+12);
|
2002-08-02 09:31:06 +00:00
|
|
|
const ScreenMessage SM_FadeToDemonstration = ScreenMessage(SM_User+13);
|
|
|
|
|
const ScreenMessage SM_GoToDemonstration = ScreenMessage(SM_User+14);
|
|
|
|
|
|
|
|
|
|
|
2002-05-20 08:59:37 +00:00
|
|
|
ScreenTitleMenu::ScreenTitleMenu()
|
|
|
|
|
{
|
2002-07-31 19:40:40 +00:00
|
|
|
LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-08-15 16:45:49 +00:00
|
|
|
//
|
|
|
|
|
// I think it's better to do all the initialization here rather than have it scattered
|
|
|
|
|
// about in all the global singleton classes
|
|
|
|
|
//
|
2002-07-23 01:41:40 +00:00
|
|
|
GAMESTATE->Reset();
|
|
|
|
|
PREFSMAN->ReadGamePrefsFromDisk();
|
|
|
|
|
INPUTMAPPER->ReadMappingsFromDisk();
|
2002-08-13 23:26:46 +00:00
|
|
|
GAMESTATE->m_bPlayersCanJoin = true;
|
2002-08-15 16:45:49 +00:00
|
|
|
if( !GAMEMAN->DoesNoteSkinExist( GAMEMAN->GetCurNoteSkin() ) )
|
|
|
|
|
{
|
|
|
|
|
CStringArray asNoteSkinNames;
|
|
|
|
|
GAMEMAN->GetNoteSkinNames( asNoteSkinNames );
|
|
|
|
|
GAMEMAN->SwitchNoteSkin( asNoteSkinNames[0] );
|
|
|
|
|
}
|
|
|
|
|
if( !THEME->DoesThemeExist( THEME->GetCurThemeName() ) )
|
|
|
|
|
{
|
2002-08-17 06:44:04 +00:00
|
|
|
CString sGameName = GAMESTATE->GetCurrentGameDef()->m_szName;
|
|
|
|
|
if( THEME->DoesThemeExist( sGameName ) )
|
|
|
|
|
THEME->SwitchTheme( sGameName );
|
|
|
|
|
else
|
2002-09-29 17:38:07 +00:00
|
|
|
THEME->SwitchTheme( "default" );
|
2002-08-15 16:45:49 +00:00
|
|
|
}
|
2002-09-29 17:59:34 +00:00
|
|
|
PREFSMAN->SaveGamePrefsToDisk();
|
2002-07-04 21:05:18 +00:00
|
|
|
|
2002-08-01 13:42:56 +00:00
|
|
|
|
2002-08-17 06:44:04 +00:00
|
|
|
|
2002-09-23 07:35:47 +00:00
|
|
|
m_Background.LoadFromAniDir( THEME->GetPathTo("BGAnimations","title menu") );
|
|
|
|
|
this->AddChild( &m_Background );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-09-15 03:50:57 +00:00
|
|
|
m_sprLogo.Load( THEME->GetPathTo("Graphics",ssprintf("title menu logo %s",GAMESTATE->GetCurrentGameDef()->m_szName)) );
|
2002-08-13 23:26:46 +00:00
|
|
|
m_sprLogo.SetXY( LOGO_X, LOGO_Y );
|
2002-10-28 05:30:45 +00:00
|
|
|
m_sprLogo.SetGlow( RageColor(1,1,1,1) );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_sprLogo.SetZoomY( 0 );
|
2002-09-02 21:59:58 +00:00
|
|
|
m_sprLogo.StopTweening();
|
|
|
|
|
m_sprLogo.BeginTweening( 0.5f ); // sleep
|
|
|
|
|
m_sprLogo.BeginTweening( 0.5f, Actor::TWEEN_BOUNCE_END );
|
2002-10-28 05:30:45 +00:00
|
|
|
m_sprLogo.SetEffectGlowing(1, RageColor(1,1,1,0.1f), RageColor(1,1,1,0.3f) );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_sprLogo.SetTweenZoom( 1 );
|
2002-09-02 21:59:58 +00:00
|
|
|
this->AddChild( &m_sprLogo );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-08-20 21:00:56 +00:00
|
|
|
m_textHelp.LoadFromFont( THEME->GetPathTo("Fonts","help") );
|
|
|
|
|
m_textHelp.SetText( HELP_TEXT );
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textHelp.SetXY( HELP_X, HELP_Y );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textHelp.SetZoom( 0.5f );
|
|
|
|
|
m_textHelp.SetEffectBlinking();
|
|
|
|
|
m_textHelp.SetShadowLength( 2 );
|
2002-09-02 21:59:58 +00:00
|
|
|
this->AddChild( &m_textHelp );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textVersion.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
2002-10-24 01:51:01 +00:00
|
|
|
m_textVersion.SetText( "v3.0 final" );
|
2002-10-28 05:30:45 +00:00
|
|
|
m_textVersion.SetDiffuse( RageColor(0.6f,0.6f,0.6f,1) ); // light gray
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textVersion.SetXY( VERSION_X, VERSION_Y );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textVersion.SetZoom( 0.5f );
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textVersion.SetShadowLength( 2 );
|
2002-09-02 21:59:58 +00:00
|
|
|
this->AddChild( &m_textVersion );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textSongs.LoadFromFont( THEME->GetPathTo("Fonts","normal") );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textSongs.SetHorizAlign( Actor::align_left );
|
2002-10-31 03:16:02 +00:00
|
|
|
m_textSongs.SetText( ssprintf("Found %u Songs", SONGMAN->m_pSongs.size()) );
|
2002-10-28 05:30:45 +00:00
|
|
|
m_textSongs.SetDiffuse( RageColor(0.6f,0.6f,0.6f,1) ); // light gray
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textSongs.SetXY( SONGS_X, SONGS_Y );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textSongs.SetZoom( 0.5f );
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textSongs.SetShadowLength( 2 );
|
2002-09-02 21:59:58 +00:00
|
|
|
this->AddChild( &m_textSongs );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-10-08 08:53:38 +00:00
|
|
|
int i;
|
|
|
|
|
for( i=0; i< NUM_TITLE_MENU_CHOICES; i++ )
|
2002-05-20 08:59:37 +00:00
|
|
|
{
|
2002-09-03 22:31:06 +00:00
|
|
|
m_textChoice[i].LoadFromFont( THEME->GetPathTo("Fonts","titlemenu") );
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textChoice[i].SetText( CHOICE_TEXT[i] );
|
2002-08-13 23:26:46 +00:00
|
|
|
m_textChoice[i].SetXY( CHOICES_X, CHOICES_START_Y + i*CHOICES_SPACING_Y );
|
2002-10-08 08:53:38 +00:00
|
|
|
float fShadowLength = CHOICES_SHADOW_LENGTH;
|
|
|
|
|
m_textChoice[i].SetShadowLength( fShadowLength );
|
2002-09-02 21:59:58 +00:00
|
|
|
this->AddChild( &m_textChoice[i] );
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
2002-10-08 08:53:38 +00:00
|
|
|
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
m_Fade.SetClosed();
|
2002-08-13 23:26:46 +00:00
|
|
|
m_Fade.OpenWipingRight( SM_None );
|
2002-07-05 22:10:00 +00:00
|
|
|
|
2002-09-02 21:59:58 +00:00
|
|
|
this->AddChild( &m_Fade );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-08-27 23:31:41 +00:00
|
|
|
SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo("title menu game name") );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-07-23 01:41:40 +00:00
|
|
|
|
2002-08-27 23:31:41 +00:00
|
|
|
m_soundAttract.Load( ANNOUNCER->GetPathTo("title menu attract") );
|
2002-08-13 23:26:46 +00:00
|
|
|
m_soundChange.Load( THEME->GetPathTo("Sounds","title menu change") );
|
|
|
|
|
m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") );
|
|
|
|
|
m_soundInvalid.Load( THEME->GetPathTo("Sounds","menu invalid") );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-07-11 19:02:26 +00:00
|
|
|
|
2002-05-28 20:01:22 +00:00
|
|
|
m_TitleMenuChoice = CHOICE_GAME_START;
|
2002-09-03 22:31:06 +00:00
|
|
|
|
|
|
|
|
for( i=0; i<NUM_TITLE_MENU_CHOICES; i++ )
|
|
|
|
|
LoseFocus( i );
|
2002-05-20 08:59:37 +00:00
|
|
|
GainFocus( m_TitleMenuChoice );
|
2002-07-05 22:10:00 +00:00
|
|
|
|
2002-08-27 16:53:25 +00:00
|
|
|
MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","title menu music") );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
2002-08-20 20:38:40 +00:00
|
|
|
this->SendScreenMessage( SM_PlayAttract, SECONDS_BETWEEN_ATTRACT );
|
2002-08-02 09:31:06 +00:00
|
|
|
this->SendScreenMessage( SM_FadeToDemonstration, SECONDS_BEFORE_DEMONSTRATION );
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ScreenTitleMenu::~ScreenTitleMenu()
|
|
|
|
|
{
|
2002-07-31 19:40:40 +00:00
|
|
|
LOG->Trace( "ScreenTitleMenu::~ScreenTitleMenu()" );
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ScreenTitleMenu::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
|
|
|
|
|
{
|
2002-09-06 00:31:25 +00:00
|
|
|
// LOG->Trace( "ScreenTitleMenu::Input()" );
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
if( m_Fade.IsClosing() )
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
|
|
|
|
|
{
|
|
|
|
|
switch( SM )
|
|
|
|
|
{
|
2002-08-03 18:40:09 +00:00
|
|
|
case SM_PlayAttract:
|
|
|
|
|
m_soundAttract.PlayRandom();
|
2002-08-20 20:38:40 +00:00
|
|
|
this->SendScreenMessage( SM_PlayAttract, SECONDS_BETWEEN_ATTRACT );
|
2002-08-03 18:40:09 +00:00
|
|
|
break;
|
2002-08-13 23:26:46 +00:00
|
|
|
case SM_GoToNextScreen:
|
|
|
|
|
switch( m_TitleMenuChoice )
|
|
|
|
|
{
|
|
|
|
|
case CHOICE_GAME_START:
|
2002-08-27 03:59:22 +00:00
|
|
|
SCREENMAN->SetNewScreen( NEXT_SCREEN );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
|
|
|
|
case CHOICE_SELECT_GAME:
|
2002-08-27 03:59:22 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenSelectGame" );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
|
|
|
|
case CHOICE_MAP_INSTRUMENTS:
|
2002-09-24 02:55:32 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenMapControllers" );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
2002-09-10 09:10:36 +00:00
|
|
|
case CHOICE_INPUT_OPTIONS:
|
|
|
|
|
SCREENMAN->SetNewScreen( "ScreenInputOptions" );
|
|
|
|
|
break;
|
|
|
|
|
case CHOICE_MACHINE_OPTIONS:
|
|
|
|
|
SCREENMAN->SetNewScreen( "ScreenMachineOptions" );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
|
|
|
|
case CHOICE_GRAPHIC_OPTIONS:
|
2002-08-27 03:59:22 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenGraphicOptions" );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
|
|
|
|
case CHOICE_APPEARANCE_OPTIONS:
|
2002-08-27 03:59:22 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenAppearanceOptions" );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
|
|
|
|
case CHOICE_EDIT:
|
2002-08-27 03:59:22 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenEditMenu" );
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
|
|
|
|
case CHOICE_EXIT:
|
|
|
|
|
default:
|
|
|
|
|
ASSERT(0); // should never get here
|
|
|
|
|
break;
|
|
|
|
|
}
|
2002-06-23 11:43:53 +00:00
|
|
|
break;
|
2002-08-02 09:31:06 +00:00
|
|
|
case SM_FadeToDemonstration:
|
|
|
|
|
{
|
|
|
|
|
// Set up the game state for a demonstration
|
|
|
|
|
switch( GAMESTATE->m_CurGame )
|
|
|
|
|
{
|
|
|
|
|
case GAME_DANCE: GAMESTATE->m_CurStyle = STYLE_DANCE_VERSUS; break;
|
|
|
|
|
case GAME_PUMP: GAMESTATE->m_CurStyle = STYLE_PUMP_VERSUS; break;
|
|
|
|
|
case GAME_EZ2: GAMESTATE->m_CurStyle = STYLE_EZ2_SINGLE_VERSUS; break;
|
2002-09-24 02:55:32 +00:00
|
|
|
case GAME_PARA: GAMESTATE->m_CurStyle = STYLE_PARA_SINGLE; break;
|
2002-08-02 09:31:06 +00:00
|
|
|
default: ASSERT(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE;
|
|
|
|
|
|
2002-08-20 20:38:40 +00:00
|
|
|
if(!SONGMAN->ChooseRandomSong())
|
2002-08-02 09:31:06 +00:00
|
|
|
{
|
2002-08-20 20:38:40 +00:00
|
|
|
// Couldn't find Song/Notes to play. Abort demonstration!
|
|
|
|
|
GAMESTATE->Reset();
|
|
|
|
|
return;
|
2002-08-02 09:31:06 +00:00
|
|
|
}
|
|
|
|
|
|
2002-08-20 20:38:40 +00:00
|
|
|
ASSERT( GAMESTATE->m_pCurSong );
|
2002-08-02 09:31:06 +00:00
|
|
|
|
2002-10-08 00:24:46 +00:00
|
|
|
GAMESTATE->m_MasterPlayerNumber = PLAYER_1;
|
|
|
|
|
|
2002-08-02 09:31:06 +00:00
|
|
|
// choose some cool options
|
2002-08-20 20:38:40 +00:00
|
|
|
for( int p=0; p<NUM_PLAYERS; p++ )
|
2002-08-02 09:31:06 +00:00
|
|
|
{
|
2002-08-20 20:38:40 +00:00
|
|
|
if( !GAMESTATE->IsPlayerEnabled(p) )
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
if( RandomFloat(0,1)>0.8f )
|
|
|
|
|
GAMESTATE->m_PlayerOptions[p].m_fArrowScrollSpeed = 1.5f;
|
2002-10-02 05:42:59 +00:00
|
|
|
GAMESTATE->m_PlayerOptions[p].m_bEffects[ rand()%PlayerOptions::NUM_EFFECT_TYPES ] = true;
|
2002-08-20 20:38:40 +00:00
|
|
|
if( RandomFloat(0,1)>0.9f )
|
|
|
|
|
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_HIDDEN;
|
|
|
|
|
if( RandomFloat(0,1)>0.9f )
|
|
|
|
|
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_SUDDEN;
|
|
|
|
|
if( RandomFloat(0,1)>0.7f )
|
|
|
|
|
GAMESTATE->m_PlayerOptions[p].m_bReverseScroll = true;
|
2002-09-02 21:59:58 +00:00
|
|
|
if( RandomFloat(0,1)>0.8f )
|
2002-08-20 20:38:40 +00:00
|
|
|
GAMESTATE->m_PlayerOptions[p].m_bDark = true;
|
2002-08-02 09:31:06 +00:00
|
|
|
}
|
2002-10-10 04:11:30 +00:00
|
|
|
GAMESTATE->m_SongOptions.m_LifeType = (randomf(0,1)>0.8f) ? SongOptions::LIFE_BATTERY : SongOptions::LIFE_BAR;
|
2002-08-13 23:26:46 +00:00
|
|
|
GAMESTATE->m_SongOptions.m_FailType = SongOptions::FAIL_OFF;
|
2002-10-02 05:42:59 +00:00
|
|
|
|
2002-08-02 09:31:06 +00:00
|
|
|
GAMESTATE->m_bDemonstration = true;
|
|
|
|
|
m_Fade.CloseWipingRight( SM_GoToDemonstration );
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case SM_GoToDemonstration:
|
|
|
|
|
{
|
|
|
|
|
ASSERT( GAMESTATE->m_pCurSong );
|
2002-08-27 03:59:22 +00:00
|
|
|
SCREENMAN->SetNewScreen( "ScreenGameplay" );
|
2002-08-02 09:31:06 +00:00
|
|
|
}
|
|
|
|
|
break;
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ScreenTitleMenu::LoseFocus( int iChoiceIndex )
|
|
|
|
|
{
|
|
|
|
|
m_textChoice[iChoiceIndex].SetEffectNone();
|
2002-09-02 21:59:58 +00:00
|
|
|
m_textChoice[iChoiceIndex].StopTweening();
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textChoice[iChoiceIndex].BeginTweening( 0.3f );
|
2002-09-03 22:31:06 +00:00
|
|
|
m_textChoice[iChoiceIndex].SetTweenZoom( ZOOM_NOT_SELECTED );
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ScreenTitleMenu::GainFocus( int iChoiceIndex )
|
|
|
|
|
{
|
2002-09-02 21:59:58 +00:00
|
|
|
m_textChoice[iChoiceIndex].StopTweening();
|
2002-05-20 08:59:37 +00:00
|
|
|
m_textChoice[iChoiceIndex].BeginTweening( 0.3f );
|
2002-09-03 22:31:06 +00:00
|
|
|
m_textChoice[iChoiceIndex].SetTweenZoom( ZOOM_SELECTED );
|
2002-10-28 05:30:45 +00:00
|
|
|
RageColor color1, color2;
|
2002-08-13 23:26:46 +00:00
|
|
|
color1 = COLOR_SELECTED;
|
|
|
|
|
color2 = color1 * 0.5f;
|
|
|
|
|
color2.a = 1;
|
|
|
|
|
m_textChoice[iChoiceIndex].SetEffectCamelion( 2.5f, color1, color2 );
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
|
2002-09-04 03:49:08 +00:00
|
|
|
void ScreenTitleMenu::MenuUp( PlayerNumber pn )
|
2002-05-20 08:59:37 +00:00
|
|
|
{
|
|
|
|
|
LoseFocus( m_TitleMenuChoice );
|
|
|
|
|
|
|
|
|
|
if( m_TitleMenuChoice == 0 ) // wrap around
|
|
|
|
|
m_TitleMenuChoice = (ScreenTitleMenu::TitleMenuChoice)((int)NUM_TITLE_MENU_CHOICES);
|
|
|
|
|
|
|
|
|
|
m_TitleMenuChoice = TitleMenuChoice( m_TitleMenuChoice-1 );
|
|
|
|
|
|
2002-09-03 22:31:06 +00:00
|
|
|
m_soundChange.PlayRandom();
|
|
|
|
|
|
2002-05-20 08:59:37 +00:00
|
|
|
GainFocus( m_TitleMenuChoice );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2002-09-04 03:49:08 +00:00
|
|
|
void ScreenTitleMenu::MenuDown( PlayerNumber pn )
|
2002-05-20 08:59:37 +00:00
|
|
|
{
|
|
|
|
|
LoseFocus( m_TitleMenuChoice );
|
|
|
|
|
|
|
|
|
|
if( m_TitleMenuChoice == (int)ScreenTitleMenu::NUM_TITLE_MENU_CHOICES-1 )
|
|
|
|
|
m_TitleMenuChoice = (TitleMenuChoice)-1; // wrap around
|
|
|
|
|
|
|
|
|
|
m_TitleMenuChoice = TitleMenuChoice( m_TitleMenuChoice+1 );
|
|
|
|
|
|
2002-09-03 22:31:06 +00:00
|
|
|
m_soundChange.PlayRandom();
|
|
|
|
|
|
2002-05-20 08:59:37 +00:00
|
|
|
GainFocus( m_TitleMenuChoice );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2002-09-04 03:49:08 +00:00
|
|
|
void ScreenTitleMenu::MenuStart( PlayerNumber pn )
|
2002-05-20 08:59:37 +00:00
|
|
|
{
|
2002-09-04 03:49:08 +00:00
|
|
|
GAMESTATE->m_bSideIsJoined[pn] = true;
|
|
|
|
|
GAMESTATE->m_MasterPlayerNumber = pn;
|
2002-08-13 23:26:46 +00:00
|
|
|
|
|
|
|
|
GAMESTATE->m_bPlayersCanJoin = false;
|
|
|
|
|
|
2002-05-20 08:59:37 +00:00
|
|
|
|
|
|
|
|
switch( m_TitleMenuChoice )
|
|
|
|
|
{
|
2002-05-28 20:01:22 +00:00
|
|
|
case CHOICE_GAME_START:
|
2002-05-20 08:59:37 +00:00
|
|
|
case CHOICE_SELECT_GAME:
|
|
|
|
|
case CHOICE_MAP_INSTRUMENTS:
|
2002-09-10 09:10:36 +00:00
|
|
|
case CHOICE_INPUT_OPTIONS:
|
|
|
|
|
case CHOICE_MACHINE_OPTIONS:
|
2002-08-13 23:26:46 +00:00
|
|
|
case CHOICE_GRAPHIC_OPTIONS:
|
2002-07-11 19:02:26 +00:00
|
|
|
case CHOICE_APPEARANCE_OPTIONS:
|
|
|
|
|
m_soundSelect.PlayRandom();
|
2002-08-13 23:26:46 +00:00
|
|
|
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
|
|
|
|
break;
|
2002-05-20 08:59:37 +00:00
|
|
|
case CHOICE_EDIT:
|
2002-10-31 03:16:02 +00:00
|
|
|
if( SONGMAN->m_pSongs.empty() )
|
2002-07-04 21:05:18 +00:00
|
|
|
{
|
|
|
|
|
m_soundInvalid.PlayRandom();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_soundSelect.PlayRandom();
|
2002-08-13 23:26:46 +00:00
|
|
|
m_Fade.CloseWipingRight( SM_GoToNextScreen );
|
2002-07-04 21:05:18 +00:00
|
|
|
}
|
2002-08-13 23:26:46 +00:00
|
|
|
break;
|
2002-05-20 08:59:37 +00:00
|
|
|
case CHOICE_EXIT:
|
|
|
|
|
m_soundSelect.PlayRandom();
|
|
|
|
|
PostQuitMessage(0);
|
|
|
|
|
return;
|
2002-07-11 19:02:26 +00:00
|
|
|
default:
|
|
|
|
|
ASSERT(0);
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2002-09-04 03:49:08 +00:00
|
|
|
void ScreenTitleMenu::MenuBack( PlayerNumber pn )
|
2002-05-20 08:59:37 +00:00
|
|
|
{
|
2002-08-13 23:26:46 +00:00
|
|
|
this->SendScreenMessage( SM_FadeToDemonstration, 0 );
|
2002-05-20 08:59:37 +00:00
|
|
|
}
|
|
|
|
|
|