add ranking manual scroll sound

fix weird scrolling if num songs < num lines shown
This commit is contained in:
Chris Danford
2006-03-27 10:58:37 +00:00
parent bde1988a30
commit 08ade0ee80
2 changed files with 33 additions and 9 deletions
+24 -4
View File
@@ -201,6 +201,16 @@ float ScreenRanking::SetPage( const PageToShow &pts )
return 0; return 0;
} }
void ScreenRankingScroller::DoScroll( int iDir )
{
if( m_ListScoreRowItems.Scroll(iDir) )
m_soundChange.Play();
else
SCREENMAN->PlayInvalidSound();
}
/////////////////////////////////////////////
ScoreScroller::ScoreScroller() ScoreScroller::ScoreScroller()
{ {
this->DeleteChildrenWhenDone(); this->DeleteChildrenWhenDone();
@@ -221,17 +231,25 @@ void ScoreScroller::SetStepsType( StepsType st, RageColor color )
ShiftSubActors( INT_MAX ); ShiftSubActors( INT_MAX );
} }
void ScoreScroller::Scroll( int iDir ) bool ScoreScroller::Scroll( int iDir )
{ {
if( m_vScoreRowItemData.size() <= m_metricSongScoreRowsToDraw )
return false;
float fDest = GetDestinationItem(); float fDest = GetDestinationItem();
float fOldDest = fDest; float fOldDest = fDest;
fDest += iDir; fDest += iDir;
CLAMP( fDest, (m_metricSongScoreRowsToDraw-1)/2.0f, m_vScoreRowItemData.size()-(m_metricSongScoreRowsToDraw-1)/2.0f-1 ); float fLowClamp = (m_metricSongScoreRowsToDraw-1)/2.0f;
float fHighClamp = m_vScoreRowItemData.size()-(m_metricSongScoreRowsToDraw-1)/2.0f-1;
CLAMP( fDest, fLowClamp, fHighClamp );
if( fOldDest != fDest ) if( fOldDest != fDest )
{ {
// TODO: play sound
SetDestinationItem( fDest );
SetDestinationItem( fDest ); SetDestinationItem( fDest );
return true;
}
else
{
return false();
} }
} }
@@ -425,6 +443,8 @@ void ScreenRankingScroller::Init()
pts.st = STEPS_TYPES_TO_SHOW.GetValue()[i]; pts.st = STEPS_TYPES_TO_SHOW.GetValue()[i];
m_vPagesToShow.push_back( pts ); m_vPagesToShow.push_back( pts );
} }
m_soundChange.Load( THEME->GetPathS(m_sName,"change") );
} }
void ScreenRankingScroller::BeginScreen() void ScreenRankingScroller::BeginScreen()
+9 -5
View File
@@ -12,6 +12,7 @@
#include "Difficulty.h" #include "Difficulty.h"
#include "ThemeMetric.h" #include "ThemeMetric.h"
#include "CommonMetrics.h" #include "CommonMetrics.h"
#include "RageSound.h"
class Course; class Course;
class Song; class Song;
@@ -98,7 +99,7 @@ public:
const vector<Difficulty> &DifficultiesToShow, const vector<Difficulty> &DifficultiesToShow,
float fItemHeight ); float fItemHeight );
void SetStepsType( StepsType st, RageColor color ); void SetStepsType( StepsType st, RageColor color );
void Scroll( int iDir ); bool Scroll( int iDir );
void ScrollTop(); void ScrollTop();
protected: protected:
@@ -140,12 +141,13 @@ public:
virtual void Init(); virtual void Init();
virtual void BeginScreen(); virtual void BeginScreen();
virtual void MenuLeft( const InputEventPlus &input ) { m_ListScoreRowItems.Scroll(-1); } virtual void MenuLeft( const InputEventPlus &input ) { DoScroll(-1); }
virtual void MenuRight( const InputEventPlus &input ) { m_ListScoreRowItems.Scroll(+1); } virtual void MenuRight( const InputEventPlus &input ) { DoScroll(+1); }
virtual void MenuUp( const InputEventPlus &input ) { m_ListScoreRowItems.Scroll(-1); } virtual void MenuUp( const InputEventPlus &input ) { DoScroll(-1); }
virtual void MenuDown( const InputEventPlus &input ) { m_ListScoreRowItems.Scroll(+1); } virtual void MenuDown( const InputEventPlus &input ) { DoScroll(+1); }
private: private:
void DoScroll( int iDir );
virtual float SetPage( const PageToShow &pts ); virtual float SetPage( const PageToShow &pts );
ScoreScroller m_ListScoreRowItems; ScoreScroller m_ListScoreRowItems;
@@ -159,6 +161,8 @@ private:
ThemeMetric<float> DIFFICULTY_START_X; ThemeMetric<float> DIFFICULTY_START_X;
ThemeMetric<float> DIFFICULTY_Y; ThemeMetric<float> DIFFICULTY_Y;
ThemeMetric<int> NUM_MOST_RECENT_SCORES_TO_SHOW; ThemeMetric<int> NUM_MOST_RECENT_SCORES_TO_SHOW;
RageSound m_soundChange;
}; };
static const int NUM_RANKING_LINES = 5; static const int NUM_RANKING_LINES = 5;