cycle individual lights in manual test, not groups
This commit is contained in:
@@ -41,12 +41,15 @@ LightsManager* LIGHTSMAN = NULL; // global and accessable from anywhere in our p
|
|||||||
|
|
||||||
LightsManager::LightsManager(CString sDriver)
|
LightsManager::LightsManager(CString sDriver)
|
||||||
{
|
{
|
||||||
m_LightsMode = LIGHTSMODE_JOINING;
|
|
||||||
m_pDriver = MakeLightsDriver(sDriver);
|
|
||||||
m_fCurrentCurrentTestLightIndex = 0;
|
|
||||||
|
|
||||||
ZERO( m_fSecsLeftInCabinetLightBlink );
|
ZERO( m_fSecsLeftInCabinetLightBlink );
|
||||||
ZERO( m_fSecsLeftInGameButtonBlink );
|
ZERO( m_fSecsLeftInGameButtonBlink );
|
||||||
|
|
||||||
|
m_LightsMode = LIGHTSMODE_JOINING;
|
||||||
|
m_pDriver = MakeLightsDriver(sDriver);
|
||||||
|
m_fTestAutoCycleCurrentIndex = 0;
|
||||||
|
m_clTestManualCycleCurrent = LIGHT_INVALID;
|
||||||
|
m_gcTestManualCycleCurrent = GAME_CONTROLLER_INVALID;
|
||||||
|
m_gbTestManualCycleCurrent = GAME_BUTTON_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
LightsManager::~LightsManager()
|
LightsManager::~LightsManager()
|
||||||
@@ -78,8 +81,8 @@ void LightsManager::Update( float fDeltaTime )
|
|||||||
|
|
||||||
if( m_LightsMode == LIGHTSMODE_TEST_AUTO_CYCLE )
|
if( m_LightsMode == LIGHTSMODE_TEST_AUTO_CYCLE )
|
||||||
{
|
{
|
||||||
m_fCurrentCurrentTestLightIndex += fDeltaTime;
|
m_fTestAutoCycleCurrentIndex += fDeltaTime;
|
||||||
m_fCurrentCurrentTestLightIndex = fmodf( m_fCurrentCurrentTestLightIndex, NUM_CABINET_LIGHTS*100 );
|
m_fTestAutoCycleCurrentIndex = fmodf( m_fTestAutoCycleCurrentIndex, NUM_CABINET_LIGHTS*100 );
|
||||||
}
|
}
|
||||||
|
|
||||||
switch( m_LightsMode )
|
switch( m_LightsMode )
|
||||||
@@ -160,9 +163,8 @@ void LightsManager::Update( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
||||||
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
|
||||||
{
|
{
|
||||||
int iSec = GetCurrentTestLightIndex();
|
int iSec = GetTestAutoCycleCurrentIndex();
|
||||||
FOREACH_CabinetLight( cl )
|
FOREACH_CabinetLight( cl )
|
||||||
{
|
{
|
||||||
bool bOn = (iSec%NUM_CABINET_LIGHTS) == cl;
|
bool bOn = (iSec%NUM_CABINET_LIGHTS) == cl;
|
||||||
@@ -170,6 +172,15 @@ void LightsManager::Update( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
||||||
|
{
|
||||||
|
FOREACH_CabinetLight( cl )
|
||||||
|
{
|
||||||
|
bool bOn = cl == m_clTestManualCycleCurrent;
|
||||||
|
m_LightsState.m_bCabinetLights[cl] = bOn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
}
|
}
|
||||||
@@ -253,17 +264,25 @@ void LightsManager::Update( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
||||||
|
{
|
||||||
|
int index = GetTestAutoCycleCurrentIndex();
|
||||||
|
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons();
|
||||||
|
wrap( index, MAX_GAME_CONTROLLERS*iNumGameButtonsToShow );
|
||||||
|
|
||||||
|
ZERO( m_LightsState.m_bGameButtonLights );
|
||||||
|
|
||||||
|
GameController gc = (GameController)(index / iNumGameButtonsToShow);
|
||||||
|
GameButton gb = (GameButton)(index % iNumGameButtonsToShow);
|
||||||
|
m_LightsState.m_bGameButtonLights[gc][gb] = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
||||||
{
|
{
|
||||||
int iSec = GetCurrentTestLightIndex();
|
|
||||||
|
|
||||||
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons();
|
|
||||||
|
|
||||||
FOREACH_GameController( gc )
|
FOREACH_GameController( gc )
|
||||||
{
|
{
|
||||||
FOREACH_GameButton( gb )
|
FOREACH_GameButton( gb )
|
||||||
{
|
{
|
||||||
bool bOn = gb==(iSec%iNumGameButtonsToShow);
|
bool bOn = gc==m_gcTestManualCycleCurrent && gb==m_gbTestManualCycleCurrent;
|
||||||
m_LightsState.m_bGameButtonLights[gc][gb] = bOn;
|
m_LightsState.m_bGameButtonLights[gc][gb] = bOn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -297,32 +316,58 @@ LightsMode LightsManager::GetLightsMode()
|
|||||||
return m_LightsMode;
|
return m_LightsMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightsManager::PrevTestLight()
|
void LightsManager::ChangeTestCabinetLight( int iDir )
|
||||||
{
|
{
|
||||||
m_fCurrentCurrentTestLightIndex -= 1;
|
m_gcTestManualCycleCurrent = GAME_CONTROLLER_INVALID;
|
||||||
m_fCurrentCurrentTestLightIndex = Quantize( m_fCurrentCurrentTestLightIndex, 1.0f );
|
m_gbTestManualCycleCurrent = GAME_BUTTON_INVALID;
|
||||||
fmodf( m_fCurrentCurrentTestLightIndex, NUM_CABINET_LIGHTS*100 );
|
|
||||||
|
m_clTestManualCycleCurrent = (CabinetLight)(m_clTestManualCycleCurrent+iDir);
|
||||||
|
wrap( (int&)m_clTestManualCycleCurrent, NUM_CABINET_LIGHTS );
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightsManager::NextTestLight()
|
void LightsManager::ChangeTestGameButtonLight( int iDir )
|
||||||
{
|
{
|
||||||
m_fCurrentCurrentTestLightIndex += 1;
|
m_clTestManualCycleCurrent = LIGHT_INVALID;
|
||||||
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();
|
int iNumGameButtonsToShow = GAMESTATE->GetCurrentGame()->GetNumGameplayButtons();
|
||||||
return GetCurrentTestLightIndex()%iNumGameButtonsToShow;
|
int index = m_gcTestManualCycleCurrent * iNumGameButtonsToShow + m_gbTestManualCycleCurrent;
|
||||||
|
|
||||||
|
index += iDir;
|
||||||
|
wrap( index, MAX_GAME_CONTROLLERS * iNumGameButtonsToShow );
|
||||||
|
|
||||||
|
m_gcTestManualCycleCurrent = (GameController)(index / iNumGameButtonsToShow);
|
||||||
|
m_gbTestManualCycleCurrent = (GameButton)(index % iNumGameButtonsToShow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CabinetLight LightsManager::GetFirstLitCabinetLight()
|
||||||
|
{
|
||||||
|
FOREACH_CabinetLight( cl )
|
||||||
|
{
|
||||||
|
if( m_LightsState.m_bCabinetLights[cl] )
|
||||||
|
return cl;
|
||||||
|
}
|
||||||
|
return LIGHT_INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LightsManager::GetFirstLitGameButtonLight( GameController &gcOut, GameButton &gbOut )
|
||||||
|
{
|
||||||
|
FOREACH_GameController( gc )
|
||||||
|
{
|
||||||
|
FOREACH_GameButton( gb )
|
||||||
|
{
|
||||||
|
if( m_LightsState.m_bGameButtonLights[gc][gb] )
|
||||||
|
{
|
||||||
|
gcOut = gc;
|
||||||
|
gbOut = gb;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gcOut = GAME_CONTROLLER_INVALID;
|
||||||
|
gbOut = GAME_BUTTON_INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) 2003-2004 Chris Danford
|
* (c) 2003-2004 Chris Danford
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ enum CabinetLight
|
|||||||
LIGHT_BUTTONS_RIGHT,
|
LIGHT_BUTTONS_RIGHT,
|
||||||
LIGHT_BASS_LEFT,
|
LIGHT_BASS_LEFT,
|
||||||
LIGHT_BASS_RIGHT,
|
LIGHT_BASS_RIGHT,
|
||||||
NUM_CABINET_LIGHTS
|
NUM_CABINET_LIGHTS,
|
||||||
|
LIGHT_INVALID
|
||||||
};
|
};
|
||||||
#define FOREACH_CabinetLight( i ) FOREACH_ENUM( CabinetLight, NUM_CABINET_LIGHTS, i )
|
#define FOREACH_CabinetLight( i ) FOREACH_ENUM( CabinetLight, NUM_CABINET_LIGHTS, i )
|
||||||
const CString& CabinetLightToString( CabinetLight cl );
|
const CString& CabinetLightToString( CabinetLight cl );
|
||||||
@@ -62,13 +63,18 @@ public:
|
|||||||
void SetLightsMode( LightsMode lm );
|
void SetLightsMode( LightsMode lm );
|
||||||
LightsMode GetLightsMode();
|
LightsMode GetLightsMode();
|
||||||
|
|
||||||
void PrevTestLight();
|
void PrevTestCabinetLight() { ChangeTestCabinetLight(-1); }
|
||||||
void NextTestLight();
|
void NextTestCabinetLight() { ChangeTestCabinetLight(+1); }
|
||||||
|
void PrevTestGameButtonLight() { ChangeTestGameButtonLight(-1); }
|
||||||
|
void NextTestGameButtonLight() { ChangeTestGameButtonLight(+1); }
|
||||||
|
|
||||||
CabinetLight GetCurrentTestCabinetLight();
|
CabinetLight GetFirstLitCabinetLight();
|
||||||
int GetCurrentTestGameplayLight();
|
void GetFirstLitGameButtonLight( GameController &gcOut, GameButton &gbOut );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void ChangeTestCabinetLight( int iDir );
|
||||||
|
void ChangeTestGameButtonLight( int iDir );
|
||||||
|
|
||||||
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];
|
||||||
|
|
||||||
@@ -76,8 +82,12 @@ private:
|
|||||||
LightsMode m_LightsMode;
|
LightsMode m_LightsMode;
|
||||||
LightsState m_LightsState;
|
LightsState m_LightsState;
|
||||||
|
|
||||||
int GetCurrentTestLightIndex() { return (int)m_fCurrentCurrentTestLightIndex; }
|
int GetTestAutoCycleCurrentIndex() { return (int)m_fTestAutoCycleCurrentIndex; }
|
||||||
float m_fCurrentCurrentTestLightIndex;
|
|
||||||
|
float m_fTestAutoCycleCurrentIndex;
|
||||||
|
CabinetLight m_clTestManualCycleCurrent;
|
||||||
|
GameController m_gcTestManualCycleCurrent;
|
||||||
|
GameButton m_gbTestManualCycleCurrent;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ void ScreenTestLights::Init()
|
|||||||
|
|
||||||
m_textInputs.LoadFromFont( THEME->GetPathF("Common","normal") );
|
m_textInputs.LoadFromFont( THEME->GetPathF("Common","normal") );
|
||||||
m_textInputs.SetText( "" );
|
m_textInputs.SetText( "" );
|
||||||
m_textInputs.SetXY( SCREEN_CENTER_X, SCREEN_CENTER_Y );
|
m_textInputs.SetXY( SCREEN_CENTER_X - 200, SCREEN_CENTER_Y );
|
||||||
m_textInputs.SetDiffuse( RageColor(1,1,1,1) );
|
m_textInputs.SetHorizAlign( Actor::align_left );
|
||||||
m_textInputs.SetZoom( 0.8f );
|
m_textInputs.SetZoom( 0.8f );
|
||||||
this->AddChild( &m_textInputs );
|
this->AddChild( &m_textInputs );
|
||||||
|
|
||||||
@@ -53,15 +53,39 @@ void ScreenTestLights::Update( float fDeltaTime )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CabinetLight cl = LIGHTSMAN->GetCurrentTestCabinetLight();
|
CabinetLight cl = LIGHTSMAN->GetFirstLitCabinetLight();
|
||||||
GameButton gb = (GameButton)(LIGHTSMAN->GetCurrentTestGameplayLight());
|
GameController gc;
|
||||||
CString sCabLight = CabinetLightToString(cl);
|
GameButton gb;
|
||||||
CString sGameButton = GAMESTATE->GetCurrentGame()->m_szButtonNames[gb];
|
LIGHTSMAN->GetFirstLitGameButtonLight( gc, gb );
|
||||||
|
|
||||||
CString s;
|
CString s;
|
||||||
s += ssprintf("cabinet light %d: %s\n", cl, sCabLight.c_str());
|
|
||||||
FOREACH_GameController( gc )
|
switch( LIGHTSMAN->GetLightsMode() )
|
||||||
s += ssprintf("controller %d light %d: %s\n", gc+1, gb, sGameButton.c_str());
|
{
|
||||||
|
case LIGHTSMODE_TEST_AUTO_CYCLE:
|
||||||
|
s += "Auto Cycle\n";
|
||||||
|
break;
|
||||||
|
case LIGHTSMODE_TEST_MANUAL_CYCLE:
|
||||||
|
s += "Manual Cycle\n";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( cl == LIGHT_INVALID )
|
||||||
|
s += "cabinet light: -----\n";
|
||||||
|
else
|
||||||
|
s += ssprintf( "cabinet light: %d %s\n", cl, CabinetLightToString(cl).c_str() );
|
||||||
|
|
||||||
|
if( gc == GAME_CONTROLLER_INVALID )
|
||||||
|
{
|
||||||
|
s += ssprintf( "controller light: -----\n" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CString sGameButton = GAMESTATE->GetCurrentGame()->m_szButtonNames[gb];
|
||||||
|
s += ssprintf( "controller light: P%d %d %s\n", gc+1, gb, sGameButton.c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
m_textInputs.SetText( s );
|
m_textInputs.SetText( s );
|
||||||
}
|
}
|
||||||
@@ -95,14 +119,20 @@ void ScreenTestLights::HandleScreenMessage( const ScreenMessage SM )
|
|||||||
void ScreenTestLights::MenuLeft( PlayerNumber pn )
|
void ScreenTestLights::MenuLeft( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_MANUAL_CYCLE );
|
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_MANUAL_CYCLE );
|
||||||
LIGHTSMAN->PrevTestLight();
|
if( pn == PLAYER_1 )
|
||||||
|
LIGHTSMAN->PrevTestCabinetLight();
|
||||||
|
else
|
||||||
|
LIGHTSMAN->PrevTestGameButtonLight();
|
||||||
m_timerBackToAutoCycle.Touch();
|
m_timerBackToAutoCycle.Touch();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenTestLights::MenuRight( PlayerNumber pn )
|
void ScreenTestLights::MenuRight( PlayerNumber pn )
|
||||||
{
|
{
|
||||||
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_MANUAL_CYCLE );
|
LIGHTSMAN->SetLightsMode( LIGHTSMODE_TEST_MANUAL_CYCLE );
|
||||||
LIGHTSMAN->NextTestLight();
|
if( pn == PLAYER_1 )
|
||||||
|
LIGHTSMAN->NextTestCabinetLight();
|
||||||
|
else
|
||||||
|
LIGHTSMAN->NextTestGameButtonLight();
|
||||||
m_timerBackToAutoCycle.Touch();
|
m_timerBackToAutoCycle.Touch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user