Require C++20 for building Stepmania.
This commit is contained in:
+1
-1
@@ -538,7 +538,7 @@ void BackgroundImpl::LoadFromSong( const Song* pSong )
|
|||||||
|
|
||||||
// Pick the same random items every time the song is played.
|
// Pick the same random items every time the song is played.
|
||||||
RandomGen rnd( GetHashForString(pSong->GetSongDir()) );
|
RandomGen rnd( GetHashForString(pSong->GetSongDir()) );
|
||||||
random_shuffle( vsNames.begin(), vsNames.end(), rnd );
|
std::shuffle( vsNames.begin(), vsNames.end(), rnd );
|
||||||
int iSize = std::min( (int)g_iNumBackgrounds, (int)vsNames.size() );
|
int iSize = std::min( (int)g_iNumBackgrounds, (int)vsNames.size() );
|
||||||
vsNames.resize( iSize );
|
vsNames.resize( iSize );
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ else()
|
|||||||
${SMDATA_ALL_FILES_HPP})
|
${SMDATA_ALL_FILES_HPP})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property(TARGET "${SM_EXE_NAME}" PROPERTY CXX_STANDARD 11)
|
set_property(TARGET "${SM_EXE_NAME}" PROPERTY CXX_STANDARD 20)
|
||||||
set_property(TARGET "${SM_EXE_NAME}" PROPERTY CXX_STANDARD_REQUIRED ON)
|
set_property(TARGET "${SM_EXE_NAME}" PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||||
set_property(TARGET "${SM_EXE_NAME}" PROPERTY CXX_EXTENSIONS ON)
|
set_property(TARGET "${SM_EXE_NAME}" PROPERTY CXX_EXTENSIONS ON)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -81,7 +81,7 @@ static void SplitWithQuotes( const RString sSource, const char Delimitor, std::v
|
|||||||
|
|
||||||
RString Commands::GetOriginalCommandString() const
|
RString Commands::GetOriginalCommandString() const
|
||||||
{
|
{
|
||||||
return std::accumulate(v.begin(), v.end(), RString(), [](RString &res, Command const &c) { return res + c.GetOriginalCommandString(); });
|
return std::accumulate(v.begin(), v.end(), RString(), [](RString const &res, Command const &c) { return res + c.GetOriginalCommandString(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void ParseCommands( const RString &sCommands, Commands &vCommandsOut, bool bLegacy )
|
void ParseCommands( const RString &sCommands, Commands &vCommandsOut, bool bLegacy )
|
||||||
|
|||||||
+10
-6
@@ -368,7 +368,7 @@ static void CourseSortSongs( SongSort sort, std::vector<Song*> &vpPossibleSongs,
|
|||||||
{
|
{
|
||||||
DEFAULT_FAIL(sort);
|
DEFAULT_FAIL(sort);
|
||||||
case SongSort_Randomize:
|
case SongSort_Randomize:
|
||||||
random_shuffle( vpPossibleSongs.begin(), vpPossibleSongs.end(), rnd );
|
shuffle( vpPossibleSongs.begin(), vpPossibleSongs.end(), rnd );
|
||||||
break;
|
break;
|
||||||
case SongSort_MostPlays:
|
case SongSort_MostPlays:
|
||||||
if( PROFILEMAN )
|
if( PROFILEMAN )
|
||||||
@@ -428,7 +428,7 @@ bool Course::GetTrailUnsorted( StepsType st, CourseDifficulty cd, Trail &trail )
|
|||||||
* will change every time it's viewed, and the displayed order will have no
|
* will change every time it's viewed, and the displayed order will have no
|
||||||
* bearing on what you'll actually play. */
|
* bearing on what you'll actually play. */
|
||||||
tmp_entries = m_vEntries;
|
tmp_entries = m_vEntries;
|
||||||
random_shuffle( tmp_entries.begin(), tmp_entries.end(), rnd );
|
shuffle( tmp_entries.begin(), tmp_entries.end(), rnd );
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<CourseEntry> &entries = m_bShuffle ? tmp_entries:m_vEntries;
|
const std::vector<CourseEntry> &entries = m_bShuffle ? tmp_entries:m_vEntries;
|
||||||
@@ -589,8 +589,10 @@ bool Course::GetTrailUnsorted( StepsType st, CourseDifficulty cd, Trail &trail )
|
|||||||
int iAdd;
|
int iAdd;
|
||||||
if( iMaxDist == iMinDist )
|
if( iMaxDist == iMinDist )
|
||||||
iAdd = iMaxDist;
|
iAdd = iMaxDist;
|
||||||
else
|
else {
|
||||||
iAdd = rnd( iMaxDist - iMinDist ) + iMinDist;
|
std::uniform_int_distribution<> dist( iMinDist, iMaxDist );
|
||||||
|
iAdd = dist( rnd );
|
||||||
|
}
|
||||||
iLowMeter += iAdd;
|
iLowMeter += iAdd;
|
||||||
iHighMeter += iAdd;
|
iHighMeter += iAdd;
|
||||||
}
|
}
|
||||||
@@ -820,8 +822,10 @@ void Course::GetTrailUnsortedEndless( const std::vector<CourseEntry> &entries, T
|
|||||||
int iAdd;
|
int iAdd;
|
||||||
if( iMaxDist == iMinDist )
|
if( iMaxDist == iMinDist )
|
||||||
iAdd = iMaxDist;
|
iAdd = iMaxDist;
|
||||||
else
|
else {
|
||||||
iAdd = rnd( iMaxDist - iMinDist ) + iMinDist;
|
std::uniform_int_distribution<> dist( iMinDist, iMaxDist );
|
||||||
|
iAdd = dist( rnd );
|
||||||
|
}
|
||||||
iLowMeter += iAdd;
|
iLowMeter += iAdd;
|
||||||
iHighMeter += iAdd;
|
iHighMeter += iAdd;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -304,7 +304,7 @@ void CourseUtil::AutogenOniFromArtist( const RString &sArtistName, RString sArti
|
|||||||
* song set changes. */
|
* song set changes. */
|
||||||
{
|
{
|
||||||
RandomGen rng( GetHashForString( sArtistName ) + aSongs.size() );
|
RandomGen rng( GetHashForString( sArtistName ) + aSongs.size() );
|
||||||
random_shuffle( aSongs.begin(), aSongs.end(), rng );
|
shuffle( aSongs.begin(), aSongs.end(), rng );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only use up to four songs.
|
// Only use up to four songs.
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ static void DoPlayOnceFromDir( RString sPath )
|
|||||||
{
|
{
|
||||||
order.push_back(i);
|
order.push_back(i);
|
||||||
}
|
}
|
||||||
std::random_shuffle(order.begin(), order.end());
|
std::shuffle( order.begin(), order.end(), g_RandomNumberGenerator );
|
||||||
}
|
}
|
||||||
|
|
||||||
int index = order.back();
|
int index = order.back();
|
||||||
|
|||||||
+1
-1
@@ -1333,7 +1333,7 @@ void MusicWheel::StartRandom()
|
|||||||
{
|
{
|
||||||
// Shuffle and use the roulette wheel.
|
// Shuffle and use the roulette wheel.
|
||||||
RandomGen rnd;
|
RandomGen rnd;
|
||||||
random_shuffle( getWheelItemsData(SORT_ROULETTE).begin(), getWheelItemsData(SORT_ROULETTE).end(), rnd );
|
shuffle( getWheelItemsData(SORT_ROULETTE).begin(), getWheelItemsData(SORT_ROULETTE).end(), rnd );
|
||||||
GAMESTATE->m_SortOrder.Set( SORT_ROULETTE );
|
GAMESTATE->m_SortOrder.Set( SORT_ROULETTE );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1535,19 +1535,19 @@ static void GetTrackMapping( StepsType st, NoteDataUtil::TrackMapping tt, int Nu
|
|||||||
switch(st) {
|
switch(st) {
|
||||||
case StepsType_beat_single5:
|
case StepsType_beat_single5:
|
||||||
{
|
{
|
||||||
std::random_shuffle( &iTakeFromTrack[0], &iTakeFromTrack[5], rnd );
|
std::shuffle( &iTakeFromTrack[0], &iTakeFromTrack[5], rnd );
|
||||||
std::random_shuffle( &iTakeFromTrack[6], &iTakeFromTrack[11], rnd );
|
std::shuffle( &iTakeFromTrack[6], &iTakeFromTrack[11], rnd );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case StepsType_beat_single7:
|
case StepsType_beat_single7:
|
||||||
{
|
{
|
||||||
std::random_shuffle( &iTakeFromTrack[1], &iTakeFromTrack[8], rnd );
|
std::shuffle( &iTakeFromTrack[1], &iTakeFromTrack[8], rnd );
|
||||||
std::random_shuffle( &iTakeFromTrack[9], &iTakeFromTrack[16], rnd );
|
std::shuffle( &iTakeFromTrack[9], &iTakeFromTrack[16], rnd );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
std::random_shuffle( &iTakeFromTrack[0], &iTakeFromTrack[NumTracks], rnd );
|
std::shuffle( &iTakeFromTrack[0], &iTakeFromTrack[NumTracks], rnd );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1970,7 +1970,7 @@ static void HyperShuffleNotes( NoteData &inout, int iStartIndex, int iEndIndex)
|
|||||||
for(int i = iActualTaps; i < iFreeTracks; i++)
|
for(int i = iActualTaps; i < iFreeTracks; i++)
|
||||||
vtnTargetTaps.push_back(TAP_EMPTY);
|
vtnTargetTaps.push_back(TAP_EMPTY);
|
||||||
|
|
||||||
std::random_shuffle(viTargetTracks.begin(), viTargetTracks.end(), g_RandomNumberGenerator);
|
std::shuffle(viTargetTracks.begin(), viTargetTracks.end(), g_RandomNumberGenerator);
|
||||||
|
|
||||||
// Go through the tracks in their shuffled order and drop tap notes.
|
// Go through the tracks in their shuffled order and drop tap notes.
|
||||||
for(int i = 0; i < viTargetTracks.size(); i++)
|
for(int i = 0; i < viTargetTracks.size(); i++)
|
||||||
|
|||||||
+1
-1
@@ -544,7 +544,7 @@ void OptionRow::SetDestination( Actor::TweenState &ts, bool bTween )
|
|||||||
if( m_Frame.DestTweenState() != ts )
|
if( m_Frame.DestTweenState() != ts )
|
||||||
{
|
{
|
||||||
m_Frame.StopTweening();
|
m_Frame.StopTweening();
|
||||||
if( bTween && m_pParentType->TWEEN_SECONDS != 0 )
|
if( bTween && m_pParentType->TWEEN_SECONDS != 0.0f )
|
||||||
m_Frame.BeginTweening( m_pParentType->TWEEN_SECONDS );
|
m_Frame.BeginTweening( m_pParentType->TWEEN_SECONDS );
|
||||||
m_Frame.DestTweenState() = ts;
|
m_Frame.DestTweenState() = ts;
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-72
@@ -29,74 +29,6 @@ void UnicodeUpperLower(wchar_t *, size_t, const unsigned char *);
|
|||||||
|
|
||||||
RandomGen g_RandomNumberGenerator;
|
RandomGen g_RandomNumberGenerator;
|
||||||
|
|
||||||
MersenneTwister::MersenneTwister( int iSeed ) : m_iNext(0)
|
|
||||||
{
|
|
||||||
Reset( iSeed );
|
|
||||||
}
|
|
||||||
|
|
||||||
void MersenneTwister::Reset( int iSeed )
|
|
||||||
{
|
|
||||||
if( iSeed == 0 )
|
|
||||||
iSeed = time(nullptr);
|
|
||||||
|
|
||||||
m_Values[0] = iSeed;
|
|
||||||
m_iNext = 0;
|
|
||||||
for( int i = 1; i < 624; ++i )
|
|
||||||
m_Values[i] = ((69069 * m_Values[i-1]) + 1) & 0xFFFFFFFF;
|
|
||||||
|
|
||||||
GenerateValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MersenneTwister::GenerateValues()
|
|
||||||
{
|
|
||||||
static const unsigned mask[] = { 0, 0x9908B0DF };
|
|
||||||
|
|
||||||
for( int i = 0; i < 227; ++i )
|
|
||||||
{
|
|
||||||
int iVal = (m_Values[i] & 0x80000000) | (m_Values[i+1] & 0x7FFFFFFF);
|
|
||||||
int iNext = (i + 397);
|
|
||||||
|
|
||||||
m_Values[i] = m_Values[iNext];
|
|
||||||
m_Values[i] ^= (iVal >> 1);
|
|
||||||
m_Values[i] ^= mask[iVal&1];
|
|
||||||
}
|
|
||||||
|
|
||||||
for( int i = 227; i < 623; ++i )
|
|
||||||
{
|
|
||||||
int iVal = (m_Values[i] & 0x80000000) | (m_Values[i+1] & 0x7FFFFFFF);
|
|
||||||
int iNext = (i + 397) - 624;
|
|
||||||
|
|
||||||
m_Values[i] = m_Values[iNext];
|
|
||||||
m_Values[i] ^= (iVal >> 1);
|
|
||||||
m_Values[i] ^= mask[iVal&1];
|
|
||||||
}
|
|
||||||
|
|
||||||
int iVal = (m_Values[623] & 0x80000000) + (m_Values[0] & 0x7FFFFFFF);
|
|
||||||
int iNext = (623 + 397) - 624;
|
|
||||||
m_Values[623] = m_Values[iNext] ^ (iVal>>1);
|
|
||||||
m_Values[623] ^= mask[iVal&1];
|
|
||||||
}
|
|
||||||
|
|
||||||
int MersenneTwister::Temper( int iVal )
|
|
||||||
{
|
|
||||||
iVal ^= (iVal >> 11);
|
|
||||||
iVal ^= (iVal << 7) & 0x9D2C5680;
|
|
||||||
iVal ^= (iVal << 15) & 0xEFC60000;
|
|
||||||
iVal ^= (iVal >> 18);
|
|
||||||
return iVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
int MersenneTwister::operator()()
|
|
||||||
{
|
|
||||||
if( m_iNext == 624 )
|
|
||||||
{
|
|
||||||
m_iNext = 0;
|
|
||||||
GenerateValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Temper( m_Values[m_iNext++] );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Extend MersenneTwister into Lua space. This is intended to replace
|
/* Extend MersenneTwister into Lua space. This is intended to replace
|
||||||
* math.randomseed and math.random, so we conform to their behavior. */
|
* math.randomseed and math.random, so we conform to their behavior. */
|
||||||
|
|
||||||
@@ -109,7 +41,7 @@ namespace
|
|||||||
|
|
||||||
static int Seed( lua_State *L )
|
static int Seed( lua_State *L )
|
||||||
{
|
{
|
||||||
g_LuaPRNG.Reset( IArg(1) );
|
g_LuaPRNG = MersenneTwister( IArg(1) );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +52,8 @@ namespace
|
|||||||
/* [0..1) */
|
/* [0..1) */
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
double r = double(g_LuaPRNG()) / DIVISOR;
|
std::uniform_real_distribution<> dist( 0, 1 );
|
||||||
|
double r = dist( g_LuaPRNG );
|
||||||
lua_pushnumber( L, r );
|
lua_pushnumber( L, r );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -130,7 +63,8 @@ namespace
|
|||||||
{
|
{
|
||||||
int upper = IArg(1);
|
int upper = IArg(1);
|
||||||
luaL_argcheck( L, 1 <= upper, 1, "interval is empty" );
|
luaL_argcheck( L, 1 <= upper, 1, "interval is empty" );
|
||||||
lua_pushnumber( L, g_LuaPRNG(upper) + 1 );
|
std::uniform_int_distribution<> dist( 1, upper );
|
||||||
|
lua_pushnumber( L, dist( g_LuaPRNG ) );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/* [l..u] */
|
/* [l..u] */
|
||||||
@@ -139,7 +73,8 @@ namespace
|
|||||||
int lower = IArg(1);
|
int lower = IArg(1);
|
||||||
int upper = IArg(2);
|
int upper = IArg(2);
|
||||||
luaL_argcheck( L, lower < upper, 2, "interval is empty" );
|
luaL_argcheck( L, lower < upper, 2, "interval is empty" );
|
||||||
lua_pushnumber( L, (int(g_LuaPRNG()) % (upper-lower+1)) + lower );
|
std::uniform_int_distribution<> dist( lower, upper );
|
||||||
|
lua_pushnumber( L, dist( g_LuaPRNG ) );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+19
-28
@@ -4,6 +4,7 @@
|
|||||||
#define RAGE_UTIL_H
|
#define RAGE_UTIL_H
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <random>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
@@ -230,37 +231,16 @@ inline uint32_t Swap24LE( uint32_t n ) { return Swap24( n ); }
|
|||||||
inline uint16_t Swap16LE( uint16_t n ) { return Swap16( n ); }
|
inline uint16_t Swap16LE( uint16_t n ) { return Swap16( n ); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct MersenneTwister
|
class MersenneTwister : public std::mt19937
|
||||||
{
|
{
|
||||||
MersenneTwister( int iSeed = 0 ); // 0 = time()
|
public:
|
||||||
int operator()(); // returns [0,2^31-1]
|
MersenneTwister( int iSeed = 0 ) : std::mt19937( iSeed == 0 ? time( nullptr ) : iSeed ) {}
|
||||||
int operator()( int n ) // returns [0,n)
|
|
||||||
{
|
|
||||||
return (*this)() % n;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Reset( int iSeed );
|
|
||||||
|
|
||||||
private:
|
|
||||||
static int Temper( int iValue );
|
|
||||||
void GenerateValues();
|
|
||||||
|
|
||||||
int m_Values[624];
|
|
||||||
int m_iNext;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef MersenneTwister RandomGen;
|
typedef MersenneTwister RandomGen;
|
||||||
|
|
||||||
extern RandomGen g_RandomNumberGenerator;
|
extern RandomGen g_RandomNumberGenerator;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Generate a random float between 0 inclusive and 1 exclusive.
|
|
||||||
* @return the random float.
|
|
||||||
*/
|
|
||||||
inline float RandomFloat()
|
|
||||||
{
|
|
||||||
return g_RandomNumberGenerator() / 2147483648.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Return a float between the low and high values.
|
* @brief Return a float between the low and high values.
|
||||||
* @param fLow the low value, inclusive.
|
* @param fLow the low value, inclusive.
|
||||||
@@ -269,19 +249,30 @@ inline float RandomFloat()
|
|||||||
*/
|
*/
|
||||||
inline float RandomFloat( float fLow, float fHigh )
|
inline float RandomFloat( float fLow, float fHigh )
|
||||||
{
|
{
|
||||||
return SCALE( RandomFloat(), 0.0f, 1.0f, fLow, fHigh );
|
std::uniform_real_distribution<> dist( fLow, fHigh );
|
||||||
|
return dist( g_RandomNumberGenerator );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Generate a random float between 0 inclusive and 1 exclusive.
|
||||||
|
* @return the random float.
|
||||||
|
*/
|
||||||
|
inline float RandomFloat()
|
||||||
|
{
|
||||||
|
return RandomFloat( 0, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an integer between nLow and nHigh inclusive
|
// Returns an integer between nLow and nHigh inclusive
|
||||||
inline int RandomInt( int nLow, int nHigh )
|
inline int RandomInt( int nLow, int nHigh )
|
||||||
{
|
{
|
||||||
return int( g_RandomNumberGenerator(nHigh - nLow + 1) + nLow );
|
std::uniform_int_distribution<> dist( nLow, nHigh );
|
||||||
|
return dist( g_RandomNumberGenerator );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an integer between 0 and n-1 inclusive (replacement for rand() % n).
|
// Returns an integer between 0 and n-1 inclusive (replacement for rand() % n).
|
||||||
inline int RandomInt( int n )
|
inline int RandomInt( int n )
|
||||||
{
|
{
|
||||||
return int( g_RandomNumberGenerator(n) );
|
return RandomInt( 0, n - 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ bool RandomSample::LoadSoundDir( RString sDir, int iMaxToLoad )
|
|||||||
GetDirListing( sDir + "*.ogg", arraySoundFiles );
|
GetDirListing( sDir + "*.ogg", arraySoundFiles );
|
||||||
GetDirListing( sDir + "*.wav", arraySoundFiles );
|
GetDirListing( sDir + "*.wav", arraySoundFiles );
|
||||||
|
|
||||||
std::random_shuffle( arraySoundFiles.begin(), arraySoundFiles.end() );
|
std::shuffle( arraySoundFiles.begin(), arraySoundFiles.end(), g_RandomNumberGenerator );
|
||||||
const unsigned int newSize = std::min<unsigned int>(arraySoundFiles.size(), static_cast<unsigned int>(iMaxToLoad));
|
const unsigned int newSize = std::min<unsigned int>(arraySoundFiles.size(), static_cast<unsigned int>(iMaxToLoad));
|
||||||
arraySoundFiles.resize(newSize);
|
arraySoundFiles.resize(newSize);
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ void ScreenOptionsCourseOverview::ProcessMenuStart( const InputEventPlus &input
|
|||||||
case CourseOverviewRow_Shuffle:
|
case CourseOverviewRow_Shuffle:
|
||||||
{
|
{
|
||||||
Course *pCourse = GAMESTATE->m_pCurCourse;
|
Course *pCourse = GAMESTATE->m_pCurCourse;
|
||||||
random_shuffle( pCourse->m_vEntries.begin(), pCourse->m_vEntries.end() );
|
shuffle( pCourse->m_vEntries.begin(), pCourse->m_vEntries.end(), g_RandomNumberGenerator );
|
||||||
Trail *pTrail = pCourse->GetTrailForceRegenCache( GAMESTATE->GetCurrentStyle(input.pn)->m_StepsType );
|
Trail *pTrail = pCourse->GetTrailForceRegenCache( GAMESTATE->GetCurrentStyle(input.pn)->m_StepsType );
|
||||||
GAMESTATE->m_pCurTrail[PLAYER_1].Set( pTrail );
|
GAMESTATE->m_pCurTrail[PLAYER_1].Set( pTrail );
|
||||||
SCREENMAN->PlayStartSound();
|
SCREENMAN->PlayStartSound();
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ void ScreenOptionsCourseOverview::ProcessMenuStart( const InputEventPlus &input
|
|||||||
case ReviewWorkoutRow_Shuffle:
|
case ReviewWorkoutRow_Shuffle:
|
||||||
{
|
{
|
||||||
Course *pCourse = GAMESTATE->m_pCurCourse;
|
Course *pCourse = GAMESTATE->m_pCurCourse;
|
||||||
random_shuffle( pCourse->m_vEntries.begin(), pCourse->m_vEntries.end() );
|
shuffle( pCourse->m_vEntries.begin(), pCourse->m_vEntries.end(), g_RandomNumberGenerator );
|
||||||
Trail *pTrail = pCourse->GetTrailForceRegenCache( GAMESTATE->m_pCurStyle->m_StepsType );
|
Trail *pTrail = pCourse->GetTrailForceRegenCache( GAMESTATE->m_pCurStyle->m_StepsType );
|
||||||
GAMESTATE->m_pCurTrail[PLAYER_1].Set( pTrail );
|
GAMESTATE->m_pCurTrail[PLAYER_1].Set( pTrail );
|
||||||
SCREENMAN->PlayStartSound();
|
SCREENMAN->PlayStartSound();
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ void ScreenWithMenuElements::Init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( TIMER_SECONDS != -1 )
|
if( TIMER_SECONDS != -1.0f )
|
||||||
{
|
{
|
||||||
ASSERT( m_MenuTimer == nullptr ); // don't load twice
|
ASSERT( m_MenuTimer == nullptr ); // don't load twice
|
||||||
m_MenuTimer = new MenuTimer;
|
m_MenuTimer = new MenuTimer;
|
||||||
|
|||||||
+2
-2
@@ -1585,10 +1585,10 @@ void SongManager::UpdateShuffled()
|
|||||||
{
|
{
|
||||||
// update shuffled
|
// update shuffled
|
||||||
m_pShuffledSongs = m_pSongs;
|
m_pShuffledSongs = m_pSongs;
|
||||||
random_shuffle( m_pShuffledSongs.begin(), m_pShuffledSongs.end(), g_RandomNumberGenerator );
|
shuffle( m_pShuffledSongs.begin(), m_pShuffledSongs.end(), g_RandomNumberGenerator );
|
||||||
|
|
||||||
m_pShuffledCourses = m_pCourses;
|
m_pShuffledCourses = m_pCourses;
|
||||||
random_shuffle( m_pShuffledCourses.begin(), m_pShuffledCourses.end(), g_RandomNumberGenerator );
|
shuffle( m_pShuffledCourses.begin(), m_pShuffledCourses.end(), g_RandomNumberGenerator );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SongManager::UpdatePreferredSort(RString sPreferredSongs, RString sPreferredCourses)
|
void SongManager::UpdatePreferredSort(RString sPreferredSongs, RString sPreferredCourses)
|
||||||
|
|||||||
Reference in New Issue
Block a user