move Random "don't lock after choose" logic to a separate wheel item, "LEAP"

This commit is contained in:
Chris Danford
2004-04-26 06:47:03 +00:00
parent 1781f0148a
commit 4ac1e0ee45
12 changed files with 82 additions and 45 deletions
+1
View File
@@ -2732,6 +2732,7 @@ SongRealExtraColor=0.9,0.9,0,1 // yellow
SortMenuColor=1,1,0,1 SortMenuColor=1,1,0,1
ShowRoulette=1 ShowRoulette=1
ShowRandom=1 ShowRandom=1
ShowLeap=0
Use3D=0 Use3D=0
Wheel3DRadius=200 # Possibly safe defaults? Wheel3DRadius=200 # Possibly safe defaults?
CirclePercent=0.5 CirclePercent=0.5
+8
View File
@@ -22,11 +22,13 @@
CachedThemeMetricB SCROLL_RANDOM ("Banner","ScrollRandom"); CachedThemeMetricB SCROLL_RANDOM ("Banner","ScrollRandom");
CachedThemeMetricB SCROLL_ROULETTE ("Banner","ScrollRoulette"); CachedThemeMetricB SCROLL_ROULETTE ("Banner","ScrollRoulette");
CachedThemeMetricB SCROLL_LEAP ("Banner","ScrollLeap");
Banner::Banner() Banner::Banner()
{ {
SCROLL_RANDOM.Refresh(); SCROLL_RANDOM.Refresh();
SCROLL_ROULETTE.Refresh(); SCROLL_ROULETTE.Refresh();
SCROLL_LEAP.Refresh();
m_bScrolling = false; m_bScrolling = false;
m_fPercentScrolling = 0; m_fPercentScrolling = 0;
@@ -176,3 +178,9 @@ void Banner::LoadRandom()
Load( THEME->GetPathToG("Banner random") ); Load( THEME->GetPathToG("Banner random") );
m_bScrolling = (bool)SCROLL_ROULETTE; m_bScrolling = (bool)SCROLL_ROULETTE;
} }
void Banner::LoadLeap()
{
Load( THEME->GetPathToG("Banner leap") );
m_bScrolling = (bool)SCROLL_LEAP;
}
+1
View File
@@ -38,6 +38,7 @@ public:
void LoadTABreakFromCharacter( Character* pCharacter ); void LoadTABreakFromCharacter( Character* pCharacter );
void LoadRoulette(); void LoadRoulette();
void LoadRandom(); void LoadRandom();
void LoadLeap();
void LoadFallback(); void LoadFallback();
void SetScrolling( bool bScroll, float Percent = 0); void SetScrolling( bool bScroll, float Percent = 0);
+6
View File
@@ -200,6 +200,12 @@ void FadingBanner::LoadRandom()
m_Banner[GetBackIndex()].LoadRandom(); m_Banner[GetBackIndex()].LoadRandom();
} }
void FadingBanner::LoadLeap()
{
BeforeChange();
m_Banner[GetBackIndex()].LoadLeap();
}
void FadingBanner::LoadFallback() void FadingBanner::LoadFallback()
{ {
BeforeChange(); BeforeChange();
+1
View File
@@ -31,6 +31,7 @@ public:
void LoadFromCourse( Course* pCourse ); void LoadFromCourse( Course* pCourse );
void LoadRoulette(); void LoadRoulette();
void LoadRandom(); void LoadRandom();
void LoadLeap();
void LoadFallback(); void LoadFallback();
void SetMovingFast( bool fast ) { m_bMovingFast=fast; } void SetMovingFast( bool fast ) { m_bMovingFast=fast; }
+15 -8
View File
@@ -54,6 +54,7 @@ CachedThemeMetricF CIRCLE_PERCENT ("MusicWheel","CirclePercent");
#define SORT_MENU_COLOR THEME->GetMetricC("MusicWheel","SortMenuColor") #define SORT_MENU_COLOR THEME->GetMetricC("MusicWheel","SortMenuColor")
#define SHOW_ROULETTE THEME->GetMetricB("MusicWheel","ShowRoulette") #define SHOW_ROULETTE THEME->GetMetricB("MusicWheel","ShowRoulette")
#define SHOW_RANDOM THEME->GetMetricB("MusicWheel","ShowRandom") #define SHOW_RANDOM THEME->GetMetricB("MusicWheel","ShowRandom")
#define SHOW_LEAP THEME->GetMetricB("MusicWheel","ShowLeap")
CachedThemeMetricB USE_3D ("MusicWheel","Use3D"); CachedThemeMetricB USE_3D ("MusicWheel","Use3D");
CachedThemeMetricI NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems"); CachedThemeMetricI NUM_WHEEL_ITEMS_METRIC ("MusicWheel","NumWheelItems");
#define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, (int) NUM_WHEEL_ITEMS_METRIC ) #define NUM_WHEEL_ITEMS min( MAX_WHEEL_ITEMS, (int) NUM_WHEEL_ITEMS_METRIC )
@@ -579,10 +580,15 @@ void MusicWheel::BuildWheelItemDatas( vector<WheelItemData> &arrayWheelItemDatas
} }
} }
if( so != SORT_ROULETTE && SHOW_ROULETTE ) if( so != SORT_ROULETTE )
{
if( SHOW_ROULETTE )
arrayWheelItemDatas.push_back( WheelItemData(TYPE_ROULETTE, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) ); arrayWheelItemDatas.push_back( WheelItemData(TYPE_ROULETTE, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) );
if( so != SORT_ROULETTE && SHOW_RANDOM ) if( SHOW_RANDOM )
arrayWheelItemDatas.push_back( WheelItemData(TYPE_RANDOM, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) ); arrayWheelItemDatas.push_back( WheelItemData(TYPE_RANDOM, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) );
if( SHOW_LEAP )
arrayWheelItemDatas.push_back( WheelItemData(TYPE_LEAP, NULL, "", NULL, RageColor(1,0,0,1), SORT_INVALID) );
}
// HACK: Add extra stage item if it isn't already present on the music wheel // HACK: Add extra stage item if it isn't already present on the music wheel
if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() ) if( GAMESTATE->IsExtraStage() || GAMESTATE->IsExtraStage2() )
@@ -1257,6 +1263,9 @@ bool MusicWheel::Select() // return true if this selection ends the screen
case TYPE_RANDOM: case TYPE_RANDOM:
StartRandom(); StartRandom();
return false; return false;
case TYPE_LEAP:
StartLeap();
return false;
case TYPE_SONG: case TYPE_SONG:
if( !GAMESTATE->IsExtraStage() && !GAMESTATE->IsExtraStage2() ) if( !GAMESTATE->IsExtraStage() && !GAMESTATE->IsExtraStage2() )
UNLOCKMAN->UnlockSong( m_CurWheelItemData[m_iSelection]->m_pSong ); UNLOCKMAN->UnlockSong( m_CurWheelItemData[m_iSelection]->m_pSong );
@@ -1285,8 +1294,6 @@ void MusicWheel::StartRoulette()
void MusicWheel::StartRandom() void MusicWheel::StartRandom()
{ {
if( PREFSMAN->m_bLockWheelAfterRandom )
{
/* Shuffle the roulette wheel. */ /* Shuffle the roulette wheel. */
RandomGen rnd; RandomGen rnd;
random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd ); random_shuffle( m_WheelItemDatas[SORT_ROULETTE].begin(), m_WheelItemDatas[SORT_ROULETTE].end(), rnd );
@@ -1301,9 +1308,10 @@ void MusicWheel::StartRandom()
this->Select(); this->Select();
RebuildMusicWheelItems(); RebuildMusicWheelItems();
} }
else
{ void MusicWheel::StartLeap()
{
/* If we're in SORT_SORT_MENU or SORT_MODE_MENU, then the timer probably ran /* If we're in SORT_SORT_MENU or SORT_MODE_MENU, then the timer probably ran
* out. Make sure we're in a sort with actual selections. */ * out. Make sure we're in a sort with actual selections. */
switch( GAMESTATE->m_SortOrder ) switch( GAMESTATE->m_SortOrder )
@@ -1319,7 +1327,6 @@ void MusicWheel::StartRandom()
m_soundStart.Play(); m_soundStart.Play();
SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 ); SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 );
RebuildMusicWheelItems(); RebuildMusicWheelItems();
}
} }
void MusicWheel::SetOpenGroup(CString group, SortOrder so) void MusicWheel::SetOpenGroup(CString group, SortOrder so)
+1
View File
@@ -58,6 +58,7 @@ public:
bool NextSort(); // return true if change successful bool NextSort(); // return true if change successful
void StartRoulette(); void StartRoulette();
void StartRandom(); void StartRandom();
void StartLeap();
bool IsRouletting() const; bool IsRouletting() const;
/* Return true if we're moving fast automatically. */ /* Return true if we're moving fast automatically. */
int IsMoving() const; int IsMoving() const;
+13 -2
View File
@@ -174,11 +174,15 @@ void MusicWheelItem::LoadFromWheelItemData( WheelItemData* pWID )
} }
break; break;
case TYPE_ROULETTE: case TYPE_ROULETTE:
m_textRoulette.SetText( "ROULETTE" ); m_textRoulette.SetText( THEME->GetMetric("MusicWheel","Roulette") );
break; break;
case TYPE_RANDOM: case TYPE_RANDOM:
m_textRoulette.SetText( "RANDOM" ); m_textRoulette.SetText( THEME->GetMetric("MusicWheel","Random") );
break;
case TYPE_LEAP:
m_textRoulette.SetText( THEME->GetMetric("MusicWheel","Leap") );
break; break;
default: default:
@@ -227,6 +231,7 @@ void MusicWheelItem::Update( float fDeltaTime )
break; break;
case TYPE_ROULETTE: case TYPE_ROULETTE:
case TYPE_RANDOM: case TYPE_RANDOM:
case TYPE_LEAP:
m_sprSectionBar.Update( fDeltaTime ); m_sprSectionBar.Update( fDeltaTime );
m_textRoulette.Update( fDeltaTime ); m_textRoulette.Update( fDeltaTime );
break; break;
@@ -260,6 +265,7 @@ void MusicWheelItem::DrawPrimitives()
case TYPE_SECTION: case TYPE_SECTION:
case TYPE_ROULETTE: case TYPE_ROULETTE:
case TYPE_RANDOM: case TYPE_RANDOM:
case TYPE_LEAP:
case TYPE_SORT: case TYPE_SORT:
bar = &m_sprSectionBar; bar = &m_sprSectionBar;
break; break;
@@ -279,6 +285,7 @@ void MusicWheelItem::DrawPrimitives()
break; break;
case TYPE_ROULETTE: case TYPE_ROULETTE:
case TYPE_RANDOM: case TYPE_RANDOM:
case TYPE_LEAP:
m_textRoulette.Draw(); m_textRoulette.Draw();
break; break;
case TYPE_SONG: case TYPE_SONG:
@@ -338,6 +345,7 @@ bool WheelItemData::HasBanner() const
/* XXX: These are special cases. */ /* XXX: These are special cases. */
case TYPE_ROULETTE: case TYPE_ROULETTE:
case TYPE_RANDOM: case TYPE_RANDOM:
case TYPE_LEAP:
case TYPE_SORT: case TYPE_SORT:
return false; return false;
@@ -362,6 +370,9 @@ CString WheelItemData::GetBanner() const
case TYPE_RANDOM: case TYPE_RANDOM:
return THEME->GetPathToG("Banner roulette"); return THEME->GetPathToG("Banner roulette");
case TYPE_LEAP:
return THEME->GetPathToG("Banner leap");
default: ASSERT(0); return ""; default: ASSERT(0); return "";
} }
} }
+1 -1
View File
@@ -60,7 +60,7 @@ public:
ActorFrame m_All; ActorFrame m_All;
}; };
enum WheelItemType { TYPE_SECTION, TYPE_SONG, TYPE_ROULETTE, TYPE_RANDOM, TYPE_COURSE, TYPE_SORT }; enum WheelItemType { TYPE_SECTION, TYPE_SONG, TYPE_ROULETTE, TYPE_RANDOM, TYPE_LEAP, TYPE_COURSE, TYPE_SORT };
struct WheelItemData struct WheelItemData
{ {
-3
View File
@@ -214,7 +214,6 @@ PrefsManager::PrefsManager()
m_iAttractSoundFrequency = 1; m_iAttractSoundFrequency = 1;
m_bAllowExtraStage = true; m_bAllowExtraStage = true;
m_bLockWheelAfterRandom = true;
m_bHideDefaultNoteSkin = false; m_bHideDefaultNoteSkin = false;
m_iMaxHighScoresPerList = 10; m_iMaxHighScoresPerList = 10;
m_fPadStickSeconds = 0; m_fPadStickSeconds = 0;
@@ -503,7 +502,6 @@ void PrefsManager::ReadGlobalPrefsFromDisk()
ini.GetValue( "Options", "CenterImageScaleY", m_fCenterImageScaleY ); ini.GetValue( "Options", "CenterImageScaleY", m_fCenterImageScaleY );
ini.GetValue( "Options", "AttractSoundFrequency", m_iAttractSoundFrequency ); ini.GetValue( "Options", "AttractSoundFrequency", m_iAttractSoundFrequency );
ini.GetValue( "Options", "AllowExtraStage", m_bAllowExtraStage ); ini.GetValue( "Options", "AllowExtraStage", m_bAllowExtraStage );
ini.GetValue( "Options", "LockWheelAfterRandom", m_bLockWheelAfterRandom );
ini.GetValue( "Options", "HideDefaultNoteSkin", m_bHideDefaultNoteSkin ); ini.GetValue( "Options", "HideDefaultNoteSkin", m_bHideDefaultNoteSkin );
ini.GetValue( "Options", "MaxHighScoresPerList", m_iMaxHighScoresPerList ); ini.GetValue( "Options", "MaxHighScoresPerList", m_iMaxHighScoresPerList );
ini.GetValue( "Options", "PadStickSeconds", m_fPadStickSeconds ); ini.GetValue( "Options", "PadStickSeconds", m_fPadStickSeconds );
@@ -723,7 +721,6 @@ void PrefsManager::SaveGlobalPrefsToDisk() const
ini.SetValue( "Options", "CenterImageScaleY", m_fCenterImageScaleY ); ini.SetValue( "Options", "CenterImageScaleY", m_fCenterImageScaleY );
ini.SetValue( "Options", "AttractSoundFrequency", m_iAttractSoundFrequency ); ini.SetValue( "Options", "AttractSoundFrequency", m_iAttractSoundFrequency );
ini.SetValue( "Options", "AllowExtraStage", m_bAllowExtraStage ); ini.SetValue( "Options", "AllowExtraStage", m_bAllowExtraStage );
ini.SetValue( "Options", "LockWheelAfterRandom", m_bLockWheelAfterRandom );
ini.SetValue( "Options", "HideDefaultNoteSkin", m_bHideDefaultNoteSkin ); ini.SetValue( "Options", "HideDefaultNoteSkin", m_bHideDefaultNoteSkin );
ini.SetValue( "Options", "MaxHighScoresPerList", m_iMaxHighScoresPerList ); ini.SetValue( "Options", "MaxHighScoresPerList", m_iMaxHighScoresPerList );
ini.SetValue( "Options", "PadStickSeconds", m_fPadStickSeconds ); ini.SetValue( "Options", "PadStickSeconds", m_fPadStickSeconds );
-1
View File
@@ -190,7 +190,6 @@ public:
float m_fCenterImageScaleY; float m_fCenterImageScaleY;
int m_iAttractSoundFrequency; // 0 = never, 1 = every time int m_iAttractSoundFrequency; // 0 = never, 1 = every time
bool m_bAllowExtraStage; bool m_bAllowExtraStage;
bool m_bLockWheelAfterRandom;
bool m_bHideDefaultNoteSkin; bool m_bHideDefaultNoteSkin;
int m_iMaxHighScoresPerList; int m_iMaxHighScoresPerList;
+5
View File
@@ -1393,10 +1393,12 @@ void ScreenSelectMusic::AfterMusicChange()
break; break;
case TYPE_ROULETTE: case TYPE_ROULETTE:
case TYPE_RANDOM: case TYPE_RANDOM:
case TYPE_LEAP:
switch(m_MusicWheel.GetSelectedType()) switch(m_MusicWheel.GetSelectedType())
{ {
case TYPE_ROULETTE: m_Banner.LoadRoulette(); break; case TYPE_ROULETTE: m_Banner.LoadRoulette(); break;
case TYPE_RANDOM: m_Banner.LoadRandom(); break; case TYPE_RANDOM: m_Banner.LoadRandom(); break;
case TYPE_LEAP: m_Banner.LoadLeap(); break;
default: ASSERT(0); default: ASSERT(0);
} }
@@ -1415,6 +1417,9 @@ void ScreenSelectMusic::AfterMusicChange()
case TYPE_RANDOM: case TYPE_RANDOM:
SampleMusicToPlay = THEME->GetPathToS("ScreenSelectMusic random music"); SampleMusicToPlay = THEME->GetPathToS("ScreenSelectMusic random music");
break; break;
case TYPE_LEAP:
SampleMusicToPlay = THEME->GetPathToS("ScreenSelectMusic leap music");
break;
default: default:
ASSERT(0); ASSERT(0);
} }