All pastes #739208 Raw Edit

Something

public text v1 · immutable
·published 2007-10-16 23:10 UTC
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;