add manual cycling in STestLights

This commit is contained in:
Chris Danford
2005-04-21 19:54:11 +00:00
parent 0ea93e427b
commit 0fdd7ab7dd
4 changed files with 81 additions and 12 deletions
+41 -6
View File
@@ -31,7 +31,8 @@ static const CString LightsModeNames[NUM_LIGHTS_MODES] = {
"Gameplay", "Gameplay",
"Stage", "Stage",
"Cleared", "Cleared",
"Test", "TestAutoCycle",
"TestManualCycle",
}; };
XToString( LightsMode, NUM_LIGHTS_MODES ); XToString( LightsMode, NUM_LIGHTS_MODES );
@@ -41,8 +42,8 @@ LightsManager* LIGHTSMAN = NULL; // global and accessable from anywhere in our p
LightsManager::LightsManager(CString sDriver) LightsManager::LightsManager(CString sDriver)
{ {
m_LightsMode = LIGHTSMODE_JOINING; m_LightsMode = LIGHTSMODE_JOINING;
m_pDriver = MakeLightsDriver(sDriver); m_pDriver = MakeLightsDriver(sDriver);
m_fCurrentCurrentTestLightIndex = 0;
ZERO( m_fSecsLeftInCabinetLightBlink ); ZERO( m_fSecsLeftInCabinetLightBlink );
ZERO( m_fSecsLeftInGameButtonBlink ); ZERO( m_fSecsLeftInGameButtonBlink );
@@ -75,6 +76,12 @@ void LightsManager::Update( float fDeltaTime )
ZERO( m_LightsState.m_bGameButtonLights ); ZERO( m_LightsState.m_bGameButtonLights );
} }
if( m_LightsMode == LIGHTSMODE_TEST_AUTO_CYCLE )
{
m_fCurrentCurrentTestLightIndex += fDeltaTime;
m_fCurrentCurrentTestLightIndex = fmodf( m_fCurrentCurrentTestLightIndex, NUM_CABINET_LIGHTS*100 );
}
switch( m_LightsMode ) switch( m_LightsMode )
{ {
case LIGHTSMODE_JOINING: case LIGHTSMODE_JOINING:
@@ -152,9 +159,10 @@ void LightsManager::Update( float fDeltaTime )
m_LightsState.m_bCabinetLights[cl] = true; m_LightsState.m_bCabinetLights[cl] = true;
} }
break; break;
case LIGHTSMODE_TEST: case LIGHTSMODE_TEST_AUTO_CYCLE:
case LIGHTSMODE_TEST_MANUAL_CYCLE:
{ {
int iSec = (int)RageTimer::GetTimeSinceStartFast(); int iSec = GetCurrentTestLightIndex();
FOREACH_CabinetLight( cl ) FOREACH_CabinetLight( cl )
{ {
bool bOn = (iSec%NUM_CABINET_LIGHTS) == cl; bool bOn = (iSec%NUM_CABINET_LIGHTS) == cl;
@@ -244,9 +252,10 @@ void LightsManager::Update( float fDeltaTime )
} }
} }
break; break;
case LIGHTSMODE_TEST: case LIGHTSMODE_TEST_AUTO_CYCLE:
case LIGHTSMODE_TEST_MANUAL_CYCLE:
{ {
int iSec = (int)RageTimer::GetTimeSinceStartFast(); int iSec = GetCurrentTestLightIndex();
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons(); int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons();
@@ -288,6 +297,32 @@ LightsMode LightsManager::GetLightsMode()
return m_LightsMode; return m_LightsMode;
} }
void LightsManager::PrevTestLight()
{
m_fCurrentCurrentTestLightIndex -= 1;
m_fCurrentCurrentTestLightIndex = Quantize( m_fCurrentCurrentTestLightIndex, 1.0f );
fmodf( m_fCurrentCurrentTestLightIndex, NUM_CABINET_LIGHTS*100 );
}
void LightsManager::NextTestLight()
{
m_fCurrentCurrentTestLightIndex += 1;
m_fCurrentCurrentTestLightIndex = Quantize( m_fCurrentCurrentTestLightIndex, 1.0f );
fmodf( m_fCurrentCurrentTestLightIndex, NUM_CABINET_LIGHTS*100 );
}
CabinetLight LightsManager::GetCurrentTestCabinetLight()
{
return (CabinetLight)(GetCurrentTestLightIndex()%NUM_CABINET_LIGHTS);
}
int LightsManager::GetCurrentTestGameplayLight()
{
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons();
return GetCurrentTestLightIndex()%iNumGameButtonsToShow;
}
/* /*
* (c) 2003-2004 Chris Danford * (c) 2003-2004 Chris Danford
* All rights reserved. * All rights reserved.
+11 -1
View File
@@ -33,7 +33,8 @@ enum LightsMode
LIGHTSMODE_GAMEPLAY, LIGHTSMODE_GAMEPLAY,
LIGHTSMODE_STAGE, LIGHTSMODE_STAGE,
LIGHTSMODE_ALL_CLEARED, LIGHTSMODE_ALL_CLEARED,
LIGHTSMODE_TEST, LIGHTSMODE_TEST_AUTO_CYCLE,
LIGHTSMODE_TEST_MANUAL_CYCLE,
NUM_LIGHTS_MODES NUM_LIGHTS_MODES
}; };
const CString& LightsModeToString( LightsMode lm ); const CString& LightsModeToString( LightsMode lm );
@@ -61,6 +62,12 @@ public:
void SetLightsMode( LightsMode lm ); void SetLightsMode( LightsMode lm );
LightsMode GetLightsMode(); LightsMode GetLightsMode();
void PrevTestLight();
void NextTestLight();
CabinetLight GetCurrentTestCabinetLight();
int GetCurrentTestGameplayLight();
private: private:
float m_fSecsLeftInCabinetLightBlink[NUM_CABINET_LIGHTS]; float m_fSecsLeftInCabinetLightBlink[NUM_CABINET_LIGHTS];
float m_fSecsLeftInGameButtonBlink[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS]; float m_fSecsLeftInGameButtonBlink[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS];
@@ -68,6 +75,9 @@ private:
LightsDriver* m_pDriver; LightsDriver* m_pDriver;
LightsMode m_LightsMode; LightsMode m_LightsMode;
LightsState m_LightsState; LightsState m_LightsState;
int GetCurrentTestLightIndex() { return (int)m_fCurrentCurrentTestLightIndex; }
float m_fCurrentCurrentTestLightIndex;
}; };
+25 -5
View File
@@ -16,7 +16,7 @@ ScreenTestLights::ScreenTestLights( CString sClassName ) : ScreenWithMenuElement
{ {
LOG->Trace( "ScreenTestLights::ScreenTestLights()" ); LOG->Trace( "ScreenTestLights::ScreenTestLights()" );
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST ); LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_AUTO_CYCLE );
} }
void ScreenTestLights::Init() void ScreenTestLights::Init()
@@ -45,11 +45,16 @@ void ScreenTestLights::Update( float fDeltaTime )
{ {
Screen::Update( fDeltaTime ); Screen::Update( fDeltaTime );
int iSec = (int)RageTimer::GetTimeSinceStartFast();
CabinetLight cl = (CabinetLight)(iSec%NUM_CABINET_LIGHTS); if( m_timerBackToAutoCycle.Ago() > 20 )
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons(); {
GameButton gb = (GameButton)(iSec%iNumGameButtonsToShow); m_timerBackToAutoCycle.Touch();
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_AUTO_CYCLE );
}
CabinetLight cl = LIGHTSMAN->GetCurrentTestCabinetLight();
GameButton gb = (GameButton)(LIGHTSMAN->GetCurrentTestGameplayLight());
CString sCabLight = CabinetLightToString(cl); CString sCabLight = CabinetLightToString(cl);
CString sGameButton = GAMESTATE->GetCurrentGame()->m_szButtonNames[gb]; CString sGameButton = GAMESTATE->GetCurrentGame()->m_szButtonNames[gb];
@@ -82,10 +87,25 @@ void ScreenTestLights::HandleScreenMessage( const ScreenMessage SM )
case SM_GoToNextScreen: case SM_GoToNextScreen:
case SM_GoToPrevScreen: case SM_GoToPrevScreen:
SCREENMAN->SetNewScreen( "ScreenOptionsMenu" ); SCREENMAN->SetNewScreen( "ScreenOptionsMenu" );
LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU );
break; break;
} }
} }
void ScreenTestLights::MenuLeft( PlayerNumber pn )
{
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_MANUAL_CYCLE );
LIGHTSMAN->PrevTestLight();
m_timerBackToAutoCycle.Touch();
}
void ScreenTestLights::MenuRight( PlayerNumber pn )
{
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_MANUAL_CYCLE );
LIGHTSMAN->NextTestLight();
m_timerBackToAutoCycle.Touch();
}
void ScreenTestLights::MenuStart( PlayerNumber pn ) void ScreenTestLights::MenuStart( PlayerNumber pn )
{ {
MenuBack(pn); MenuBack(pn);
+4
View File
@@ -17,11 +17,15 @@ public:
virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); virtual void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI );
virtual void HandleScreenMessage( const ScreenMessage SM ); virtual void HandleScreenMessage( const ScreenMessage SM );
virtual void MenuLeft( PlayerNumber pn );
virtual void MenuRight( PlayerNumber pn );
virtual void MenuStart( PlayerNumber pn ); virtual void MenuStart( PlayerNumber pn );
virtual void MenuBack( PlayerNumber pn ); virtual void MenuBack( PlayerNumber pn );
private: private:
BitmapText m_textInputs; BitmapText m_textInputs;
RageTimer m_timerBackToAutoCycle;
}; };
#endif #endif