add twister transform

reorganize transform options
This commit is contained in:
Chris Danford
2003-11-07 08:45:21 +00:00
parent 768b2e5846
commit 3ca893b0ca
11 changed files with 125 additions and 124 deletions
+23 -21
View File
@@ -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
+2 -2
View File
@@ -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;
+8 -2
View File
@@ -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
+43 -52
View File
@@ -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 )
+5 -3
View File
@@ -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
+2 -1
View File
@@ -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]) )
+3 -1
View File
@@ -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 );
+29 -35
View File
@@ -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;
+4 -4
View File
@@ -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. */
+5 -2
View File
@@ -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);
}
+1 -1
View File
@@ -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 };