fix double+stomp
This commit is contained in:
@@ -422,18 +422,19 @@ void NoteDataUtil::RemoveMines(NoteData &in, float fStartBeat, float fEndBeat )
|
||||
}
|
||||
|
||||
|
||||
static void GetTurnMapping( StepsType st, NoteDataUtil::TurnType tt, int NumTracks, int *iTakeFromTrack )
|
||||
static void GetTrackMapping( StepsType st, NoteDataUtil::TrackMapping tt, int NumTracks, int *iTakeFromTrack )
|
||||
{
|
||||
int t;
|
||||
|
||||
// Identity transform for cases not handled below.
|
||||
for( t = 0; t < MAX_NOTE_TRACKS; ++t )
|
||||
iTakeFromTrack[t] = t;
|
||||
|
||||
switch( tt )
|
||||
{
|
||||
case NoteDataUtil::left:
|
||||
case NoteDataUtil::right:
|
||||
// Is there a way to do this withoutn handling each StepsType? -Chris
|
||||
// Identity transform for ones not handled below. What should we do here?
|
||||
for( t = 0; t < MAX_NOTE_TRACKS; ++t )
|
||||
iTakeFromTrack[t] = t;
|
||||
switch( st )
|
||||
{
|
||||
case STEPS_TYPE_DANCE_SINGLE:
|
||||
@@ -526,6 +527,25 @@ static void GetTurnMapping( StepsType st, NoteDataUtil::TurnType tt, int NumTrac
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NoteDataUtil::stomp:
|
||||
switch( st )
|
||||
{
|
||||
case STEPS_TYPE_DANCE_SINGLE:
|
||||
case STEPS_TYPE_DANCE_DOUBLE:
|
||||
case STEPS_TYPE_DANCE_COUPLE:
|
||||
iTakeFromTrack[0] = 3;
|
||||
iTakeFromTrack[1] = 2;
|
||||
iTakeFromTrack[2] = 1;
|
||||
iTakeFromTrack[3] = 0;
|
||||
iTakeFromTrack[4] = 7;
|
||||
iTakeFromTrack[5] = 6;
|
||||
iTakeFromTrack[6] = 5;
|
||||
iTakeFromTrack[7] = 4;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
}
|
||||
@@ -566,10 +586,10 @@ static void SuperShuffleTaps( NoteData &in, int iStartIndex, int iEndIndex )
|
||||
}
|
||||
|
||||
|
||||
void NoteDataUtil::Turn( NoteData &in, StepsType st, TurnType tt, float fStartBeat, float fEndBeat )
|
||||
void NoteDataUtil::Turn( NoteData &in, StepsType st, TrackMapping tt, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
int iTakeFromTrack[MAX_NOTE_TRACKS]; // New track "t" will take from old track iTakeFromTrack[t]
|
||||
GetTurnMapping( st, tt, in.GetNumTracks(), iTakeFromTrack );
|
||||
GetTrackMapping( st, tt, in.GetNumTracks(), iTakeFromTrack );
|
||||
|
||||
if( fEndBeat == -1 )
|
||||
fEndBeat = in.GetMaxBeat();
|
||||
@@ -957,13 +977,16 @@ dont_add_hold:
|
||||
}
|
||||
}
|
||||
|
||||
void NoteDataUtil::Stomp( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
void NoteDataUtil::Stomp( NoteData &in, StepsType st, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
// Make all non jumps with ample space around them into jumps.
|
||||
|
||||
const int first_row = BeatToNoteRow( fStartBeat );
|
||||
const int last_row = min( BeatToNoteRow(fEndBeat), in.GetLastRow() );
|
||||
|
||||
int iTrackMapping[MAX_NOTE_TRACKS];
|
||||
GetTrackMapping( st, stomp, in.GetNumTracks(), iTrackMapping );
|
||||
|
||||
for( int r=first_row; r<last_row; r++ )
|
||||
{
|
||||
if( in.GetNumTracksWithTap(r) != 1 )
|
||||
@@ -993,8 +1016,7 @@ void NoteDataUtil::Stomp( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
if( iNumTracksHeld >= 1 )
|
||||
continue;
|
||||
|
||||
// TODO: Make this accurate for StepsTypes other than 4 panel cross.
|
||||
int iOppositeTrack = in.GetNumTracks()-1-t;
|
||||
int iOppositeTrack = iTrackMapping[t];
|
||||
in.SetTapNote( iOppositeTrack, r, TAP_ADDITION );
|
||||
}
|
||||
}
|
||||
@@ -1312,7 +1334,7 @@ void NoteDataUtil::TransformNoteData( NoteData &nd, const PlayerOptions &po, Ste
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_MINES] ) NoteDataUtil::AddMines(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_ECHO] ) NoteDataUtil::Echo(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_PLANTED] ) NoteDataUtil::Planted(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_STOMP] ) NoteDataUtil::Stomp(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_STOMP] ) NoteDataUtil::Stomp(nd, st, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_TWISTER] ) NoteDataUtil::Twister(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_NOHANDS] ) NoteDataUtil::RemoveHands(nd, fStartBeat, fEndBeat);
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ namespace NoteDataUtil
|
||||
void RemoveHoldNotes( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void RemoveHands( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void RemoveMines( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
enum TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
|
||||
void Turn( NoteData &in, StepsType st, TurnType tt, float fStartBeat = 0, float fEndBeat = -1 );
|
||||
enum TrackMapping { left, right, mirror, shuffle, super_shuffle, stomp, NUM_TRACK_MAPPINGS };
|
||||
void Turn( NoteData &in, StepsType st, TrackMapping tt, float fStartBeat = 0, float fEndBeat = -1 );
|
||||
void Little( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Wide( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Big( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
@@ -53,7 +53,7 @@ namespace NoteDataUtil
|
||||
void AddMines( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Echo( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Planted( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Stomp( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Stomp( NoteData &in, StepsType st, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Twister( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void ConvertTapsToHolds( NoteData &in, int iSimultaneousHolds, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
|
||||
|
||||
@@ -1573,6 +1573,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
|
||||
float fBeginBeat = m_NoteFieldEdit.m_fBeginMarker;
|
||||
float fEndBeat = m_NoteFieldEdit.m_fEndMarker;
|
||||
TransformType tt = (TransformType)iAnswers[c];
|
||||
StepsType st = GAMESTATE->GetCurrentStyleDef()->m_StepsType;
|
||||
switch( tt )
|
||||
{
|
||||
case noholds: NoteDataUtil::RemoveHoldNotes( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
@@ -1585,7 +1586,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
|
||||
case mines: NoteDataUtil::AddMines( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case echo: NoteDataUtil::Echo( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case planted: NoteDataUtil::Planted( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case stomp: NoteDataUtil::Stomp( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case stomp: NoteDataUtil::Stomp( m_NoteFieldEdit, st, fBeginBeat, fEndBeat ); break;
|
||||
case twister: NoteDataUtil::Twister( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case nohands: NoteDataUtil::RemoveHands( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
default: ASSERT(0);
|
||||
|
||||
Reference in New Issue
Block a user