diff --git a/stepmania/src/LightsManager.cpp b/stepmania/src/LightsManager.cpp index d19634d407..6db227ab7b 100644 --- a/stepmania/src/LightsManager.cpp +++ b/stepmania/src/LightsManager.cpp @@ -151,8 +151,18 @@ void LightsManager::Update( float fDeltaTime ) case LIGHTSMODE_DEMONSTRATION: case LIGHTSMODE_GAMEPLAY: { - FOREACH_CabinetLight( cl ) - m_LightsState.m_bCabinetLights[cl] = m_fSecsLeftInCabinetLightBlink[cl] > 0 ; + + if (PREFSMAN->m_bLightsOrOutput) + { + bool bOn=false; + FOREACH_CabinetLight( cl ) + bOn = (m_fSecsLeftInCabinetLightBlink[cl] > 0) || bOn; + FOREACH_CabinetLight( cl ) + m_LightsState.m_bCabinetLights[cl] = bOn; + } + else + FOREACH_CabinetLight( cl ) + m_LightsState.m_bCabinetLights[cl] = m_fSecsLeftInCabinetLightBlink[cl] > 0 ; } break; case LIGHTSMODE_STAGE: diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 7221a8115b..f3fd4cb12b 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -28,6 +28,8 @@ PrefsManager* PREFSMAN = NULL; // global and accessable from anywhere in our pro const float DEFAULT_SOUND_VOLUME = 1.00f; const CString DEFAULT_LIGHTS_DRIVER = "Null"; +const CString DEFAULT_LIGHTS_STEPS_TYPE = "lights-cabinet"; +const CString DEFAULT_LIGHTS_STEPS_DIFFICULTY = "standard"; bool g_bAutoRestart = false; @@ -264,6 +266,9 @@ void PrefsManager::Init() #endif m_sLightsDriver = DEFAULT_LIGHTS_DRIVER; + m_sLightsStepsType = DEFAULT_LIGHTS_STEPS_TYPE; + m_sLightsStepsDifficulty = DEFAULT_LIGHTS_STEPS_DIFFICULTY; + m_bLightsOrOutput = false; m_bBlinkGameplayButtonLightsOnNote = false; m_bAllowUnacceleratedRenderer = false; @@ -443,6 +448,9 @@ void PrefsManager::ReadPrefsFromFile( CString sIni ) ini.GetValue( "Options", "MarvelousTiming", (int&)m_iMarvelousTiming ); ini.GetValue( "Options", "SoundVolume", m_fSoundVolume ); ini.GetValue( "Options", "LightsDriver", m_sLightsDriver ); + ini.GetValue( "Options", "LightsStepsType", m_sLightsStepsType ); + ini.GetValue( "Options", "LightsStepsDifficulty", m_sLightsStepsDifficulty ); + ini.GetValue( "Options", "LightsOrOutput", m_bLightsOrOutput); ini.GetValue( "Options", "SoundResampleQuality", m_iSoundResampleQuality ); ini.GetValue( "Options", "CoinMode", m_iCoinMode ); ini.GetValue( "Options", "CoinsPerCredit", m_iCoinsPerCredit ); @@ -751,7 +759,7 @@ void PrefsManager::SaveGlobalPrefsToDisk() const ini.SetValue( "Options", "AnisotropicFiltering", m_bAnisotropicFiltering ); ini.SetValue( "Options", "AutoRestart", g_bAutoRestart ); ini.SetValue( "Options", "SignProfileData", m_bSignProfileData ); - + ini.SetValue( "Options", "SoundWriteAhead", m_iSoundWriteAhead ); ini.SetValue( "Editor", "ShowBGChangesPlay", m_bEditorShowBGChangesPlay ); @@ -763,8 +771,14 @@ void PrefsManager::SaveGlobalPrefsToDisk() const ini.SetValue ( "Options", "SoundDrivers", m_sSoundDrivers ); if(m_fSoundVolume != DEFAULT_SOUND_VOLUME) ini.SetValue( "Options", "SoundVolume", m_fSoundVolume ); + if(m_bLightsOrOutput != false) + ini.SetValue( "Options", "LightsOrOutput", m_bLightsOrOutput ); if(m_sLightsDriver != DEFAULT_LIGHTS_DRIVER) ini.SetValue( "Options", "LightsDriver", m_sLightsDriver ); + if(m_sLightsStepsType != DEFAULT_LIGHTS_STEPS_TYPE) + ini.SetValue( "Options", "LightsStepsType", m_sLightsStepsType ); + if(m_sLightsStepsDifficulty != DEFAULT_LIGHTS_STEPS_DIFFICULTY) + ini.SetValue( "Options", "LightsStepsDifficulty", m_sLightsStepsDifficulty ); if(m_sMovieDrivers != DEFAULT_MOVIE_DRIVER_LIST) ini.SetValue ( "Options", "MovieDrivers", m_sMovieDrivers ); diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 7a42abda65..efd6093d36 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -243,6 +243,9 @@ public: int m_iSoundResampleQuality; CString m_sMovieDrivers; CString m_sLightsDriver; + CString m_sLightsStepsType; + CString m_sLightsStepsDifficulty; + bool m_bLightsOrOutput; bool m_bBlinkGameplayButtonLightsOnNote; bool m_bAllowUnacceleratedRenderer; bool m_bThreadedInput; diff --git a/stepmania/src/ScreenGameplay.cpp b/stepmania/src/ScreenGameplay.cpp index 0b971b447f..6c443378d0 100644 --- a/stepmania/src/ScreenGameplay.cpp +++ b/stepmania/src/ScreenGameplay.cpp @@ -1040,12 +1040,27 @@ void ScreenGameplay::LoadNextSong() // Load cabinet lights data // { + int i; m_CabinetLightsNoteData.Init(); ASSERT( GAMESTATE->m_pCurSong ); vector vSteps; - GAMESTATE->m_pCurSong->GetSteps( vSteps, STEPS_TYPE_LIGHTS_CABINET ); + + StepsType lightsSteps = STEPS_TYPE_LIGHTS_CABINET; + + lightsSteps = GAMEMAN->StringToNotesType(PREFSMAN->m_sLightsStepsType); + + GAMESTATE->m_pCurSong->GetSteps( vSteps, lightsSteps ); + if( !vSteps.empty() ) vSteps[0]->GetNoteData( &m_CabinetLightsNoteData ); + + for (i=0;im_sLightsStepsDifficulty); + Difficulty DC2 = vSteps[i]->GetDifficulty(); + if (DC == DC2) + vSteps[i]->GetNoteData( &m_CabinetLightsNoteData ); + } // Convert to 4s so that we can check if we're inside a hold with just // GetTapNote().