Don't do game_restart if game directory changed from "" to "baseq3" or "baseq3" to ""

This commit is contained in:
Thilo Schulz 2011-08-03 00:58:33 +00:00
parent 0bc54ab696
commit 06628af7c5
2 changed files with 20 additions and 5 deletions

View File

@ -1362,8 +1362,8 @@ static void CL_OldGame(void)
{ {
// change back to previous fs_game // change back to previous fs_game
cls.oldGameSet = qfalse; cls.oldGameSet = qfalse;
Cvar_Set("fs_game", cls.oldGame); Cvar_Set2("fs_game", cls.oldGame, qtrue);
Com_GameRestart(0, qtrue); FS_ConditionalRestart(clc.checksumFeed, qfalse);
} }
} }

View File

@ -3884,12 +3884,27 @@ restart if necessary
*/ */
qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect) qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
{ {
int retval;
if(fs_gamedirvar->modified) if(fs_gamedirvar->modified)
{ {
Com_GameRestart(checksumFeed, disconnect); if(FS_FilenameCompare(lastValidGame, fs_gamedirvar->string) &&
return qtrue; (*lastValidGame || FS_FilenameCompare(fs_gamedirvar->string, com_basegame->string)) &&
(*fs_gamedirvar->string || FS_FilenameCompare(lastValidGame, com_basegame->string)))
{
Com_GameRestart(checksumFeed, disconnect);
return qtrue;
}
else
{
fs_gamedirvar->modified = qfalse;
retval = qtrue;
}
} }
else if(checksumFeed != fs_checksumFeed) else
retval = qfalse;
if(checksumFeed != fs_checksumFeed)
FS_Restart(checksumFeed); FS_Restart(checksumFeed);
else if(fs_numServerPaks && !fs_reordered) else if(fs_numServerPaks && !fs_reordered)
FS_ReorderPurePaks(); FS_ReorderPurePaks();