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",
"Stage",
"Cleared",
"Test",
"TestAutoCycle",
"TestManualCycle",
};
XToString( LightsMode, NUM_LIGHTS_MODES );
@@ -41,8 +42,8 @@ LightsManager* LIGHTSMAN = NULL; // global and accessable from anywhere in our p
LightsManager::LightsManager(CString sDriver)
{
m_LightsMode = LIGHTSMODE_JOINING;
m_pDriver = MakeLightsDriver(sDriver);
m_fCurrentCurrentTestLightIndex = 0;
ZERO( m_fSecsLeftInCabinetLightBlink );
ZERO( m_fSecsLeftInGameButtonBlink );
@@ -75,6 +76,12 @@ void LightsManager::Update( float fDeltaTime )
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 )
{
case LIGHTSMODE_JOINING:
@@ -152,9 +159,10 @@ void LightsManager::Update( float fDeltaTime )
m_LightsState.m_bCabinetLights[cl] = true;
}
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 )
{
bool bOn = (iSec%NUM_CABINET_LIGHTS) == cl;
@@ -244,9 +252,10 @@ void LightsManager::Update( float fDeltaTime )
}
}
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();
@@ -288,6 +297,32 @@ LightsMode LightsManager::GetLightsMode()
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
* All rights reserved.
+11 -1
View File
@@ -33,7 +33,8 @@ enum LightsMode
LIGHTSMODE_GAMEPLAY,
LIGHTSMODE_STAGE,
LIGHTSMODE_ALL_CLEARED,
LIGHTSMODE_TEST,
LIGHTSMODE_TEST_AUTO_CYCLE,
LIGHTSMODE_TEST_MANUAL_CYCLE,
NUM_LIGHTS_MODES
};
const CString& LightsModeToString( LightsMode lm );
@@ -61,6 +62,12 @@ public:
void SetLightsMode( LightsMode lm );
LightsMode GetLightsMode();
void PrevTestLight();
void NextTestLight();
CabinetLight GetCurrentTestCabinetLight();
int GetCurrentTestGameplayLight();
private:
float m_fSecsLeftInCabinetLightBlink[NUM_CABINET_LIGHTS];
float m_fSecsLeftInGameButtonBlink[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS];
@@ -68,6 +75,9 @@ private:
LightsDriver* m_pDriver;
LightsMode m_LightsMode;
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()" );
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST );
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_AUTO_CYCLE );
}
void ScreenTestLights::Init()
@@ -45,11 +45,16 @@ void ScreenTestLights::Update( float fDeltaTime )
{
Screen::Update( fDeltaTime );
int iSec = (int)RageTimer::GetTimeSinceStartFast();
CabinetLight cl = (CabinetLight)(iSec%NUM_CABINET_LIGHTS);
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons();
GameButton gb = (GameButton)(iSec%iNumGameButtonsToShow);
if( m_timerBackToAutoCycle.Ago() > 20 )
{
m_timerBackToAutoCycle.Touch();
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_AUTO_CYCLE );
}
CabinetLight cl = LIGHTSMAN->GetCurrentTestCabinetLight();
GameButton gb = (GameButton)(LIGHTSMAN->GetCurrentTestGameplayLight());
CString sCabLight = CabinetLightToString(cl);
CString sGameButton = GAMESTATE->GetCurrentGame()->m_szButtonNames[gb];
@@ -82,10 +87,25 @@ void ScreenTestLights::HandleScreenMessage( const ScreenMessage SM )
case SM_GoToNextScreen:
case SM_GoToPrevScreen:
SCREENMAN->SetNewScreen( "ScreenOptionsMenu" );
LIGHTSMAN->SetLightsMode( LIGHTSMODE_MENU );
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 )
{
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 HandleScreenMessage( const ScreenMessage SM );
virtual void MenuLeft( PlayerNumber pn );
virtual void MenuRight( PlayerNumber pn );
virtual void MenuStart( PlayerNumber pn );
virtual void MenuBack( PlayerNumber pn );
private:
BitmapText m_textInputs;
RageTimer m_timerBackToAutoCycle;
};
#endif