From 1faeb65a40e697d48deab9ddf56bd7a68b2056c0 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 16 Mar 2007 06:00:06 +0000 Subject: [PATCH] per-screen RepeatRate, RepeatDelay --- stepmania/Themes/default/metrics.ini | 2 ++ stepmania/src/Screen.cpp | 13 +++++++++++++ stepmania/src/Screen.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 6670c8919e..f33b1b7cd4 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -28,6 +28,8 @@ MinScoreToMaintainCombo="TapNoteScore_W3" ScreenInitCommand= ScreenOnCommand= AllowOperatorMenuButton=true +RepeatRate=-1 +RepeatDelay=-1 PrepareScreens= PersistScreens= GroupedScreens= diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index 4165e875a7..d9a49cc773 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -33,6 +33,8 @@ bool Screen::SortMessagesByDelayRemaining( const Screen::QueuedScreenMessage &m1 void Screen::Init() { ALLOW_OPERATOR_MENU_BUTTON.Load( m_sName, "AllowOperatorMenuButton" ); + REPEAT_RATE.Load( m_sName, "RepeatRate" ); + REPEAT_DELAY.Load( m_sName, "RepeatDelay" ); SetFOV( 0 ); @@ -195,6 +197,17 @@ void Screen::HandleScreenMessage( const ScreenMessage SM ) else SCREENMAN->SetNewScreen( SM == SM_GoToNextScreen? GetNextScreen():GetPrevScreen() ); } + else if( SM == SM_GainFocus ) + { + if( REPEAT_RATE != -1.0f ) + INPUTFILTER->SetRepeatRate( REPEAT_RATE ); + if( REPEAT_DELAY != -1.0f ) + INPUTFILTER->SetRepeatDelay( REPEAT_DELAY ); + } + else if( SM == SM_LoseFocus ) + { + INPUTFILTER->ResetRepeatRate(); + } } RString Screen::GetNextScreen() const diff --git a/stepmania/src/Screen.h b/stepmania/src/Screen.h index 3a98386e3b..dc6b326228 100644 --- a/stepmania/src/Screen.h +++ b/stepmania/src/Screen.h @@ -72,6 +72,8 @@ protected: static bool SortMessagesByDelayRemaining(const QueuedScreenMessage &m1, const QueuedScreenMessage &m2); ThemeMetric ALLOW_OPERATOR_MENU_BUTTON; + ThemeMetric REPEAT_RATE; + ThemeMetric REPEAT_DELAY; // If left blank, the NextScreen metric will be used. RString m_sNextScreen;