add NoHands option
This commit is contained in:
@@ -2959,6 +2959,7 @@ GreatCommand=shadowlength,4;diffuse,.6,.9,0,1;zoom,2.4;linear,0.05;zoom,2;sleep,
|
|||||||
GoodCommand=shadowlength,4;diffuse,0,1,1,1;zoom,2.2;linear,0.05;zoom,2;sleep,0.8;linear,0;diffusealpha,0
|
GoodCommand=shadowlength,4;diffuse,0,1,1,1;zoom,2.2;linear,0.05;zoom,2;sleep,0.8;linear,0;diffusealpha,0
|
||||||
BooCommand=shadowlength,4;diffuse,1,.1,1,1;zoom,2.0;vibrate;effectmagnitude,4,8,8;sleep,0.8;linear,0;diffusealpha,0
|
BooCommand=shadowlength,4;diffuse,1,.1,1,1;zoom,2.0;vibrate;effectmagnitude,4,8,8;sleep,0.8;linear,0;diffusealpha,0
|
||||||
MissCommand=shadowlength,4;diffuse,1,.3,0,1;zoom,2.0;y,-20;linear,0.8;y,20;sleep,0.8;linear,0;diffusealpha,0
|
MissCommand=shadowlength,4;diffuse,1,.3,0,1;zoom,2.0;y,-20;linear,0.8;y,20;sleep,0.8;linear,0;diffusealpha,0
|
||||||
|
HitMineCommand=
|
||||||
|
|
||||||
[BPMDisplay]
|
[BPMDisplay]
|
||||||
NormalColor=1.0,1.0,0.0,1 // yellow
|
NormalColor=1.0,1.0,0.0,1 // yellow
|
||||||
@@ -4090,8 +4091,8 @@ ScrollName,3=SPLIT
|
|||||||
Scroll,4=mod,alternate
|
Scroll,4=mod,alternate
|
||||||
ScrollName,4=ALTERNATE
|
ScrollName,4=ALTERNATE
|
||||||
|
|
||||||
Holds=4
|
Holds=5
|
||||||
HoldsDefault=mod,no noholds,no planted,no twister
|
HoldsDefault=mod,no noholds,no planted,no twister,no nohands
|
||||||
Holds,1=mod,noholds
|
Holds,1=mod,noholds
|
||||||
HoldsName,1=OFF
|
HoldsName,1=OFF
|
||||||
Holds,2=
|
Holds,2=
|
||||||
@@ -4100,6 +4101,8 @@ Holds,3=mod,planted
|
|||||||
HoldsName,3=PLANTED
|
HoldsName,3=PLANTED
|
||||||
Holds,4=mod,twister
|
Holds,4=mod,twister
|
||||||
HoldsName,4=TWISTER
|
HoldsName,4=TWISTER
|
||||||
|
Holds,5=mod,nohands
|
||||||
|
HoldsName,5=NO HANDS
|
||||||
|
|
||||||
Mines=3
|
Mines=3
|
||||||
MinesDefault=mod,no nomines,no mines
|
MinesDefault=mod,no nomines,no mines
|
||||||
|
|||||||
@@ -369,6 +369,48 @@ void NoteDataUtil::RemoveHoldNotes(NoteData &in, float fStartBeat, float fEndBea
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NoteDataUtil::RemoveHands(NoteData &in, float fStartBeat, float fEndBeat)
|
||||||
|
{
|
||||||
|
int iStartIndex = BeatToNoteRow( fStartBeat );
|
||||||
|
int iEndIndex = BeatToNoteRow( fEndBeat );
|
||||||
|
|
||||||
|
// turn all the HoldNotes into TapNotes
|
||||||
|
for( int r=iStartIndex; r<=iEndIndex; r++ ) // iterate backwards so we can delete
|
||||||
|
{
|
||||||
|
if( in.IsRowEmpty(r) )
|
||||||
|
continue; // skip
|
||||||
|
|
||||||
|
vector<int> viTracksHeld;
|
||||||
|
in.GetTracksHeldAtRow( r, viTracksHeld );
|
||||||
|
|
||||||
|
// remove the first tap note or the first hold note that starts on this row
|
||||||
|
int iTotalTracksPressed = in.GetNumTracksWithTap(r) + viTracksHeld.size();
|
||||||
|
int iTracksToRemove = max( 0, iTotalTracksPressed - 2 );
|
||||||
|
for( int t=0; iTracksToRemove>0 && t<in.GetNumTracks(); t++ )
|
||||||
|
{
|
||||||
|
if( in.GetTapNote(t,r) == TAP_TAP )
|
||||||
|
{
|
||||||
|
in.SetTapNote( t, r, TAP_EMPTY );
|
||||||
|
iTracksToRemove--;
|
||||||
|
}
|
||||||
|
else if( in.GetTapNote(t,r) == TAP_HOLD_HEAD )
|
||||||
|
{
|
||||||
|
unsigned i;
|
||||||
|
for( i=0; i<in.GetNumHoldNotes(); i++ )
|
||||||
|
{
|
||||||
|
const HoldNote& hn = in.GetHoldNote(i);
|
||||||
|
if( hn.iStartRow == r )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ASSERT( i<in.GetNumHoldNotes() ); // if we hit this, there was a hold head with no hold
|
||||||
|
in.RemoveHoldNote( i );
|
||||||
|
iTracksToRemove--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void NoteDataUtil::RemoveMines(NoteData &in, float fStartBeat, float fEndBeat )
|
void NoteDataUtil::RemoveMines(NoteData &in, float fStartBeat, float fEndBeat )
|
||||||
{
|
{
|
||||||
int iRowStart = BeatToNoteRow(fStartBeat);
|
int iRowStart = BeatToNoteRow(fStartBeat);
|
||||||
@@ -1272,6 +1314,7 @@ void NoteDataUtil::TransformNoteData( NoteData &nd, const PlayerOptions &po, Ste
|
|||||||
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, 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NoteDataUtil::AddTapAttacks( NoteData &nd, Song* pSong )
|
void NoteDataUtil::AddTapAttacks( NoteData &nd, Song* pSong )
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace NoteDataUtil
|
|||||||
float GetRadarValue( const NoteData &in, RadarCategory rv, float fSongSeconds );
|
float GetRadarValue( const NoteData &in, RadarCategory rv, float fSongSeconds );
|
||||||
|
|
||||||
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 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 TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
|
||||||
void Turn( NoteData &in, StepsType st, TurnType tt, float fStartBeat = 0, float fEndBeat = -1 );
|
void Turn( NoteData &in, StepsType st, TurnType tt, float fStartBeat = 0, float fEndBeat = -1 );
|
||||||
|
|||||||
@@ -156,6 +156,7 @@ CString PlayerOptions::GetString() const
|
|||||||
if( m_bTransforms[TRANSFORM_PLANTED] ) sReturn += "Planted, ";
|
if( m_bTransforms[TRANSFORM_PLANTED] ) sReturn += "Planted, ";
|
||||||
if( m_bTransforms[TRANSFORM_STOMP] ) sReturn += "Stomp, ";
|
if( m_bTransforms[TRANSFORM_STOMP] ) sReturn += "Stomp, ";
|
||||||
if( m_bTransforms[TRANSFORM_TWISTER] ) sReturn += "Twister, ";
|
if( m_bTransforms[TRANSFORM_TWISTER] ) sReturn += "Twister, ";
|
||||||
|
if( m_bTransforms[TRANSFORM_NOHANDS] ) sReturn += "NoHands, ";
|
||||||
|
|
||||||
if( m_bTimingAssist ) sReturn += "TimingAssist, ";
|
if( m_bTimingAssist ) sReturn += "TimingAssist, ";
|
||||||
if( m_bProTiming ) sReturn += "ProTiming, ";
|
if( m_bProTiming ) sReturn += "ProTiming, ";
|
||||||
@@ -281,6 +282,7 @@ void PlayerOptions::FromString( CString sOptions )
|
|||||||
else if( sBit == "planted" ) m_bTransforms[TRANSFORM_PLANTED] = on;
|
else if( sBit == "planted" ) m_bTransforms[TRANSFORM_PLANTED] = on;
|
||||||
else if( sBit == "stomp" ) m_bTransforms[TRANSFORM_STOMP] = on;
|
else if( sBit == "stomp" ) m_bTransforms[TRANSFORM_STOMP] = on;
|
||||||
else if( sBit == "twister" ) m_bTransforms[TRANSFORM_TWISTER] = on;
|
else if( sBit == "twister" ) m_bTransforms[TRANSFORM_TWISTER] = on;
|
||||||
|
else if( sBit == "nohands" ) m_bTransforms[TRANSFORM_NOHANDS] = on;
|
||||||
else if( sBit == "reverse" ) SET_FLOAT( fScrolls[SCROLL_REVERSE] )
|
else if( sBit == "reverse" ) SET_FLOAT( fScrolls[SCROLL_REVERSE] )
|
||||||
else if( sBit == "split" ) SET_FLOAT( fScrolls[SCROLL_SPLIT] )
|
else if( sBit == "split" ) SET_FLOAT( fScrolls[SCROLL_SPLIT] )
|
||||||
else if( sBit == "alternate" ) SET_FLOAT( fScrolls[SCROLL_ALTERNATE] )
|
else if( sBit == "alternate" ) SET_FLOAT( fScrolls[SCROLL_ALTERNATE] )
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ struct PlayerOptions
|
|||||||
TRANSFORM_PLANTED,
|
TRANSFORM_PLANTED,
|
||||||
TRANSFORM_STOMP,
|
TRANSFORM_STOMP,
|
||||||
TRANSFORM_TWISTER,
|
TRANSFORM_TWISTER,
|
||||||
|
TRANSFORM_NOHANDS,
|
||||||
NUM_TRANSFORMS
|
NUM_TRANSFORMS
|
||||||
};
|
};
|
||||||
enum Scroll {
|
enum Scroll {
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ static const MenuRow g_AreaMenuItems[] =
|
|||||||
{ "Clear", true, 0, { NULL } },
|
{ "Clear", true, 0, { NULL } },
|
||||||
{ "Quantize", true, 0, { "4TH","8TH","12TH","16TH","24TH","32ND","48TH","64TH" } },
|
{ "Quantize", true, 0, { "4TH","8TH","12TH","16TH","24TH","32ND","48TH","64TH" } },
|
||||||
{ "Turn", true, 0, { "Left","Right","Mirror","Shuffle","Super Shuffle" } },
|
{ "Turn", true, 0, { "Left","Right","Mirror","Shuffle","Super Shuffle" } },
|
||||||
{ "Transform", true, 0, { "NoHolds","NoMines","Little","Wide","Big","Quick","Skippy","Mines","Echo","Planted","Stomp","Twister" } },
|
{ "Transform", true, 0, { "NoHolds","NoMines","Little","Wide","Big","Quick","Skippy","Mines","Echo","Planted","Stomp","Twister","NoHands" } },
|
||||||
{ "Alter", true, 0, { "Backwards","Swap Sides","Copy Left To Right","Copy Right To Left","Clear Left","Clear Right","Collapse To One","Collapse Left","Shift Left","Shift Right" } },
|
{ "Alter", true, 0, { "Backwards","Swap Sides","Copy Left To Right","Copy Right To Left","Clear Left","Clear Right","Collapse To One","Collapse Left","Shift Left","Shift Right" } },
|
||||||
{ "Tempo", true, 0, { "Compress 2x","Compress 3->2","Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" } },
|
{ "Tempo", true, 0, { "Compress 2x","Compress 3->2","Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" } },
|
||||||
{ "Play selection", true, 0, { NULL } },
|
{ "Play selection", true, 0, { NULL } },
|
||||||
@@ -1587,6 +1587,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
|
|||||||
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, 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;
|
||||||
default: ASSERT(0);
|
default: ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ public:
|
|||||||
};
|
};
|
||||||
void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers );
|
void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers );
|
||||||
enum TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
|
enum TurnType { left, right, mirror, shuffle, super_shuffle, NUM_TURN_TYPES };
|
||||||
enum TransformType { noholds, nomines, little, wide, big, quick, skippy, mines, echo, planted, stomp, twister, NUM_TRANSFORM_TYPES };
|
enum TransformType { noholds, nomines, little, wide, big, quick, skippy, mines, echo, planted, stomp, twister, nohands, NUM_TRANSFORM_TYPES };
|
||||||
enum AlterType { backwards, swap_sides, copy_left_to_right, copy_right_to_left, clear_left, clear_right, collapse_to_one, collapse_left, shift_left, shift_right, NUM_ALTER_TYPES };
|
enum AlterType { backwards, swap_sides, copy_left_to_right, copy_right_to_left, clear_left, clear_right, collapse_to_one, collapse_left, shift_left, shift_right, NUM_ALTER_TYPES };
|
||||||
// MD 11/02/03 - added additional tempo adjusts which make "sense"
|
// 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 };
|
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