diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index c3d9fff519..12e9f79db4 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -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 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 +HitMineCommand= [BPMDisplay] NormalColor=1.0,1.0,0.0,1 // yellow @@ -4090,8 +4091,8 @@ ScrollName,3=SPLIT Scroll,4=mod,alternate ScrollName,4=ALTERNATE -Holds=4 -HoldsDefault=mod,no noholds,no planted,no twister +Holds=5 +HoldsDefault=mod,no noholds,no planted,no twister,no nohands Holds,1=mod,noholds HoldsName,1=OFF Holds,2= @@ -4100,6 +4101,8 @@ Holds,3=mod,planted HoldsName,3=PLANTED Holds,4=mod,twister HoldsName,4=TWISTER +Holds,5=mod,nohands +HoldsName,5=NO HANDS Mines=3 MinesDefault=mod,no nomines,no mines diff --git a/stepmania/src/NoteDataUtil.cpp b/stepmania/src/NoteDataUtil.cpp index ab9c6e2835..291df2087f 100644 --- a/stepmania/src/NoteDataUtil.cpp +++ b/stepmania/src/NoteDataUtil.cpp @@ -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 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 && t2","Compress 4->3","Expand 3->4","Expand 2->3","Expand 2x" } }, { "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 stomp: NoteDataUtil::Stomp( 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); } diff --git a/stepmania/src/ScreenEdit.h b/stepmania/src/ScreenEdit.h index 2da288840f..0ee972c3bf 100644 --- a/stepmania/src/ScreenEdit.h +++ b/stepmania/src/ScreenEdit.h @@ -133,7 +133,7 @@ public: }; void HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers ); 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 }; // 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 };