add select menu
This commit is contained in:
@@ -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. */
|
||||||
@@ -841,8 +867,11 @@ void ScreenSelectMusic::Input( const DeviceInput& DeviceI, InputEventType type,
|
|||||||
bool bRightIsDown = false;
|
bool bRightIsDown = false;
|
||||||
FOREACH_EnabledPlayer( p )
|
FOREACH_EnabledPlayer( p )
|
||||||
{
|
{
|
||||||
bLeftIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_LEFT) );
|
if( !bSelectIsPressed )
|
||||||
bRightIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_RIGHT) );
|
{
|
||||||
|
bLeftIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_LEFT) );
|
||||||
|
bRightIsDown |= INPUTMAPPER->IsButtonDown( MenuInput(p, MENU_BUTTON_RIGHT) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bBothDown = bLeftIsDown && bRightIsDown;
|
bool bBothDown = 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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user