diff --git a/stepmania/NEWS b/stepmania/NEWS index b3fa8b6020..de18e5ef34 100644 --- a/stepmania/NEWS +++ b/stepmania/NEWS @@ -1,4 +1,6 @@ ------------------------CVS after 3.00 beta 6---------------- +CHANGE: Texture Hints have been removed in favor of smarter, automatic + texture format chooser. CHANGE: New Nullsoft NSIS installer. CHANGE: NG no longer breaks combo. NEW FEATURE: Hidden easter egg. You have to be "perfect" to find it. diff --git a/stepmania/Themes/default/Graphics/_blank.png b/stepmania/Themes/default/Graphics/_blank.png new file mode 100644 index 0000000000..bed6a0687f Binary files /dev/null and b/stepmania/Themes/default/Graphics/_blank.png differ diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index cac468f66a..8caa5b7fb3 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -1,10 +1,20 @@ -[General] -CautionType=1 // 0 for skip, 1 for DDR caution, 2 for Ez2's SelectPlayer -SelectStyleType=0 // 0 for MAX type, 1 for 5th type, 2 for EZ2 type -SelectDifficultyType=1 // 0 for skip, 1 for MAX type -StageType=0 // 0 for MAX, 1 for Pump, 2 for EZ2 +// Possible NextScreen Codes: +// - ScreenCaution +// - ScreenEz2SelectPlayer +// - ScreenEz2SelectStyle +// - ScreenHowToPlay +// - ScreenSelectCourse +// - ScreenSelectDifficulty +// - ScreenSelectGroup +// - ScreenSelectMusic +// - ScreenSelectStyle5th +// - ScreenSelectStyle -[TitleMenu] +[Common] +ColorP1=0.4,1.0,0.8,1 // sea green +ColorP2=1.0,0.5,0.2,1 // orange + +[ScreenTitleMenu] ChoicesX=320 ChoicesStartY=60 ChoicesSpacingY=48 @@ -22,8 +32,15 @@ GoToCautionOrSelectPlayer=0 SecondsBeforeDemonstration=30 SecondsBetweenAttract=12 HelpText=Use # $ to select, then press START +NextScreen=ScreenCaution -[SelectStyle] +[ScreenCaution] +NextScreen=ScreenSelectStyle + +[ScreenEz2SelectPlayer] +NextScreen=ScreenSelectGroup + +[ScreenSelectStyle] IconsStartX=60 IconsSpacingX=76 IconsStartY=100 @@ -36,8 +53,12 @@ PreviewX=160 PreviewY=240 HelpText=Use ! " to select, then press START TimerSeconds=40 +NextScreen=ScreenSelectDifficulty -[SelectDifficulty] +[ScreenEz2SelectStyle] +NextScreen=ScreenSelectGroup + +[ScreenSelectDifficulty] MorePage1X=580 MorePage1Y=90 MorePage2X=700 @@ -56,16 +77,17 @@ OniX=860 OniY=180 EndlessX=1060 EndlessY=180 -ArrowOffsetP1X=-40 -ArrowOffsetP1Y=200 -ArrowOffsetP2X=+40 -ArrowOffsetP2Y=200 -ArrowShadowLengthX=10 -ArrowShadowLengthY=10 +CursorOffsetP1X=-40 +CursorOffsetP1Y=200 +CursorOffsetP2X=+40 +CursorOffsetP2Y=200 +CursorShadowLengthX=10 +CursorShadowLengthY=10 HelpText=Use ! " to select, then press START TimerSeconds=40 +NextScreen=ScreenSelectGroup -[SelectGroup] +[ScreenSelectGroup] FrameX=180 FrameY=160 BannerX=180 @@ -89,8 +111,16 @@ TitlesColumns=3 TitlesRows=10 HelpText=Use ! " to select, then press START TimerSeconds=40 +NextScreenArcade=ScreenHowToPlay +NextScreenOni=ScreenHowToPlay -[SelectMusic] +[ScreenHowToPlay] +NextScreenArcade=ScreenSelectMusic +NextScreenOni=ScreenSelectCourse +HelpText= +TimerSeconds=15 + +[ScreenSelectMusic] BannerFrameX=160 BannerFrameY=118 BannerX=150 @@ -134,7 +164,7 @@ SongOptionsY=298 HelpText=! or " change music Hold ! and " then press START to change sort::## easier difficulty $$ harder difficulty::#$#$ to change sort TimerSeconds=60 -[SelectCourse] +[ScreenSelectCourse] BannerFrameX=160 BannerFrameY=118 BannerX=150 @@ -156,7 +186,10 @@ ScoreP2Y=286 HelpText=Use ! " to select, then press START TimerSeconds=60 -[Gameplay] +[ScreenStage] +StageType=0 // 0 for MAX, 1 for Pump, 2 for EZ2 + +[ScreenGameplay] TopFrameX=320 TopFrameY=36 TopFrameExtraY=442 @@ -214,7 +247,7 @@ AutoPlayY=360 SecondsBetweenComments=10 DemonstrationSeconds=30 -[Evaluation] +[ScreenEvaluation] BannerX=320 BannerY=100 StageX=320 @@ -274,7 +307,7 @@ HelpText=Press START to continue TimerSeconds=40 SpinGrades=1 -[Other] +[ScreenManager] StatsX=632 StatsY=10 CreditsP1X=100 @@ -282,7 +315,7 @@ CreditsP1Y=470 CreditsP2X=540 CreditsP2Y=470 -[WheelItem] +[WheelItemDisplay] IconX=-136 SongNameX=-30 SectionNameX=-30 diff --git a/stepmania/src/GameConstantsAndTypes.cpp b/stepmania/src/GameConstantsAndTypes.cpp index f735baf045..430dbcae9d 100644 --- a/stepmania/src/GameConstantsAndTypes.cpp +++ b/stepmania/src/GameConstantsAndTypes.cpp @@ -11,8 +11,12 @@ */ #include "GameConstantsAndTypes.h" +#include "ThemeManager.h" +#define COLOR_P1 THEME->GetMetricC("Common","ColorP1") +#define COLOR_P2 THEME->GetMetricC("Common","ColorP2") + D3DXCOLOR DifficultyClassToColor( DifficultyClass dc ) { @@ -51,9 +55,9 @@ D3DXCOLOR PlayerToColor( const PlayerNumber p ) { switch( p ) { - case PLAYER_1: return D3DXCOLOR(0.4f,1.0f,0.8f,1); // sea green - case PLAYER_2: return D3DXCOLOR(1.0f,0.5f,0.2f,1); // orange - default: ASSERT( false ); return D3DXCOLOR(1,1,1,1); + case PLAYER_1: return COLOR_P1; + case PLAYER_2: return COLOR_P2; + default: ASSERT(0); return D3DXCOLOR(0.5f,0.5f,0.5f,1); } }; diff --git a/stepmania/src/GradeDisplay.cpp b/stepmania/src/GradeDisplay.cpp index a464c62175..c7151b4971 100644 --- a/stepmania/src/GradeDisplay.cpp +++ b/stepmania/src/GradeDisplay.cpp @@ -24,7 +24,7 @@ const float GRADES_TO_SCROLL = NUM_GRADE_FRAMES*4; GradeDisplay::GradeDisplay() { - Load( THEME->GetPathTo("Graphics","evaluation grades") ); + Load( THEME->GetPathTo("Graphics","evaluation grades 1x7") ); StopAnimating(); m_fTimeLeftInScroll = 0; @@ -85,13 +85,8 @@ void GradeDisplay::SetGrade( PlayerNumber p, Grade g ) case GRADE_C: SetState( 4*iNumCols+p ); break; case GRADE_D: SetState( 5*iNumCols+p ); break; case GRADE_E: SetState( 6*iNumCols+p ); break; - case GRADE_NO_DATA: - if( this->GetNumStates()%8 == 0 ) - SetState( 7*iNumCols+p ); - else - SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); // don't show anything - break; - default: ASSERT( false ); + case GRADE_NO_DATA: SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); break; + default: ASSERT(0); } }; diff --git a/stepmania/src/GroupList.cpp b/stepmania/src/GroupList.cpp index 7b4973a514..294b2e3f40 100644 --- a/stepmania/src/GroupList.cpp +++ b/stepmania/src/GroupList.cpp @@ -6,10 +6,10 @@ /* If this actor is used anywhere other than SelectGroup, we * can add a setting that changes which metric group we pull * settings out of, so it can be configured separately. */ -#define BUTTON_X THEME->GetMetricF("SelectGroup","ButtonX") -#define BUTTON_START_Y THEME->GetMetricF("SelectGroup","ButtonStartY") -#define BUTTON_SPACING_Y THEME->GetMetricF("SelectGroup","ButtonSpacingY") -#define BUTTON_SELECTED_X THEME->GetMetricF("SelectGroup","ButtonSelectedX") +#define BUTTON_X THEME->GetMetricF("ScreenSelectGroup","ButtonX") +#define BUTTON_START_Y THEME->GetMetricF("ScreenSelectGroup","ButtonStartY") +#define BUTTON_SPACING_Y THEME->GetMetricF("ScreenSelectGroup","ButtonSpacingY") +#define BUTTON_SELECTED_X THEME->GetMetricF("ScreenSelectGroup","ButtonSelectedX") GroupList::GroupList() { diff --git a/stepmania/src/LifeMeterBar.cpp b/stepmania/src/LifeMeterBar.cpp index 0e4c7e7097..44b2245d7b 100644 --- a/stepmania/src/LifeMeterBar.cpp +++ b/stepmania/src/LifeMeterBar.cpp @@ -50,10 +50,10 @@ LifeMeterBar::LifeMeterBar() m_quadBlackBackground.SetZoomY( (float)m_iMeterHeight ); m_frame.AddSubActor( &m_quadBlackBackground ); - m_sprStreamNormal.Load( THEME->GetPathTo("Graphics","gameplay lifemeter stream normal") ); + m_sprStreamNormal.Load( THEME->GetPathTo("Graphics",(GAMESTATE->IsExtraStage()||GAMESTATE->IsExtraStage2())?"gameplay extra lifemeter stream normal":"gameplay lifemeter stream normal") ); m_frame.AddSubActor( &m_sprStreamNormal ); - m_sprStreamHot.Load( THEME->GetPathTo("Graphics","gameplay lifemeter stream hot") ); + m_sprStreamHot.Load( THEME->GetPathTo("Graphics",(GAMESTATE->IsExtraStage()||GAMESTATE->IsExtraStage2())?"gameplay extra lifemeter stream hot":"gameplay lifemeter stream hot") ); m_frame.AddSubActor( &m_sprStreamHot ); m_sprFrame.Load( THEME->GetPathTo("Graphics","gameplay lifemeter bar") ); diff --git a/stepmania/src/MenuElements.cpp b/stepmania/src/MenuElements.cpp index f70010939c..2367b48b02 100644 --- a/stepmania/src/MenuElements.cpp +++ b/stepmania/src/MenuElements.cpp @@ -15,7 +15,6 @@ #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" -#include "ScreenGameplay.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" #include "RageLog.h" diff --git a/stepmania/src/MusicList.cpp b/stepmania/src/MusicList.cpp index f5a3799096..82df90584c 100644 --- a/stepmania/src/MusicList.cpp +++ b/stepmania/src/MusicList.cpp @@ -5,11 +5,11 @@ /* If this actor is used anywhere other than SelectGroup, we * can add a setting that changes which metric group we pull * settings out of, so it can be configured separately. */ -#define TITLES_START_X THEME->GetMetricF("SelectGroup","TitlesStartX") -#define TITLES_SPACING_X THEME->GetMetricF("SelectGroup","TitlesSpacingX") -#define TITLES_START_Y THEME->GetMetricF("SelectGroup","TitlesStartY") -#define TITLES_COLUMNS THEME->GetMetricI("SelectGroup","TitlesColumns") -#define TITLES_ROWS THEME->GetMetricI("SelectGroup","TitlesRows") +#define TITLES_START_X THEME->GetMetricF("ScreenSelectGroup","TitlesStartX") +#define TITLES_SPACING_X THEME->GetMetricF("ScreenSelectGroup","TitlesSpacingX") +#define TITLES_START_Y THEME->GetMetricF("ScreenSelectGroup","TitlesStartY") +#define TITLES_COLUMNS THEME->GetMetricI("ScreenSelectGroup","TitlesColumns") +#define TITLES_ROWS THEME->GetMetricI("ScreenSelectGroup","TitlesRows") MusicList::MusicList() { diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index b032b0fc97..0147411b0c 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -22,16 +22,16 @@ #include "GameState.h" // WheelItem stuff -#define ICON_X THEME->GetMetricF("WheelItem","IconX") -#define SONG_NAME_X THEME->GetMetricF("WheelItem","SongNameX") -#define SECTION_NAME_X THEME->GetMetricF("WheelItem","SectionNameX") -#define SECTION_ZOOM THEME->GetMetricF("WheelItem","SectionZoom") -#define ROULETTE_X THEME->GetMetricF("WheelItem","RouletteX") -#define ROULETTE_ZOOM THEME->GetMetricF("WheelItem","RouletteZoom") -#define COURSE_X THEME->GetMetricF("WheelItem","CourseX") -#define COURSE_ZOOM THEME->GetMetricF("WheelItem","CourseZoom") -#define GRADE_P1_X THEME->GetMetricF("WheelItem","GradeP1X") -#define GRADE_P2_X THEME->GetMetricF("WheelItem","GradeP2Y") +#define ICON_X THEME->GetMetricF("WheelItemDisplay","IconX") +#define SONG_NAME_X THEME->GetMetricF("WheelItemDisplay","SongNameX") +#define SECTION_NAME_X THEME->GetMetricF("WheelItemDisplay","SectionNameX") +#define SECTION_ZOOM THEME->GetMetricF("WheelItemDisplay","SectionZoom") +#define ROULETTE_X THEME->GetMetricF("WheelItemDisplay","RouletteX") +#define ROULETTE_ZOOM THEME->GetMetricF("WheelItemDisplay","RouletteZoom") +#define COURSE_X THEME->GetMetricF("WheelItemDisplay","CourseX") +#define COURSE_ZOOM THEME->GetMetricF("WheelItemDisplay","CourseZoom") +#define GRADE_P1_X THEME->GetMetricF("WheelItemDisplay","GradeP1X") +#define GRADE_P2_X THEME->GetMetricF("WheelItemDisplay","GradeP2Y") // MusicWheel stuff diff --git a/stepmania/src/MusicWheel.h b/stepmania/src/MusicWheel.h index c27427629b..83b12a6de1 100644 --- a/stepmania/src/MusicWheel.h +++ b/stepmania/src/MusicWheel.h @@ -17,7 +17,7 @@ #include "Quad.h" #include "TextBanner.h" #include "RandomSample.h" -#include "GradeDisplay.h" +#include "SmallGradeDisplay.h" #include "RageSoundStream.h" #include "GameConstantsAndTypes.h" #include "MusicSortDisplay.h" @@ -81,7 +81,7 @@ public: Sprite m_sprSongBar; MusicStatusDisplay m_MusicStatusDisplay; TextBanner m_TextBanner; - GradeDisplay m_GradeDisplay[NUM_PLAYERS]; + SmallGradeDisplay m_GradeDisplay[NUM_PLAYERS]; // for TYPE_COURSE BitmapText m_textCourse; diff --git a/stepmania/src/NoteDisplay.cpp b/stepmania/src/NoteDisplay.cpp index b01cf5ae5a..c2c16c11f5 100644 --- a/stepmania/src/NoteDisplay.cpp +++ b/stepmania/src/NoteDisplay.cpp @@ -542,7 +542,7 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float const float fBottomDistFromTailTop = fYBottom - fYTailTop; const float fTexCoordTop = SCALE( fTopDistFromTailTop, 0, fFrameHeight, 0.5f, 1.0f ); const float fTexCoordBottom = SCALE( fBottomDistFromTailTop, 0, fFrameHeight, 0.5f, 1.0f ); - ASSERT( fBottomDistFromTailTop <= fFrameHeight ); + ASSERT( fBottomDistFromTailTop-0.0001 <= fFrameHeight ); const float fTexCoordLeft = bActive ? 0.25f : 0.00f; const float fTexCoordRight = bActive ? 0.50f : 0.25f; const float fAlphaTop = ArrowGetAlpha( m_PlayerNumber, fYTop ); diff --git a/stepmania/src/RageBitmapTexture.cpp b/stepmania/src/RageBitmapTexture.cpp index e3f81d474c..c863c8aba9 100644 --- a/stepmania/src/RageBitmapTexture.cpp +++ b/stepmania/src/RageBitmapTexture.cpp @@ -110,6 +110,17 @@ void RageBitmapTexture::Create( if( -1 != m_sFilePath.Find("dither") ) bDither = true; + + ///////////////////// + // Figure out whether the texture can fit into texture memory unscaled + ///////////////////// + D3DXIMAGE_INFO ddii; + if( FAILED( hr = D3DXGetImageInfoFromFile(m_sFilePath,&ddii) ) ) + { + throw RageException( hr, "D3DXGetImageInfoFromFile() failed for file '%s'.", m_sFilePath ); + } + + /////////////////////// // Figure out which texture format to use /////////////////////// @@ -117,11 +128,18 @@ void RageBitmapTexture::Create( switch( dwTextureColorDepth ) { case 16: - switch( iAlphaBits ) +// switch( iAlphaBits ) +// { +// case 0: fmtTexture = D3DFMT_R5G6B5; break; +// case 1: fmtTexture = D3DFMT_A1R5G5B5; break; +// default: fmtTexture = D3DFMT_A4R4G4B4; break; +// } + + // Ignore dwTextureColorDepth, and infer based on image format + switch( ddii.Format ) { - case 0: fmtTexture = D3DFMT_R5G6B5; break; - case 1: fmtTexture = D3DFMT_A1R5G5B5; break; - default: fmtTexture = D3DFMT_A4R4G4B4; break; + case D3DFMT_P8: fmtTexture = D3DFMT_A1R5G5B5; break; + default: fmtTexture = D3DFMT_A4R4G4B4; break; } break; case 32: @@ -131,25 +149,14 @@ void RageBitmapTexture::Create( throw RageException( "Invalid color depth: %d bits", dwTextureColorDepth ); } - - ///////////////////// - // Figure out whether the texture can fit into texture memory unscaled - ///////////////////// - D3DXIMAGE_INFO ddii; - if( FAILED( hr = D3DXGetImageInfoFromFile( - m_sFilePath, - &ddii ) ) ) - { - throw RageException( hr, "D3DXGetImageInfoFromFile() failed for file '%s'.", m_sFilePath ); - } // find out what the min texture size is dwMaxSize = min( dwMaxSize, DISPLAY->GetDeviceCaps().MaxTextureWidth ); bStretch |= ddii.Width > dwMaxSize || ddii.Height > dwMaxSize; - // HACK: On a Voodoo3 and Win98, D3DXCreateTextureFromFileEx sometimes fails for no good reason. - // So, we'll try the call 2x in a row in case the first one fails + // HACK: On a Voodoo3 and Win98, D3DXCreateTextureFromFileEx fail randomly on rare occasions. + // So, we'll try the call 2x in a row in case the first one fails. for( int i=0; i<2; i++ ) { if( FAILED( hr = D3DXCreateTextureFromFileEx( diff --git a/stepmania/src/ScreenAppearanceOptions.cpp b/stepmania/src/ScreenAppearanceOptions.cpp index 76a9dc1dee..7efa1d3178 100644 --- a/stepmania/src/ScreenAppearanceOptions.cpp +++ b/stepmania/src/ScreenAppearanceOptions.cpp @@ -11,14 +11,11 @@ */ #include "ScreenAppearanceOptions.h" -#include #include "RageTextureManager.h" #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "ScreenOptions.h" -#include "ScreenTitleMenu.h" #include "GameConstantsAndTypes.h" #include "StepMania.h" #include "PrefsManager.h" @@ -166,7 +163,7 @@ void ScreenAppearanceOptions::GoToPrevState() void ScreenAppearanceOptions::GoToNextState() { PREFSMAN->SaveGamePrefsToDisk(); - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); } diff --git a/stepmania/src/ScreenCaution.cpp b/stepmania/src/ScreenCaution.cpp index 7298e62a51..e39973067c 100644 --- a/stepmania/src/ScreenCaution.cpp +++ b/stepmania/src/ScreenCaution.cpp @@ -12,30 +12,19 @@ #include "ScreenCaution.h" -#include "ScreenTitleMenu.h" #include "GameConstantsAndTypes.h" -#include "ScreenSelectStyle.h" -#include "ScreenEZ2SelectStyle.h" -#include "ScreenSelectStyle5th.h" -#include "RageTextureManager.h" #include "PrefsManager.h" #include "AnnouncerManager.h" #include "GameState.h" -#define SELECT_STYLE_TYPE THEME->GetMetricI("General","SelectStyleType") -enum SelectStyleType // for use with the metric above -{ - SELECT_STYLE_TYPE_MAX = 0, - SELECT_STYLE_TYPE_5TH, - SELECT_STYLE_TYPE_EZ2, -}; +#define NEXT_SCREEN THEME->GetMetric("ScreenCaution","NextScreen") const ScreenMessage SM_GoToPrevState = ScreenMessage(SM_User-6); const ScreenMessage SM_DoneOpening = ScreenMessage(SM_User-7); const ScreenMessage SM_StartClosing = ScreenMessage(SM_User-8); -const ScreenMessage SM_GoToSelectMusic = ScreenMessage(SM_User-9); +const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User-9); ScreenCaution::ScreenCaution() @@ -71,30 +60,16 @@ void ScreenCaution::HandleScreenMessage( const ScreenMessage SM ) { case SM_StartClosing: if( !m_Wipe.IsClosing() ) - m_Wipe.CloseWipingRight( SM_GoToSelectMusic ); + m_Wipe.CloseWipingRight( SM_GoToNextScreen ); break; case SM_DoneOpening: SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_CAUTION) ); break; case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; - case SM_GoToSelectMusic: - switch( SELECT_STYLE_TYPE ) - { - case SELECT_STYLE_TYPE_MAX: - SCREENMAN->SetNewScreen( new ScreenSelectStyle ); - break; - case SELECT_STYLE_TYPE_5TH: - SCREENMAN->SetNewScreen( new ScreenSelectStyle5th ); - break; - case SELECT_STYLE_TYPE_EZ2: - SCREENMAN->SetNewScreen( new ScreenEz2SelectStyle ); - break; - default: - ASSERT(0); - break; - } + case SM_GoToNextScreen: + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; } } @@ -110,7 +85,7 @@ void ScreenCaution::MenuStart( const PlayerNumber p ) } if( !m_Wipe.IsOpening() && !m_Wipe.IsClosing() ) - m_Wipe.CloseWipingRight( SM_GoToSelectMusic ); + m_Wipe.CloseWipingRight( SM_GoToNextScreen ); } void ScreenCaution::MenuBack( const PlayerNumber p ) diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 86dfbbd583..8b81c4261a 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -14,16 +14,12 @@ #include "PrefsManager.h" #include "SongManager.h" #include "ScreenManager.h" -#include "ScreenSelectMusic.h" -#include "ScreenEvaluation.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" #include "GameManager.h" -#include "ScreenEditMenu.h" #include "GameConstantsAndTypes.h" #include "RageLog.h" #include "GameState.h" -#include "ScreenTextEntry.h" // @@ -573,7 +569,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ } break; case DIK_Q: - SCREENMAN->SetNewScreen( new ScreenEditMenu ); + SCREENMAN->SetNewScreen( "ScreenEditMenu" ); break; case DIK_S: case DIK_W: @@ -897,7 +893,7 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ if( i != m_pSong->m_BackgroundChanges.GetSize() ) // there is already a BGChange here sOldBackground = m_pSong->m_BackgroundChanges[i].m_sBGName; - SCREENMAN->AddScreenToTop( new ScreenTextEntry(SM_None, "Type a background name.\nPress Enter to keep,\nEscape to cancel.\nEnter an empty string to remove\nthe Background Change.", sOldBackground, AddBGChange, NULL) ); + SCREENMAN->TextEntry( SM_None, "Type a background name.\nPress Enter to keep,\nEscape to cancel.\nEnter an empty string to remove\nthe Background Change.", sOldBackground, AddBGChange, NULL ); } break; @@ -1186,10 +1182,10 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM ) switch( SM ) { case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenEditMenu ); + SCREENMAN->SetNewScreen( "ScreenEditMenu" ); break; case SM_GoToNextState: - SCREENMAN->SetNewScreen( new ScreenEditMenu ); + SCREENMAN->SetNewScreen( "ScreenEditMenu" ); break; } diff --git a/stepmania/src/ScreenEditMenu.cpp b/stepmania/src/ScreenEditMenu.cpp index 410e3f5012..efed8aa80e 100644 --- a/stepmania/src/ScreenEditMenu.cpp +++ b/stepmania/src/ScreenEditMenu.cpp @@ -13,21 +13,18 @@ #include "ScreenEditMenu.h" #include "SongManager.h" #include "ScreenManager.h" -#include "ScreenTitleMenu.h" -#include "ScreenEdit.h" #include "GameConstantsAndTypes.h" #include "RageUtil.h" #include "PrefsManager.h" #include "GameManager.h" -#include "ScreenPrompt.h" #include "RageLog.h" #include "GameState.h" +#include "RageMusic.h" // // Defines specific to ScreenEditMenu // - const float EXPLANATION_X = CENTER_X; const float EXPLANATION_Y = SCREEN_BOTTOM - 70; const CString EXPLANATION_TEXT = @@ -55,8 +52,8 @@ ScreenEditMenu::ScreenEditMenu() m_Fade.SetOpened(); this->AddSubActor( &m_Fade); - MUSIC->Load( THEME->GetPathTo("Sounds","edit menu music") ); - MUSIC->Play( true ); + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","edit menu music") ); + m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") ); } @@ -79,7 +76,7 @@ void ScreenEditMenu::HandleScreenMessage( const ScreenMessage SM ) switch( SM ) { case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: // set the current style based on the notes type @@ -97,7 +94,7 @@ void ScreenEditMenu::HandleScreenMessage( const ScreenMessage SM ) GAMESTATE->m_CurStyle = style; GAMESTATE->m_CurGame = GAMEMAN->GetStyleDefForStyle(style)->m_Game; - SCREENMAN->SetNewScreen( new ScreenEdit ); + SCREENMAN->SetNewScreen( "ScreenEdit" ); break; } } diff --git a/stepmania/src/ScreenEvaluation.cpp b/stepmania/src/ScreenEvaluation.cpp index 9362bda6d7..46a50b4faf 100644 --- a/stepmania/src/ScreenEvaluation.cpp +++ b/stepmania/src/ScreenEvaluation.cpp @@ -11,7 +11,6 @@ */ #include "ScreenEvaluation.h" -#include "ScreenSelectMusic.h" #include "SongManager.h" #include "ScreenManager.h" #include "GameManager.h" @@ -21,69 +20,68 @@ #include "PrefsManager.h" #include "RageLog.h" #include "AnnouncerManager.h" -#include "ScreenMusicScroll.h" #include "GameState.h" -#include "ScreenSelectCourse.h" +#include "GrooveRadar.h" -#define BANNER_X THEME->GetMetricF("Evaluation","BannerX") -#define BANNER_Y THEME->GetMetricF("Evaluation","BannerY") -#define STAGE_X THEME->GetMetricF("Evaluation","StageX") -#define STAGE_Y THEME->GetMetricF("Evaluation","StageY") -#define GRADE_P1_X THEME->GetMetricF("Evaluation","GradeP1X") -#define GRADE_P2_X THEME->GetMetricF("Evaluation","GradeP2X") -#define GRADE_Y THEME->GetMetricF("Evaluation","GradeY") -#define PERCENT_BASE_P1_X THEME->GetMetricF("Evaluation","PercentBaseP1X") -#define PERCENT_BASE_P2_X THEME->GetMetricF("Evaluation","PercentBaseP2X") -#define PERCENT_BASE_Y THEME->GetMetricF("Evaluation","PercentBaseY") -#define JUDGE_LABELS_X THEME->GetMetricF("Evaluation","JudgeLabelsX") -#define PERFECT_P1_X THEME->GetMetricF("Evaluation","PerfectP1X") -#define PERFECT_P2_X THEME->GetMetricF("Evaluation","PerfectP2X") -#define PERFECT_Y THEME->GetMetricF("Evaluation","PerfectY") -#define GREAT_P1_X THEME->GetMetricF("Evaluation","GreatP1X") -#define GREAT_P2_X THEME->GetMetricF("Evaluation","GreatP2X") -#define GREAT_Y THEME->GetMetricF("Evaluation","GreatY") -#define GOOD_P1_X THEME->GetMetricF("Evaluation","GoodP1X") -#define GOOD_P2_X THEME->GetMetricF("Evaluation","GoodP2X") -#define GOOD_Y THEME->GetMetricF("Evaluation","GoodY") -#define BOO_P1_X THEME->GetMetricF("Evaluation","BooP1X") -#define BOO_P2_X THEME->GetMetricF("Evaluation","BooP2X") -#define BOO_Y THEME->GetMetricF("Evaluation","BooY") -#define MISS_P1_X THEME->GetMetricF("Evaluation","MissP1X") -#define MISS_P2_X THEME->GetMetricF("Evaluation","MissP2X") -#define MISS_Y THEME->GetMetricF("Evaluation","MissY") -#define OK_P1_X THEME->GetMetricF("Evaluation","OKP1X") -#define OK_P2_X THEME->GetMetricF("Evaluation","OKP2X") -#define OK_Y THEME->GetMetricF("Evaluation","OKY") -#define MAX_COMBO_P1_X THEME->GetMetricF("Evaluation","MaxComboP1X") -#define MAX_COMBO_P2_X THEME->GetMetricF("Evaluation","MaxComboP2X") -#define MAX_COMBO_Y THEME->GetMetricF("Evaluation","MaxComboY") -#define SCORE_LABELS_X THEME->GetMetricF("Evaluation","ScoreLabelsX") -#define SCORE_NUMBERS_P1_X THEME->GetMetricF("Evaluation","ScoreNumbersP1X") -#define SCORE_NUMBERS_P2_X THEME->GetMetricF("Evaluation","ScoreNumbersP2X") -#define SCORE_Y THEME->GetMetricF("Evaluation","ScoreY") -#define BONUS_P1_X THEME->GetMetricF("Evaluation","BonusP1X") -#define BONUS_P2_X THEME->GetMetricF("Evaluation","BonusP2X") -#define BONUS_Y THEME->GetMetricF("Evaluation","BonusY") -#define BAR_P1_BASE_X THEME->GetMetricF("Evaluation","BarP1BaseX") -#define BAR_P2_BASE_X THEME->GetMetricF("Evaluation","BarP2BaseX") -#define BAR_P1_ROTATION THEME->GetMetricF("Evaluation","BarP1Rotation") -#define BAR_P2_ROTATION THEME->GetMetricF("Evaluation","BarP2Rotation") -#define BAR_START_Y THEME->GetMetricF("Evaluation","BarStartY") -#define BAR_SPACING_Y THEME->GetMetricF("Evaluation","BarSpacingY") -#define BAR_WIDTH THEME->GetMetricF("Evaluation","BarWidth") -#define BAR_HEIGHT THEME->GetMetricF("Evaluation","BarHeight") -#define SONGS_SURVIVED_P1_X THEME->GetMetricF("Evaluation","SongsSurvivedP1X") -#define SONGS_SURVIVED_P2_X THEME->GetMetricF("Evaluation","SongsSurvivedP2X") -#define SONGS_SURVIVED_Y THEME->GetMetricF("Evaluation","SongsSurvivedY") -#define NEW_RECORD_P1_X THEME->GetMetricF("Evaluation","NewRecordP1X") -#define NEW_RECORD_P2_X THEME->GetMetricF("Evaluation","NewRecordP2X") -#define NEW_RECORD_Y THEME->GetMetricF("Evaluation","NewRecordY") -#define TRY_EXTRA_STAGE_X THEME->GetMetricF("Evaluation","TryExtraStageX") -#define TRY_EXTRA_STAGE_Y THEME->GetMetricF("Evaluation","TryExtraStageY") -#define HELP_TEXT THEME->GetMetric("Evaluation","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("Evaluation","TimerSeconds") -#define SPIN_GRADES THEME->GetMetricB("Evaluation","SpinGrades") +#define BANNER_X THEME->GetMetricF("ScreenEvaluation","BannerX") +#define BANNER_Y THEME->GetMetricF("ScreenEvaluation","BannerY") +#define STAGE_X THEME->GetMetricF("ScreenEvaluation","StageX") +#define STAGE_Y THEME->GetMetricF("ScreenEvaluation","StageY") +#define GRADE_P1_X THEME->GetMetricF("ScreenEvaluation","GradeP1X") +#define GRADE_P2_X THEME->GetMetricF("ScreenEvaluation","GradeP2X") +#define GRADE_Y THEME->GetMetricF("ScreenEvaluation","GradeY") +#define PERCENT_BASE_P1_X THEME->GetMetricF("ScreenEvaluation","PercentBaseP1X") +#define PERCENT_BASE_P2_X THEME->GetMetricF("ScreenEvaluation","PercentBaseP2X") +#define PERCENT_BASE_Y THEME->GetMetricF("ScreenEvaluation","PercentBaseY") +#define JUDGE_LABELS_X THEME->GetMetricF("ScreenEvaluation","JudgeLabelsX") +#define PERFECT_P1_X THEME->GetMetricF("ScreenEvaluation","PerfectP1X") +#define PERFECT_P2_X THEME->GetMetricF("ScreenEvaluation","PerfectP2X") +#define PERFECT_Y THEME->GetMetricF("ScreenEvaluation","PerfectY") +#define GREAT_P1_X THEME->GetMetricF("ScreenEvaluation","GreatP1X") +#define GREAT_P2_X THEME->GetMetricF("ScreenEvaluation","GreatP2X") +#define GREAT_Y THEME->GetMetricF("ScreenEvaluation","GreatY") +#define GOOD_P1_X THEME->GetMetricF("ScreenEvaluation","GoodP1X") +#define GOOD_P2_X THEME->GetMetricF("ScreenEvaluation","GoodP2X") +#define GOOD_Y THEME->GetMetricF("ScreenEvaluation","GoodY") +#define BOO_P1_X THEME->GetMetricF("ScreenEvaluation","BooP1X") +#define BOO_P2_X THEME->GetMetricF("ScreenEvaluation","BooP2X") +#define BOO_Y THEME->GetMetricF("ScreenEvaluation","BooY") +#define MISS_P1_X THEME->GetMetricF("ScreenEvaluation","MissP1X") +#define MISS_P2_X THEME->GetMetricF("ScreenEvaluation","MissP2X") +#define MISS_Y THEME->GetMetricF("ScreenEvaluation","MissY") +#define OK_P1_X THEME->GetMetricF("ScreenEvaluation","OKP1X") +#define OK_P2_X THEME->GetMetricF("ScreenEvaluation","OKP2X") +#define OK_Y THEME->GetMetricF("ScreenEvaluation","OKY") +#define MAX_COMBO_P1_X THEME->GetMetricF("ScreenEvaluation","MaxComboP1X") +#define MAX_COMBO_P2_X THEME->GetMetricF("ScreenEvaluation","MaxComboP2X") +#define MAX_COMBO_Y THEME->GetMetricF("ScreenEvaluation","MaxComboY") +#define SCORE_LABELS_X THEME->GetMetricF("ScreenEvaluation","ScoreLabelsX") +#define SCORE_NUMBERS_P1_X THEME->GetMetricF("ScreenEvaluation","ScoreNumbersP1X") +#define SCORE_NUMBERS_P2_X THEME->GetMetricF("ScreenEvaluation","ScoreNumbersP2X") +#define SCORE_Y THEME->GetMetricF("ScreenEvaluation","ScoreY") +#define BONUS_P1_X THEME->GetMetricF("ScreenEvaluation","BonusP1X") +#define BONUS_P2_X THEME->GetMetricF("ScreenEvaluation","BonusP2X") +#define BONUS_Y THEME->GetMetricF("ScreenEvaluation","BonusY") +#define BAR_P1_BASE_X THEME->GetMetricF("ScreenEvaluation","BarP1BaseX") +#define BAR_P2_BASE_X THEME->GetMetricF("ScreenEvaluation","BarP2BaseX") +#define BAR_P1_ROTATION THEME->GetMetricF("ScreenEvaluation","BarP1Rotation") +#define BAR_P2_ROTATION THEME->GetMetricF("ScreenEvaluation","BarP2Rotation") +#define BAR_START_Y THEME->GetMetricF("ScreenEvaluation","BarStartY") +#define BAR_SPACING_Y THEME->GetMetricF("ScreenEvaluation","BarSpacingY") +#define BAR_WIDTH THEME->GetMetricF("ScreenEvaluation","BarWidth") +#define BAR_HEIGHT THEME->GetMetricF("ScreenEvaluation","BarHeight") +#define SONGS_SURVIVED_P1_X THEME->GetMetricF("ScreenEvaluation","SongsSurvivedP1X") +#define SONGS_SURVIVED_P2_X THEME->GetMetricF("ScreenEvaluation","SongsSurvivedP2X") +#define SONGS_SURVIVED_Y THEME->GetMetricF("ScreenEvaluation","SongsSurvivedY") +#define NEW_RECORD_P1_X THEME->GetMetricF("ScreenEvaluation","NewRecordP1X") +#define NEW_RECORD_P2_X THEME->GetMetricF("ScreenEvaluation","NewRecordP2X") +#define NEW_RECORD_Y THEME->GetMetricF("ScreenEvaluation","NewRecordY") +#define TRY_EXTRA_STAGE_X THEME->GetMetricF("ScreenEvaluation","TryExtraStageX") +#define TRY_EXTRA_STAGE_Y THEME->GetMetricF("ScreenEvaluation","TryExtraStageY") +#define HELP_TEXT THEME->GetMetric("ScreenEvaluation","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenEvaluation","TimerSeconds") +#define SPIN_GRADES THEME->GetMetricB("ScreenEvaluation","SpinGrades") float GRADE_X( int p ) { switch( p ) { @@ -873,16 +871,16 @@ void ScreenEvaluation::HandleScreenMessage( const ScreenMessage SM ) MenuStart( PLAYER_INVALID ); break; case SM_GoToSelectMusic: - SCREENMAN->SetNewScreen( new ScreenSelectMusic ); + SCREENMAN->SetNewScreen( "ScreenSelectMusic" ); break; case SM_GoToSelectCourse: - SCREENMAN->SetNewScreen( new ScreenSelectCourse ); + SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); break; case SM_GoToMusicScroll: - SCREENMAN->SetNewScreen( new ScreenMusicScroll ); + SCREENMAN->SetNewScreen( "ScreenMusicScroll" ); break; case SM_GoToFinalEvaluation: - SCREENMAN->SetNewScreen( new ScreenEvaluation(true) ); + SCREENMAN->SetNewScreen( "ScreenFinalEvaluation" ); break; } } diff --git a/stepmania/src/ScreenEvaluation.h b/stepmania/src/ScreenEvaluation.h index 700886f7f1..d4ad4e23cf 100644 --- a/stepmania/src/ScreenEvaluation.h +++ b/stepmania/src/ScreenEvaluation.h @@ -25,10 +25,11 @@ const int NUM_JUDGE_LINES = 7; // perfect, great, good, boo, miss, ok, max_combo const int STAGES_TO_SHOW_IN_SUMMARY = 3; // only show the latest three stages in a summary + class ScreenEvaluation : public Screen { public: - ScreenEvaluation( bool bSummary ); + ScreenEvaluation( bool bFinalEval = false ); virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); @@ -79,5 +80,10 @@ protected: BitmapText m_textTryExtraStage; }; +class ScreenFinalEvaluation : public ScreenEvaluation +{ +public: + ScreenFinalEvaluation() : ScreenEvaluation(true) {}; +}; diff --git a/stepmania/src/ScreenEz2SelectPlayer.cpp b/stepmania/src/ScreenEz2SelectPlayer.cpp index 8727afe300..ea12df1fd1 100644 --- a/stepmania/src/ScreenEz2SelectPlayer.cpp +++ b/stepmania/src/ScreenEz2SelectPlayer.cpp @@ -12,17 +12,11 @@ Andrew Livy #include "ScreenManager.h" #include "PrefsManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" -#include "ScreenCaution.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenSelectDifficulty.h" -#include "ScreenSandbox.h" #include "GameManager.h" #include "RageLog.h" #include "AnnouncerManager.h" -#include "ScreenSelectStyle.h" -#include "ScreenEz2SelectStyle.h" #include "GameState.h" #include "RageException.h" #include "RageTimer.h" @@ -33,7 +27,9 @@ const ScreenMessage SM_GoToPrevState = ScreenMessage(SM_User + 1); const ScreenMessage SM_GoToNextState = ScreenMessage(SM_User + 2); const ScreenMessage SM_PlayersChosen = ScreenMessage(SM_User + 3); -#define USE_NORMAL_OR_EZ2_SELECT_STYLE THEME->GetMetricB("General","UseNormalOrEZ2SelectStyle") + +#define NEXT_SCREEN THEME->GetMetric("ScreenEz2SelectPlayer","NextScreen") + const float TWEEN_TIME = 0.35f; const D3DXCOLOR OPT_NOT_SELECTED = D3DXCOLOR(0.3f,0.3f,0.3f,1); @@ -100,11 +96,7 @@ ScreenEz2SelectPlayer::ScreenEz2SelectPlayer() SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_STYLE_INTRO) ); - if( !MUSIC->IsPlaying() ) - { - MUSIC->Load( THEME->GetPathTo("Sounds","select player music") ); - MUSIC->Play( true ); - } + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select player music") ); // GAMESTATE->m_bPlayersCanJoin = true; // GAMESTATE->m_bIsJoined[PLAYER_1] = false; @@ -135,10 +127,10 @@ void ScreenEz2SelectPlayer::Update( float fDeltaTime ) fDeltaTime /= .01f; - ez2_bounce = fmod((ez2_bounce+fDeltaTime), 20); + ez2_bounce = fmodf((ez2_bounce+fDeltaTime), 20); /* 0..10..19 -> 10..0..9 */ - int offset = abs(10-ez2_bounce); + int offset = roundf( fabsf(10-ez2_bounce) ); m_sprOpt[2].SetXY( OPT_X[2], OPT_Y[2] - offset); m_sprOpt[3].SetXY( OPT_X[3], OPT_Y[3] - offset); } @@ -218,13 +210,10 @@ void ScreenEz2SelectPlayer::HandleScreenMessage( const ScreenMessage SM ) case SM_GoToPrevState: MUSIC->Stop(); - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: - if( USE_NORMAL_OR_EZ2_SELECT_STYLE ) - SCREENMAN->SetNewScreen( new ScreenEz2SelectStyle ); - else - SCREENMAN->SetNewScreen( new ScreenSelectStyle ); + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; } } diff --git a/stepmania/src/ScreenEz2SelectStyle.cpp b/stepmania/src/ScreenEz2SelectStyle.cpp index ae1cbfe047..1427881467 100644 --- a/stepmania/src/ScreenEz2SelectStyle.cpp +++ b/stepmania/src/ScreenEz2SelectStyle.cpp @@ -1,3 +1,4 @@ +#include "stdafx.h" /**************************************** ScreenEzSelectPlayer,cpp Desc: See Header @@ -10,32 +11,30 @@ a polish :) /* Includes */ -#include "stdafx.h" #include "ScreenEz2SelectStyle.h" #include "ScreenManager.h" #include "PrefsManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" -#include "ScreenCaution.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenSelectDifficulty.h" -#include "ScreenSandbox.h" #include "GameManager.h" #include "RageLog.h" #include "AnnouncerManager.h" #include "GameConstantsAndTypes.h" #include "Background.h" -#include "ScreenSelectGroup.h" #include "GameState.h" #include "RageException.h" #include "RageTimer.h" /* Constants */ +#define NEXT_SCREEN THEME->GetMetric("ScreenEz2SelectStyle","NextScreen") + + const ScreenMessage SM_GoToPrevState = ScreenMessage(SM_User + 1); const ScreenMessage SM_GoToNextState = ScreenMessage(SM_User + 2); + enum DStyles { DS_EASY, DS_HARD, @@ -45,8 +44,6 @@ enum DStyles { const float TWEEN_TIME = 0.35f; -#define SKIP_SELECT_DIFFICULTY THEME->GetMetricB("General","SkipSelectDifficulty") - float ez2p_lasttimercheck[2]; int ez2p_bounce=0; // used for the bouncing of the '1p' and '2p' images @@ -164,18 +161,14 @@ void ScreenEz2SelectStyle::HandleScreenMessage( const ScreenMessage SM ) case SM_MenuTimer: m_soundSelect.PlayRandom(); GAMESTATE->m_PlayMode = PLAY_MODE_ARCADE; - SCREENMAN->SetNewScreen( new ScreenSelectGroup ); - + this->SendScreenMessage( SM_GoToNextState, 0 ); break; case SM_GoToPrevState: MUSIC->Stop(); - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: - if( SKIP_SELECT_DIFFICULTY ) - SCREENMAN->SetNewScreen( new ScreenSelectGroup ); - else - SCREENMAN->SetNewScreen( new ScreenSelectDifficulty ); + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; } } diff --git a/stepmania/src/ScreenGameOver.cpp b/stepmania/src/ScreenGameOver.cpp index 147d47b35e..7da676800f 100644 --- a/stepmania/src/ScreenGameOver.cpp +++ b/stepmania/src/ScreenGameOver.cpp @@ -17,7 +17,6 @@ #include "Sprite.h" #include "AnnouncerManager.h" #include "ScreenManager.h" -#include "ScreenTitleMenu.h" #include "AnnouncerManager.h" #include "GameState.h" @@ -70,7 +69,7 @@ void ScreenGameOver::HandleScreenMessage( const ScreenMessage SM ) this->SendScreenMessage( SM_GoToNextState, 0.8f ); break; case SM_GoToNextState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; } } diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 64423345e5..6bf733e335 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -13,85 +13,80 @@ #include "ScreenGameplay.h" #include "SongManager.h" #include "ScreenManager.h" - -#include "ScreenSelectMusic.h" -#include "ScreenSelectCourse.h" -#include "ScreenEvaluation.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" #include "GameManager.h" #include "SongManager.h" #include "RageLog.h" #include "AnnouncerManager.h" -#include "ScreenGameOver.h" #include "LifeMeterBar.h" #include "LifeMeterBattery.h" #include "GameState.h" #include "ScoreDisplayNormal.h" #include "ScoreDisplayOni.h" #include "ScreenPrompt.h" -#include "ScreenTitleMenu.h" +#include "GrooveRadar.h" // // Defines // -#define TOP_FRAME_X THEME->GetMetricF("Gameplay","TopFrameX") -#define TOP_FRAME_Y THEME->GetMetricF("Gameplay","TopFrameY") -#define TOP_FRAME_EXTRA_Y THEME->GetMetricF("Gameplay","TopFrameExtraY") -#define BOTTOM_FRAME_X THEME->GetMetricF("Gameplay","BottomFrameX") -#define BOTTOM_FRAME_Y THEME->GetMetricF("Gameplay","BottomFrameY") -#define BOTTOM_FRAME_EXTRA_Y THEME->GetMetricF("Gameplay","BottomFrameExtraY") -#define MIDDLE_FRAME_X THEME->GetMetricF("Gameplay","MiddleFrameX") -#define MIDDLE_FRAME_Y THEME->GetMetricF("Gameplay","MiddleFrameY") -#define LIFE_P1_X THEME->GetMetricF("Gameplay","LifeP1X") -#define LIFE_P1_Y THEME->GetMetricF("Gameplay","LifeP1Y") -#define LIFE_P1_EXTRA_Y THEME->GetMetricF("Gameplay","LifeP1ExtraY") -#define LIFE_P2_X THEME->GetMetricF("Gameplay","LifeP2X") -#define LIFE_P2_Y THEME->GetMetricF("Gameplay","LifeP2Y") -#define LIFE_P2_EXTRA_Y THEME->GetMetricF("Gameplay","LifeP2ExtraY") -#define STAGE_X THEME->GetMetricF("Gameplay","StageX") -#define STAGE_Y THEME->GetMetricF("Gameplay","StageY") -#define STAGE_EXTRA_Y THEME->GetMetricF("Gameplay","StageExtraY") -#define SONG_NUMBER_P1_X THEME->GetMetricF("Gameplay","SongNumberP1X") -#define SONG_NUMBER_P1_Y THEME->GetMetricF("Gameplay","SongNumberP1Y") -#define SONG_NUMBER_P1_EXTRA_Y THEME->GetMetricF("Gameplay","SongNumberP1ExtraY") -#define SONG_NUMBER_P2_X THEME->GetMetricF("Gameplay","SongNumberP2X") -#define SONG_NUMBER_P2_Y THEME->GetMetricF("Gameplay","SongNumberP2Y") -#define SONG_NUMBER_P2_EXTRA_Y THEME->GetMetricF("Gameplay","SongNumberP2ExtraY") -#define SCORE_P1_X THEME->GetMetricF("Gameplay","ScoreP1X") -#define SCORE_P1_Y THEME->GetMetricF("Gameplay","ScoreP1Y") -#define SCORE_P1_EXTRA_Y THEME->GetMetricF("Gameplay","ScoreP1ExtraY") -#define SCORE_P2_X THEME->GetMetricF("Gameplay","ScoreP2X") -#define SCORE_P2_Y THEME->GetMetricF("Gameplay","ScoreP2Y") -#define SCORE_P2_EXTRA_Y THEME->GetMetricF("Gameplay","ScoreP2ExtraY") -#define PLAYER_OPTIONS_P1_X THEME->GetMetricF("Gameplay","PlayerOptionsP1X") -#define PLAYER_OPTIONS_P1_Y THEME->GetMetricF("Gameplay","PlayerOptionsP1Y") -#define PLAYER_OPTIONS_P1_EXTRA_Y THEME->GetMetricF("Gameplay","PlayerOptionsP1ExtraY") -#define PLAYER_OPTIONS_P2_X THEME->GetMetricF("Gameplay","PlayerOptionsP2X") -#define PLAYER_OPTIONS_P2_Y THEME->GetMetricF("Gameplay","PlayerOptionsP2Y") -#define PLAYER_OPTIONS_P2_EXTRA_Y THEME->GetMetricF("Gameplay","PlayerOptionsP2ExtraY") -#define SONG_OPTIONS_X THEME->GetMetricF("Gameplay","SongOptionsX") -#define SONG_OPTIONS_Y THEME->GetMetricF("Gameplay","SongOptionsY") -#define SONG_OPTIONS_EXTRA_Y THEME->GetMetricF("Gameplay","SongOptionsExtraY") -#define DIFFICULTY_P1_X THEME->GetMetricF("Gameplay","DifficultyP1X") -#define DIFFICULTY_P1_Y THEME->GetMetricF("Gameplay","DifficultyP1Y") -#define DIFFICULTY_P1_REVERSE_Y THEME->GetMetricF("Gameplay","DifficultyP1ReverseY") -#define DIFFICULTY_P1_EXTRA_Y THEME->GetMetricF("Gameplay","DifficultyP1ExtraY") -#define DIFFICULTY_P1_EXTRA_REVERSE_Y THEME->GetMetricF("Gameplay","DifficultyP1ExtraReverseY") -#define DIFFICULTY_P2_X THEME->GetMetricF("Gameplay","DifficultyP2X") -#define DIFFICULTY_P2_Y THEME->GetMetricF("Gameplay","DifficultyP2Y") -#define DIFFICULTY_P2_REVERSE_Y THEME->GetMetricF("Gameplay","DifficultyP2ReverseY") -#define DIFFICULTY_P2_EXTRA_Y THEME->GetMetricF("Gameplay","DifficultyP2ExtraY") -#define DIFFICULTY_P2_EXTRA_REVERSE_Y THEME->GetMetricF("Gameplay","DifficultyP2ExtraReverseY") -#define DEBUG_X THEME->GetMetricF("Gameplay","DebugX") -#define DEBUG_Y THEME->GetMetricF("Gameplay","DebugY") -#define AUTOPLAY_X THEME->GetMetricF("Gameplay","AutoPlayX") -#define AUTOPLAY_Y THEME->GetMetricF("Gameplay","AutoPlayY") -#define SURVIVE_TIME_X THEME->GetMetricF("Gameplay","SurviveTimeX") -#define SURVIVE_TIME_Y THEME->GetMetricF("Gameplay","SurviveTimeY") -#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("Gameplay","SecondsBetweenComments") -#define DEMONSTRATION_SECONDS THEME->GetMetricF("Gameplay","DemonstrationSeconds") +#define TOP_FRAME_X THEME->GetMetricF("ScreenGameplay","TopFrameX") +#define TOP_FRAME_Y THEME->GetMetricF("ScreenGameplay","TopFrameY") +#define TOP_FRAME_EXTRA_Y THEME->GetMetricF("ScreenGameplay","TopFrameExtraY") +#define BOTTOM_FRAME_X THEME->GetMetricF("ScreenGameplay","BottomFrameX") +#define BOTTOM_FRAME_Y THEME->GetMetricF("ScreenGameplay","BottomFrameY") +#define BOTTOM_FRAME_EXTRA_Y THEME->GetMetricF("ScreenGameplay","BottomFrameExtraY") +#define MIDDLE_FRAME_X THEME->GetMetricF("ScreenGameplay","MiddleFrameX") +#define MIDDLE_FRAME_Y THEME->GetMetricF("ScreenGameplay","MiddleFrameY") +#define LIFE_P1_X THEME->GetMetricF("ScreenGameplay","LifeP1X") +#define LIFE_P1_Y THEME->GetMetricF("ScreenGameplay","LifeP1Y") +#define LIFE_P1_EXTRA_Y THEME->GetMetricF("ScreenGameplay","LifeP1ExtraY") +#define LIFE_P2_X THEME->GetMetricF("ScreenGameplay","LifeP2X") +#define LIFE_P2_Y THEME->GetMetricF("ScreenGameplay","LifeP2Y") +#define LIFE_P2_EXTRA_Y THEME->GetMetricF("ScreenGameplay","LifeP2ExtraY") +#define STAGE_X THEME->GetMetricF("ScreenGameplay","StageX") +#define STAGE_Y THEME->GetMetricF("ScreenGameplay","StageY") +#define STAGE_EXTRA_Y THEME->GetMetricF("ScreenGameplay","StageExtraY") +#define SONG_NUMBER_P1_X THEME->GetMetricF("ScreenGameplay","SongNumberP1X") +#define SONG_NUMBER_P1_Y THEME->GetMetricF("ScreenGameplay","SongNumberP1Y") +#define SONG_NUMBER_P1_EXTRA_Y THEME->GetMetricF("ScreenGameplay","SongNumberP1ExtraY") +#define SONG_NUMBER_P2_X THEME->GetMetricF("ScreenGameplay","SongNumberP2X") +#define SONG_NUMBER_P2_Y THEME->GetMetricF("ScreenGameplay","SongNumberP2Y") +#define SONG_NUMBER_P2_EXTRA_Y THEME->GetMetricF("ScreenGameplay","SongNumberP2ExtraY") +#define SCORE_P1_X THEME->GetMetricF("ScreenGameplay","ScoreP1X") +#define SCORE_P1_Y THEME->GetMetricF("ScreenGameplay","ScoreP1Y") +#define SCORE_P1_EXTRA_Y THEME->GetMetricF("ScreenGameplay","ScoreP1ExtraY") +#define SCORE_P2_X THEME->GetMetricF("ScreenGameplay","ScoreP2X") +#define SCORE_P2_Y THEME->GetMetricF("ScreenGameplay","ScoreP2Y") +#define SCORE_P2_EXTRA_Y THEME->GetMetricF("ScreenGameplay","ScoreP2ExtraY") +#define PLAYER_OPTIONS_P1_X THEME->GetMetricF("ScreenGameplay","PlayerOptionsP1X") +#define PLAYER_OPTIONS_P1_Y THEME->GetMetricF("ScreenGameplay","PlayerOptionsP1Y") +#define PLAYER_OPTIONS_P1_EXTRA_Y THEME->GetMetricF("ScreenGameplay","PlayerOptionsP1ExtraY") +#define PLAYER_OPTIONS_P2_X THEME->GetMetricF("ScreenGameplay","PlayerOptionsP2X") +#define PLAYER_OPTIONS_P2_Y THEME->GetMetricF("ScreenGameplay","PlayerOptionsP2Y") +#define PLAYER_OPTIONS_P2_EXTRA_Y THEME->GetMetricF("ScreenGameplay","PlayerOptionsP2ExtraY") +#define SONG_OPTIONS_X THEME->GetMetricF("ScreenGameplay","SongOptionsX") +#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenGameplay","SongOptionsY") +#define SONG_OPTIONS_EXTRA_Y THEME->GetMetricF("ScreenGameplay","SongOptionsExtraY") +#define DIFFICULTY_P1_X THEME->GetMetricF("ScreenGameplay","DifficultyP1X") +#define DIFFICULTY_P1_Y THEME->GetMetricF("ScreenGameplay","DifficultyP1Y") +#define DIFFICULTY_P1_REVERSE_Y THEME->GetMetricF("ScreenGameplay","DifficultyP1ReverseY") +#define DIFFICULTY_P1_EXTRA_Y THEME->GetMetricF("ScreenGameplay","DifficultyP1ExtraY") +#define DIFFICULTY_P1_EXTRA_REVERSE_Y THEME->GetMetricF("ScreenGameplay","DifficultyP1ExtraReverseY") +#define DIFFICULTY_P2_X THEME->GetMetricF("ScreenGameplay","DifficultyP2X") +#define DIFFICULTY_P2_Y THEME->GetMetricF("ScreenGameplay","DifficultyP2Y") +#define DIFFICULTY_P2_REVERSE_Y THEME->GetMetricF("ScreenGameplay","DifficultyP2ReverseY") +#define DIFFICULTY_P2_EXTRA_Y THEME->GetMetricF("ScreenGameplay","DifficultyP2ExtraY") +#define DIFFICULTY_P2_EXTRA_REVERSE_Y THEME->GetMetricF("ScreenGameplay","DifficultyP2ExtraReverseY") +#define DEBUG_X THEME->GetMetricF("ScreenGameplay","DebugX") +#define DEBUG_Y THEME->GetMetricF("ScreenGameplay","DebugY") +#define AUTOPLAY_X THEME->GetMetricF("ScreenGameplay","AutoPlayX") +#define AUTOPLAY_Y THEME->GetMetricF("ScreenGameplay","AutoPlayY") +#define SURVIVE_TIME_X THEME->GetMetricF("ScreenGameplay","SurviveTimeX") +#define SURVIVE_TIME_Y THEME->GetMetricF("ScreenGameplay","SurviveTimeY") +#define SECONDS_BETWEEN_COMMENTS THEME->GetMetricF("ScreenGameplay","SecondsBetweenComments") +#define DEMONSTRATION_SECONDS THEME->GetMetricF("ScreenGameplay","DemonstrationSeconds") float LIFE_X( int p ) { switch( p ) { @@ -1145,15 +1140,7 @@ void ShowSavePrompt( ScreenMessage SM_SendWhenDone ) ASSERT(0); } - SCREENMAN->AddScreenToTop( new ScreenPrompt( - SM_SendWhenDone, - sMessage, - PROMPT_YES_NO, - true, - SaveChanges, - DontSaveChanges - ) - ); + SCREENMAN->Prompt( SM_SendWhenDone, sMessage, true, true, SaveChanges, DontSaveChanges ); } void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) @@ -1263,6 +1250,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) this->SendScreenMessage( SM_PlayToastySound, 0.3f ); // set off screen + m_sprToasty.StopTweening(); m_sprToasty.SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); m_sprToasty.SetX( SCREEN_RIGHT+m_sprToasty.GetUnzoomedWidth()/2 ); m_sprToasty.SetY( SCREEN_BOTTOM-m_sprToasty.GetUnzoomedHeight()/2 ); @@ -1383,11 +1371,11 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) switch( GAMESTATE->m_PlayMode ) { case PLAY_MODE_ARCADE: - SCREENMAN->SetNewScreen( new ScreenSelectMusic ); + SCREENMAN->SetNewScreen( "ScreenSelectMusic" ); break; case PLAY_MODE_ONI: case PLAY_MODE_ENDLESS: - SCREENMAN->SetNewScreen( new ScreenSelectCourse ); + SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); break; default: ASSERT(0); } @@ -1399,7 +1387,7 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) ShowSavePrompt( SM_GoToStateAfterCleared ); break; } - SCREENMAN->SetNewScreen( new ScreenEvaluation(false) ); + SCREENMAN->SetNewScreen( "ScreenEvaluation" ); break; @@ -1472,16 +1460,16 @@ void ScreenGameplay::HandleScreenMessage( const ScreenMessage SM ) break; } if( GAMESTATE->m_PlayMode == PLAY_MODE_ONI || GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS ) - SCREENMAN->SetNewScreen( new ScreenEvaluation(false) ); + SCREENMAN->SetNewScreen( "ScreenEvaluation" ); else if( PREFSMAN->m_bEventMode ) this->SendScreenMessage( SM_GoToScreenAfterBack, 0 ); else if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) - SCREENMAN->SetNewScreen( new ScreenEvaluation(true) ); + SCREENMAN->SetNewScreen( "ScreenFinalEvaluation" ); else - SCREENMAN->SetNewScreen( new ScreenGameOver ); + SCREENMAN->SetNewScreen( "ScreenGameOver" ); break; case SM_GoToTitleMenu: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; } } diff --git a/stepmania/src/ScreenGraphicOptions.cpp b/stepmania/src/ScreenGraphicOptions.cpp index 305a004361..193c48cf27 100644 --- a/stepmania/src/ScreenGraphicOptions.cpp +++ b/stepmania/src/ScreenGraphicOptions.cpp @@ -11,14 +11,11 @@ */ #include "ScreenGraphicOptions.h" -#include #include "RageTextureManager.h" #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "ScreenOptions.h" -#include "ScreenTitleMenu.h" #include "GameConstantsAndTypes.h" #include "StepMania.h" #include "PrefsManager.h" @@ -233,7 +230,7 @@ void ScreenGraphicOptions::ExportOptions() void ScreenGraphicOptions::GoToPrevState() { - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); PREFSMAN->SaveGlobalPrefsToDisk(); ApplyGraphicOptions(); } diff --git a/stepmania/src/ScreenHowToPlay.cpp b/stepmania/src/ScreenHowToPlay.cpp index 3512689932..1e1df10ba7 100644 --- a/stepmania/src/ScreenHowToPlay.cpp +++ b/stepmania/src/ScreenHowToPlay.cpp @@ -11,18 +11,21 @@ */ #include "ScreenHowToPlay.h" -#include #include "RageTextureManager.h" #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" -#include "ScreenSelectMusic.h" -#include "ScreenSelectCourse.h" #include "GameConstantsAndTypes.h" #include "RageLog.h" #include "GameState.h" +#define HELP_TEXT THEME->GetMetric("ScreenHowToPlay","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenHowToPlay","TimerSeconds") +#define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenHowToPlay","NextScreenArcade") +#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenHowToPlay","NextScreenOni") + + const ScreenMessage SM_GoToNextState = ScreenMessage(SM_User + 1); @@ -33,9 +36,9 @@ ScreenHowToPlay::ScreenHowToPlay() m_Menu.Load( THEME->GetPathTo("Graphics","How To Play Background"), THEME->GetPathTo("Graphics","How To Play Top Edge"), - ssprintf("%s %s to change line %s %s to select between options then press START", CString(char(3)), CString(char(4)), CString(char(1)), CString(char(2)) ), - false, true, 20 + HELP_TEXT, false, true, TIMER_SECONDS ); + m_Menu.TweenOnScreenFromMenu( SM_None ); this->AddSubActor( &m_Menu ); CString sHowToPlayPath; @@ -57,14 +60,14 @@ ScreenHowToPlay::ScreenHowToPlay() this->AddSubActor( &m_sprHowToPlay ); m_sprHowToPlay.SetX( SCREEN_LEFT-SCREEN_WIDTH ); - m_sprHowToPlay.BeginTweening( 0.3f, Actor::TWEEN_BIAS_BEGIN ); - m_sprHowToPlay.SetTweenX( 0 ); + m_sprHowToPlay.BeginTweeningQueued( 0.4f ); // sleep + m_sprHowToPlay.BeginTweeningQueued( 0.6f, Actor::TWEEN_BIAS_BEGIN ); + m_sprHowToPlay.SetTweenX( CENTER_X ); } ScreenHowToPlay::~ScreenHowToPlay() { LOG->Trace( "ScreenHowToPlay::~ScreenHowToPlay()" ); - } void ScreenHowToPlay::Update( float fDeltaTime ) @@ -101,11 +104,11 @@ void ScreenHowToPlay::HandleScreenMessage( const ScreenMessage SM ) switch( GAMESTATE->m_PlayMode ) { case PLAY_MODE_ARCADE: - SCREENMAN->SetNewScreen( new ScreenSelectMusic ); + SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE ); break; case PLAY_MODE_ONI: case PLAY_MODE_ENDLESS: - SCREENMAN->SetNewScreen( new ScreenSelectCourse ); + SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI ); break; default: ASSERT(0); @@ -123,5 +126,5 @@ void ScreenHowToPlay::MenuStart( const PlayerNumber p ) m_Menu.TweenOffScreenToMenu( SM_GoToNextState ); m_sprHowToPlay.BeginTweening( 0.3f, Actor::TWEEN_BIAS_END ); - m_sprHowToPlay.SetTweenX( SCREEN_RIGHT ); + m_sprHowToPlay.SetTweenX( SCREEN_RIGHT+m_sprHowToPlay.GetUnzoomedWidth()/2 ); } diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index df64a95e78..f85f2c2267 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -16,17 +16,18 @@ #include "PrefsManager.h" #include "RageLog.h" #include "GameState.h" +#include "RageException.h" ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program -#define STATS_X THEME->GetMetricF("Other","StatsX") -#define STATS_Y THEME->GetMetricF("Other","StatsY") -#define CREDITS_P1_X THEME->GetMetricF("Other","CreditsP1X") -#define CREDITS_P1_Y THEME->GetMetricF("Other","CreditsP1Y") -#define CREDITS_P2_X THEME->GetMetricF("Other","CreditsP2X") -#define CREDITS_P2_Y THEME->GetMetricF("Other","CreditsP2Y") +#define STATS_X THEME->GetMetricF("ScreenManager","StatsX") +#define STATS_Y THEME->GetMetricF("ScreenManager","StatsY") +#define CREDITS_P1_X THEME->GetMetricF("ScreenManager","CreditsP1X") +#define CREDITS_P1_Y THEME->GetMetricF("ScreenManager","CreditsP1Y") +#define CREDITS_P2_X THEME->GetMetricF("ScreenManager","CreditsP2X") +#define CREDITS_P2_Y THEME->GetMetricF("ScreenManager","CreditsP2Y") float CREDITS_X( int p ) { switch( p ) { @@ -152,9 +153,77 @@ void ScreenManager::Input( const DeviceInput& DeviceI, const InputEventType type m_ScreenStack[m_ScreenStack.GetSize()-1]->Input( DeviceI, type, GameI, MenuI, StyleI ); } -void ScreenManager::SetNewScreen( Screen *pNewScreen ) + +// Screen classes +#include "ScreenAppearanceOptions.h" +#include "ScreenCaution.h" +#include "ScreenEdit.h" +#include "ScreenEditMenu.h" +#include "ScreenEvaluation.h" +#include "ScreenEz2SelectPlayer.h" +#include "ScreenEz2SelectStyle.h" +#include "ScreenGameOptions.h" +#include "ScreenGameOver.h" +#include "ScreenGameplay.h" +#include "ScreenGraphicOptions.h" +#include "ScreenHowToPlay.h" +#include "ScreenMapInstruments.h" +#include "ScreenMusicScroll.h" +#include "ScreenPlayerOptions.h" +#include "ScreenSandbox.h" +#include "ScreenSelectCourse.h" +#include "ScreenSelectDifficulty.h" +#include "ScreenSelectGame.h" +#include "ScreenSelectGroup.h" +#include "ScreenSelectMusic.h" +#include "ScreenSelectStyle5th.h" +#include "ScreenSelectStyle.h" +#include "ScreenSongOptions.h" +#include "ScreenStage.h" +#include "ScreenTitleMenu.h" + +#include "ScreenPrompt.h" +#include "ScreenTextEntry.h" + +void ScreenManager::SetNewScreen( CString sClassName ) { - // move CurrentScreen to ScreenToDelete + // It makes sense that ScreenManager should allocate memory for a new screen since it + // deletes it later on. This also convention will reduce includes because screens won't + // have to include each other's headers of other screens. + + Screen* pNewScreen; + + if( 0==stricmp(sClassName, "ScreenAppearanceOptions") )pNewScreen = new ScreenAppearanceOptions; + else if( 0==stricmp(sClassName, "ScreenCaution") ) pNewScreen = new ScreenCaution; + else if( 0==stricmp(sClassName, "ScreenEdit") ) pNewScreen = new ScreenEdit; + else if( 0==stricmp(sClassName, "ScreenEditMenu") ) pNewScreen = new ScreenEditMenu; + else if( 0==stricmp(sClassName, "ScreenEvaluation") ) pNewScreen = new ScreenEvaluation; + else if( 0==stricmp(sClassName, "ScreenFinalEvaluation") ) pNewScreen = new ScreenFinalEvaluation; + else if( 0==stricmp(sClassName, "ScreenEz2SelectPlayer") ) pNewScreen = new ScreenEz2SelectPlayer; + else if( 0==stricmp(sClassName, "ScreenEz2SelectStyle") ) pNewScreen = new ScreenEz2SelectStyle; + else if( 0==stricmp(sClassName, "ScreenGameOptions") ) pNewScreen = new ScreenGameOptions; + else if( 0==stricmp(sClassName, "ScreenGameOver") ) pNewScreen = new ScreenGameOver; + else if( 0==stricmp(sClassName, "ScreenGameplay") ) pNewScreen = new ScreenGameplay; + else if( 0==stricmp(sClassName, "ScreenGraphicOptions") ) pNewScreen = new ScreenGraphicOptions; + else if( 0==stricmp(sClassName, "ScreenHowToPlay") ) pNewScreen = new ScreenHowToPlay; + else if( 0==stricmp(sClassName, "ScreenMapInstruments") ) pNewScreen = new ScreenMapInstruments; + else if( 0==stricmp(sClassName, "ScreenMusicScroll") ) pNewScreen = new ScreenMusicScroll; + else if( 0==stricmp(sClassName, "ScreenPlayerOptions") ) pNewScreen = new ScreenPlayerOptions; + else if( 0==stricmp(sClassName, "ScreenSandbox") ) pNewScreen = new ScreenSandbox; + else if( 0==stricmp(sClassName, "ScreenSelectCourse") ) pNewScreen = new ScreenSelectCourse; + else if( 0==stricmp(sClassName, "ScreenSelectDifficulty") ) pNewScreen = new ScreenSelectDifficulty; + else if( 0==stricmp(sClassName, "ScreenSelectGame") ) pNewScreen = new ScreenSelectGame; + else if( 0==stricmp(sClassName, "ScreenSelectGroup") ) pNewScreen = new ScreenSelectGroup; + else if( 0==stricmp(sClassName, "ScreenSelectMusic") ) pNewScreen = new ScreenSelectMusic; + else if( 0==stricmp(sClassName, "ScreenSelectStyle5th") ) pNewScreen = new ScreenSelectStyle5th; + else if( 0==stricmp(sClassName, "ScreenSelectStyle") ) pNewScreen = new ScreenSelectStyle; + else if( 0==stricmp(sClassName, "ScreenSongOptions") ) pNewScreen = new ScreenSongOptions; + else if( 0==stricmp(sClassName, "ScreenStage") ) pNewScreen = new ScreenStage; + else if( 0==stricmp(sClassName, "ScreenTitleMenu") ) pNewScreen = new ScreenTitleMenu; + else + throw RageException( "Invalid Screen class name '%s'", sClassName ); + + // move current screen to ScreenToDelete RefreshCreditsMessages(); m_ScreensToDelete.Copy( m_ScreenStack ); @@ -162,13 +231,16 @@ void ScreenManager::SetNewScreen( Screen *pNewScreen ) m_ScreenStack.Add( pNewScreen ); } -void ScreenManager::AddScreenToTop( Screen *pNewScreen ) +void ScreenManager::Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() ) { - // our responsibility to tell the old state that it's losing focus -// m_ScreenStack[m_ScreenStack.GetSize()-1]->HandleScreenMessage( SM_LosingInputFocus ); - // add the new state onto the back of the array - m_ScreenStack.Add( pNewScreen ); + m_ScreenStack.Add( new ScreenPrompt(SM_SendWhenDone, sText, bYesNo, bDefaultAnswer, OnYes, OnNo) ); +} + +void ScreenManager::TextEntry( ScreenMessage SM_SendWhenDone, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer), void(*OnCanel)() ) +{ + // add the new state onto the back of the array + m_ScreenStack.Add( new ScreenTextEntry(SM_SendWhenDone, sQuestion, sInitialAnswer, OnOK, OnCanel) ); } void ScreenManager::PopTopScreen( ScreenMessage SM ) diff --git a/stepmania/src/ScreenManager.h b/stepmania/src/ScreenManager.h index 53b8dce273..d03f86aec5 100644 --- a/stepmania/src/ScreenManager.h +++ b/stepmania/src/ScreenManager.h @@ -32,20 +32,19 @@ public: void Draw(); void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); - void SetNewScreen( Screen *pNewScreen ); - void AddScreenToTop( Screen *pNewScreen ); - void PopTopScreen( ScreenMessage SM_SendToNewTopScreen ); - + void SetNewScreen( CString sClassName ); + void Prompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNo = false, bool bDefaultAnswer = false, void(*OnYes)() = NULL, void(*OnNo)() = NULL ); + void TextEntry( ScreenMessage SM_SendWhenDone, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer) = NULL, void(*OnCanel)() = NULL ); + void PopTopScreen( ScreenMessage SM ); void SystemMessage( CString sMessage ); void SendMessageToTopScreen( ScreenMessage SM, float fDelay ); -// void OverrideCreditsMessage( PlayerNumber p, CString sNewString ); void RefreshCreditsMessages(); private: - CArray m_ScreenStack; - CArray m_ScreensToDelete; + CArray m_ScreenStack; + CArray m_ScreensToDelete; BitmapText m_textStats; BitmapText m_textSystemMessage; diff --git a/stepmania/src/ScreenMusicScroll.cpp b/stepmania/src/ScreenMusicScroll.cpp index 81701dcbb4..21a1c45e24 100644 --- a/stepmania/src/ScreenMusicScroll.cpp +++ b/stepmania/src/ScreenMusicScroll.cpp @@ -14,9 +14,6 @@ #include "ScreenMusicScroll.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "PrefsManager.h" -#include "ScreenSelectMusic.h" -#include "ScreenTitleMenu.h" #include "GameManager.h" #include "RageLog.h" #include "GameConstantsAndTypes.h" @@ -227,7 +224,7 @@ void ScreenMusicScroll::HandleScreenMessage( const ScreenMessage SM ) m_Fade.CloseWipingRight( SM_GoToNextState ); break; case SM_GoToNextState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; } } diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index abbcdcf1dc..66f7c786dc 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -11,14 +11,11 @@ */ #include "ScreenOptions.h" -#include #include "RageTextureManager.h" #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "ScreenGameplay.h" -#include "PrefsManager.h" #include "GameConstantsAndTypes.h" #include "RageLog.h" #include "GameState.h" diff --git a/stepmania/src/ScreenPlayerOptions.cpp b/stepmania/src/ScreenPlayerOptions.cpp index c12f975a96..b61646e4ae 100644 --- a/stepmania/src/ScreenPlayerOptions.cpp +++ b/stepmania/src/ScreenPlayerOptions.cpp @@ -1,30 +1,26 @@ #include "stdafx.h" /* ----------------------------------------------------------------------------- - File: ScreenPlayerOptions.h + Class: ScreenPlayerOptions Desc: Select a song. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford ----------------------------------------------------------------------------- */ #include "ScreenPlayerOptions.h" -#include #include "RageTextureManager.h" #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" -#include "ScreenGameplay.h" -#include "ScreenSongOptions.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenSelectMusic.h" #include "RageLog.h" #include "GameManager.h" #include "GameState.h" #include "RageSound.h" -#include "ScreenSelectCourse.h" enum { @@ -134,14 +130,14 @@ void ScreenPlayerOptions::GoToPrevState() { if(GAMESTATE->m_PlayMode == PLAY_MODE_ONI || GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS) - SCREENMAN->SetNewScreen( new ScreenSelectCourse ); + SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); else - SCREENMAN->SetNewScreen( new ScreenSelectMusic ); + SCREENMAN->SetNewScreen( "ScreenSelectMusic" ); } void ScreenPlayerOptions::GoToNextState() { - SCREENMAN->SetNewScreen( new ScreenSongOptions ); + SCREENMAN->SetNewScreen( "ScreenSongOptions" ); } diff --git a/stepmania/src/ScreenPrompt.cpp b/stepmania/src/ScreenPrompt.cpp index 65efcc2e6c..376aeab299 100644 --- a/stepmania/src/ScreenPrompt.cpp +++ b/stepmania/src/ScreenPrompt.cpp @@ -15,7 +15,6 @@ #include "PrefsManager.h" #include "ScreenManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" @@ -26,14 +25,14 @@ const float PROMPT_X = CENTER_X; const float PROMPT_Y = CENTER_Y + 120; -ScreenPrompt::ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, PromptType pt, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() ) +ScreenPrompt::ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNoPrompt, bool bDefaultAnswer, void(*OnYes)(), void(*OnNo)() ) { m_SMSendWhenDone = SM_SendWhenDone; + m_bYesNoPrompt = bYesNoPrompt; + m_bAnswer = bDefaultAnswer; m_pOnYes = OnYes; m_pOnNo = OnNo; - m_PromptType = pt; - m_bAnswer = bDefaultAnswer; m_Fade.SetTransitionTime( 0.5f ); m_Fade.SetDiffuseColor( D3DXCOLOR(0,0,0,0.7f) ); @@ -58,18 +57,17 @@ ScreenPrompt::ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, Prompt - switch( m_PromptType ) + if( m_bYesNoPrompt ) { - case PROMPT_OK: m_textAnswer[0].SetText( "OK" ); m_textAnswer[0].SetX( PROMPT_X ); - break; - case PROMPT_YES_NO: + } + else + { m_textAnswer[0].SetText( "NO" ); m_textAnswer[1].SetText( "YES" ); m_textAnswer[0].SetX( PROMPT_X+50 ); m_textAnswer[1].SetX( PROMPT_X-50 ); - break; } m_rectAnswerBox.SetXY( m_textAnswer[m_bAnswer].GetX(), m_textAnswer[m_bAnswer].GetY() ); @@ -117,7 +115,7 @@ void ScreenPrompt::HandleScreenMessage( const ScreenMessage SM ) void ScreenPrompt::MenuLeft( const PlayerNumber p ) { - if( m_PromptType == PROMPT_OK ) + if( !m_bYesNoPrompt ) return; MenuRight( p ); @@ -125,7 +123,7 @@ void ScreenPrompt::MenuLeft( const PlayerNumber p ) void ScreenPrompt::MenuRight( const PlayerNumber p ) { - if( m_PromptType == PROMPT_OK ) + if( !m_bYesNoPrompt ) return; m_textAnswer[m_bAnswer].SetEffectNone(); diff --git a/stepmania/src/ScreenPrompt.h b/stepmania/src/ScreenPrompt.h index 6e970b6dcc..0acfb817aa 100644 --- a/stepmania/src/ScreenPrompt.h +++ b/stepmania/src/ScreenPrompt.h @@ -17,15 +17,11 @@ #include "RandomSample.h" -enum PromptType{ PROMPT_OK, PROMPT_YES_NO }; - - - class ScreenPrompt : public Screen { public: ScreenPrompt(); - ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, PromptType pt, bool bDefaultAnswer = false, void(*OnYes)() = NULL, void(*OnNo)() = NULL ); + ScreenPrompt( ScreenMessage SM_SendWhenDone, CString sText, bool bYesNoPrompt=false, bool bDefaultAnswer = false, void(*OnYes)() = NULL, void(*OnNo)() = NULL ); virtual void Update( float fDeltaTime ); virtual void DrawPrimitives(); @@ -43,7 +39,7 @@ protected: BitmapText m_textQuestion; Quad m_rectAnswerBox; BitmapText m_textAnswer[2]; // "YES" or "NO" - PromptType m_PromptType; + bool m_bYesNoPrompt; // false = OK prompt, true = YES/NO prompt bool m_bAnswer; // true = "YES", false = "NO"; ScreenMessage m_SMSendWhenDone; void(*m_pOnYes)(); diff --git a/stepmania/src/ScreenSandbox.cpp b/stepmania/src/ScreenSandbox.cpp index 651313d2a0..b35b2bfb05 100644 --- a/stepmania/src/ScreenSandbox.cpp +++ b/stepmania/src/ScreenSandbox.cpp @@ -13,8 +13,6 @@ #include "ScreenSandbox.h" #include "ScreenManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" -#include "ScreenSelectMusic.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" #include "Quad.h" @@ -60,7 +58,7 @@ void ScreenSandbox::Input( const DeviceInput& DeviceI, const InputEventType type case MENU_BUTTON_RIGHT: break; case MENU_BUTTON_BACK: - //SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + //SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); return; } } diff --git a/stepmania/src/ScreenSelectCourse.cpp b/stepmania/src/ScreenSelectCourse.cpp index 50baa555a1..82053504e9 100644 --- a/stepmania/src/ScreenSelectCourse.cpp +++ b/stepmania/src/ScreenSelectCourse.cpp @@ -17,41 +17,36 @@ #include "SongManager.h" #include "GameManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenGameplay.h" -#include "ScreenPrompt.h" -#include "ScreenPlayerOptions.h" #include "RageLog.h" #include "InputMapper.h" #include "InputQueue.h" -#include "ScreenStage.h" #include "AnnouncerManager.h" #include "GameState.h" #include "RageMusic.h" -#define BANNER_FRAME_X THEME->GetMetricF("SelectCourse","BannerFrameX") -#define BANNER_FRAME_Y THEME->GetMetricF("SelectCourse","BannerFrameY") -#define BANNER_X THEME->GetMetricF("SelectCourse","BannerX") -#define BANNER_Y THEME->GetMetricF("SelectCourse","BannerY") -#define BANNER_WIDTH THEME->GetMetricF("SelectCourse","BannerWidth") -#define BANNER_HEIGHT THEME->GetMetricF("SelectCourse","BannerHeight") -#define STAGES_X THEME->GetMetricF("SelectCourse","StagesX") -#define STAGES_Y THEME->GetMetricF("SelectCourse","StagesY") -#define TIME_X THEME->GetMetricF("SelectCourse","TimeX") -#define TIME_Y THEME->GetMetricF("SelectCourse","TimeY") -#define CONTENTS_X THEME->GetMetricF("SelectCourse","ContentsX") -#define CONTENTS_Y THEME->GetMetricF("SelectCourse","ContentsY") -#define WHEEL_X THEME->GetMetricF("SelectCourse","WheelX") -#define WHEEL_Y THEME->GetMetricF("SelectCourse","WheelY") -#define SCORE_P1_X THEME->GetMetricF("SelectCourse","ScoreP1X") -#define SCORE_P1_Y THEME->GetMetricF("SelectCourse","ScoreP1Y") -#define SCORE_P2_X THEME->GetMetricF("SelectCourse","ScoreP2X") -#define SCORE_P2_Y THEME->GetMetricF("SelectCourse","ScoreP2Y") -#define HELP_TEXT THEME->GetMetric("SelectCourse","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("SelectCourse","TimerSeconds") +#define BANNER_FRAME_X THEME->GetMetricF("ScreenSelectCourse","BannerFrameX") +#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectCourse","BannerFrameY") +#define BANNER_X THEME->GetMetricF("ScreenSelectCourse","BannerX") +#define BANNER_Y THEME->GetMetricF("ScreenSelectCourse","BannerY") +#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectCourse","BannerWidth") +#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectCourse","BannerHeight") +#define STAGES_X THEME->GetMetricF("ScreenSelectCourse","StagesX") +#define STAGES_Y THEME->GetMetricF("ScreenSelectCourse","StagesY") +#define TIME_X THEME->GetMetricF("ScreenSelectCourse","TimeX") +#define TIME_Y THEME->GetMetricF("ScreenSelectCourse","TimeY") +#define CONTENTS_X THEME->GetMetricF("ScreenSelectCourse","ContentsX") +#define CONTENTS_Y THEME->GetMetricF("ScreenSelectCourse","ContentsY") +#define WHEEL_X THEME->GetMetricF("ScreenSelectCourse","WheelX") +#define WHEEL_Y THEME->GetMetricF("ScreenSelectCourse","WheelY") +#define SCORE_P1_X THEME->GetMetricF("ScreenSelectCourse","ScoreP1X") +#define SCORE_P1_Y THEME->GetMetricF("ScreenSelectCourse","ScoreP1Y") +#define SCORE_P2_X THEME->GetMetricF("ScreenSelectCourse","ScoreP2X") +#define SCORE_P2_Y THEME->GetMetricF("ScreenSelectCourse","ScoreP2Y") +#define HELP_TEXT THEME->GetMetric("ScreenSelectCourse","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectCourse","TimerSeconds") float BEST_TIME_X( int p ) { switch( p ) { @@ -79,11 +74,7 @@ ScreenSelectCourse::ScreenSelectCourse() { LOG->Trace( "ScreenSelectCourse::ScreenSelectCourse()" ); - if( !MUSIC->IsPlaying() || MUSIC->GetLoadedFilePath() != THEME->GetPathTo("Sounds","select course music") ) - { - MUSIC->Load( THEME->GetPathTo("Sounds","select course music") ); - MUSIC->Play( true ); - } + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select course music") ); m_bMadeChoice = false; m_bGoToOptions = false; @@ -260,7 +251,7 @@ void ScreenSelectCourse::HandleScreenMessage( const ScreenMessage SM ) MenuStart(PLAYER_1); break; case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: @@ -276,13 +267,10 @@ void ScreenSelectCourse::HandleScreenMessage( const ScreenMessage SM ) } if( bIsHoldingNext || m_bGoToOptions ) - { - SCREENMAN->SetNewScreen( new ScreenPlayerOptions ); - } + SCREENMAN->SetNewScreen( "ScreenPlayerOptions" ); else - { - SCREENMAN->SetNewScreen( new ScreenStage ); - } + SCREENMAN->SetNewScreen( "ScreenStage" ); + break; } } diff --git a/stepmania/src/ScreenSelectDifficulty.cpp b/stepmania/src/ScreenSelectDifficulty.cpp index c98cc06805..d6ba970e96 100644 --- a/stepmania/src/ScreenSelectDifficulty.cpp +++ b/stepmania/src/ScreenSelectDifficulty.cpp @@ -1,57 +1,56 @@ #include "stdafx.h" /* ----------------------------------------------------------------------------- - File: ScreenSelectDifficulty.cpp + Class: ScreenSelectDifficulty Desc: Testing the Screen class. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford ----------------------------------------------------------------------------- */ #include "ScreenSelectDifficulty.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "PrefsManager.h" -#include "ScreenSelectGroup.h" -#include "ScreenTitleMenu.h" #include "GameManager.h" #include "RageLog.h" #include "GameConstantsAndTypes.h" #include "AnnouncerManager.h" -#include "ScreenSelectCourse.h" #include "GameState.h" +#include "RageMusic.h" const float LOCK_INPUT_TIME = 0.30f; // lock input while waiting for tweening to complete -#define MORE_PAGE1_X THEME->GetMetricF("SelectDifficulty","MorePage1X") -#define MORE_PAGE1_Y THEME->GetMetricF("SelectDifficulty","MorePage1Y") -#define MORE_PAGE2_X THEME->GetMetricF("SelectDifficulty","MorePage2X") -#define MORE_PAGE2_Y THEME->GetMetricF("SelectDifficulty","MorePage2Y") -#define EXPLANATION_PAGE1_X THEME->GetMetricF("SelectDifficulty","ExplanationPage1X") -#define EXPLANATION_PAGE1_Y THEME->GetMetricF("SelectDifficulty","ExplanationPage1Y") -#define EXPLANATION_PAGE2_X THEME->GetMetricF("SelectDifficulty","ExplanationPage2X") -#define EXPLANATION_PAGE2_Y THEME->GetMetricF("SelectDifficulty","ExplanationPage2Y") -#define EASY_X THEME->GetMetricF("SelectDifficulty","EasyX") -#define EASY_Y THEME->GetMetricF("SelectDifficulty","EasyY") -#define MEDIUM_X THEME->GetMetricF("SelectDifficulty","MediumX") -#define MEDIUM_Y THEME->GetMetricF("SelectDifficulty","MediumY") -#define HARD_X THEME->GetMetricF("SelectDifficulty","HardX") -#define HARD_Y THEME->GetMetricF("SelectDifficulty","HardY") -#define ONI_X THEME->GetMetricF("SelectDifficulty","OniX") -#define ONI_Y THEME->GetMetricF("SelectDifficulty","OniY") -#define ENDLESS_X THEME->GetMetricF("SelectDifficulty","EndlessX") -#define ENDLESS_Y THEME->GetMetricF("SelectDifficulty","EndlessY") -#define ARROW_OFFSET_P1_X THEME->GetMetricF("SelectDifficulty","ArrowOffsetP1X") -#define ARROW_OFFSET_P1_Y THEME->GetMetricF("SelectDifficulty","ArrowOffsetP1Y") -#define ARROW_OFFSET_P2_X THEME->GetMetricF("SelectDifficulty","ArrowOffsetP2X") -#define ARROW_OFFSET_P2_Y THEME->GetMetricF("SelectDifficulty","ArrowOffsetP2Y") -#define ARROW_SHADOW_LENGTH_X THEME->GetMetricF("SelectDifficulty","ArrowShadowLengthX") -#define ARROW_SHADOW_LENGTH_Y THEME->GetMetricF("SelectDifficulty","ArrowShadowLengthY") -#define HELP_TEXT THEME->GetMetric("SelectDifficulty","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("SelectDifficulty","TimerSeconds") +#define MORE_PAGE1_X THEME->GetMetricF("ScreenSelectDifficulty","MorePage1X") +#define MORE_PAGE1_Y THEME->GetMetricF("ScreenSelectDifficulty","MorePage1Y") +#define MORE_PAGE2_X THEME->GetMetricF("ScreenSelectDifficulty","MorePage2X") +#define MORE_PAGE2_Y THEME->GetMetricF("ScreenSelectDifficulty","MorePage2Y") +#define EXPLANATION_PAGE1_X THEME->GetMetricF("ScreenSelectDifficulty","ExplanationPage1X") +#define EXPLANATION_PAGE1_Y THEME->GetMetricF("ScreenSelectDifficulty","ExplanationPage1Y") +#define EXPLANATION_PAGE2_X THEME->GetMetricF("ScreenSelectDifficulty","ExplanationPage2X") +#define EXPLANATION_PAGE2_Y THEME->GetMetricF("ScreenSelectDifficulty","ExplanationPage2Y") +#define EASY_X THEME->GetMetricF("ScreenSelectDifficulty","EasyX") +#define EASY_Y THEME->GetMetricF("ScreenSelectDifficulty","EasyY") +#define MEDIUM_X THEME->GetMetricF("ScreenSelectDifficulty","MediumX") +#define MEDIUM_Y THEME->GetMetricF("ScreenSelectDifficulty","MediumY") +#define HARD_X THEME->GetMetricF("ScreenSelectDifficulty","HardX") +#define HARD_Y THEME->GetMetricF("ScreenSelectDifficulty","HardY") +#define ONI_X THEME->GetMetricF("ScreenSelectDifficulty","OniX") +#define ONI_Y THEME->GetMetricF("ScreenSelectDifficulty","OniY") +#define ENDLESS_X THEME->GetMetricF("ScreenSelectDifficulty","EndlessX") +#define ENDLESS_Y THEME->GetMetricF("ScreenSelectDifficulty","EndlessY") +#define CURSOR_OFFSET_P1_X THEME->GetMetricF("ScreenSelectDifficulty","CursorOffsetP1X") +#define CURSOR_OFFSET_P1_Y THEME->GetMetricF("ScreenSelectDifficulty","CursorOffsetP1Y") +#define CURSOR_OFFSET_P2_X THEME->GetMetricF("ScreenSelectDifficulty","CursorOffsetP2X") +#define CURSOR_OFFSET_P2_Y THEME->GetMetricF("ScreenSelectDifficulty","CursorOffsetP2Y") +#define CURSOR_SHADOW_LENGTH_X THEME->GetMetricF("ScreenSelectDifficulty","CursorShadowLengthX") +#define CURSOR_SHADOW_LENGTH_Y THEME->GetMetricF("ScreenSelectDifficulty","CursorShadowLengthY") +#define HELP_TEXT THEME->GetMetric("ScreenSelectDifficulty","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectDifficulty","TimerSeconds") +#define NEXT_SCREEN THEME->GetMetric("ScreenSelectDifficulty","NextScreen") float MORE_X( int iIndex ) { @@ -102,17 +101,17 @@ float ITEM_Y( int iItemIndex ) { default: ASSERT(0); return 0; } } -float ARROW_X( int iItemIndex, int p ) { +float CURSOR_X( int iItemIndex, int p ) { switch( p ) { - case PLAYER_1: return ITEM_X(iItemIndex) + ARROW_OFFSET_P1_X; - case PLAYER_2: return ITEM_X(iItemIndex) + ARROW_OFFSET_P2_X; + case PLAYER_1: return ITEM_X(iItemIndex) + CURSOR_OFFSET_P1_X; + case PLAYER_2: return ITEM_X(iItemIndex) + CURSOR_OFFSET_P2_X; default: ASSERT(0); return 0; } } -float ARROW_Y( int iItemIndex, int p ) { +float CURSOR_Y( int iItemIndex, int p ) { switch( p ) { - case PLAYER_1: return ITEM_Y(iItemIndex) + ARROW_OFFSET_P1_Y; - case PLAYER_2: return ITEM_Y(iItemIndex) + ARROW_OFFSET_P2_Y; + case PLAYER_1: return ITEM_Y(iItemIndex) + CURSOR_OFFSET_P1_Y; + case PLAYER_2: return ITEM_Y(iItemIndex) + CURSOR_OFFSET_P2_Y; default: ASSERT(0); return 0; } } @@ -190,22 +189,21 @@ ScreenSelectDifficulty::ScreenSelectDifficulty() if( !GAMESTATE->IsPlayerEnabled((PlayerNumber)p) ) continue; - m_sprArrowShadow[p].Load( THEME->GetPathTo("Graphics", "select difficulty arrows") ); - m_sprArrowShadow[p].StopAnimating(); - m_sprArrowShadow[p].SetState( p ); - m_sprArrowShadow[p].TurnShadowOff(); - m_sprArrowShadow[p].SetDiffuseColor( D3DXCOLOR(0,0,0,0.6f) ); - m_framePages.AddSubActor( &m_sprArrowShadow[p] ); + m_sprCursorShadow[p].Load( THEME->GetPathTo("Graphics", "select difficulty cursor 2x1") ); + m_sprCursorShadow[p].StopAnimating(); + m_sprCursorShadow[p].SetState( p ); + m_sprCursorShadow[p].TurnShadowOff(); + m_sprCursorShadow[p].SetDiffuseColor( D3DXCOLOR(0,0,0,0.6f) ); + m_framePages.AddSubActor( &m_sprCursorShadow[p] ); - m_sprArrow[p].Load( THEME->GetPathTo("Graphics", "select difficulty arrows") ); - m_sprArrow[p].StopAnimating(); - m_sprArrow[p].SetState( p ); - m_sprArrow[p].TurnShadowOff(); - m_sprArrow[p].SetDiffuseColor( PlayerToColor((PlayerNumber)p) ); - m_sprArrow[p].SetEffectGlowing(); - m_framePages.AddSubActor( &m_sprArrow[p] ); + m_sprCursor[p].Load( THEME->GetPathTo("Graphics", "select difficulty cursor 2x1") ); + m_sprCursor[p].StopAnimating(); + m_sprCursor[p].SetState( p ); + m_sprCursor[p].TurnShadowOff(); + m_sprCursor[p].SetEffectGlowing(); + m_framePages.AddSubActor( &m_sprCursor[p] ); - m_sprOK[p].Load( THEME->GetPathTo("Graphics", "select difficulty ok") ); + m_sprOK[p].Load( THEME->GetPathTo("Graphics", "select difficulty ok 2x1") ); m_framePages.AddSubActor( &m_sprOK[p] ); } @@ -221,11 +219,7 @@ ScreenSelectDifficulty::ScreenSelectDifficulty() m_Menu.TweenOnScreenFromMenu( SM_None ); TweenOnScreen(); - if( !MUSIC->IsPlaying() || MUSIC->GetLoadedFilePath() != THEME->GetPathTo("Sounds","select difficulty music") ) - { - MUSIC->Load( THEME->GetPathTo("Sounds","select difficulty music") ); - MUSIC->Play( true ); - } + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select difficulty music") ); m_fLockInputTime = LOCK_INPUT_TIME; } @@ -276,7 +270,7 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM ) } break; case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: { @@ -308,9 +302,9 @@ void ScreenSelectDifficulty::HandleScreenMessage( const ScreenMessage SM ) if(GAMESTATE->m_PlayMode == PLAY_MODE_ONI || GAMESTATE->m_PlayMode == PLAY_MODE_ENDLESS) - SCREENMAN->SetNewScreen( new ScreenSelectCourse ); + SCREENMAN->SetNewScreen( "ScreenSelectCourse" ); else - SCREENMAN->SetNewScreen( new ScreenSelectGroup ); + SCREENMAN->SetNewScreen( "ScreenSelectGroup" ); break; case SM_StartTweeningOffScreen: @@ -405,13 +399,13 @@ void ScreenSelectDifficulty::ChangeTo( const PlayerNumber pn, int iSelectionWas, { if( bSelectedSomethingOnPage2 || bChangedPagesFrom2To1 || p==pn ) { - m_sprArrow[p].BeginTweening( 0.2f, bChangedPages ? TWEEN_LINEAR : TWEEN_BIAS_BEGIN ); - m_sprArrow[p].SetTweenX( ARROW_X(m_iSelection[p],(PlayerNumber)p) - ARROW_SHADOW_LENGTH_X ); - m_sprArrow[p].SetTweenY( ARROW_Y(m_iSelection[p],(PlayerNumber)p) - ARROW_SHADOW_LENGTH_Y ); + m_sprCursor[p].BeginTweening( 0.2f, bChangedPages ? TWEEN_LINEAR : TWEEN_BIAS_BEGIN ); + m_sprCursor[p].SetTweenX( CURSOR_X(m_iSelection[p],(PlayerNumber)p) - CURSOR_SHADOW_LENGTH_X ); + m_sprCursor[p].SetTweenY( CURSOR_Y(m_iSelection[p],(PlayerNumber)p) - CURSOR_SHADOW_LENGTH_Y ); - m_sprArrowShadow[p].BeginTweening( 0.2f, bChangedPages ? TWEEN_LINEAR : TWEEN_BIAS_BEGIN ); - m_sprArrowShadow[p].SetTweenX( ARROW_X(m_iSelection[p],(PlayerNumber)p) ); - m_sprArrowShadow[p].SetTweenY( ARROW_Y(m_iSelection[p],(PlayerNumber)p) ); + m_sprCursorShadow[p].BeginTweening( 0.2f, bChangedPages ? TWEEN_LINEAR : TWEEN_BIAS_BEGIN ); + m_sprCursorShadow[p].SetTweenX( CURSOR_X(m_iSelection[p],(PlayerNumber)p) ); + m_sprCursorShadow[p].SetTweenY( CURSOR_Y(m_iSelection[p],(PlayerNumber)p) ); } } @@ -448,13 +442,13 @@ void ScreenSelectDifficulty::MenuStart( PlayerNumber pn ) } } - m_sprArrow[pn].BeginTweeningQueued( 0.2f ); - m_sprArrow[pn].BeginTweeningQueued( 0.2f ); - m_sprArrow[pn].SetTweenX( ARROW_X(iSelection, pn) ); - m_sprArrow[pn].SetTweenY( ARROW_Y(iSelection, pn) ); + m_sprCursor[pn].BeginTweeningQueued( 0.2f ); + m_sprCursor[pn].BeginTweeningQueued( 0.2f ); + m_sprCursor[pn].SetTweenX( CURSOR_X(iSelection, pn) ); + m_sprCursor[pn].SetTweenY( CURSOR_Y(iSelection, pn) ); - m_sprOK[pn].SetX( ARROW_X(iSelection, pn) ); - m_sprOK[pn].SetY( ARROW_Y(iSelection, pn) ); + m_sprOK[pn].SetX( CURSOR_X(iSelection, pn) ); + m_sprOK[pn].SetY( CURSOR_Y(iSelection, pn) ); m_sprOK[pn].SetDiffuseColor( D3DXCOLOR(1,1,1,0) ); m_sprOK[pn].SetZoom( 2 ); @@ -462,9 +456,9 @@ void ScreenSelectDifficulty::MenuStart( PlayerNumber pn ) m_sprOK[pn].SetTweenZoom( 1 ); m_sprOK[pn].SetTweenDiffuseColor( D3DXCOLOR(1,1,1,1) ); - m_sprArrowShadow[pn].BeginTweeningQueued( 0.2f ); - m_sprArrowShadow[pn].BeginTweeningQueued( 0.2f ); - m_sprArrowShadow[pn].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); + m_sprCursorShadow[pn].BeginTweeningQueued( 0.2f ); + m_sprCursorShadow[pn].BeginTweeningQueued( 0.2f ); + m_sprCursorShadow[pn].SetDiffuseColor( D3DXCOLOR(0,0,0,0) ); // check to see if everyone has chosen @@ -504,14 +498,14 @@ void ScreenSelectDifficulty::TweenOffScreen() if( !GAMESTATE->IsPlayerEnabled((PlayerNumber)p) ) continue; - m_sprArrow[p].BeginTweening( 0.3f ); - m_sprArrow[p].SetTweenZoom( 0 ); + m_sprCursor[p].BeginTweening( 0.3f ); + m_sprCursor[p].SetTweenZoom( 0 ); m_sprOK[p].BeginTweening( 0.3f ); m_sprOK[p].SetTweenZoom( 0 ); - m_sprArrowShadow[p].BeginTweeningQueued( 0.3f ); - m_sprArrowShadow[p].SetTweenDiffuseColor( D3DXCOLOR(0,0,0,0) ); + m_sprCursorShadow[p].BeginTweeningQueued( 0.3f ); + m_sprCursorShadow[p].SetTweenDiffuseColor( D3DXCOLOR(0,0,0,0) ); } for( int d=0; dSetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); } void ScreenSelectGame::GoToNextState() { - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); } diff --git a/stepmania/src/ScreenSelectGroup.cpp b/stepmania/src/ScreenSelectGroup.cpp index 3583153154..f7a5db8bd3 100644 --- a/stepmania/src/ScreenSelectGroup.cpp +++ b/stepmania/src/ScreenSelectGroup.cpp @@ -14,31 +14,31 @@ #include "ScreenSelectGroup.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "ScreenSelectMusic.h" -#include "ScreenTitleMenu.h" #include "GameManager.h" #include "RageLog.h" #include "GameConstantsAndTypes.h" #include "SongManager.h" #include "AnnouncerManager.h" #include "GameState.h" +#include "RageMusic.h" -#define FRAME_X THEME->GetMetricF("SelectGroup","FrameX") -#define FRAME_Y THEME->GetMetricF("SelectGroup","FrameY") -#define BANNER_X THEME->GetMetricF("SelectGroup","BannerX") -#define BANNER_Y THEME->GetMetricF("SelectGroup","BannerY") -#define BANNER_WIDTH THEME->GetMetricF("SelectGroup","BannerWidth") -#define BANNER_HEIGHT THEME->GetMetricF("SelectGroup","BannerHeight") -#define NUMBER_X THEME->GetMetricF("SelectGroup","NumberX") -#define NUMBER_Y THEME->GetMetricF("SelectGroup","NumberY") -#define EXPLANATION_X THEME->GetMetricF("SelectGroup","ExplanationX") -#define EXPLANATION_Y THEME->GetMetricF("SelectGroup","ExplanationY") -#define CONTENTS_X THEME->GetMetricF("SelectGroup","ContentsX") -#define CONTENTS_Y THEME->GetMetricF("SelectGroup","ContentsY") - -#define HELP_TEXT THEME->GetMetric("SelectGroup","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("SelectGroup","TimerSeconds") +#define FRAME_X THEME->GetMetricF("ScreenSelectGroup","FrameX") +#define FRAME_Y THEME->GetMetricF("ScreenSelectGroup","FrameY") +#define BANNER_X THEME->GetMetricF("ScreenSelectGroup","BannerX") +#define BANNER_Y THEME->GetMetricF("ScreenSelectGroup","BannerY") +#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectGroup","BannerWidth") +#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectGroup","BannerHeight") +#define NUMBER_X THEME->GetMetricF("ScreenSelectGroup","NumberX") +#define NUMBER_Y THEME->GetMetricF("ScreenSelectGroup","NumberY") +#define EXPLANATION_X THEME->GetMetricF("ScreenSelectGroup","ExplanationX") +#define EXPLANATION_Y THEME->GetMetricF("ScreenSelectGroup","ExplanationY") +#define CONTENTS_X THEME->GetMetricF("ScreenSelectGroup","ContentsX") +#define CONTENTS_Y THEME->GetMetricF("ScreenSelectGroup","ContentsY") +#define HELP_TEXT THEME->GetMetric("ScreenSelectGroup","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectGroup","TimerSeconds") +#define NEXT_SCREEN_ARCADE THEME->GetMetric("ScreenSelectGroup","NextScreenArcade") +#define NEXT_SCREEN_ONI THEME->GetMetric("ScreenSelectGroup","NextScreenOni") const ScreenMessage SM_GoToPrevState = ScreenMessage(SM_User + 1); @@ -163,12 +163,7 @@ ScreenSelectGroup::ScreenSelectGroup() SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_GROUP_INTRO) ); - - if( !MUSIC->IsPlaying() || MUSIC->GetLoadedFilePath() != THEME->GetPathTo("Sounds","select group music") ) - { - MUSIC->Load( THEME->GetPathTo("Sounds","select group music") ); - MUSIC->Play( true ); - } + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select group music") ); m_Menu.TweenOnScreenFromMenu( SM_None ); TweenOnScreen(); @@ -209,10 +204,21 @@ void ScreenSelectGroup::HandleScreenMessage( const ScreenMessage SM ) MenuStart(PLAYER_1); break; case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: - SCREENMAN->SetNewScreen( new ScreenSelectMusic ); + switch( GAMESTATE->m_PlayMode ) + { + case PLAY_MODE_ARCADE: + SCREENMAN->SetNewScreen( NEXT_SCREEN_ARCADE ); + break; + case PLAY_MODE_ONI: + case PLAY_MODE_ENDLESS: + SCREENMAN->SetNewScreen( NEXT_SCREEN_ONI ); + break; + default: + ASSERT(0); + } break; case SM_StartFadingOut: m_Menu.TweenOffScreenToMenu( SM_GoToNextState ); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 1f7cd02e7e..bbd9612494 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -17,63 +17,58 @@ #include "SongManager.h" #include "GameManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenGameplay.h" -#include "ScreenPrompt.h" -#include "ScreenPlayerOptions.h" #include "RageLog.h" #include "InputMapper.h" #include "InputQueue.h" -#include "ScreenStage.h" #include "AnnouncerManager.h" #include "InputMapper.h" #include "GameState.h" -#define BANNER_FRAME_X THEME->GetMetricF("SelectMusic","BannerFrameX") -#define BANNER_FRAME_Y THEME->GetMetricF("SelectMusic","BannerFrameY") -#define BANNER_X THEME->GetMetricF("SelectMusic","BannerX") -#define BANNER_Y THEME->GetMetricF("SelectMusic","BannerY") -#define BANNER_WIDTH THEME->GetMetricF("SelectMusic","BannerWidth") -#define BANNER_HEIGHT THEME->GetMetricF("SelectMusic","BannerHeight") -#define BPM_X THEME->GetMetricF("SelectMusic","BPMX") -#define BPM_Y THEME->GetMetricF("SelectMusic","BPMY") -#define STAGE_X THEME->GetMetricF("SelectMusic","StageX") -#define STAGE_Y THEME->GetMetricF("SelectMusic","StageY") -#define CD_TITLE_X THEME->GetMetricF("SelectMusic","CDTitleX") -#define CD_TITLE_Y THEME->GetMetricF("SelectMusic","CDTitleY") -#define DIFFICULTY_X THEME->GetMetricF("SelectMusic","DifficultyX") -#define DIFFICULTY_Y THEME->GetMetricF("SelectMusic","DifficultyY") -#define ICON_P1_X THEME->GetMetricF("SelectMusic","IconP1X") -#define ICON_P1_Y THEME->GetMetricF("SelectMusic","IconP1Y") -#define ICON_P2_X THEME->GetMetricF("SelectMusic","IconP2X") -#define ICON_P2_Y THEME->GetMetricF("SelectMusic","IconP2Y") -#define RADAR_X THEME->GetMetricF("SelectMusic","RadarX") -#define RADAR_Y THEME->GetMetricF("SelectMusic","RadarY") -#define SORT_ICON_X THEME->GetMetricF("SelectMusic","SortIconX") -#define SORT_ICON_Y THEME->GetMetricF("SelectMusic","SortIconY") -#define SCORE_P1_X THEME->GetMetricF("SelectMusic","ScoreP1X") -#define SCORE_P1_Y THEME->GetMetricF("SelectMusic","ScoreP1Y") -#define SCORE_P2_X THEME->GetMetricF("SelectMusic","ScoreP2X") -#define SCORE_P2_Y THEME->GetMetricF("SelectMusic","ScoreP2Y") -#define METER_FRAME_X THEME->GetMetricF("SelectMusic","MeterFrameX") -#define METER_FRAME_Y THEME->GetMetricF("SelectMusic","MeterFrameY") -#define METER_P1_X THEME->GetMetricF("SelectMusic","MeterP1X") -#define METER_P1_Y THEME->GetMetricF("SelectMusic","MeterP1Y") -#define METER_P2_X THEME->GetMetricF("SelectMusic","MeterP2X") -#define METER_P2_Y THEME->GetMetricF("SelectMusic","MeterP2Y") -#define WHEEL_X THEME->GetMetricF("SelectMusic","WheelX") -#define WHEEL_Y THEME->GetMetricF("SelectMusic","WheelY") -#define PLAYER_OPTIONS_P1_X THEME->GetMetricF("SelectMusic","PlayerOptionsP1X") -#define PLAYER_OPTIONS_P1_Y THEME->GetMetricF("SelectMusic","PlayerOptionsP1Y") -#define PLAYER_OPTIONS_P2_X THEME->GetMetricF("SelectMusic","PlayerOptionsP2X") -#define PLAYER_OPTIONS_P2_Y THEME->GetMetricF("SelectMusic","PlayerOptionsP2Y") -#define SONG_OPTIONS_X THEME->GetMetricF("SelectMusic","SongOptionsX") -#define SONG_OPTIONS_Y THEME->GetMetricF("SelectMusic","SongOptionsY") -#define HELP_TEXT THEME->GetMetric("SelectMusic","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("SelectMusic","TimerSeconds") +#define BANNER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","BannerFrameX") +#define BANNER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","BannerFrameY") +#define BANNER_X THEME->GetMetricF("ScreenSelectMusic","BannerX") +#define BANNER_Y THEME->GetMetricF("ScreenSelectMusic","BannerY") +#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectMusic","BannerWidth") +#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectMusic","BannerHeight") +#define BPM_X THEME->GetMetricF("ScreenSelectMusic","BPMX") +#define BPM_Y THEME->GetMetricF("ScreenSelectMusic","BPMY") +#define STAGE_X THEME->GetMetricF("ScreenSelectMusic","StageX") +#define STAGE_Y THEME->GetMetricF("ScreenSelectMusic","StageY") +#define CD_TITLE_X THEME->GetMetricF("ScreenSelectMusic","CDTitleX") +#define CD_TITLE_Y THEME->GetMetricF("ScreenSelectMusic","CDTitleY") +#define DIFFICULTY_X THEME->GetMetricF("ScreenSelectMusic","DifficultyX") +#define DIFFICULTY_Y THEME->GetMetricF("ScreenSelectMusic","DifficultyY") +#define ICON_P1_X THEME->GetMetricF("ScreenSelectMusic","IconP1X") +#define ICON_P1_Y THEME->GetMetricF("ScreenSelectMusic","IconP1Y") +#define ICON_P2_X THEME->GetMetricF("ScreenSelectMusic","IconP2X") +#define ICON_P2_Y THEME->GetMetricF("ScreenSelectMusic","IconP2Y") +#define RADAR_X THEME->GetMetricF("ScreenSelectMusic","RadarX") +#define RADAR_Y THEME->GetMetricF("ScreenSelectMusic","RadarY") +#define SORT_ICON_X THEME->GetMetricF("ScreenSelectMusic","SortIconX") +#define SORT_ICON_Y THEME->GetMetricF("ScreenSelectMusic","SortIconY") +#define SCORE_P1_X THEME->GetMetricF("ScreenSelectMusic","ScoreP1X") +#define SCORE_P1_Y THEME->GetMetricF("ScreenSelectMusic","ScoreP1Y") +#define SCORE_P2_X THEME->GetMetricF("ScreenSelectMusic","ScoreP2X") +#define SCORE_P2_Y THEME->GetMetricF("ScreenSelectMusic","ScoreP2Y") +#define METER_FRAME_X THEME->GetMetricF("ScreenSelectMusic","MeterFrameX") +#define METER_FRAME_Y THEME->GetMetricF("ScreenSelectMusic","MeterFrameY") +#define METER_P1_X THEME->GetMetricF("ScreenSelectMusic","MeterP1X") +#define METER_P1_Y THEME->GetMetricF("ScreenSelectMusic","MeterP1Y") +#define METER_P2_X THEME->GetMetricF("ScreenSelectMusic","MeterP2X") +#define METER_P2_Y THEME->GetMetricF("ScreenSelectMusic","MeterP2Y") +#define WHEEL_X THEME->GetMetricF("ScreenSelectMusic","WheelX") +#define WHEEL_Y THEME->GetMetricF("ScreenSelectMusic","WheelY") +#define PLAYER_OPTIONS_P1_X THEME->GetMetricF("ScreenSelectMusic","PlayerOptionsP1X") +#define PLAYER_OPTIONS_P1_Y THEME->GetMetricF("ScreenSelectMusic","PlayerOptionsP1Y") +#define PLAYER_OPTIONS_P2_X THEME->GetMetricF("ScreenSelectMusic","PlayerOptionsP2X") +#define PLAYER_OPTIONS_P2_Y THEME->GetMetricF("ScreenSelectMusic","PlayerOptionsP2Y") +#define SONG_OPTIONS_X THEME->GetMetricF("ScreenSelectMusic","SongOptionsX") +#define SONG_OPTIONS_Y THEME->GetMetricF("ScreenSelectMusic","SongOptionsY") +#define HELP_TEXT THEME->GetMetric("ScreenSelectMusic","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectMusic","TimerSeconds") const float TWEEN_TIME = 0.5f; @@ -574,17 +569,17 @@ void ScreenSelectMusic::HandleScreenMessage( const ScreenMessage SM ) } break; case SM_GoToPrevState: - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: if( m_bGoToOptions ) { - SCREENMAN->SetNewScreen( new ScreenPlayerOptions ); + SCREENMAN->SetNewScreen( "ScreenPlayerOptions" ); } else { MUSIC->Stop(); - SCREENMAN->SetNewScreen( new ScreenStage ); + SCREENMAN->SetNewScreen( "ScreenStage" ); } break; case SM_PlaySongSample: @@ -664,7 +659,7 @@ void ScreenSelectMusic::MenuStart( const PlayerNumber p ) { if( !m_MusicWheel.GetSelectedSong()->HasMusic() ) { - SCREENMAN->AddScreenToTop( new ScreenPrompt( SM_None, "ERROR:\n \nThis song does not have a music file\n and cannot be played.", PROMPT_OK) ); + SCREENMAN->Prompt( SM_None, "ERROR:\n \nThis song does not have a music file\n and cannot be played." ); return; } @@ -828,19 +823,11 @@ void ScreenSelectMusic::PlayMusicSample() { //LOG->Trace( "ScreenSelectSong::PlaySONGample()" ); - MUSIC->Stop(); - Song* pSong = m_MusicWheel.GetSelectedSong(); - if( pSong == NULL ) - return; - - CString sSongToPlay = pSong->GetMusicPath(); - - if( pSong->HasMusic() ) - { - MUSIC->Load( sSongToPlay ); - MUSIC->Play( true, pSong->m_fMusicSampleStartSeconds, pSong->m_fMusicSampleLengthSeconds ); - } + if( pSong ) + MUSIC->LoadAndPlayIfNotAlready( pSong->GetMusicPath() ); + else + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select music music") ); } void ScreenSelectMusic::UpdateOptionsDisplays() diff --git a/stepmania/src/ScreenSelectStyle.cpp b/stepmania/src/ScreenSelectStyle.cpp index 7dd4bc08d9..167b10d80c 100644 --- a/stepmania/src/ScreenSelectStyle.cpp +++ b/stepmania/src/ScreenSelectStyle.cpp @@ -15,38 +15,28 @@ #include "ScreenManager.h" #include "PrefsManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" -#include "ScreenCaution.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenSelectGroup.h" -#include "ScreenSelectDifficulty.h" -#include "ScreenSandbox.h" #include "GameManager.h" #include "RageLog.h" #include "AnnouncerManager.h" #include "GameState.h" -#define ICONS_START_X THEME->GetMetricF("SelectStyle","IconsStartX") -#define ICONS_SPACING_X THEME->GetMetricF("SelectStyle","IconsSpacingX") -#define ICONS_START_Y THEME->GetMetricF("SelectStyle","IconsStartY") -#define ICONS_SPACING_Y THEME->GetMetricF("SelectStyle","IconsSpacingY") -#define EXPLANATION_X THEME->GetMetricF("SelectStyle","ExplanationX") -#define EXPLANATION_Y THEME->GetMetricF("SelectStyle","ExplanationY") -#define INFO_X THEME->GetMetricF("SelectStyle","InfoX") -#define INFO_Y THEME->GetMetricF("SelectStyle","InfoY") -#define PREVIEW_X THEME->GetMetricF("SelectStyle","PreviewX") -#define PREVIEW_Y THEME->GetMetricF("SelectStyle","PreviewY") -#define HELP_TEXT THEME->GetMetric("SelectStyle","HelpText") -#define TIMER_SECONDS THEME->GetMetricI("SelectStyle","TimerSeconds") +#define ICONS_START_X THEME->GetMetricF("ScreenSelectStyle","IconsStartX") +#define ICONS_SPACING_X THEME->GetMetricF("ScreenSelectStyle","IconsSpacingX") +#define ICONS_START_Y THEME->GetMetricF("ScreenSelectStyle","IconsStartY") +#define ICONS_SPACING_Y THEME->GetMetricF("ScreenSelectStyle","IconsSpacingY") +#define EXPLANATION_X THEME->GetMetricF("ScreenSelectStyle","ExplanationX") +#define EXPLANATION_Y THEME->GetMetricF("ScreenSelectStyle","ExplanationY") +#define INFO_X THEME->GetMetricF("ScreenSelectStyle","InfoX") +#define INFO_Y THEME->GetMetricF("ScreenSelectStyle","InfoY") +#define PREVIEW_X THEME->GetMetricF("ScreenSelectStyle","PreviewX") +#define PREVIEW_Y THEME->GetMetricF("ScreenSelectStyle","PreviewY") +#define HELP_TEXT THEME->GetMetric("ScreenSelectStyle","HelpText") +#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectStyle","TimerSeconds") +#define NEXT_SCREEN THEME->GetMetric("ScreenSelectStyle","NextScreen") -#define SELECT_DIFFICULTY_TYPE THEME->GetMetricI("General","SelectDifficultyType") -enum SelectDifficultyType // for use with the metric above -{ - SELECT_DIFFICULTY_TYPE_SKIP = 0, - SELECT_DIFFICULTY_TYPE_MAX, -}; const ScreenMessage SM_GoToPrevState = ScreenMessage(SM_User + 1); const ScreenMessage SM_GoToNextState = ScreenMessage(SM_User + 2); @@ -108,12 +98,7 @@ ScreenSelectStyle::ScreenSelectStyle() SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_STYLE_INTRO) ); - - if( !MUSIC->IsPlaying() || MUSIC->GetLoadedFilePath() != THEME->GetPathTo("Sounds","select style music") ) - { - MUSIC->Load( THEME->GetPathTo("Sounds","select style music") ); - MUSIC->Play( true ); - } + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select style music") ); AfterChange(); TweenOnScreen(); @@ -154,20 +139,10 @@ void ScreenSelectStyle::HandleScreenMessage( const ScreenMessage SM ) break; case SM_GoToPrevState: MUSIC->Stop(); - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: - switch( SELECT_DIFFICULTY_TYPE ) - { - case SELECT_DIFFICULTY_TYPE_SKIP: - SCREENMAN->SetNewScreen( new ScreenSelectGroup ); - break; - case SELECT_DIFFICULTY_TYPE_MAX: - SCREENMAN->SetNewScreen( new ScreenSelectDifficulty ); - break; - default: - ASSERT(0); - } + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; } } diff --git a/stepmania/src/ScreenSelectStyle5th.cpp b/stepmania/src/ScreenSelectStyle5th.cpp index 9db4430bd6..1820aadfce 100644 --- a/stepmania/src/ScreenSelectStyle5th.cpp +++ b/stepmania/src/ScreenSelectStyle5th.cpp @@ -15,12 +15,8 @@ #include "ScreenManager.h" #include "PrefsManager.h" #include "RageMusic.h" -#include "ScreenTitleMenu.h" -#include "ScreenCaution.h" #include "GameConstantsAndTypes.h" #include "PrefsManager.h" -#include "ScreenSelectDifficulty.h" -#include "ScreenSandbox.h" #include "GameManager.h" #include "RageLog.h" #include "GameState.h" @@ -177,15 +173,9 @@ ScreenSelectStyle5th::ScreenSelectStyle5th() m_soundChange.Load( THEME->GetPathTo("Graphics","select style change") ); m_soundSelect.Load( THEME->GetPathTo("Sounds","menu start") ); - SOUND->PlayOnceStreamedFromDir( ANNOUNCER->GetPathTo(ANNOUNCER_SELECT_STYLE_INTRO) ); - - if( !MUSIC->IsPlaying() ) - { - MUSIC->Load( THEME->GetPathTo("Sounds","select style music") ); - MUSIC->Play( true ); - } + MUSIC->LoadAndPlayIfNotAlready( THEME->GetPathTo("Sounds","select style music") ); m_soundChange.PlayRandom(); TweenOnScreen(); @@ -227,10 +217,10 @@ void ScreenSelectStyle5th::HandleScreenMessage( const ScreenMessage SM ) break; case SM_GoToPrevState: MUSIC->Stop(); - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; case SM_GoToNextState: - SCREENMAN->SetNewScreen( new ScreenSelectDifficulty ); + SCREENMAN->SetNewScreen( "ScreenSelectDifficulty" ); break; case SM_TweenExplanation2: m_textExplanation2.BeginTweening( 0.7f ); diff --git a/stepmania/src/ScreenSongOptions.cpp b/stepmania/src/ScreenSongOptions.cpp index 24c6446388..e2e2a15c56 100644 --- a/stepmania/src/ScreenSongOptions.cpp +++ b/stepmania/src/ScreenSongOptions.cpp @@ -11,18 +11,12 @@ */ #include "ScreenSongOptions.h" -#include -#include "RageTextureManager.h" #include "RageUtil.h" #include "RageMusic.h" #include "ScreenManager.h" -#include "ScreenSelectMusic.h" -#include "ScreenGameplay.h" #include "GameConstantsAndTypes.h" -#include "ScreenPlayerOptions.h" #include "RageLog.h" #include "GameState.h" -#include "ScreenStage.h" enum { @@ -108,14 +102,14 @@ void ScreenSongOptions::ExportOptions() void ScreenSongOptions::GoToPrevState() { - SCREENMAN->SetNewScreen( new ScreenPlayerOptions ); + SCREENMAN->SetNewScreen( "ScreenPlayerOptions" ); } void ScreenSongOptions::GoToNextState() { MUSIC->Stop(); - SCREENMAN->SetNewScreen( new ScreenStage ); + SCREENMAN->SetNewScreen( "ScreenStage" ); } diff --git a/stepmania/src/ScreenStage.cpp b/stepmania/src/ScreenStage.cpp index 216d9f1ab3..79f56be6e7 100644 --- a/stepmania/src/ScreenStage.cpp +++ b/stepmania/src/ScreenStage.cpp @@ -13,21 +13,21 @@ #include "ScreenStage.h" #include "ScreenManager.h" #include "PrefsManager.h" -#include "PrefsManager.h" #include "RageLog.h" #include "GameConstantsAndTypes.h" #include "BitmapText.h" #include "TransitionFadeWipe.h" #include "TransitionFade.h" -#include "ScreenSelectMusic.h" -#include "ScreenGameplay.h" #include "SongManager.h" #include "Sprite.h" #include "AnnouncerManager.h" #include "GameState.h" +#include "RageMusic.h" -#define STAGE_TYPE THEME->GetMetricI("General","StageType") -enum StageType // for use with the metric above + +#define NEXT_SCREEN THEME->GetMetric("ScreenStage","NextScreen") +#define STAGE_TYPE THEME->GetMetricI("ScreenStage","StageType") +enum StageType // for use with the metric above { STAGE_TYPE_MAX = 0, STAGE_TYPE_PUMP, @@ -53,9 +53,6 @@ ScreenStage::ScreenStage() { MUSIC->Stop(); - m_pNextScreen = NULL; - - for( int i=0; i<4; i++ ) { m_sprNumbers[i].Load( THEME->GetPathTo("Graphics","stage numbers") ); @@ -463,7 +460,7 @@ ScreenStage::ScreenStage() m_Fade.SetOpened(); this->SendScreenMessage( SM_DoneFadingIn, 1.0f ); - this->SendScreenMessage( SM_StartFadingOut, 1.2f ); + this->SendScreenMessage( SM_StartFadingOut, 4.0f ); } void ScreenStage::Update( float fDeltaTime ) @@ -481,7 +478,7 @@ void ScreenStage::DrawPrimitives() { DISPLAY->EnableZBuffer(); - if ( STAGE_TYPE == STAGE_TYPE_MAX) // only DANCE uses the quadmask + if ( STAGE_TYPE == STAGE_TYPE_MAX) // only DANCE uses the Z mask m_quadMask.Draw(); m_frameStage.Draw(); @@ -501,10 +498,9 @@ void ScreenStage::HandleScreenMessage( const ScreenMessage SM ) m_Fade.CloseWipingRight( SM_GoToNextState ); break; case SM_DoneFadingIn: - m_pNextScreen = new ScreenGameplay; break; case SM_GoToNextState: - SCREENMAN->SetNewScreen( m_pNextScreen ); + SCREENMAN->SetNewScreen( "ScreenGameplay" ); break; } } diff --git a/stepmania/src/ScreenStage.h b/stepmania/src/ScreenStage.h index 2faf6356a9..64017437c9 100644 --- a/stepmania/src/ScreenStage.h +++ b/stepmania/src/ScreenStage.h @@ -49,7 +49,6 @@ private: TransitionFade m_Fade; - Screen* m_pNextScreen; protected: Song* m_pSong; diff --git a/stepmania/src/ScreenTextEntry.h b/stepmania/src/ScreenTextEntry.h index ea6fd25de3..cc44b24501 100644 --- a/stepmania/src/ScreenTextEntry.h +++ b/stepmania/src/ScreenTextEntry.h @@ -22,7 +22,6 @@ class ScreenTextEntry : public Screen { public: - ScreenTextEntry(); ScreenTextEntry( ScreenMessage SM_SendWhenDone, CString sQuestion, CString sInitialAnswer, void(*OnOK)(CString sAnswer) = NULL, void(*OnCanel)() = NULL ); virtual void Update( float fDeltaTime ); diff --git a/stepmania/src/ScreenTitleMenu.cpp b/stepmania/src/ScreenTitleMenu.cpp index 30f3a4b904..814fa6d55a 100644 --- a/stepmania/src/ScreenTitleMenu.cpp +++ b/stepmania/src/ScreenTitleMenu.cpp @@ -12,27 +12,16 @@ #include "ScreenTitleMenu.h" #include "ScreenManager.h" -#include "ScreenCaution.h" -#include "ScreenMapInstruments.h" -#include "ScreenGraphicOptions.h" -#include "ScreenGameOptions.h" #include "GameConstantsAndTypes.h" #include "RageUtil.h" #include "StepMania.h" #include "PrefsManager.h" -#include "ScreenEditMenu.h" -#include "ScreenSelectStyle.h" -#include "ScreenSelectGame.h" -#include "ScreenAppearanceOptions.h" #include "RageLog.h" #include "SongManager.h" #include "AnnouncerManager.h" -#include "ScreenEz2SelectPlayer.h" #include "GameState.h" #include "GameManager.h" -#include "ScreenGameplay.h" -#include "ScreenSelectStyle5th.h" -#include "ScreenEz2SelectStyle.h" +#include "InputMapper.h" const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = { "GAME START", @@ -45,37 +34,23 @@ const CString CHOICE_TEXT[ScreenTitleMenu::NUM_TITLE_MENU_CHOICES] = { "EXIT", }; -#define CHOICES_X THEME->GetMetricF("TitleMenu","ChoicesX") -#define CHOICES_START_Y THEME->GetMetricF("TitleMenu","ChoicesStartY") -#define CHOICES_SPACING_Y THEME->GetMetricF("TitleMenu","ChoicesSpacingY") -#define HELP_X THEME->GetMetricF("TitleMenu","HelpX") -#define HELP_Y THEME->GetMetricF("TitleMenu","HelpY") -#define LOGO_X THEME->GetMetricF("TitleMenu","LogoX") -#define LOGO_Y THEME->GetMetricF("TitleMenu","LogoY") -#define VERSION_X THEME->GetMetricF("TitleMenu","VersionX") -#define VERSION_Y THEME->GetMetricF("TitleMenu","VersionY") -#define SONGS_X THEME->GetMetricF("TitleMenu","SongsX") -#define SONGS_Y THEME->GetMetricF("TitleMenu","SongsY") -#define COLOR_NOT_SELECTED THEME->GetMetricC("TitleMenu","ColorNotSelected") -#define COLOR_SELECTED THEME->GetMetricC("TitleMenu","ColorSelected") -#define SECONDS_BEFORE_DEMONSTRATION THEME->GetMetricF("TitleMenu","SecondsBeforeDemonstration") -#define SECONDS_BETWEEN_ATTRACT THEME->GetMetricF("TitleMenu","SecondsBetweenAttract") -#define HELP_TEXT THEME->GetMetric("TitleMenu","HelpText") - -#define CAUTION_TYPE THEME->GetMetricI("General","CautionType") -enum CautionType // for use with the metric above -{ - CAUTION_TYPE_SKIP = 0, - CAUTION_TYPE_DDR, - CAUTION_TYPE_EZ2_SELECT_PLAYER, -}; -#define SELECT_STYLE_TYPE THEME->GetMetricI("General","SelectStyleType") -enum SelectStyleType // for use with the metric above -{ - SELECT_STYLE_TYPE_MAX = 0, - SELECT_STYLE_TYPE_5TH, - SELECT_STYLE_TYPE_EZ2, -}; +#define CHOICES_X THEME->GetMetricF("ScreenTitleMenu","ChoicesX") +#define CHOICES_START_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesStartY") +#define CHOICES_SPACING_Y THEME->GetMetricF("ScreenTitleMenu","ChoicesSpacingY") +#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") +#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") const ScreenMessage SM_PlayAttract = ScreenMessage(SM_User+1); const ScreenMessage SM_GoToNextScreen = ScreenMessage(SM_User+12); @@ -224,51 +199,25 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM ) switch( m_TitleMenuChoice ) { case CHOICE_GAME_START: - switch( CAUTION_TYPE ) - { - case CAUTION_TYPE_SKIP: - switch( SELECT_STYLE_TYPE ) - { - case SELECT_STYLE_TYPE_MAX: - SCREENMAN->SetNewScreen( new ScreenSelectStyle ); - break; - case SELECT_STYLE_TYPE_5TH: - SCREENMAN->SetNewScreen( new ScreenSelectStyle5th ); - break; - case SELECT_STYLE_TYPE_EZ2: - SCREENMAN->SetNewScreen( new ScreenEz2SelectStyle ); - break; - default: - ASSERT(0); - } - break; - case CAUTION_TYPE_DDR: - SCREENMAN->SetNewScreen( new ScreenCaution ); - break; - case CAUTION_TYPE_EZ2_SELECT_PLAYER: - SCREENMAN->SetNewScreen( new ScreenEz2SelectPlayer ); - break; - default: - ASSERT(0); - } + SCREENMAN->SetNewScreen( NEXT_SCREEN ); break; case CHOICE_SELECT_GAME: - SCREENMAN->SetNewScreen( new ScreenSelectGame ); + SCREENMAN->SetNewScreen( "ScreenSelectGame" ); break; case CHOICE_MAP_INSTRUMENTS: - SCREENMAN->SetNewScreen( new ScreenMapInstruments ); + SCREENMAN->SetNewScreen( "ScreenMapInstruments" ); break; case CHOICE_GAME_OPTIONS: - SCREENMAN->SetNewScreen( new ScreenGameOptions ); + SCREENMAN->SetNewScreen( "ScreenGameOptions" ); break; case CHOICE_GRAPHIC_OPTIONS: - SCREENMAN->SetNewScreen( new ScreenGraphicOptions ); + SCREENMAN->SetNewScreen( "ScreenGraphicOptions" ); break; case CHOICE_APPEARANCE_OPTIONS: - SCREENMAN->SetNewScreen( new ScreenAppearanceOptions ); + SCREENMAN->SetNewScreen( "ScreenAppearanceOptions" ); break; case CHOICE_EDIT: - SCREENMAN->SetNewScreen( new ScreenEditMenu ); + SCREENMAN->SetNewScreen( "ScreenEditMenu" ); break; case CHOICE_EXIT: default: @@ -327,7 +276,7 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM ) case SM_GoToDemonstration: { ASSERT( GAMESTATE->m_pCurSong ); - SCREENMAN->SetNewScreen( new ScreenGameplay ); + SCREENMAN->SetNewScreen( "ScreenGameplay" ); } break; } diff --git a/stepmania/src/ScrollBar.cpp b/stepmania/src/ScrollBar.cpp index 80912df24f..925609decb 100644 --- a/stepmania/src/ScrollBar.cpp +++ b/stepmania/src/ScrollBar.cpp @@ -17,27 +17,25 @@ ScrollBar::ScrollBar() { - m_sprBackground.Load( THEME->GetPathTo("Graphics","select music scrollbar 2x2") ); + m_sprBackground.Load( THEME->GetPathTo("Graphics","select music scrollbar parts 1x3") ); m_sprBackground.StopAnimating(); m_sprBackground.SetState( 1 ); this->AddSubActor( &m_sprBackground ); - m_sprScrollThumbPart1.Load( THEME->GetPathTo("Graphics","select music scrollbar 2x2") ); + m_sprScrollThumbPart1.Load( THEME->GetPathTo("Graphics","select music scrollbar thumb") ); m_sprScrollThumbPart1.StopAnimating(); - m_sprScrollThumbPart1.SetState( 3 ); this->AddSubActor( &m_sprScrollThumbPart1 ); - m_sprScrollThumbPart2.Load( THEME->GetPathTo("Graphics","select music scrollbar 2x2") ); + m_sprScrollThumbPart2.Load( THEME->GetPathTo("Graphics","select music scrollbar thumb") ); m_sprScrollThumbPart2.StopAnimating(); - m_sprScrollThumbPart2.SetState( 3 ); this->AddSubActor( &m_sprScrollThumbPart2 ); - m_sprTopButton.Load( THEME->GetPathTo("Graphics","select music scrollbar 2x2") ); + m_sprTopButton.Load( THEME->GetPathTo("Graphics","select music scrollbar parts 1x3") ); m_sprTopButton.StopAnimating(); m_sprTopButton.SetState( 0 ); this->AddSubActor( &m_sprTopButton ); - m_sprBottomButton.Load( THEME->GetPathTo("Graphics","select music scrollbar 2x2") ); + m_sprBottomButton.Load( THEME->GetPathTo("Graphics","select music scrollbar parts 1x3") ); m_sprBottomButton.StopAnimating(); m_sprBottomButton.SetState( 2 ); this->AddSubActor( &m_sprBottomButton ); diff --git a/stepmania/src/SmallGradeDisplay.cpp b/stepmania/src/SmallGradeDisplay.cpp new file mode 100644 index 0000000000..929b031611 --- /dev/null +++ b/stepmania/src/SmallGradeDisplay.cpp @@ -0,0 +1,62 @@ +#include "stdafx.h" +/* +----------------------------------------------------------------------------- + Class: SmallGradeDisplay + + Desc: See header. + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + +#include "SmallGradeDisplay.h" +#include "RageUtil.h" +#include "GameConstantsAndTypes.h" +#include "PrefsManager.h" + + +const float SCROLL_TIME = 5.0f; +const int NUM_GRADE_FRAMES = 7; +const float GRADE_FRAME_HEIGHT = 1/(float)NUM_GRADE_FRAMES; +const float GRADES_TO_SCROLL = NUM_GRADE_FRAMES*4; + + +SmallGradeDisplay::SmallGradeDisplay() +{ + Load( THEME->GetPathTo("Graphics","select music small grades 2x8") ); + StopAnimating(); + + SetGrade( PLAYER_1, GRADE_NO_DATA ); +} + +void SmallGradeDisplay::Update( float fDeltaTime ) +{ + Sprite::Update( fDeltaTime ); +} + +void SmallGradeDisplay::DrawPrimitives() +{ + Sprite::DrawPrimitives(); +} + +void SmallGradeDisplay::SetGrade( PlayerNumber p, Grade g ) +{ + m_Grade = g; + + SetDiffuseColor( D3DXCOLOR(1,1,1,1) ); + + int iNumCols = 2; + switch( g ) + { + case GRADE_AAA: SetState( 0*iNumCols+p ); break; + case GRADE_AA: SetState( 1*iNumCols+p ); break; + case GRADE_A: SetState( 2*iNumCols+p ); break; + case GRADE_B: SetState( 3*iNumCols+p ); break; + case GRADE_C: SetState( 4*iNumCols+p ); break; + case GRADE_D: SetState( 5*iNumCols+p ); break; + case GRADE_E: SetState( 6*iNumCols+p ); break; + case GRADE_NO_DATA: SetState( 7*iNumCols+p ); break; + default: ASSERT(0); + } +} diff --git a/stepmania/src/SmallGradeDisplay.h b/stepmania/src/SmallGradeDisplay.h new file mode 100644 index 0000000000..56337665f4 --- /dev/null +++ b/stepmania/src/SmallGradeDisplay.h @@ -0,0 +1,33 @@ +#pragma once +/* +----------------------------------------------------------------------------- + Class: SmallGradeDisplay + + Desc: The grade shows on ScreenEvaluation + + Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. + Chris Danford +----------------------------------------------------------------------------- +*/ + + +#include "Sprite.h" +#include "PrefsManager.h" +#include "Grade.h" + + + +class SmallGradeDisplay : public Sprite +{ +public: + SmallGradeDisplay(); + + virtual void Update( float fDeltaTime ); + virtual void DrawPrimitives(); + + void SetGrade( PlayerNumber p, Grade g ); + +protected: + + Grade m_Grade; +}; diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index 834cc02fb5..efa5d4c95e 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -56,10 +56,6 @@ #include "Notes.h" -#include "ScreenSandbox.h" -#include "ScreenTitleMenu.h" - - #include "dxerr8.h" //#include @@ -691,17 +687,8 @@ HRESULT CreateObjects( HWND hWnd ) BringWindowToTop( hWnd ); SetForegroundWindow( hWnd ); - //SCREENMAN->SetNewScreen( new ScreenAttractLogo ); - SCREENMAN->SetNewScreen( new ScreenTitleMenu ); - //SCREENMAN->SetNewScreen( new ScreenSandbox ); - //SCREENMAN->SetNewScreen( new ScreenEvaluation(true) ); - //SCREENMAN->SetNewScreen( new ScreenSelectDifficulty ); - //SCREENMAN->SetNewScreen( new ScreenPlayerOptions ); - //SCREENMAN->SetNewScreen( new ScreenGameplay ); - //SCREENMAN->SetNewScreen( new ScreenMusicScroll ); - //SCREENMAN->SetNewScreen( new ScreenSelectMusic ); - //SCREENMAN->SetNewScreen( new ScreenSelectGroup ); - + SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); +// SCREENMAN->SetNewScreen( "ScreenSandbox" ); return S_OK; } diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index 86346829c6..6f6aae483c 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -712,6 +712,14 @@ SOURCE=.\ScrollingList.h # End Source File # Begin Source File +SOURCE=.\SmallGradeDisplay.cpp +# End Source File +# Begin Source File + +SOURCE=.\SmallGradeDisplay.h +# End Source File +# Begin Source File + SOURCE=.\SnapDisplay.cpp # End Source File # Begin Source File @@ -1040,6 +1048,14 @@ SOURCE=.\ScreenGraphicOptions.h # End Source File # Begin Source File +SOURCE=.\ScreenHowToPlay.cpp +# End Source File +# Begin Source File + +SOURCE=.\ScreenHowToPlay.h +# End Source File +# Begin Source File + SOURCE=.\ScreenManager.cpp # End Source File # Begin Source File diff --git a/stepmania/src/StepMania.vcproj b/stepmania/src/StepMania.vcproj index 7647b64724..0d3713042a 100644 --- a/stepmania/src/StepMania.vcproj +++ b/stepmania/src/StepMania.vcproj @@ -191,12 +191,6 @@ - - - - @@ -694,6 +688,18 @@ + + + + + + + + diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 884bfa1fdb..e667da2d95 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -489,7 +489,6 @@ try_element_again: CString sNewFilePath = sDir+"\\"+sNewFileName; if( sNewFileName == "" || !DoesFileExist(sNewFilePath) ) { - ASSERT(0); throw RageException( "The redirect '%s' points to the file '%s', which does not exist. Verify that this redirect is correct.", sRedirFilePath, sNewFilePath ); } else diff --git a/stepmania/src/TipDisplay.cpp b/stepmania/src/TipDisplay.cpp index 32085e03f7..a5d4e9a276 100644 --- a/stepmania/src/TipDisplay.cpp +++ b/stepmania/src/TipDisplay.cpp @@ -46,12 +46,15 @@ void TipDisplay::Update( float fDeltaTime ) { ActorFrame::Update( fDeltaTime ); - m_fSecsUntilSwitch -= fDeltaTime; - if( m_fSecsUntilSwitch < 0 ) // time to switch states + if( m_arrayTips.GetSize() > 0 ) { - m_iCurTipIndex++; - m_iCurTipIndex = m_iCurTipIndex % m_arrayTips.GetSize(); - m_fSecsUntilSwitch = TIP_SHOW_TIME; - m_textTip.SetText( m_arrayTips[m_iCurTipIndex] ); + m_fSecsUntilSwitch -= fDeltaTime; + if( m_fSecsUntilSwitch < 0 ) // time to switch states + { + m_iCurTipIndex++; + m_iCurTipIndex = m_iCurTipIndex % m_arrayTips.GetSize(); + m_fSecsUntilSwitch = TIP_SHOW_TIME; + m_textTip.SetText( m_arrayTips[m_iCurTipIndex] ); + } } }