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;
|
int t;
|
||||||
|
|
||||||
|
// Identity transform for cases not handled below.
|
||||||
|
for( t = 0; t < MAX_NOTE_TRACKS; ++t )
|
||||||
|
iTakeFromTrack[t] = t;
|
||||||
|
|
||||||
switch( tt )
|
switch( tt )
|
||||||
{
|
{
|
||||||
case NoteDataUtil::left:
|
case NoteDataUtil::left:
|
||||||
case NoteDataUtil::right:
|
case NoteDataUtil::right:
|
||||||
// Is there a way to do this withoutn handling each StepsType? -Chris
|
// 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 )
|
switch( st )
|
||||||
{
|
{
|
||||||
case STEPS_TYPE_DANCE_SINGLE:
|
case STEPS_TYPE_DANCE_SINGLE:
|
||||||
@@ -526,6 +527,25 @@ static void GetTurnMapping( StepsType st, NoteDataUtil::TurnType tt, int NumTrac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
ASSERT(0);
|
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]
|
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 )
|
if( fEndBeat == -1 )
|
||||||
fEndBeat = in.GetMaxBeat();
|
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.
|
// Make all non jumps with ample space around them into jumps.
|
||||||
|
|
||||||
const int first_row = BeatToNoteRow( fStartBeat );
|
const int first_row = BeatToNoteRow( fStartBeat );
|
||||||
const int last_row = min( BeatToNoteRow(fEndBeat), in.GetLastRow() );
|
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++ )
|
for( int r=first_row; r<last_row; r++ )
|
||||||
{
|
{
|
||||||
if( in.GetNumTracksWithTap(r) != 1 )
|
if( in.GetNumTracksWithTap(r) != 1 )
|
||||||
@@ -993,8 +1016,7 @@ void NoteDataUtil::Stomp( NoteData &in, float fStartBeat, float fEndBeat )
|
|||||||
if( iNumTracksHeld >= 1 )
|
if( iNumTracksHeld >= 1 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// TODO: Make this accurate for StepsTypes other than 4 panel cross.
|
int iOppositeTrack = iTrackMapping[t];
|
||||||
int iOppositeTrack = in.GetNumTracks()-1-t;
|
|
||||||
in.SetTapNote( iOppositeTrack, r, TAP_ADDITION );
|
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_MINES] ) NoteDataUtil::AddMines(nd, fStartBeat, fEndBeat);
|
||||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_ECHO] ) NoteDataUtil::Echo(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_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_TWISTER] ) NoteDataUtil::Twister(nd, fStartBeat, fEndBeat);
|
||||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_NOHANDS] ) NoteDataUtil::RemoveHands(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 RemoveHoldNotes( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||||
void RemoveHands( 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 );
|
void RemoveMines( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||||
enum TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
|
enum TrackMapping { left, right, mirror, shuffle, super_shuffle, stomp, NUM_TRACK_MAPPINGS };
|
||||||
void Turn( NoteData &in, StepsType st, TurnType tt, float fStartBeat = 0, float fEndBeat = -1 );
|
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 Little( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||||
void Wide( 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 );
|
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 AddMines( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||||
void Echo( 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 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 Twister( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||||
void ConvertTapsToHolds( NoteData &in, int iSimultaneousHolds, 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 fBeginBeat = m_NoteFieldEdit.m_fBeginMarker;
|
||||||
float fEndBeat = m_NoteFieldEdit.m_fEndMarker;
|
float fEndBeat = m_NoteFieldEdit.m_fEndMarker;
|
||||||
TransformType tt = (TransformType)iAnswers[c];
|
TransformType tt = (TransformType)iAnswers[c];
|
||||||
|
StepsType st = GAMESTATE->GetCurrentStyleDef()->m_StepsType;
|
||||||
switch( tt )
|
switch( tt )
|
||||||
{
|
{
|
||||||
case noholds: NoteDataUtil::RemoveHoldNotes( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
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 mines: NoteDataUtil::AddMines( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||||
case echo: NoteDataUtil::Echo( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
case echo: NoteDataUtil::Echo( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||||
case planted: NoteDataUtil::Planted( 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 twister: NoteDataUtil::Twister( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||||
case nohands: NoteDataUtil::RemoveHands( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
case nohands: NoteDataUtil::RemoveHands( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||||
default: ASSERT(0);
|
default: ASSERT(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user