From 142fc408ab32ac092492201a4c9f0916c366beec Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 19 Sep 2005 09:01:21 +0000 Subject: [PATCH] fix "holding left and pressing right ignores wheel lock" --- stepmania/src/ScreenSelectMusic.cpp | 4 ++-- stepmania/src/WheelBase.cpp | 16 ++++++++++++++++ stepmania/src/WheelBase.h | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 8aca407bc7..d87ff72fca 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -809,10 +809,10 @@ void ScreenSelectMusic::Input( const InputEventPlus &input ) switch( input.MenuI.button ) { case MENU_BUTTON_LEFT: - m_MusicWheel.ChangeMusic( -1 ); + m_MusicWheel.ChangeMusicUnlessLocked( -1 ); break; case MENU_BUTTON_RIGHT: - m_MusicWheel.ChangeMusic( +1 ); + m_MusicWheel.ChangeMusicUnlessLocked( +1 ); break; } } diff --git a/stepmania/src/WheelBase.cpp b/stepmania/src/WheelBase.cpp index b0b754a107..4dbef71cbf 100644 --- a/stepmania/src/WheelBase.cpp +++ b/stepmania/src/WheelBase.cpp @@ -495,6 +495,22 @@ void WheelBase::TweenOffScreenUpdateItems(bool changing_sort) } } +void WheelBase::ChangeMusicUnlessLocked( int n ) +{ + if( m_WheelState == STATE_LOCKED ) + { + if(n) + { + int iSign = n/abs(n); + m_fLockedWheelVelocity = iSign*LOCKED_INITIAL_VELOCITY; + m_soundLocked.Play(); + } + return; + } + + ChangeMusic( n ); +} + void WheelBase::Move(int n) { if(n == m_Moving) diff --git a/stepmania/src/WheelBase.h b/stepmania/src/WheelBase.h index 6f7d383ff0..71bd001278 100644 --- a/stepmania/src/WheelBase.h +++ b/stepmania/src/WheelBase.h @@ -33,6 +33,7 @@ public: void TweenOffScreen() { TweenOffScreen(false); } void Move(int n); + void ChangeMusicUnlessLocked( int n ); /* +1 or -1 */ virtual void ChangeMusic(int dist); /* +1 or -1 */ /* Return true if we're moving fast automatically. */