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