add twister transform
reorganize transform options
This commit is contained in:
@@ -2718,7 +2718,7 @@ Line2=list,Accel;title,Acceler::-ation
|
||||
Line3=list,Effect
|
||||
Line4=list,Appearance;title,Appear::-ance
|
||||
Line5=list,Turn
|
||||
Line6=list,Transform;title,Insert
|
||||
Line6=list,Insert;title,Insert
|
||||
Line7=list,Scroll
|
||||
Line8=list,NoteSkins
|
||||
Line9=list,Holds
|
||||
@@ -2942,24 +2942,24 @@ TurnName,5=SHUFFLE
|
||||
Turn,6=mod,supershuffle
|
||||
TurnName,6=S.SHUFFLE
|
||||
|
||||
Transform=8
|
||||
TransformDefault=mod,no transform
|
||||
Transform,1=
|
||||
TransformName,1=OFF
|
||||
Transform,2=mod,little
|
||||
TransformName,2=LITTLE
|
||||
Transform,3=mod,wide
|
||||
TransformName,3=WIDE
|
||||
Transform,4=mod,big
|
||||
TransformName,4=BIG
|
||||
Transform,5=mod,quick
|
||||
TransformName,5=QUICK
|
||||
Transform,6=mod,skippy
|
||||
TransformName,6=SKIPPY
|
||||
Transform,7=mod,echo
|
||||
TransformName,7=ECHO
|
||||
Transform,8=mod,stomp
|
||||
TransformName,8=STOMP
|
||||
Insert=8
|
||||
InsertDefault=mod,no little,no wide,no big,no quick,no skippy,no echo,no stomp
|
||||
Insert,1=
|
||||
InsertName,1=OFF
|
||||
Insert,2=mod,little
|
||||
InsertName,2=LITTLE
|
||||
Insert,3=mod,wide
|
||||
InsertName,3=WIDE
|
||||
Insert,4=mod,big
|
||||
InsertName,4=BIG
|
||||
Insert,5=mod,quick
|
||||
InsertName,5=QUICK
|
||||
Insert,6=mod,skippy
|
||||
InsertName,6=SKIPPY
|
||||
Insert,7=mod,echo
|
||||
InsertName,7=ECHO
|
||||
Insert,8=mod,stomp
|
||||
InsertName,8=STOMP
|
||||
|
||||
Scroll=4
|
||||
ScrollDefault=mod,no reverse,no split,no alternate
|
||||
@@ -2972,14 +2972,16 @@ ScrollName,3=SPLIT
|
||||
Scroll,4=mod,alternate
|
||||
ScrollName,4=ALTERNATE
|
||||
|
||||
Holds=3
|
||||
HoldsDefault=mod,no noholds,no planted
|
||||
Holds=4
|
||||
HoldsDefault=mod,no noholds,no planted,no twister
|
||||
Holds,1=mod,noholds
|
||||
HoldsName,1=OFF
|
||||
Holds,2=
|
||||
HoldsName,2=ON
|
||||
Holds,3=mod,planted
|
||||
HoldsName,3=PLANTED
|
||||
Holds,4=mod,twister
|
||||
HoldsName,4=TWISTER
|
||||
|
||||
Mines=3
|
||||
MinesDefault=mod,no nomines,no mines
|
||||
|
||||
@@ -183,8 +183,8 @@ bool CodeDetector::DetectAndAdjustMusicOptions( GameController controller )
|
||||
case CODE_NEXT_APPEARANCE: GAMESTATE->m_PlayerOptions[pn].NextAppearance(); break;
|
||||
case CODE_NEXT_TURN: GAMESTATE->m_PlayerOptions[pn].NextTurn(); break;
|
||||
case CODE_REVERSE: GAMESTATE->m_PlayerOptions[pn].NextScroll(); break;
|
||||
case CODE_HOLDS: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bHoldNotes, true, false ); break;
|
||||
case CODE_MINES: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bMines, true, false ); break;
|
||||
case CODE_HOLDS: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bTransforms[PlayerOptions::TRANSFORM_NOHOLDS], true, false ); break;
|
||||
case CODE_MINES: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bTransforms[PlayerOptions::TRANSFORM_NOMINES], true, false ); break;
|
||||
case CODE_DARK: FLOAT_TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_fDark ); break;
|
||||
case CODE_CANCEL_ALL: GAMESTATE->m_PlayerOptions[pn].Init();
|
||||
GAMESTATE->m_PlayerOptions[pn].FromString( PREFSMAN->m_sDefaultModifiers ); break;
|
||||
|
||||
@@ -87,15 +87,21 @@ public:
|
||||
{
|
||||
int iNum = 0;
|
||||
for( int t=0; t<m_iNumTracks; t++ )
|
||||
if( GetTapNote(t, index) == TAP_TAP )
|
||||
{
|
||||
TapNote tn = GetTapNote(t, index);
|
||||
if( tn == TAP_TAP || tn == TAP_HOLD_HEAD )
|
||||
iNum++;
|
||||
}
|
||||
return iNum;
|
||||
}
|
||||
inline int GetFirstTrackWithTap( int index ) const
|
||||
{
|
||||
for( int t=0; t<m_iNumTracks; t++ )
|
||||
if( GetTapNote(t, index) == TAP_TAP )
|
||||
{
|
||||
TapNote tn = GetTapNote(t, index);
|
||||
if( tn == TAP_TAP || tn == TAP_HOLD_HEAD )
|
||||
return t;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
inline bool IsThereATapAtRow( int index ) const
|
||||
|
||||
@@ -260,33 +260,34 @@ float NoteDataUtil::GetChaosRadarValue( const NoteData &in, float fSongSeconds )
|
||||
return min( fReturn, 1.0f );
|
||||
}
|
||||
|
||||
void NoteDataUtil::RemoveHoldNotes(NoteData &in)
|
||||
void NoteDataUtil::RemoveHoldNotes(NoteData &in, float fStartBeat, float fEndBeat)
|
||||
{
|
||||
vector<int> tracks, rows;
|
||||
|
||||
// turn all the HoldNotes into TapNotes
|
||||
for( int i=0; i<in.GetNumHoldNotes(); i++ )
|
||||
for( int i=in.GetNumHoldNotes()-1; i>=0; i++ ) // iterate backwards so we can delete
|
||||
{
|
||||
const HoldNote &hn = in.GetHoldNote(i);
|
||||
const HoldNote hn = in.GetHoldNote(i);
|
||||
|
||||
tracks.push_back(hn.iTrack);
|
||||
rows.push_back(BeatToNoteRow(hn.fStartBeat));
|
||||
bool bHoldInRange =
|
||||
(hn.fStartBeat <= fStartBeat && hn.fEndBeat >= fEndBeat) ||
|
||||
(hn.fStartBeat >= fStartBeat && hn.fStartBeat <= fEndBeat) ||
|
||||
(hn.fEndBeat >= fStartBeat && hn.fEndBeat <= fEndBeat);
|
||||
|
||||
if( !bHoldInRange )
|
||||
continue; // skip
|
||||
|
||||
in.RemoveHoldNote( i );
|
||||
|
||||
in.SetTapNote(hn.iTrack, BeatToNoteRow(hn.fStartBeat), TAP_TAP);
|
||||
}
|
||||
|
||||
// Remove all HoldNotes
|
||||
while(in.GetNumHoldNotes())
|
||||
in.RemoveHoldNote(in.GetNumHoldNotes()-1);
|
||||
|
||||
for(unsigned j = 0; j < tracks.size(); ++j)
|
||||
in.SetTapNote(tracks[j], rows[j], TAP_TAP);
|
||||
}
|
||||
|
||||
|
||||
void NoteDataUtil::RemoveMines(NoteData &in)
|
||||
void NoteDataUtil::RemoveMines(NoteData &in, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
int max_row = in.GetLastRow();
|
||||
int iRowStart = BeatToNoteRow(fStartBeat);
|
||||
int iRowEnd = BeatToNoteRow(fEndBeat);
|
||||
for( int t=0; t<in.GetNumTracks(); t++ )
|
||||
for( int r=0; r<=max_row; r++ )
|
||||
for( int r=iRowStart; r<=iRowEnd; r++ )
|
||||
if( in.GetTapNote(t,r)==TAP_MINE )
|
||||
in.SetTapNote(t,r,TAP_EMPTY);
|
||||
}
|
||||
@@ -650,7 +651,7 @@ void NoteDataUtil::InsertIntelligentTaps( NoteData &in, float fWindowSizeBeats,
|
||||
in.Convert4sToHoldNotes();
|
||||
}
|
||||
|
||||
void NoteDataUtil::Mines( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
void NoteDataUtil::AddMines( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
const int first_row = BeatToNoteRow( fStartBeat );
|
||||
const int last_row = min( BeatToNoteRow(fEndBeat), in.GetLastRow() );
|
||||
@@ -737,20 +738,6 @@ void NoteDataUtil::Echo( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
if( bTapInMiddle )
|
||||
continue;
|
||||
|
||||
// don't insert a new note if there's already a hold headwithin this interval
|
||||
// TODO: Why is this necessary? Isn't there a TAP_TAP at the HoldNote head spot?
|
||||
for( int i=0; i<in.GetNumHoldNotes(); i++ )
|
||||
{
|
||||
int iHoldHeadRow = BeatToNoteRow(in.GetHoldNote(i).fStartBeat);
|
||||
if( iHoldHeadRow >= iRowWindowBegin+1 && iHoldHeadRow <= iRowWindowEnd-1 )
|
||||
{
|
||||
bTapInMiddle = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( bTapInMiddle )
|
||||
continue;
|
||||
|
||||
if( iEchoTrack==-1 )
|
||||
continue;
|
||||
|
||||
@@ -763,6 +750,14 @@ void NoteDataUtil::Echo( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
}
|
||||
|
||||
void NoteDataUtil::Planted( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
ConvertTapsToHolds( in, 1, fStartBeat, fEndBeat );
|
||||
}
|
||||
void NoteDataUtil::Twister( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
ConvertTapsToHolds( in, 2, fStartBeat, fEndBeat );
|
||||
}
|
||||
void NoteDataUtil::ConvertTapsToHolds( NoteData &in, int iSimultaneousHolds, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
// Convert all taps to freezes.
|
||||
const int first_row = BeatToNoteRow( fStartBeat );
|
||||
@@ -774,6 +769,7 @@ void NoteDataUtil::Planted( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
if( in.GetTapNote(t,r) == TAP_TAP )
|
||||
{
|
||||
// search for row of next TAP_TAP
|
||||
int iTapsLeft = iSimultaneousHolds;
|
||||
for( int r2=r+1; r2<=last_row; r2++ )
|
||||
{
|
||||
if( in.IsThereATapAtRow(r2) )
|
||||
@@ -782,7 +778,9 @@ void NoteDataUtil::Planted( NoteData &in, float fStartBeat, float fEndBeat )
|
||||
// don't convert the earlier one to a hold.
|
||||
if( in.GetFirstTrackWithTap(r2) == t )
|
||||
goto dont_add_hold;
|
||||
break; // stop searching
|
||||
iTapsLeft--;
|
||||
if( iTapsLeft == 0 )
|
||||
break; // stop searching
|
||||
}
|
||||
}
|
||||
float fStartBeat = NoteRowToBeat(r);
|
||||
@@ -1114,11 +1112,6 @@ void NoteDataUtil::ConvertAdditionsToRegular( NoteData &in )
|
||||
|
||||
void NoteDataUtil::TransformNoteData( NoteData &nd, const PlayerOptions &po, StepsType st, float fStartBeat, float fEndBeat )
|
||||
{
|
||||
if( !po.m_bHoldNotes )
|
||||
RemoveHoldNotes( nd );
|
||||
|
||||
if( !po.m_bMines )
|
||||
RemoveMines( nd );
|
||||
|
||||
switch( po.m_Turn )
|
||||
{
|
||||
@@ -1131,20 +1124,18 @@ void NoteDataUtil::TransformNoteData( NoteData &nd, const PlayerOptions &po, Ste
|
||||
default: ASSERT(0);
|
||||
}
|
||||
|
||||
switch( po.m_Transform )
|
||||
{
|
||||
case PlayerOptions::TRANSFORM_NONE: break;
|
||||
case PlayerOptions::TRANSFORM_LITTLE: NoteDataUtil::Little(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_WIDE: NoteDataUtil::Wide(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_BIG: NoteDataUtil::Big(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_QUICK: NoteDataUtil::Quick(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_SKIPPY: NoteDataUtil::Skippy(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_MINES: NoteDataUtil::Mines(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_ECHO: NoteDataUtil::Echo(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_PLANTED: NoteDataUtil::Planted(nd, fStartBeat, fEndBeat); break;
|
||||
case PlayerOptions::TRANSFORM_STOMP: NoteDataUtil::Stomp(nd, fStartBeat, fEndBeat); break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_NOHOLDS] ) NoteDataUtil::RemoveHoldNotes(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_NOMINES] ) NoteDataUtil::RemoveMines(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_LITTLE] ) NoteDataUtil::Little(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_WIDE] ) NoteDataUtil::Wide(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_BIG] ) NoteDataUtil::Big(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_QUICK] ) NoteDataUtil::Quick(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_SKIPPY] ) NoteDataUtil::Skippy(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_PLANTED] ) NoteDataUtil::Planted(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_STOMP] ) NoteDataUtil::Stomp(nd, fStartBeat, fEndBeat);
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_TWISTER] ) NoteDataUtil::Twister(nd, fStartBeat, fEndBeat);
|
||||
}
|
||||
|
||||
void NoteDataUtil::Scale( NoteData &nd, float fScale )
|
||||
|
||||
@@ -39,8 +39,8 @@ namespace NoteDataUtil
|
||||
// radar values - return between 0.0 and 1.2
|
||||
float GetRadarValue( const NoteData &in, RadarCategory rv, float fSongSeconds );
|
||||
|
||||
void RemoveHoldNotes( NoteData &in );
|
||||
void RemoveMines( NoteData &in );
|
||||
void RemoveHoldNotes( 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 );
|
||||
void Little( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
@@ -49,10 +49,12 @@ namespace NoteDataUtil
|
||||
void Quick( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Skippy( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void InsertIntelligentTaps( NoteData &in, float fWindowSizeBeats, float fInsertOffsetBeats, float fWindowStrideBeats, bool bSkippy, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Mines( 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 Planted( NoteData &in, float fStartBeat = 0, float fEndBeat = 99999 );
|
||||
void Stomp( 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 SuperShuffleTaps( NoteData &in );
|
||||
|
||||
// change all TAP_ADDITIONs to TAP_TAPs
|
||||
|
||||
@@ -49,7 +49,8 @@ void OptionIcon::Load( PlayerNumber pn, CString sText, bool bHeader )
|
||||
"1X",
|
||||
"HOLDS",
|
||||
"DEFAULT",
|
||||
"OVERHEAD" };
|
||||
"OVERHEAD"
|
||||
};
|
||||
|
||||
for( unsigned i=0; i<ARRAYSIZE(sStopWords); i++ )
|
||||
if( 0==stricmp(sText,sStopWords[i]) )
|
||||
|
||||
@@ -349,8 +349,10 @@ void PlayerMinus::Update( float fDeltaTime )
|
||||
* they won't align with this->m_HoldNoteScores. */
|
||||
if( po.m_Turn != PlayerOptions::TURN_NONE )
|
||||
RageException::Throw("Can't use turns as battle attacks");
|
||||
if( !po.m_bHoldNotes )
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_NOHOLDS] )
|
||||
RageException::Throw("Can't use NoHolds as a battle attack");
|
||||
if( po.m_bTransforms[PlayerOptions::TRANSFORM_NOMINES] )
|
||||
RageException::Throw("Can't use NoMines as a battle attack");
|
||||
|
||||
float fStartBeat, fEndBeat;
|
||||
mod.GetAttackBeats( GAMESTATE->m_pCurSong, m_PlayerNumber, fStartBeat, fEndBeat );
|
||||
|
||||
@@ -36,8 +36,7 @@ void PlayerOptions::Init()
|
||||
m_fSkew = 0; m_SpeedfSkew = 1.0f;
|
||||
m_fPassmark = 0; m_SpeedfPassmark = 1.0f;
|
||||
m_Turn = TURN_NONE;
|
||||
m_Transform = TRANSFORM_NONE;
|
||||
m_bHoldNotes = true;
|
||||
ZERO( m_bTransforms );
|
||||
m_bTimingAssist = false;
|
||||
m_bProTiming = false;
|
||||
m_sPositioning = ""; // "null"
|
||||
@@ -145,23 +144,19 @@ CString PlayerOptions::GetString() const
|
||||
default: ASSERT(0); // invalid
|
||||
}
|
||||
|
||||
switch( m_Transform )
|
||||
{
|
||||
case TRANSFORM_NONE: break;
|
||||
case TRANSFORM_LITTLE: sReturn += "Little, "; break;
|
||||
case TRANSFORM_WIDE: sReturn += "Wide, "; break;
|
||||
case TRANSFORM_BIG: sReturn += "Big, "; break;
|
||||
case TRANSFORM_QUICK: sReturn += "Quick, "; break;
|
||||
case TRANSFORM_SKIPPY: sReturn += "Skippy, "; break;
|
||||
case TRANSFORM_MINES: sReturn += "Mines, "; break;
|
||||
case TRANSFORM_ECHO: sReturn += "Echo, "; break;
|
||||
case TRANSFORM_PLANTED: sReturn += "Planted, "; break;
|
||||
case TRANSFORM_STOMP: sReturn += "Stomp, "; break;
|
||||
default: ASSERT(0); // invalid
|
||||
}
|
||||
if( m_bTransforms[TRANSFORM_NOHOLDS] ) sReturn += "NoHolds, ";
|
||||
if( m_bTransforms[TRANSFORM_NOMINES] ) sReturn += "NoMines, ";
|
||||
if( m_bTransforms[TRANSFORM_LITTLE] ) sReturn += "Little, ";
|
||||
if( m_bTransforms[TRANSFORM_WIDE] ) sReturn += "Wide, ";
|
||||
if( m_bTransforms[TRANSFORM_BIG] ) sReturn += "Big, ";
|
||||
if( m_bTransforms[TRANSFORM_QUICK] ) sReturn += "Quick, ";
|
||||
if( m_bTransforms[TRANSFORM_SKIPPY] ) sReturn += "Skippy, ";
|
||||
if( m_bTransforms[TRANSFORM_MINES] ) sReturn += "Mines, ";
|
||||
if( m_bTransforms[TRANSFORM_ECHO] ) sReturn += "Echo, ";
|
||||
if( m_bTransforms[TRANSFORM_PLANTED] ) sReturn += "Planted, ";
|
||||
if( m_bTransforms[TRANSFORM_STOMP] ) sReturn += "Stomp, ";
|
||||
if( m_bTransforms[TRANSFORM_TWISTER] ) sReturn += "Twister, ";
|
||||
|
||||
if( !m_bHoldNotes ) sReturn += "NoHolds, ";
|
||||
if( !m_bMines ) sReturn += "NoMines, ";
|
||||
if( m_bTimingAssist ) sReturn += "TimingAssist, ";
|
||||
if( m_bProTiming ) sReturn += "ProTiming, ";
|
||||
|
||||
@@ -277,22 +272,21 @@ void PlayerOptions::FromString( CString sOptions )
|
||||
else if( sBit == "right" ) m_Turn = TURN_RIGHT;
|
||||
else if( sBit == "shuffle" ) m_Turn = TURN_SHUFFLE;
|
||||
else if( sBit == "supershuffle" )m_Turn = TURN_SUPER_SHUFFLE;
|
||||
else if( sBit == "transform" && !on ) m_Transform = TRANSFORM_NONE; /* "no transform" */
|
||||
else if( sBit == "little" ) m_Transform = TRANSFORM_LITTLE;
|
||||
else if( sBit == "wide" ) m_Transform = TRANSFORM_WIDE;
|
||||
else if( sBit == "big" ) m_Transform = TRANSFORM_BIG;
|
||||
else if( sBit == "quick" ) m_Transform = TRANSFORM_QUICK;
|
||||
else if( sBit == "skippy" ) m_Transform = TRANSFORM_SKIPPY;
|
||||
else if( sBit == "mines" ) m_Transform = TRANSFORM_MINES;
|
||||
else if( sBit == "echo" ) m_Transform = TRANSFORM_ECHO;
|
||||
else if( sBit == "planted" ) m_Transform = TRANSFORM_PLANTED;
|
||||
else if( sBit == "stomp" ) m_Transform = TRANSFORM_STOMP;
|
||||
else if( sBit == "little" ) m_bTransforms[TRANSFORM_LITTLE] = on;
|
||||
else if( sBit == "wide" ) m_bTransforms[TRANSFORM_WIDE] = on;
|
||||
else if( sBit == "big" ) m_bTransforms[TRANSFORM_BIG] = on;
|
||||
else if( sBit == "quick" ) m_bTransforms[TRANSFORM_QUICK] = on;
|
||||
else if( sBit == "skippy" ) m_bTransforms[TRANSFORM_SKIPPY] = on;
|
||||
else if( sBit == "mines" ) m_bTransforms[TRANSFORM_MINES] = on;
|
||||
else if( sBit == "echo" ) m_bTransforms[TRANSFORM_ECHO] = on;
|
||||
else if( sBit == "planted" ) m_bTransforms[TRANSFORM_PLANTED] = on;
|
||||
else if( sBit == "stomp" ) m_bTransforms[TRANSFORM_STOMP] = on;
|
||||
else if( sBit == "twister" ) m_bTransforms[TRANSFORM_TWISTER] = on;
|
||||
else if( sBit == "reverse" ) SET_FLOAT( fScrolls[SCROLL_REVERSE] )
|
||||
else if( sBit == "split" ) SET_FLOAT( fScrolls[SCROLL_SPLIT] )
|
||||
else if( sBit == "alternate" ) SET_FLOAT( fScrolls[SCROLL_ALTERNATE] )
|
||||
else if( sBit == "noholds" ) m_bHoldNotes = !on;
|
||||
else if( sBit == "nofreeze" ) m_bHoldNotes = !on;
|
||||
else if( sBit == "nomines" ) m_bMines = !on;
|
||||
else if( sBit == "noholds" || sBit == "nofreeze" ) m_bTransforms[TRANSFORM_NOHOLDS] = on;
|
||||
else if( sBit == "nomines" ) m_bTransforms[TRANSFORM_NOMINES] = on;
|
||||
else if( sBit == "dark" ) SET_FLOAT( fDark )
|
||||
else if( sBit == "blind" ) SET_FLOAT( fBlind )
|
||||
else if( sBit == "passmark" ) SET_FLOAT( fPassmark )
|
||||
@@ -359,7 +353,8 @@ void PlayerOptions::NextTurn()
|
||||
|
||||
void PlayerOptions::NextTransform()
|
||||
{
|
||||
m_Transform = (Transform) ((m_Transform+1)%NUM_TRANSFORMS);
|
||||
// It's dumb to use a code to change transforms because there are so many of them. -Chris
|
||||
//m_Transforms = (Transform) ((m_Transform+1)%NUM_TRANSFORMS);
|
||||
}
|
||||
|
||||
void PlayerOptions::NextScroll()
|
||||
@@ -478,9 +473,6 @@ bool ComparePlayerOptions( const PlayerOptions &po1, const PlayerOptions &po2 )
|
||||
COMPARE(m_fDark);
|
||||
COMPARE(m_fBlind);
|
||||
COMPARE(m_Turn);
|
||||
COMPARE(m_Transform);
|
||||
COMPARE(m_bHoldNotes);
|
||||
COMPARE(m_bMines);
|
||||
COMPARE(m_bTimingAssist);
|
||||
COMPARE(m_bProTiming);
|
||||
COMPARE(m_fPerspectiveTilt);
|
||||
@@ -496,6 +488,8 @@ bool ComparePlayerOptions( const PlayerOptions &po1, const PlayerOptions &po2 )
|
||||
COMPARE(m_fAppearances[i]);
|
||||
for( i = 0; i < PlayerOptions::NUM_SCROLLS; ++i )
|
||||
COMPARE(m_fScrolls[i]);
|
||||
for( i = 0; i < PlayerOptions::NUM_TRANSFORMS; ++i )
|
||||
COMPARE(m_bTransforms[i]);
|
||||
#undef COMPARE
|
||||
|
||||
return true;
|
||||
|
||||
@@ -58,7 +58,8 @@ struct PlayerOptions
|
||||
NUM_TURNS
|
||||
};
|
||||
enum Transform {
|
||||
TRANSFORM_NONE=0,
|
||||
TRANSFORM_NOHOLDS,
|
||||
TRANSFORM_NOMINES,
|
||||
TRANSFORM_LITTLE,
|
||||
TRANSFORM_WIDE,
|
||||
TRANSFORM_BIG,
|
||||
@@ -68,6 +69,7 @@ struct PlayerOptions
|
||||
TRANSFORM_ECHO,
|
||||
TRANSFORM_PLANTED,
|
||||
TRANSFORM_STOMP,
|
||||
TRANSFORM_TWISTER,
|
||||
NUM_TRANSFORMS
|
||||
};
|
||||
enum Scroll {
|
||||
@@ -99,9 +101,7 @@ struct PlayerOptions
|
||||
float m_fPassmark, m_SpeedfPassmark;
|
||||
|
||||
Turn m_Turn;
|
||||
Transform m_Transform;
|
||||
bool m_bHoldNotes;
|
||||
bool m_bMines;
|
||||
bool m_bTransforms[NUM_TRANSFORMS];
|
||||
bool m_bTimingAssist;
|
||||
bool m_bProTiming;
|
||||
CString m_sPositioning; /* The current positioning mode, or empty to use the normal positions. */
|
||||
|
||||
@@ -156,7 +156,7 @@ Menu g_AreaMenu
|
||||
MenuRow( "Clear", true ),
|
||||
MenuRow( "Quantize", true, 0, "4TH","8TH","12TH","16TH","24TH","32ND","48TH","64TH" ),
|
||||
MenuRow( "Turn", true, 0, "Left","Right","Mirror","Shuffle","Super Shuffle" ),
|
||||
MenuRow( "Transform", true, 0, "Little","Wide","Big","Quick","Skippy","Mines","Echo","Planted","Stomp" ),
|
||||
MenuRow( "Transform", true, 0, "NoHolds","NoMines","Little","Wide","Big","Quick","Skippy","Mines","Echo","Planted","Stomp","Twister" ),
|
||||
MenuRow( "Alter", true, 0, "Backwards","Swap Sides","Copy Left To Right","Copy Right To Left","Clear Left","Clear Right","Collapse To One","Shift Left","Shift Right" ),
|
||||
MenuRow( "Tempo", true, 0, "Compress 2x","Compress 3->2","Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" ),
|
||||
MenuRow( "Play selection", true ),
|
||||
@@ -1533,15 +1533,18 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
|
||||
TransformType tt = (TransformType)iAnswers[c];
|
||||
switch( tt )
|
||||
{
|
||||
case noholds: NoteDataUtil::RemoveHoldNotes( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case nomines: NoteDataUtil::RemoveMines( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case little: NoteDataUtil::Little( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case wide: NoteDataUtil::Wide( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case big: NoteDataUtil::Big( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case quick: NoteDataUtil::Quick( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case skippy: NoteDataUtil::Skippy( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
case mines: NoteDataUtil::Mines( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
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 twister: NoteDataUtil::Twister( m_NoteFieldEdit, fBeginBeat, fEndBeat ); break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ public:
|
||||
};
|
||||
void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers );
|
||||
enum TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
|
||||
enum TransformType { little, wide, big, quick, skippy, mines, echo, planted, stomp, NUM_TRANSFORM_TYPES };
|
||||
enum TransformType { noholds, nomines, little, wide, big, quick, skippy, mines, echo, planted, stomp, twister, NUM_TRANSFORM_TYPES };
|
||||
enum AlterType { backwards, swap_sides, copy_left_to_right, copy_right_to_left, clear_left, clear_right, collapse_to_one, shift_left, shift_right, NUM_ALTER_TYPES };
|
||||
// MD 11/02/03 - added additional tempo adjusts which make "sense"
|
||||
enum TempoType { compress_2x, compress_3_2, compress_4_3, expand_4_3, expand_3_2, expand_2x, NUM_TEMPO_TYPES };
|
||||
|
||||
Reference in New Issue
Block a user