diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index f36631bce6..122067b8e2 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -472,6 +472,7 @@ MemoryCardIcons=1 [ScreenSelectMusic] Class=ScreenSelectMusic Fallback=ScreenWithMenuElements +MusicWheelType=MusicWheel NonPresenceP1X=-128 NonPresenceP1Y=SCREEN_CENTER_Y+0 NonPresenceP1OnCommand=x,-128;sleep,0.5;linear,1.0;x,32 diff --git a/stepmania/src/MusicWheel.cpp b/stepmania/src/MusicWheel.cpp index c34a123bcd..2fbfbb349c 100644 --- a/stepmania/src/MusicWheel.cpp +++ b/stepmania/src/MusicWheel.cpp @@ -26,43 +26,16 @@ #include "ThemeMetric.h" #include "PlayerState.h" - -ThemeMetric SWITCH_SECONDS ("MusicWheel","SwitchSeconds"); -ThemeMetric ROULETTE_SWITCH_SECONDS ("MusicWheel","RouletteSwitchSeconds"); -ThemeMetric ROULETTE_SLOW_DOWN_SWITCHES ("MusicWheel","RouletteSlowDownSwitches"); -ThemeMetric LOCKED_INITIAL_VELOCITY ("MusicWheel","LockedInitialVelocity"); -ThemeMetric SCROLL_BAR_X ("MusicWheel","ScrollBarX"); -ThemeMetric SCROLL_BAR_HEIGHT ("MusicWheel","ScrollBarHeight"); -ThemeMetric ITEM_CURVE_X ("MusicWheel","ItemCurveX"); -ThemeMetric USE_LINEAR_WHEEL ("MusicWheel","NoCurving"); -ThemeMetric ITEM_SPACING_Y ("MusicWheel","ItemSpacingY"); -ThemeMetric WHEEL_3D_RADIUS ("MusicWheel","Wheel3DRadius"); -ThemeMetric CIRCLE_PERCENT ("MusicWheel","CirclePercent"); -ThemeMetric NUM_SECTION_COLORS ("MusicWheel","NumSectionColors"); -ThemeMetric SONG_REAL_EXTRA_COLOR ("MusicWheel","SongRealExtraColor"); -ThemeMetric SORT_MENU_COLOR ("MusicWheel","SortMenuColor"); -ThemeMetric SHOW_ROULETTE ("MusicWheel","ShowRoulette"); -ThemeMetric SHOW_RANDOM ("MusicWheel","ShowRandom"); -ThemeMetric SHOW_PORTAL ("MusicWheel","ShowPortal"); -ThemeMetric USE_3D ("MusicWheel","Use3D"); -ThemeMetric NUM_WHEEL_ITEMS_TO_DRAW ("MusicWheel","NumWheelItems"); #define NUM_WHEEL_ITEMS ((int)ceil(NUM_WHEEL_ITEMS_TO_DRAW+2)) -ThemeMetric MOST_PLAYED_SONGS_TO_SHOW ("MusicWheel","MostPlayedSongsToShow"); -ThemeMetric MODE_MENU_CHOICE_NAMES ("MusicWheel","ModeMenuChoiceNames"); -#define CHOICE( sChoiceName ) THEME->GetMetricM ("MusicWheel",ssprintf("Choice%s",sChoiceName.c_str())) -ThemeMetric WHEEL_ITEM_ON_DELAY_CENTER ("MusicWheel","WheelItemOnDelayCenter"); -ThemeMetric WHEEL_ITEM_ON_DELAY_OFFSET ("MusicWheel","WheelItemOnDelayOffset"); -ThemeMetric WHEEL_ITEM_OFF_DELAY_CENTER ("MusicWheel","WheelItemOffDelayCenter"); -ThemeMetric WHEEL_ITEM_OFF_DELAY_OFFSET ("MusicWheel","WheelItemOffDelayOffset"); + // leaving this one under ScreenSelectMusic because that is the only place it takes effect anyway. ThemeMetric DEFAULT_SORT ("ScreenSelectMusic","DefaultSort"); static CString SECTION_COLORS_NAME( size_t i ) { return ssprintf("SectionColor%d",i+1); } -ThemeMetric1D SECTION_COLORS ("MusicWheel",SECTION_COLORS_NAME,NUM_SECTION_COLORS); +static CString CHOICE_NAME( CString s ) { return ssprintf("Choice%s",s.c_str()); } const int MAX_WHEEL_SOUND_SPEED = 15; - static const SortOrder g_SongSortOrders[] = { SORT_GROUP, @@ -72,13 +45,10 @@ static const SortOrder g_SongSortOrders[] = SORT_ARTIST, SORT_GENRE, }; -vector SONG_SORT_ORDERS( g_SongSortOrders, g_SongSortOrders + ARRAYSIZE(g_SongSortOrders) ); +const vector SONG_SORT_ORDERS( g_SongSortOrders, g_SongSortOrders + ARRAYSIZE(g_SongSortOrders) ); -MusicWheel::MusicWheel() : - SECTION_COLORS ("MusicWheel",SECTION_COLORS_NAME,NUM_SECTION_COLORS) +MusicWheel::MusicWheel() { - for( int i=0; iTrace( "MusicWheel::MusicWheel()" ); +void MusicWheel::Load( CString sType ) +{ + LOG->Trace( "MusicWheel::Load('%s')", sType.c_str() ); + + SWITCH_SECONDS .Load(sType,"SwitchSeconds"); + ROULETTE_SWITCH_SECONDS .Load(sType,"RouletteSwitchSeconds"); + ROULETTE_SLOW_DOWN_SWITCHES .Load(sType,"RouletteSlowDownSwitches"); + LOCKED_INITIAL_VELOCITY .Load(sType,"LockedInitialVelocity"); + SCROLL_BAR_X .Load(sType,"ScrollBarX"); + SCROLL_BAR_HEIGHT .Load(sType,"ScrollBarHeight"); + ITEM_CURVE_X .Load(sType,"ItemCurveX"); + USE_LINEAR_WHEEL .Load(sType,"NoCurving"); + ITEM_SPACING_Y .Load(sType,"ItemSpacingY"); + WHEEL_3D_RADIUS .Load(sType,"Wheel3DRadius"); + CIRCLE_PERCENT .Load(sType,"CirclePercent"); + NUM_SECTION_COLORS .Load(sType,"NumSectionColors"); + SONG_REAL_EXTRA_COLOR .Load(sType,"SongRealExtraColor"); + SORT_MENU_COLOR .Load(sType,"SortMenuColor"); + SHOW_ROULETTE .Load(sType,"ShowRoulette"); + SHOW_RANDOM .Load(sType,"ShowRandom"); + SHOW_PORTAL .Load(sType,"ShowPortal"); + USE_3D .Load(sType,"Use3D"); + NUM_WHEEL_ITEMS_TO_DRAW .Load(sType,"NumWheelItems"); + MOST_PLAYED_SONGS_TO_SHOW .Load(sType,"MostPlayedSongsToShow"); + MODE_MENU_CHOICE_NAMES .Load(sType,"ModeMenuChoiceNames"); + vector vsModeChoiceNames; + split( MODE_MENU_CHOICE_NAMES, ",", vsModeChoiceNames ); + CHOICE .Load(sType,CHOICE_NAME,vsModeChoiceNames); + WHEEL_ITEM_ON_DELAY_CENTER .Load(sType,"WheelItemOnDelayCenter"); + WHEEL_ITEM_ON_DELAY_OFFSET .Load(sType,"WheelItemOnDelayOffset"); + WHEEL_ITEM_OFF_DELAY_CENTER .Load(sType,"WheelItemOffDelayCenter"); + WHEEL_ITEM_OFF_DELAY_OFFSET .Load(sType,"WheelItemOffDelayOffset"); + SECTION_COLORS .Load(sType,SECTION_COLORS_NAME,NUM_SECTION_COLORS); + + + FOREACH( MusicWheelItem*, m_MusicWheelItems, i ) + SAFE_DELETE( *i ); + m_MusicWheelItems.clear(); + for( int i=0; iTrace( "MusicWheel::Load('%s')", sType.c_str() ); if (GAMESTATE->m_pCurSong != NULL) LOG->Trace( "Current Song: %s", GAMESTATE->m_pCurSong->GetSongDir().c_str() ); else @@ -130,20 +140,20 @@ void MusicWheel::Load() GAMESTATE->m_CurStyle = GAMEMAN->STYLE_DANCE_SINGLE; */ - m_sprHighlight.Load( THEME->GetPathG("MusicWheel","highlight") ); + m_sprHighlight.Load( THEME->GetPathG(sType,"highlight") ); m_sprHighlight->SetName( "Highlight" ); this->AddChild( m_sprHighlight ); - ActorUtil::OnCommand( m_sprHighlight, "MusicWheel" ); + ActorUtil::OnCommand( m_sprHighlight, sType ); m_ScrollBar.SetX( SCROLL_BAR_X ); m_ScrollBar.SetBarHeight( SCROLL_BAR_HEIGHT ); this->AddChild( &m_ScrollBar ); /* We play a lot of this one, so precache it. */ - m_soundChangeMusic.Load( THEME->GetPathS("MusicWheel","change"), true ); - m_soundChangeSort.Load( THEME->GetPathS("MusicWheel","sort") ); - m_soundExpand.Load( THEME->GetPathS("MusicWheel","expand") ); - m_soundLocked.Load( THEME->GetPathS("MusicWheel","locked"), true ); + m_soundChangeMusic.Load( THEME->GetPathS(sType,"change"), true ); + m_soundChangeSort.Load( THEME->GetPathS(sType,"sort") ); + m_soundExpand.Load( THEME->GetPathS(sType,"expand"), true ); + m_soundLocked.Load( THEME->GetPathS(sType,"locked"), true ); m_iSelection = 0; @@ -468,14 +478,13 @@ void MusicWheel::BuildWheelItemDatas( vector &arrayWheelItemDatas case SORT_MODE_MENU: { arrayWheelItemDatas.clear(); // clear out the previous wheel items - CString sNames = MODE_MENU_CHOICE_NAMES; vector vsNames; - split( sNames, ",", vsNames ); + split( MODE_MENU_CHOICE_NAMES, ",", vsNames ); for( unsigned i=0; i SWITCH_SECONDS; + ThemeMetric ROULETTE_SWITCH_SECONDS; + ThemeMetric ROULETTE_SLOW_DOWN_SWITCHES; + ThemeMetric LOCKED_INITIAL_VELOCITY; + ThemeMetric SCROLL_BAR_X; + ThemeMetric SCROLL_BAR_HEIGHT; + ThemeMetric ITEM_CURVE_X; + ThemeMetric USE_LINEAR_WHEEL; + ThemeMetric ITEM_SPACING_Y; + ThemeMetric WHEEL_3D_RADIUS; + ThemeMetric CIRCLE_PERCENT; + ThemeMetric NUM_SECTION_COLORS; + ThemeMetric SONG_REAL_EXTRA_COLOR; + ThemeMetric SORT_MENU_COLOR; + ThemeMetric SHOW_ROULETTE; + ThemeMetric SHOW_RANDOM; + ThemeMetric SHOW_PORTAL; + ThemeMetric USE_3D; + ThemeMetric NUM_WHEEL_ITEMS_TO_DRAW; + ThemeMetric MOST_PLAYED_SONGS_TO_SHOW; + ThemeMetric MODE_MENU_CHOICE_NAMES; + ThemeMetricMap CHOICE; + ThemeMetric WHEEL_ITEM_ON_DELAY_CENTER; + ThemeMetric WHEEL_ITEM_ON_DELAY_OFFSET; + ThemeMetric WHEEL_ITEM_OFF_DELAY_CENTER; + ThemeMetric WHEEL_ITEM_OFF_DELAY_OFFSET; ThemeMetric1D SECTION_COLORS; }; diff --git a/stepmania/src/ScreenNetSelectMusic.cpp b/stepmania/src/ScreenNetSelectMusic.cpp index 5549eb079a..b55473abe3 100644 --- a/stepmania/src/ScreenNetSelectMusic.cpp +++ b/stepmania/src/ScreenNetSelectMusic.cpp @@ -69,7 +69,7 @@ void ScreenNetSelectMusic::Init() this->AddChild( &m_DifficultyMeters[p] ); } - m_MusicWheel.Load(); + m_MusicWheel.Load( "MusicWheel" ); m_MusicWheel.SetName( "MusicWheel", "Wheel" ); SET_XY( m_MusicWheel ); m_MusicWheel.TweenOnScreen(); diff --git a/stepmania/src/ScreenSelectMusic.cpp b/stepmania/src/ScreenSelectMusic.cpp index 7dfe9540ad..59b15eab1d 100644 --- a/stepmania/src/ScreenSelectMusic.cpp +++ b/stepmania/src/ScreenSelectMusic.cpp @@ -62,7 +62,8 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : ScreenWithMenuEleme SHOW_DIFFICULTY_LIST( m_sName, "ShowDifficultyList" ), DO_ROULETTE_ON_MENU_TIMER( m_sName, "DoRouletteOnMenuTimer" ), ALIGN_MUSIC_BEATS( m_sName, "AlignMusicBeat" ), - CODES( m_sName, "Codes" ) + CODES( m_sName, "Codes" ), + MUSIC_WHEEL_TYPE( m_sName, "MusicWheelType" ) { LOG->Trace( "ScreenSelectMusic::ScreenSelectMusic()" ); @@ -102,7 +103,7 @@ void ScreenSelectMusic::Init() /* Load low-res banners, if needed. */ BANNERCACHE->Demand(); - m_MusicWheel.Load(); + m_MusicWheel.Load( MUSIC_WHEEL_TYPE ); // pop'n music has this under the songwheel... FOREACH_PlayerNumber( p ) diff --git a/stepmania/src/ScreenSelectMusic.h b/stepmania/src/ScreenSelectMusic.h index 434dc5c822..cb51f65d9e 100644 --- a/stepmania/src/ScreenSelectMusic.h +++ b/stepmania/src/ScreenSelectMusic.h @@ -84,6 +84,7 @@ protected: ThemeMetric DO_ROULETTE_ON_MENU_TIMER; ThemeMetric ALIGN_MUSIC_BEATS; ThemeMetric CODES; + ThemeMetric MUSIC_WHEEL_TYPE; CString m_sSectionMusicPath; CString m_sSortMusicPath;