rendered paste body--- lightsmanager.cpp Sat Aug 28 21:58:08 2004
+++ lightsmanager.cp_ Sat Oct 06 03:06:56 2007
@@ -70,7 +70,8 @@
ZERO( m_LightsState.m_bCabinetLights );
ZERO( m_LightsState.m_bGameButtonLights );
}
-
+ int iFrame;
+ bool bStuck = false;
switch( m_LightsMode )
{
case LIGHTSMODE_JOINING:
@@ -113,19 +114,10 @@
FOREACH_CabinetLight( cl )
m_LightsState.m_bCabinetLights[cl] = false;
- int iBeat = (int)(GAMESTATE->m_fSongBeat);
- int iTopIndex = iBeat;
- wrap( iTopIndex, 4 );
- switch( iTopIndex )
- {
- case 0: m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_UP_LEFT] = true; break;
- case 1: m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_LR_RIGHT] = true; break;
- case 2: m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_UP_RIGHT] = true; break;
- case 3: m_LightsState.m_bCabinetLights[LIGHT_MARQUEE_LR_LEFT] = true; break;
- default: ASSERT(0);
- }
+ iFrame = ((int)((RageTimer::GetTimeSinceStart() - m_fLightsModeSince) / 0.266)) % 4;
+ m_LightsState.m_bCabinetLights[iFrame] = true;
- bool bBlinkOn = (iBeat%2)==0;
+ bool bBlinkOn = (iFrame & 2)!=0;
FOREACH_PlayerNumber( pn )
{
@@ -138,16 +130,38 @@
break;
case LIGHTSMODE_DEMONSTRATION:
case LIGHTSMODE_GAMEPLAY:
- FOREACH_CabinetLight( cl )
- m_LightsState.m_bCabinetLights[cl] = m_fSecsLeftInCabinetLightBlink[cl] > 0;
- break;
- case LIGHTSMODE_STAGE:
- case LIGHTSMODE_ALL_CLEARED:
{
+ bool bBlinkOn = false;
+
+ for (int i = 0; i < 4; i++) if (m_fSecsLeftInCabinetLightBlink[i] > 0) bBlinkOn = true;
+
FOREACH_CabinetLight( cl )
- m_LightsState.m_bCabinetLights[cl] = true;
+ if ((cl != 4) && (cl != 5))
+ m_LightsState.m_bCabinetLights[cl] = bBlinkOn;
+
+ float timesince = RageTimer::GetTimeSinceStart() - m_fLightsModeSince;
+ if ((timesince > 3.8) && (timesince < 4.8))
+ for (int i = 0; i < 4; i++) m_LightsState.m_bCabinetLights[i] = true;
+
+ if (timesince < 2.5)
+ bStuck = true;
+
+ break;
+ }
+ case LIGHTSMODE_ALL_CLEARED:
+ {
+ iFrame = ((int)((RageTimer::GetTimeSinceStart() - m_fLightsModeSince) / 0.066)) % 4;
+ m_LightsState.m_bCabinetLights[iFrame] = true;
+ }
+ break;
+
+ case LIGHTSMODE_STAGE:
+ {
+ bStuck = true;
}
break;
+ case LIGHTSMODE_EVALUATION:
+ break;
case LIGHTSMODE_TEST:
{
int iSec = (int)RageTimer::GetTimeSinceStart();
@@ -192,17 +206,43 @@
}
break;
case LIGHTSMODE_ALL_CLEARED:
- case LIGHTSMODE_STAGE:
- case LIGHTSMODE_JOINING:
{
+ iFrame = ((int)((RageTimer::GetTimeSinceStart() - m_fLightsModeSince) * 15)) % 4;
+ switch (iFrame)
+ {
+ case 0:
+ m_LightsState.m_bGameButtonLights[0][3] = true;
+ m_LightsState.m_bGameButtonLights[1][3] = true;
+ break;
+ case 1:
+ m_LightsState.m_bGameButtonLights[0][1] = true;
+ m_LightsState.m_bGameButtonLights[1][0] = true;
+ break;
+ case 2:
+ m_LightsState.m_bGameButtonLights[0][2] = true;
+ m_LightsState.m_bGameButtonLights[1][2] = true;
+ break;
+ case 3:
+ m_LightsState.m_bGameButtonLights[0][0] = true;
+ m_LightsState.m_bGameButtonLights[1][1] = true;
+ }
+
FOREACH_GameController( gc )
{
- bool bOn = GAMESTATE->m_bSideIsJoined[gc];
+ // don't blink unjoined sides
+ if( !GAMESTATE->m_bSideIsJoined[gc] )
+ continue;
FOREACH_GameButton( gb )
- m_LightsState.m_bGameButtonLights[gc][gb] = bOn;
+ {
+ bool bOn = INPUTMAPPER->IsButtonDown( GameInput(gc,gb) );
+ m_LightsState.m_bGameButtonLights[gc][gb] |= bOn;
+ }
}
}
+ break;
+ case LIGHTSMODE_STAGE:
+ case LIGHTSMODE_JOINING:
break;
case LIGHTSMODE_MENU:
case LIGHTSMODE_GAMEPLAY:
@@ -240,6 +280,9 @@
}
}
break;
+ case LIGHTSMODE_EVALUATION:
+ break;
+
case LIGHTSMODE_TEST:
{
int iSec = (int)RageTimer::GetTimeSinceStart();
@@ -261,12 +304,12 @@
}
// apply new light values we set above
- m_pDriver->Set( &m_LightsState );
+ if (!bStuck) m_pDriver->Set( &m_LightsState );
}
void LightsManager::BlinkCabinetLight( CabinetLight cl )
{
- m_fSecsLeftInCabinetLightBlink[cl] = LIGHTS_FALLOFF_SECONDS;
+ m_fSecsLeftInCabinetLightBlink[cl] = 0.25 / GAMESTATE->m_fCurBPS; //LIGHTS_FALLOFF_SECONDS;
}
void LightsManager::BlinkGameButton( GameInput gi )
@@ -276,6 +319,7 @@
void LightsManager::SetLightsMode( LightsMode lm )
{
+ if (m_LightsMode != lm) m_fLightsModeSince = (int)RageTimer::GetTimeSinceStart();
m_LightsMode = lm;
}
--- lightsmanager.h Mon Jun 07 18:20:02 2004
+++ lightsmanager.h_ Sat Oct 06 03:03:25 2007
@@ -34,6 +34,7 @@
LIGHTSMODE_STAGE,
LIGHTSMODE_ALL_CLEARED,
LIGHTSMODE_TEST,
+ LIGHTSMODE_EVALUATION,
NUM_LIGHTS_MODES
};
const CString& LightsModeToString( LightsMode lm );
@@ -63,6 +64,7 @@
private:
float m_fSecsLeftInCabinetLightBlink[NUM_CABINET_LIGHTS];
float m_fSecsLeftInGameButtonBlink[MAX_GAME_CONTROLLERS][MAX_GAME_BUTTONS];
+ float m_fLightsModeSince;
LightsDriver* m_pDriver;
LightsMode m_LightsMode;