add select menu

This commit is contained in:
Glenn Maynard
2005-04-26 06:41:57 +00:00
parent 60755230c0
commit 23daae6a25
2 changed files with 58 additions and 4 deletions
+53 -2
View File
@@ -68,7 +68,8 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme
ALIGN_MUSIC_BEATS( m_sName, "AlignMusicBeat" ), ALIGN_MUSIC_BEATS( m_sName, "AlignMusicBeat" ),
CODES( m_sName, "Codes" ), CODES( m_sName, "Codes" ),
MUSIC_WHEEL_TYPE( m_sName, "MusicWheelType" ), MUSIC_WHEEL_TYPE( m_sName, "MusicWheelType" ),
OPTIONS_MENU_AVAILABLE( m_sName, "OptionsMenuAvailable" ) OPTIONS_MENU_AVAILABLE( m_sName, "OptionsMenuAvailable" ),
SELECT_MENU_AVAILABLE( m_sName, "SelectMenuAvailable" )
{ {
LOG->Trace( "ScreenSelectMusic::ScreenSelectMusic()" ); LOG->Trace( "ScreenSelectMusic::ScreenSelectMusic()" );
@@ -90,6 +91,8 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme
void ScreenSelectMusic::Init() void ScreenSelectMusic::Init()
{ {
m_bSelectIsDown = false; // used by LoadHelpText which is called by ScreenWithMenuElements::Init()
ScreenWithMenuElements::Init(); ScreenWithMenuElements::Init();
m_DisplayMode = GAMESTATE->IsCourseMode() ? DISPLAY_COURSES : DISPLAY_SONGS; m_DisplayMode = GAMESTATE->IsCourseMode() ? DISPLAY_COURSES : DISPLAY_SONGS;
@@ -831,6 +834,29 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
if( m_bMadeChoice ) return; // ignore if( m_bMadeChoice ) return; // ignore
LoadHelpText();
bool bSelectIsPressed =
SELECT_MENU_AVAILABLE && INPUTMAPPER->IsButtonDown( MenuInput(pn, MENU_BUTTON_SELECT) );
if( bSelectIsPressed )
{
if( type == IET_FIRST_PRESS )
{
switch( MenuI.button )
{
case MENU_BUTTON_LEFT:
ChangeDifficulty( pn, -1 );
break;
case MENU_BUTTON_RIGHT:
ChangeDifficulty( pn, +1 );
break;
case MENU_BUTTON_START:
m_MusicWheel.ChangeSort( SORT_MODE_MENU );
break;
}
}
}
if( MenuI.button == MENU_BUTTON_RIGHT || MenuI.button == MENU_BUTTON_LEFT ) if( MenuI.button == MENU_BUTTON_RIGHT || MenuI.button == MENU_BUTTON_LEFT )
{ {
/* If we're rouletting, hands off. */ /* If we're rouletting, hands off. */
@@ -840,10 +866,13 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
bool bLeftIsDown = false; bool bLeftIsDown = false;
bool bRightIsDown = false; bool bRightIsDown = false;
FOREACH_EnabledPlayer( p ) FOREACH_EnabledPlayer( p )
{
if( !bSelectIsPressed )
{ {
bLeftIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_LEFT) ); bLeftIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_LEFT) );
bRightIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_RIGHT) ); bRightIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_RIGHT) );
} }
}
bool bBothDown = bLeftIsDown && bRightIsDown; bool bBothDown = bLeftIsDown && bRightIsDown;
bool bNeitherDown = !bLeftIsDown && !bRightIsDown; bool bNeitherDown = !bLeftIsDown && !bRightIsDown;
@@ -872,6 +901,8 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
} }
if( bSelectIsPressed )
return;
// TRICKY: Do default processing of MenuLeft and MenuRight before detecting // TRICKY: Do default processing of MenuLeft and MenuRight before detecting
// codes. Do default processing of Start AFTER detecting codes. This gives us a // codes. Do default processing of Start AFTER detecting codes. This gives us a
@@ -944,6 +975,26 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
} }
} }
void ScreenSelectMusic::LoadHelpText()
{
ScreenWithMenuElements::LoadHelpText();
bool bSelectIsDown = false;
FOREACH_EnabledPlayer( p )
bSelectIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_SELECT) );
if( !SELECT_MENU_AVAILABLE )
bSelectIsDown = false;
if( m_bSelectIsDown != bSelectIsDown )
{
m_bSelectIsDown = bSelectIsDown;
if( bSelectIsDown )
MESSAGEMAN->Broadcast( "SelectMenuOn" );
else
MESSAGEMAN->Broadcast( "SelectMenuOff" );
}
}
void ScreenSelectMusic::ChangeDifficulty( PlayerNumber pn, int dir ) void ScreenSelectMusic::ChangeDifficulty( PlayerNumber pn, int dir )
{ {
LOG->Trace( "ScreenSelectMusic::ChangeDifficulty( %d, %d )", pn, dir ); LOG->Trace( "ScreenSelectMusic::ChangeDifficulty( %d, %d )", pn, dir );
@@ -1484,7 +1535,7 @@ void ScreenSelectMusic::AfterMusicChange()
if( m_MusicWheel.GetSortOrder() != s_lastSortOrder ) if( m_MusicWheel.GetSortOrder() != s_lastSortOrder )
{ {
// Reload to let Lua metrics have a chance to change the help text. // Reload to let Lua metrics have a chance to change the help text.
ScreenWithMenuElements::LoadHelpText(); LoadHelpText();
s_lastSortOrder = m_MusicWheel.GetSortOrder(); s_lastSortOrder = m_MusicWheel.GetSortOrder();
} }
+3
View File
@@ -54,6 +54,7 @@ protected:
void TweenCoursePartsOffScreen( bool Final ); void TweenCoursePartsOffScreen( bool Final );
void SkipSongPartTweens(); void SkipSongPartTweens();
void SkipCoursePartTweens(); void SkipCoursePartTweens();
virtual void LoadHelpText();
void ChangeDifficulty( PlayerNumber pn, int dir ); void ChangeDifficulty( PlayerNumber pn, int dir );
@@ -87,6 +88,7 @@ protected:
ThemeMetric<CString> CODES; ThemeMetric<CString> CODES;
ThemeMetric<CString> MUSIC_WHEEL_TYPE; ThemeMetric<CString> MUSIC_WHEEL_TYPE;
ThemeMetric<bool> OPTIONS_MENU_AVAILABLE; ThemeMetric<bool> OPTIONS_MENU_AVAILABLE;
DynamicThemeMetric<bool> SELECT_MENU_AVAILABLE;
CString m_sSectionMusicPath; CString m_sSectionMusicPath;
CString m_sSortMusicPath; CString m_sSortMusicPath;
@@ -137,6 +139,7 @@ protected:
TimingData *m_pSampleMusicTimingData; TimingData *m_pSampleMusicTimingData;
float m_fSampleStartSeconds, m_fSampleLengthSeconds; float m_fSampleStartSeconds, m_fSampleLengthSeconds;
bool m_bAllowOptionsMenu, m_bAllowOptionsMenuRepeat; bool m_bAllowOptionsMenu, m_bAllowOptionsMenuRepeat;
bool m_bSelectIsDown;
Transition m_bgOptionsOut; Transition m_bgOptionsOut;
Transition m_bgNoOptionsOut; Transition m_bgNoOptionsOut;