diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 195a405a07..93b0b5be1e 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -237,6 +237,14 @@ SpeedIconP1X=40 SpeedIconP2X=600 SpeedIconP1Y=200 SpeedIconP2Y=200 +MirrorIconP1X=40 +MirrorIconP2X=600 +MirrorIconP1Y=280 +MirrorIconP2Y=280 +ShuffleIconP1X=40 +ShuffleIconP2X=600 +ShuffleIconP1Y=320 +ShuffleIconP2Y=320 PreviewMusicMode=0 // 0 = play music as you select, 1 = no music plays, select once and preview music plays, select again for confirm, 2 = no music plays at all. [ScreenSelectCourse] @@ -650,6 +658,7 @@ Shuffle=Down,Up,Down,Up SuperShuffle=Down,Up,Left,Right Little= NextScrollSpeed= +PreviousScrollSpeed= Boost=Left,Right,Down,Up NextEffect=Left,Down,Right NextAppearance=Left,Up,Right diff --git a/stepmania/src/CodeDetector.cpp b/stepmania/src/CodeDetector.cpp index a4bcc60229..8a6f3c7721 100644 --- a/stepmania/src/CodeDetector.cpp +++ b/stepmania/src/CodeDetector.cpp @@ -32,6 +32,7 @@ enum Code { CODE_SUPER_SHUFFLE, CODE_LITTLE, CODE_NEXT_SCROLL_SPEED, + CODE_PREVIOUS_SCROLL_SPEED, CODE_BOOST, CODE_NEXT_EFFECT, CODE_NEXT_APPEARANCE, @@ -58,6 +59,7 @@ const CString g_sCodeNames[NUM_CODES] = { "SuperShuffle", "Little", "NextScrollSpeed", + "PreviousScrollSpeed", "Boost", "NextEffect", "NextAppearance", @@ -151,6 +153,7 @@ bool CodeDetector::EnteredNextSort( GameController controller ) #define TOGGLE(v,a,b) if(v!=a) v=a; else v=b; #define INCREMENT_SCROLL_SPEED(s) (s==0.5f) ? s=0.75f : (s==0.75f) ? s=1.0f : (s==1.0f) ? s=1.5f : (s==1.5f) ? s=2.0f : (s==2.0f) ? s=3.0f : (s==3.0f) ? s=4.0f : (s==4.0f) ? s=5.0f : (s==5.0f) ? s=8.0f : s=0.5f; +#define DECREMENT_SCROLL_SPEED(s) (s==0.75f) ? s=0.5f : (s==1.0f) ? s=0.75f : (s==1.5f) ? s=1.0f : (s==2.0f) ? s=1.5f : (s==3.0f) ? s=2.0f : (s==4.0f) ? s=3.0f : (s==5.0f) ? s=4.0f : (s==8.0f) ? s=4.0f : s=8.0f; bool CodeDetector::DetectAndAdjustOptions( GameController controller ) { @@ -172,6 +175,7 @@ bool CodeDetector::DetectAndAdjustOptions( GameController controller ) case CODE_SUPER_SHUFFLE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_TurnType, PlayerOptions::TURN_SUPER_SHUFFLE, PlayerOptions::TURN_NONE ); break; case CODE_LITTLE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bLittle, true, false ); break; case CODE_NEXT_SCROLL_SPEED:INCREMENT_SCROLL_SPEED( GAMESTATE->m_PlayerOptions[pn].m_fArrowScrollSpeed ); break; + case CODE_PREVIOUS_SCROLL_SPEED:DECREMENT_SCROLL_SPEED( GAMESTATE->m_PlayerOptions[pn].m_fArrowScrollSpeed ); break; case CODE_BOOST: GAMESTATE->m_PlayerOptions[pn].m_bBoost ^= true; break; case CODE_NEXT_EFFECT: GAMESTATE->m_PlayerOptions[pn].NextEffect(); break; case CODE_NEXT_APPEARANCE: GAMESTATE->m_PlayerOptions[pn].m_AppearanceType = PlayerOptions::AppearanceType((GAMESTATE->m_PlayerOptions[pn].m_AppearanceType+1) %PlayerOptions::NUM_APPEARANCE_TYPES ); break; diff --git a/stepmania/src/ScreenEz2SelectMusic.cpp b/stepmania/src/ScreenEz2SelectMusic.cpp index f3d9e1a1c2..f71393c966 100644 --- a/stepmania/src/ScreenEz2SelectMusic.cpp +++ b/stepmania/src/ScreenEz2SelectMusic.cpp @@ -42,6 +42,10 @@ #define GUIDE_Y THEME->GetMetricF("ScreenSelectMode","GuideY") #define SPEEDICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("SpeedIconP%dX",p+1)) #define SPEEDICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("SpeedIconP%dY",p+1)) +#define MIRRORICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("MirrorIconP%dX",p+1)) +#define MIRRORICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("MirrorIconP%dY",p+1)) +#define SHUFFLEICON_X( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("ShuffleIconP%dX",p+1)) +#define SHUFFLEICON_Y( p ) THEME->GetMetricF("ScreenEz2SelectMusic",ssprintf("ShuffleIconP%dY",p+1)) #define PREVIEWMUSICMODE THEME->GetMetricI("ScreenEz2SelectMusic","PreviewMusicMode") const float TWEEN_TIME = 0.5f; @@ -111,6 +115,16 @@ ScreenEz2SelectMusic::ScreenEz2SelectMusic() m_SpeedIcon[p].SetDiffuse( RageColor(0,0,0,0) ); this->AddChild(&m_SpeedIcon[p] ); + m_MirrorIcon[p].Load( THEME->GetPathTo("Graphics","select music mirroricon")); + m_MirrorIcon[p].SetXY( MIRRORICON_X(p), MIRRORICON_Y(p) ); + m_MirrorIcon[p].SetDiffuse( RageColor(0,0,0,0) ); + this->AddChild(&m_MirrorIcon[p] ); + + m_ShuffleIcon[p].Load( THEME->GetPathTo("Graphics","select music shuffleicon")); + m_ShuffleIcon[p].SetXY( SHUFFLEICON_X(p), SHUFFLEICON_Y(p) ); + m_ShuffleIcon[p].SetDiffuse( RageColor(0,0,0,0) ); + this->AddChild(&m_ShuffleIcon[p] ); + UpdateOptions((PlayerNumber) p,0); m_iSelection[p] = 0; @@ -209,18 +223,35 @@ void ScreenEz2SelectMusic::UpdateOptions(PlayerNumber pn, int nosound) if(asOptions.size() > 0) // check it's not empty! { - if(asOptions[0] != "1.0X" && asOptions[0] != "" && asOptions[0] != NULL) + m_MirrorIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); + m_ShuffleIcon[pn].SetDiffuse( RageColor(0,0,0,0) ); + + for(int i=0; i