add manual cycling in STestLights
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user