fix PrefsManager::m_sCurrentGame not current, so GamePrefs from Static.ini weren't being used
This commit is contained in:
@@ -85,7 +85,7 @@ bool GameCommand::DescribesCurrentModeForAllPlayers() const
|
||||
|
||||
bool GameCommand::DescribesCurrentMode( PlayerNumber pn ) const
|
||||
{
|
||||
if( m_pGame != NULL && m_pGame != GAMESTATE->m_pCurGame )
|
||||
if( m_pGame != NULL && m_pGame != GAMESTATE->m_pCurGame.Get() )
|
||||
return false;
|
||||
if( m_pm != PLAY_MODE_INVALID && GAMESTATE->m_PlayMode != m_pm )
|
||||
return false;
|
||||
@@ -728,7 +728,7 @@ void GameCommand::ApplySelf( const vector<PlayerNumber> &vpns ) const
|
||||
const PlayMode OldPlayMode = GAMESTATE->m_PlayMode;
|
||||
|
||||
if( m_pGame != NULL )
|
||||
GAMESTATE->m_pCurGame = m_pGame;
|
||||
GAMESTATE->SetCurGame( m_pGame );
|
||||
if( m_pm != PLAY_MODE_INVALID )
|
||||
GAMESTATE->m_PlayMode.Set( m_pm );
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "LuaReference.h"
|
||||
#include "CommonMetrics.h"
|
||||
#include "CharacterManager.h"
|
||||
#include "Game.h"
|
||||
|
||||
#include <ctime>
|
||||
#include <set>
|
||||
@@ -62,6 +63,7 @@ Song* GameState::GetDefaultSong() const
|
||||
|
||||
|
||||
GameState::GameState() :
|
||||
m_pCurGame( Message_CurrentGameChanged ),
|
||||
m_pCurStyle( Message_CurrentStyleChanged ),
|
||||
m_PlayMode( Message_PlayModeChanged ),
|
||||
m_sPreferredSongGroup( Message_PreferredSongGroupChanged ),
|
||||
@@ -82,7 +84,7 @@ GameState::GameState() :
|
||||
{
|
||||
m_pCurStyle.Set( NULL );
|
||||
|
||||
m_pCurGame = NULL;
|
||||
m_pCurGame.Set( NULL );
|
||||
m_iCoins = 0;
|
||||
m_timeGameStarted.SetZero();
|
||||
m_bDemonstrationOrJukebox = false;
|
||||
@@ -576,6 +578,13 @@ void GameState::Update( float fDelta )
|
||||
}
|
||||
}
|
||||
|
||||
void GameState::SetCurGame( const Game *pGame )
|
||||
{
|
||||
m_pCurGame.Set( pGame );
|
||||
CString sGame = pGame ? CString(pGame->m_szName) : CString();
|
||||
PREFSMAN->m_sCurrentGame.Set( sGame );
|
||||
}
|
||||
|
||||
const float GameState::MUSIC_SECONDS_INVALID = -5000.0f;
|
||||
|
||||
void GameState::ResetMusicStatistics()
|
||||
|
||||
@@ -52,7 +52,8 @@ public:
|
||||
//
|
||||
// Main state info
|
||||
//
|
||||
const Game* m_pCurGame;
|
||||
void SetCurGame( const Game *pGame ); // Call this instead of m_pCurGame.Set to make sure PREFSMAN->m_sCurrentGame stays in sync
|
||||
BroadcastOnChangePtr<const Game> m_pCurGame;
|
||||
BroadcastOnChangePtr<const Style> m_pCurStyle;
|
||||
bool m_bSideIsJoined[NUM_PLAYERS]; // left side, right side
|
||||
bool m_bIsMultiPlayerJoined[NUM_MultiPlayer];
|
||||
|
||||
@@ -12,6 +12,7 @@ MessageManager* MESSAGEMAN = NULL; // global and accessable from anywhere in our
|
||||
|
||||
|
||||
static const CString MessageNames[] = {
|
||||
"CurrentGameChanged",
|
||||
"CurrentStyleChanged",
|
||||
"PlayModeChanged",
|
||||
"CurrentSongChanged",
|
||||
|
||||
@@ -27,6 +27,7 @@ struct lua_State;
|
||||
|
||||
enum Message
|
||||
{
|
||||
Message_CurrentGameChanged,
|
||||
Message_CurrentStyleChanged,
|
||||
Message_PlayModeChanged,
|
||||
Message_CurrentSongChanged,
|
||||
|
||||
@@ -684,7 +684,7 @@ void NetworkSyncManager::ProcessInput()
|
||||
GameName = m_packet.ReadNT();
|
||||
StyleName = m_packet.ReadNT();
|
||||
|
||||
GAMESTATE->m_pCurGame = GAMEMAN->StringToGameType( GameName );
|
||||
GAMESTATE->SetCurGame( GAMEMAN->StringToGameType(GameName) );
|
||||
GAMESTATE->m_pCurStyle.Set( GAMEMAN->GameAndStringToStyle(GAMESTATE->m_pCurGame,StyleName) );
|
||||
|
||||
SCREENMAN->SetNewScreen( "ScreenNetSelectMusic" ); //Should this be metric'd out?
|
||||
|
||||
@@ -59,7 +59,7 @@ public:
|
||||
m_currentValue = m_defaultValue;
|
||||
}
|
||||
|
||||
T Get() const
|
||||
const T &Get() const
|
||||
{
|
||||
return m_currentValue;
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ void PrefsManager::ResetToFactoryDefaults()
|
||||
SavePrefsToDisk();
|
||||
}
|
||||
|
||||
void PrefsManager::ReadPrefsFromFile( CString sIni )
|
||||
void PrefsManager::ReadPrefsFromFile( const CString &sIni )
|
||||
{
|
||||
IniFile ini;
|
||||
if( !ini.ReadFile(sIni) )
|
||||
@@ -512,13 +512,19 @@ CString PrefsManager::GetMovieDrivers()
|
||||
return m_sMovieDrivers;
|
||||
}
|
||||
|
||||
CString PrefsManager::GetLightsDriver() {
|
||||
CString PrefsManager::GetLightsDriver()
|
||||
{
|
||||
if ( m_sLightsDriver.Get().empty() )
|
||||
return (CString)DEFAULT_LIGHTS_DRIVER;
|
||||
else
|
||||
return m_sLightsDriver;
|
||||
}
|
||||
|
||||
PrefsManager::GamePrefs &PrefsManager::GetCurrentGamePrefs()
|
||||
{
|
||||
ASSERT( !m_sCurrentGame.Get().empty() );
|
||||
return m_mapGameNameToGamePrefs[m_sCurrentGame];
|
||||
}
|
||||
|
||||
// lua start
|
||||
#include "LuaBinding.h"
|
||||
|
||||
@@ -283,7 +283,7 @@ public:
|
||||
};
|
||||
map<CString, GamePrefs> m_mapGameNameToGamePrefs;
|
||||
|
||||
GamePrefs &GetCurrentGamePrefs() { return m_mapGameNameToGamePrefs[m_sCurrentGame]; } // inserts if not already present
|
||||
GamePrefs &GetCurrentGamePrefs();
|
||||
|
||||
void SaveGamePrefsToDisk();
|
||||
void ReadGamePrefsFromDisk();
|
||||
@@ -293,7 +293,7 @@ public:
|
||||
void PushSelf( lua_State *L );
|
||||
|
||||
protected:
|
||||
void ReadPrefsFromFile( CString sIni );
|
||||
void ReadPrefsFromFile( const CString &sIni );
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ void ScreenTitleMenu::Input( const InputEventPlus &input )
|
||||
if( iter == vGames.end() )
|
||||
iter = vGames.begin();
|
||||
|
||||
GAMESTATE->m_pCurGame = *iter;
|
||||
GAMESTATE->SetCurGame( *iter );
|
||||
|
||||
/* Reload the theme if it's changed, but don't back to the initial screen. */
|
||||
ResetGame();
|
||||
|
||||
@@ -747,11 +747,7 @@ void ChangeCurrentGame( const Game* g )
|
||||
|
||||
INPUTMAPPER->SaveMappingsToDisk(); // save mappings before switching the game
|
||||
|
||||
GAMESTATE->m_pCurGame = g;
|
||||
|
||||
/* Load this game's preferences. If we just set an unavailable game type, this
|
||||
* will change it back to the default. */
|
||||
PREFSMAN->m_sCurrentGame.Set( g->m_szName );
|
||||
GAMESTATE->SetCurGame( g );
|
||||
|
||||
/* Save the newly-selected game. */
|
||||
PREFSMAN->SavePrefsToDisk();
|
||||
@@ -771,21 +767,21 @@ void ReadGamePrefsFromDisk( bool bSwitchToLastPlayedGame )
|
||||
{
|
||||
ASSERT( GAMEMAN != NULL );
|
||||
CString sGame;
|
||||
GAMESTATE->m_pCurGame = NULL;
|
||||
GAMESTATE->SetCurGame( NULL );
|
||||
if( !PREFSMAN->m_sCurrentGame.Get().empty() )
|
||||
GAMESTATE->m_pCurGame = GAMEMAN->StringToGameType( PREFSMAN->m_sCurrentGame );
|
||||
GAMESTATE->SetCurGame( GAMEMAN->StringToGameType(PREFSMAN->m_sCurrentGame) );
|
||||
}
|
||||
|
||||
/* If the active game type isn't actually available, revert to the default. */
|
||||
if( GAMESTATE->m_pCurGame == NULL )
|
||||
{
|
||||
GAMESTATE->m_pCurGame = GAMEMAN->GetDefaultGame();
|
||||
GAMESTATE->SetCurGame( GAMEMAN->GetDefaultGame() );
|
||||
}
|
||||
else if( !GAMEMAN->IsGameEnabled( GAMESTATE->m_pCurGame ) && GAMESTATE->m_pCurGame != GAMEMAN->GetDefaultGame() )
|
||||
{
|
||||
LOG->Warn( "Default NoteSkin for \"%s\" missing, reverting to \"%s\"",
|
||||
GAMESTATE->m_pCurGame->m_szName, GAMEMAN->GetDefaultGame()->m_szName );
|
||||
GAMESTATE->m_pCurGame = GAMEMAN->GetDefaultGame();
|
||||
GAMESTATE->SetCurGame( GAMEMAN->GetDefaultGame() );
|
||||
}
|
||||
|
||||
/* Load keymaps for the new game. */
|
||||
|
||||
Reference in New Issue
Block a user