diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index cbaca32932..78bab0cb3e 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -13,7 +13,7 @@ #include "NoteDataUtil.h" #include "RageUtil.h" #include "RageLog.h" - +#include "PlayerOptions.h" NoteType NoteDataUtil::GetSmallestNoteTypeForMeasure( const NoteData &n, int iMeasureIndex ) { @@ -890,3 +890,33 @@ void NoteDataUtil::Mines( NoteData &in ) in.SetTapNote(t,r,TAP_MINE); } } + +void NoteDataUtil::TransformNoteData( NoteData &nd, PlayerOptions &po, StepsType st ) +{ + if( !po.m_bHoldNotes ) + RemoveHoldNotes( nd ); + + switch( po.m_Turn ) + { + case PlayerOptions::TURN_NONE: break; + case PlayerOptions::TURN_MIRROR: NoteDataUtil::Turn( nd, st, NoteDataUtil::mirror ); break; + case PlayerOptions::TURN_LEFT: NoteDataUtil::Turn( nd, st, NoteDataUtil::left ); break; + case PlayerOptions::TURN_RIGHT: NoteDataUtil::Turn( nd, st, NoteDataUtil::right ); break; + case PlayerOptions::TURN_SHUFFLE: NoteDataUtil::Turn( nd, st, NoteDataUtil::shuffle ); break; + case PlayerOptions::TURN_SUPER_SHUFFLE: NoteDataUtil::Turn( nd, st, NoteDataUtil::super_shuffle ); break; + default: ASSERT(0); + } + + switch( po.m_Transform ) + { + case PlayerOptions::TRANSFORM_NONE: break; + case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(nd); break; + case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(nd); break; + case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(nd); break; + case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick(nd); break; + case PlayerOptions::TRANSFORM_SKIPPY: NoteDataUtil::Skippy(nd); break; + case PlayerOptions::TRANSFORM_MINES: NoteDataUtil::Mines(nd); break; + default: ASSERT(0); + } +} + diff --git a/stepmania/src/NoteDataUtil.h b/stepmania/src/NoteDataUtil.h index 01419618f1..1c07b1c228 100644 --- a/stepmania/src/NoteDataUtil.h +++ b/stepmania/src/NoteDataUtil.h @@ -18,6 +18,7 @@ #include "NoteTypes.h" #include "NoteData.h" +struct PlayerOptions; /* Utils for NoteData. Things should go in here if they can be (cleanly and * efficiently) implemented using only NoteData's primitives; this improves @@ -74,6 +75,8 @@ namespace NoteDataUtil // Remove all tap notes that fail this mask void EliminateNonPassingTaps( NoteData &in, int row, const bool bValidMask[] ); + + void TransformNoteData( NoteData &nd, PlayerOptions &po, StepsType st ); }; #endif diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 54700b6a26..bb105a0927 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -122,33 +122,8 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, Combine if( m_pScore ) m_pScore->Init( pn ); - if( !GAMESTATE->m_PlayerOptions[pn].m_bHoldNotes ) - NoteDataUtil::RemoveHoldNotes(*this); - - StepsType st = GAMESTATE->GetCurrentStyleDef()->m_StepsType; - - switch( GAMESTATE->m_PlayerOptions[pn].m_Turn ) - { - case PlayerOptions::TURN_NONE: break; - case PlayerOptions::TURN_MIRROR: NoteDataUtil::Turn( *this, st, NoteDataUtil::mirror ); break; - case PlayerOptions::TURN_LEFT: NoteDataUtil::Turn( *this, st, NoteDataUtil::left ); break; - case PlayerOptions::TURN_RIGHT: NoteDataUtil::Turn( *this, st, NoteDataUtil::right ); break; - case PlayerOptions::TURN_SHUFFLE: NoteDataUtil::Turn( *this, st, NoteDataUtil::shuffle ); break; - case PlayerOptions::TURN_SUPER_SHUFFLE: NoteDataUtil::Turn( *this, st, NoteDataUtil::super_shuffle ); break; - default: ASSERT(0); - } - - switch( GAMESTATE->m_PlayerOptions[pn].m_Transform ) - { - case PlayerOptions::TRANSFORM_NONE: break; - case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(*this); break; - case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(*this); break; - case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(*this); break; - case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick(*this); break; - case PlayerOptions::TRANSFORM_SKIPPY: NoteDataUtil::Skippy(*this); break; - case PlayerOptions::TRANSFORM_MINES: NoteDataUtil::Mines(*this); break; - default: ASSERT(0); - } + /* Apply transforms. */ + NoteDataUtil::TransformNoteData( *this, GAMESTATE->m_PlayerOptions[pn], GAMESTATE->GetCurrentStyleDef()->m_StepsType ); int iStartDrawingAtPixels = GAMESTATE->m_bEditing ? -100 : START_DRAWING_AT_PIXELS; int iStopDrawingAtPixels = GAMESTATE->m_bEditing ? 400 : STOP_DRAWING_AT_PIXELS;