repositioned MenuElements "play sound on first update" hack inside of Transition where it belongs

This commit is contained in:
Chris Danford
2003-04-13 06:29:02 +00:00
parent 82199383a8
commit 85c9e8a89e
10 changed files with 44 additions and 22 deletions
+1 -3
View File
@@ -138,7 +138,7 @@ bool CodeDetector::DetectAndAdjustMusicOptions( GameController controller )
const StyleDef* pStyleDef = GAMESTATE->GetCurrentStyleDef();
PlayerNumber pn = pStyleDef->ControllerToPlayerNumber( controller );
for( int c=0; c<CodeDetector::NUM_CODES; c++ )
for( int c=CODE_MIRROR; c<=CODE_CANCEL_ALL; c++ )
{
Code code = (Code)c;
@@ -162,8 +162,6 @@ bool CodeDetector::DetectAndAdjustMusicOptions( GameController controller )
case CODE_HOLDS: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bHoldNotes, true, false ); break;
case CODE_DARK: FLOAT_TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_fDark ); break;
case CODE_CANCEL_ALL: GAMESTATE->m_PlayerOptions[pn].Init(); break;
default:
ASSERT(0); // unhandled code
}
return true; // don't check any more
}
+1 -9
View File
@@ -94,19 +94,11 @@ void MenuElements::Load( CString sClassName, bool bEnableTimer, bool bLoadStyleI
m_soundBack.Load( THEME->GetPathToS("Common back") );
m_bStartedTransitionIn = false;
m_In.StartTransitioning();
}
void MenuElements::Update( float fDeltaTime )
{
if(!m_bStartedTransitionIn)
{
/* Start the transition on the first update, not in the ctor, so
* we don't play a sound while our parent is still loading. */
m_bStartedTransitionIn = true;
m_In.StartTransitioning( SM_None );
}
ActorFrame::Update(fDeltaTime);
}
-2
View File
@@ -54,8 +54,6 @@ public: // let owner tinker with these objects
Transition m_Back;
RageSound m_soundBack;
bool m_bStartedTransitionIn;
};
#endif
+1 -1
View File
@@ -52,7 +52,7 @@ ScreenDemonstration::ScreenDemonstration() : ScreenJukebox( PrepareForDemonstrat
if( GAMESTATE->m_pCurSong == NULL ) // we didn't find a song.
{
this->PostScreenMessage( SM_GoToNextScreen, 0 ); // Abort demonstration.
HandleScreenMessage( SM_GoToNextScreen ); // Abort demonstration.
return;
}
+2
View File
@@ -332,6 +332,8 @@ void ScreenManager::Update( float fDeltaTime )
else
pScreen->Update( fDeltaTime );
// TODO: If a new Screen is set during this Update, that new screen is Drawn
// before it's first Update.
m_SystemLayer->Update( fDeltaTime );
EmptyDeleteQueue();
+18
View File
@@ -17,6 +17,7 @@
#include "ScreenSandbox.h"
#include "GameConstantsAndTypes.h"
#include "ThemeManager.h"
ScreenSandbox::ScreenSandbox() : Screen("ScreenSandbox")
@@ -32,6 +33,10 @@ ScreenSandbox::ScreenSandbox() : Screen("ScreenSandbox")
obj.SetXY(CENTER_X, CENTER_Y);
// obj.SetZoom(50);
this->AddChild(&obj);
this->AddChild( &m_In );
this->AddChild( &m_Out );
}
void ScreenSandbox::HandleScreenMessage( const ScreenMessage SM )
@@ -40,9 +45,22 @@ void ScreenSandbox::HandleScreenMessage( const ScreenMessage SM )
void ScreenSandbox::Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI )
{
Screen::Input( DeviceI, type, GameI, MenuI, StyleI );
}
void ScreenSandbox::Update( float fDeltaTime )
{
Screen::Update(fDeltaTime);
}
void ScreenSandbox::MenuLeft( PlayerNumber pn )
{
m_In.Load( THEME->GetPathToB("_menu in") );
m_In.StartTransitioning();
}
void ScreenSandbox::MenuRight( PlayerNumber pn )
{
m_Out.Load( THEME->GetPathToB("_menu out") );
m_Out.StartTransitioning();
}
+6
View File
@@ -14,6 +14,7 @@
#include "Screen.h"
#include "Sample3dObject.h"
#include "Quad.h"
#include "Transition.h"
class ScreenSandbox : public Screen
{
@@ -23,9 +24,14 @@ public:
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
virtual void HandleScreenMessage( const ScreenMessage SM );
void MenuLeft( PlayerNumber pn );
void MenuRight( PlayerNumber pn );
void Update(float f);
Sample3dObject obj;
Quad m_quad;
Transition m_In;
Transition m_Out;
};
-2
View File
@@ -32,8 +32,6 @@
#define BANNER_WIDTH THEME->GetMetricF("ScreenSelectGroup","BannerWidth")
#define BANNER_HEIGHT THEME->GetMetricF("ScreenSelectGroup","BannerHeight")
#define SLEEP_AFTER_TWEEN_OFF_SECONDS THEME->GetMetricF("ScreenSelectGroup","SleepAfterTweenOffSeconds")
#define HELP_TEXT THEME->GetMetric ("ScreenSelectGroup","HelpText")
#define TIMER_SECONDS THEME->GetMetricI("ScreenSelectGroup","TimerSeconds")
#define NEXT_SCREEN THEME->GetMetric ("ScreenSelectGroup","NextScreen")
+1
View File
@@ -55,6 +55,7 @@ ScreenTitleMenu::ScreenTitleMenu() : Screen("ScreenTitleMenu")
{
LOG->Trace( "ScreenTitleMenu::ScreenTitleMenu()" );
GAMESTATE->Reset();
GAMESTATE->m_bPlayersCanJoin = true;
CodeDetector::RefreshCacheItems();
+14 -5
View File
@@ -51,15 +51,20 @@ void Transition::Update( float fDeltaTime )
if( m_State == transitioning )
{
/* Start the transition on the first update, not in the ctor, so
* we don't play a sound while our parent is still loading. */
if( m_fSecsIntoTransition==0 ) // first update
m_sound.PlayRandom();
m_BGAnimation.Update( fDeltaTime );
if( m_fSecsIntoTransition > m_BGAnimation.GetLengthSeconds() ) // over
{
SCREENMAN->SendMessageToTopScreen( m_MessageToSendWhenDone );
m_fSecsIntoTransition = 0.0;
m_State = finished;
SCREENMAN->SendMessageToTopScreen( m_MessageToSendWhenDone );
}
m_fSecsIntoTransition += fDeltaTime;
else
m_fSecsIntoTransition += fDeltaTime;
}
}
@@ -67,8 +72,13 @@ void Transition::DrawPrimitives()
{
// Unless we're transitioning, don't draw because we'll waste resources drawing things
// that aren't visible. -Chris
if( m_State != transitioning )
switch( m_State )
{
// case waiting:
// return;
case finished:
return;
}
m_BGAnimation.Draw();
}
@@ -78,7 +88,6 @@ void Transition::StartTransitioning( ScreenMessage send_when_done )
ASSERT( m_State == waiting ); // can't call this more than once
m_MessageToSendWhenDone = send_when_done;
m_State = transitioning;
m_sound.PlayRandom();
m_fSecsIntoTransition = 0.0;
}