diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index c175bd9e6d..7ce4f9c87b 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -124,7 +124,9 @@ Menu g_KeyboardShortcuts MenuRow( "M: Play sample music", false ), MenuRow( "B: Add/Edit Background Change", false ), MenuRow( "Insert: Insert beat and shift down", false ), - MenuRow( "Delete: Delete beat and shift up", false ) + MenuRow( "Delete: Delete beat and shift up", false ), + MenuRow( "Shift + number: Lay mine", false ), + MenuRow( "Alt + number: Add to/remove from right half", false ) ); Menu g_MainMenu @@ -599,7 +601,14 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ if( type != IET_FIRST_PRESS ) break; // We only care about first presses - const int iCol = DeviceI.button == SDLK_0? 9: DeviceI.button - SDLK_1; + int iCol = DeviceI.button - SDLK_1; + + + // Alt + number = input to right half + if( INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) || + INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RALT))) + iCol += m_NoteFieldEdit.GetNumTracks()/2; + const float fSongBeat = GAMESTATE->m_fSongBeat; const int iSongIndex = BeatToNoteRow( fSongBeat ); @@ -624,11 +633,23 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ if( !bRemovedAHoldNote ) { + // Hold Shift to lay mine + bool bLayMine = + INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LSHIFT)) || + INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RSHIFT)); + // We didn't remove a HoldNote, so the user wants to add or delete a TapNote if( m_NoteFieldEdit.GetTapNote(iCol, iSongIndex) == TAP_EMPTY ) - m_NoteFieldEdit.SetTapNote(iCol, iSongIndex, TAP_TAP ); + { + if( bLayMine ) + m_NoteFieldEdit.SetTapNote(iCol, iSongIndex, TAP_MINE ); + else + m_NoteFieldEdit.SetTapNote(iCol, iSongIndex, TAP_TAP ); + } else + { m_NoteFieldEdit.SetTapNote(iCol, iSongIndex, TAP_EMPTY ); + } } } break; @@ -692,15 +713,26 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ const float fEndBeat = GAMESTATE->m_fSongBeat + fBeatsToMove; // check to see if they're holding a button - for( int col=0; colIsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_LALT)) || + INPUTFILTER->IsBeingPressed(DeviceInput(DEVICE_KEYBOARD, SDLK_RALT))) + iCol += m_NoteFieldEdit.GetNumTracks()/2; + + if( iCol >= m_NoteFieldEdit.GetNumTracks() ) + continue; // skip + + const DeviceInput di(DEVICE_KEYBOARD, SDLK_1+n); + if( !INPUTFILTER->IsBeingPressed(di) ) continue; // create a new hold note - HoldNote newHN( col, min(fStartBeat, fEndBeat), max(fStartBeat, fEndBeat) ); + HoldNote newHN( iCol, min(fStartBeat, fEndBeat), max(fStartBeat, fEndBeat) ); newHN.fStartBeat = max(newHN.fStartBeat, 0); newHN.fEndBeat = max(newHN.fEndBeat, 0); diff --git a/stepmania/src/ScreenMiniMenu.h b/stepmania/src/ScreenMiniMenu.h index c98b5955dd..935d92d8b2 100644 --- a/stepmania/src/ScreenMiniMenu.h +++ b/stepmania/src/ScreenMiniMenu.h @@ -53,11 +53,11 @@ struct Menu Menu() {} - Menu( CString t, MenuRow r0, MenuRow r1=MenuRow(), MenuRow r2=MenuRow(), MenuRow r3=MenuRow(), MenuRow r4=MenuRow(), MenuRow r5=MenuRow(), MenuRow r6=MenuRow(), MenuRow r7=MenuRow(), MenuRow r8=MenuRow(), MenuRow r9=MenuRow(), MenuRow r10=MenuRow(), MenuRow r11=MenuRow(), MenuRow r12=MenuRow(), MenuRow r13=MenuRow(), MenuRow r14=MenuRow(), MenuRow r15=MenuRow(), MenuRow r16=MenuRow(), MenuRow r17=MenuRow(), MenuRow r18=MenuRow(), MenuRow r19=MenuRow() ) + Menu( CString t, MenuRow r0, MenuRow r1=MenuRow(), MenuRow r2=MenuRow(), MenuRow r3=MenuRow(), MenuRow r4=MenuRow(), MenuRow r5=MenuRow(), MenuRow r6=MenuRow(), MenuRow r7=MenuRow(), MenuRow r8=MenuRow(), MenuRow r9=MenuRow(), MenuRow r10=MenuRow(), MenuRow r11=MenuRow(), MenuRow r12=MenuRow(), MenuRow r13=MenuRow(), MenuRow r14=MenuRow(), MenuRow r15=MenuRow(), MenuRow r16=MenuRow(), MenuRow r17=MenuRow(), MenuRow r18=MenuRow(), MenuRow r19=MenuRow(), MenuRow r20=MenuRow(), MenuRow r21=MenuRow() ) { title = t; #define PUSH( r ) if(r.name!="" || !r.choices.empty()) rows.push_back(r); - PUSH(r0);PUSH(r1);PUSH(r2);PUSH(r3);PUSH(r4);PUSH(r5);PUSH(r6);PUSH(r7);PUSH(r8);PUSH(r9);PUSH(r10);PUSH(r11);PUSH(r12);PUSH(r13);PUSH(r14);PUSH(r15);PUSH(r16);PUSH(r17);PUSH(r18);PUSH(r19); + PUSH(r0);PUSH(r1);PUSH(r2);PUSH(r3);PUSH(r4);PUSH(r5);PUSH(r6);PUSH(r7);PUSH(r8);PUSH(r9);PUSH(r10);PUSH(r11);PUSH(r12);PUSH(r13);PUSH(r14);PUSH(r15);PUSH(r16);PUSH(r17);PUSH(r18);PUSH(r19);PUSH(r20);PUSH(r21); #undef PUSH } };