diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index 9b905a7a44..7f2908aade 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -487,7 +487,7 @@ int FindLongestOverlappingHoldNoteForAnyTrack( const NoteData &in, int iRow ) void LightTransformHelper( const NoteData &in, NoteData &out, const vector &aiTracks ) { for( unsigned i = 0; i < aiTracks.size(); ++i ) - ASSERT_M( aiTracks[i] < out.GetNumTracks(), ssprintf("%i, %i", aiTracks[i], out.GetNumTracks) ); + ASSERT_M( aiTracks[i] < out.GetNumTracks(), ssprintf("%i, %i", aiTracks[i], out.GetNumTracks()) ); FOREACH_NONEMPTY_ROW_ALL_TRACKS( in, r ) { @@ -542,6 +542,36 @@ void NoteDataUtil::LoadTransformedLights( const NoteData &in, NoteData &out, int LightTransformHelper( in, out, aiTracks ); } +/* This transform is specific to STEPS_TYPE_LIGHTS_CABINET. */ +#include "LightsManager.h" // for LIGHT_* +void NoteDataUtil::LoadTransformedLightsFromTwo( const NoteData &marquee, const NoteData &bass, NoteData &out ) +{ + ASSERT( marquee.GetNumTracks() >= 4 ); + ASSERT( bass.GetNumTracks() >= 1 ); + + /* For each track in "marquee", enable a track in the marquee lights. This will + * reinit out. */ + { + NoteData transformed_marquee; + transformed_marquee.CopyAll( marquee ); + Wide( transformed_marquee ); + + const int iOriginalTrackToTakeFrom[NUM_CABINET_LIGHTS] = { 0, 1, 2, 3, -1, -1, -1, -1 }; + out.LoadTransformed( transformed_marquee, NUM_CABINET_LIGHTS, iOriginalTrackToTakeFrom ); + } + + /* For each track in "bass", enable the bass lights. */ + { + vector aiTracks; + aiTracks.push_back( LIGHT_BASS_LEFT ); + aiTracks.push_back( LIGHT_BASS_RIGHT ); + LightTransformHelper( bass, out, aiTracks ); + } + + /* Delete all mines. */ + NoteDataUtil::RemoveMines( out ); +} + void NoteDataUtil::CalculateRadarValues( const NoteData &in, float fSongSeconds, RadarValues& out ) { // The for loop and the assert are used to ensure that all fields of diff --git a/stepmania/src/NoteDataUtil.h b/stepmania/src/NoteDataUtil.h index e465cdaeaa..2d1aa4de4d 100644 --- a/stepmania/src/NoteDataUtil.h +++ b/stepmania/src/NoteDataUtil.h @@ -22,6 +22,7 @@ namespace NoteDataUtil void LoadTransformedSlidingWindow( const NoteData &in, NoteData &out, int iNewNumTracks ); void LoadOverlapped( const NoteData &in, NoteData &out, int iNewNumTracks ); void LoadTransformedLights( const NoteData &in, NoteData &out, int iNewNumTracks ); + void LoadTransformedLightsFromTwo( const NoteData &marquee, const NoteData &bass, NoteData &out ); void InsertHoldTails( NoteData &inout ); // radar values - return between 0.0 and 1.2