fix PrefsManager::m_sCurrentGame not current, so GamePrefs from Static.ini weren't being used

This commit is contained in:
Chris Danford
2005-10-28 01:44:19 +00:00
parent 8c52221570
commit 6e5b3a5ed8
11 changed files with 34 additions and 20 deletions
+2 -2
View File
@@ -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 );
+10 -1
View File
@@ -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()
+2 -1
View File
@@ -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];
+1
View File
@@ -12,6 +12,7 @@ MessageManager* MESSAGEMAN = NULL; // global and accessable from anywhere in our
static const CString MessageNames[] = {
"CurrentGameChanged",
"CurrentStyleChanged",
"PlayModeChanged",
"CurrentSongChanged",
+1
View File
@@ -27,6 +27,7 @@ struct lua_State;
enum Message
{
Message_CurrentGameChanged,
Message_CurrentStyleChanged,
Message_PlayModeChanged,
Message_CurrentSongChanged,
+1 -1
View File
@@ -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?
+1 -1
View File
@@ -59,7 +59,7 @@ public:
m_currentValue = m_defaultValue;
}
T Get() const
const T &Get() const
{
return m_currentValue;
}
+8 -2
View File
@@ -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"
+2 -2
View File
@@ -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 );
};
+1 -1
View File
@@ -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();
+5 -9
View File
@@ -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. */