From 0ce416cb264f1969f8ea68e50b89ba6ab21b3aa6 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 17 Feb 2005 05:57:21 +0000 Subject: [PATCH] add ScreenSplash - a replacement for ScreenStage --- stepmania/Themes/default/metrics.ini | 6 ++ stepmania/src/Makefile.am | 4 +- stepmania/src/ScreenSplash.cpp | 88 ++++++++++++++++++++++++++++ stepmania/src/ScreenSplash.h | 50 ++++++++++++++++ stepmania/src/StepMania.dsp | 12 +++- stepmania/src/StepMania.vcproj | 6 ++ 6 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 stepmania/src/ScreenSplash.cpp create mode 100644 stepmania/src/ScreenSplash.h diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index af9a281a08..04756007cf 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -979,6 +979,12 @@ TimerStealth=0 StyleIcon=0 MemoryCardIcons=0 +[ScreenSplash] +Class=ScreenSplash +Fallback=ScreenWithMenuElements +MinimumLoadDelaySeconds=2 +AllowStartToSkip=0 + [ScreenStage] Class=ScreenStage NextScreen=@SelectGameplayScreen() diff --git a/stepmania/src/Makefile.am b/stepmania/src/Makefile.am index 314017d1b4..ce357e0b80 100644 --- a/stepmania/src/Makefile.am +++ b/stepmania/src/Makefile.am @@ -47,7 +47,9 @@ ScreenSelectDifficulty.cpp ScreenSelectDifficulty.h ScreenSelectGroup.cpp Screen ScreenSelectMaster.cpp ScreenSelectMaster.h ScreenSelectMode.cpp ScreenSelectMode.h \ ScreenSelectMusic.cpp ScreenSelectMusic.h ScreenSelectStyle.cpp ScreenSelectStyle.h \ ScreenSystemLayer.cpp ScreenSystemLayer.h ScreenSetTime.cpp ScreenSetTime.h \ -ScreenSongOptions.cpp ScreenSongOptions.h ScreenStage.cpp ScreenStage.h ScreenStyleSplash.cpp ScreenStyleSplash.h \ +ScreenSongOptions.cpp ScreenSongOptions.h +ScreenSplash.cpp ScreenSplash.h \ +ScreenStage.cpp ScreenStage.h ScreenStyleSplash.cpp ScreenStyleSplash.h \ ScreenTest.cpp ScreenTest.h ScreenTestFonts.cpp ScreenTestFonts.h ScreenTestInput.cpp ScreenTestInput.h \ ScreenTestLights.cpp ScreenTestLights.h ScreenTestSound.cpp ScreenTestSound.h ScreenTextEntry.cpp ScreenTextEntry.h \ ScreenTitleMenu.cpp ScreenTitleMenu.h ScreenUnlock.cpp ScreenUnlock.h ScreenWithMenuElements.cpp ScreenWithMenuElements.h diff --git a/stepmania/src/ScreenSplash.cpp b/stepmania/src/ScreenSplash.cpp new file mode 100644 index 0000000000..29c33d1110 --- /dev/null +++ b/stepmania/src/ScreenSplash.cpp @@ -0,0 +1,88 @@ +#include "global.h" +#include "ScreenSplash.h" +#include "ThemeManager.h" +#include "RageUtil.h" + +const ScreenMessage SM_PrepScreen = (ScreenMessage)(SM_User+0); + + +REGISTER_SCREEN_CLASS( ScreenSplash ); +ScreenSplash::ScreenSplash( CString sClassName ) : ScreenWithMenuElements( sClassName ), + ALLOW_START_TO_SKIP (m_sName,"AllowStartToSkip"), + NEXT_SCREEN (m_sName,"NextScreen"), + PREV_SCREEN (m_sName,"PrevScreen"), + MINIMUM_LOAD_DELAY_SECONDS (m_sName,"MinimumLoadDelaySeconds") +{ + /* Prep the new screen once m_sprOverlay is complete. */ + this->PostScreenMessage( SM_PrepScreen, m_In.GetTweenTimeLeft() ); +} + +void ScreenSplash::HandleScreenMessage( const ScreenMessage SM ) +{ + switch( SM ) + { + case SM_PrepScreen: + { + RageTimer length; + SCREENMAN->PrepareScreen( NEXT_SCREEN ); + float fScreenLoadSeconds = length.GetDeltaTime(); + + /* The screen load took fScreenLoadSeconds. Move on to the next screen after + * no less than MINIMUM_DELAY seconds. */ + this->PostScreenMessage( SM_GoToNextScreen, max( 0, MINIMUM_LOAD_DELAY_SECONDS-fScreenLoadSeconds) ); + } + break; + case SM_BeginFadingOut: + StartTransitioning( SM_GoToNextScreen ); + break; + case SM_GoToNextScreen: + SCREENMAN->SetNewScreen( NEXT_SCREEN ); + break; + case SM_GoToPrevScreen: + SCREENMAN->DeletePreparedScreens(); + SCREENMAN->SetNewScreen( PREV_SCREEN ); + break; + } +} + +void ScreenSplash::MenuBack( PlayerNumber pn ) +{ + if( IsTransitioning() ) + return; + Back( SM_GoToPrevScreen ); +} + +void ScreenSplash::MenuStart( PlayerNumber pn ) +{ + if( IsTransitioning() ) + return; + if( !ALLOW_START_TO_SKIP.GetValue() ) + return; + this->ClearMessageQueue( SM_PrepScreen ); + HandleScreenMessage( SM_PrepScreen ); +} + +/* + * (c) 2001-2004 Chris Danford + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/stepmania/src/ScreenSplash.h b/stepmania/src/ScreenSplash.h new file mode 100644 index 0000000000..4d24a27faa --- /dev/null +++ b/stepmania/src/ScreenSplash.h @@ -0,0 +1,50 @@ +/* ScreenSplash - A loading screen. */ + +#ifndef ScreenSplash_H +#define ScreenSplash_H + +#include "ScreenWithMenuElements.h" +#include "ThemeMetric.h" + +class ScreenSplash : public ScreenWithMenuElements +{ +public: + ScreenSplash( CString sName ); + + virtual void HandleScreenMessage( const ScreenMessage SM ); + virtual void MenuBack( PlayerNumber pn ); + virtual void MenuStart( PlayerNumber pn ); + +protected: + ThemeMetric ALLOW_START_TO_SKIP; + ThemeMetric NEXT_SCREEN; + ThemeMetric PREV_SCREEN; + ThemeMetric MINIMUM_LOAD_DELAY_SECONDS; +}; + +#endif + +/* + * (c) 2001-2004 Chris Danford + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ diff --git a/stepmania/src/StepMania.dsp b/stepmania/src/StepMania.dsp index f8966b7259..ad43defdbf 100644 --- a/stepmania/src/StepMania.dsp +++ b/stepmania/src/StepMania.dsp @@ -62,7 +62,7 @@ IntDir=.\../Debug6 TargetDir=\stepmania\stepmania\Program TargetName=StepMania-debug SOURCE="$(InputPath)" -PreLink_Cmds=archutils\Win32\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=archutils\Win32\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=archutils\Win32\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi # End Special Build Tool @@ -99,7 +99,7 @@ IntDir=.\../Release6 TargetDir=\stepmania\stepmania\Program TargetName=StepMania SOURCE="$(InputPath)" -PreLink_Cmds=archutils\Win32\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ +PreLink_Cmds=archutils\Win32\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\ PostBuild_Cmds=archutils\Win32\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi # End Special Build Tool @@ -2856,6 +2856,14 @@ SOURCE=.\ScreenSongOptions.h # End Source File # Begin Source File +SOURCE=.\ScreenSplash.cpp +# End Source File +# Begin Source File + +SOURCE=.\ScreenSplash.h +# End Source File +# Begin Source File + SOURCE=.\ScreenStage.cpp # End Source File # Begin Source File diff --git a/stepmania/src/StepMania.vcproj b/stepmania/src/StepMania.vcproj index ece7aa66d1..b9b8d2447f 100644 --- a/stepmania/src/StepMania.vcproj +++ b/stepmania/src/StepMania.vcproj @@ -487,6 +487,12 @@ cl /Zl /nologo /c verstub.cpp /Fo"$(IntDir)"\ + + + +