move Random "don't lock after choose" logic to a separate wheel item, "LEAP"
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user