Fix restoring old fs_game upon leaving a server. Patch by Ensiform.

This commit is contained in:
Zack Middleton 2012-10-30 16:51:06 +00:00
parent 17ee96e6c8
commit 016b74b633
3 changed files with 14 additions and 10 deletions

View file

@ -125,6 +125,9 @@ clientConnection_t clc;
clientStatic_t cls;
vm_t *cgvm;
char cl_oldGame[MAX_QPATH];
qboolean cl_oldGameSet;
// Structure containing functions exported from refresh DLL
refexport_t re;
#ifdef USE_RENDERER_DLOPEN
@ -1362,11 +1365,11 @@ static void CL_UpdateGUID( const char *prefix, int prefix_len )
static void CL_OldGame(void)
{
if(cls.oldGameSet)
if(cl_oldGameSet)
{
// change back to previous fs_game
cls.oldGameSet = qfalse;
Cvar_Set2("fs_game", cls.oldGame, qtrue);
cl_oldGameSet = qfalse;
Cvar_Set2("fs_game", cl_oldGame, qtrue);
FS_ConditionalRestart(clc.checksumFeed, qfalse);
}
}
@ -3437,7 +3440,7 @@ void CL_Init( void ) {
{
CL_ClearState();
clc.state = CA_DISCONNECTED; // no longer CA_UNINITIALIZED
cls.oldGameSet = qfalse;
cl_oldGameSet = qfalse;
}
cls.realtime = 0;

View file

@ -538,10 +538,10 @@ void CL_ParseGamestate( msg_t *msg ) {
CL_StopRecord_f();
// reinitialize the filesystem if the game directory has changed
if(!cls.oldGameSet && (Cvar_Flags("fs_game") & CVAR_MODIFIED))
if(!cl_oldGameSet && (Cvar_Flags("fs_game") & CVAR_MODIFIED))
{
cls.oldGameSet = qtrue;
Q_strncpyz(cls.oldGame, oldGame, sizeof(cls.oldGame));
cl_oldGameSet = qtrue;
Q_strncpyz(cl_oldGame, oldGame, sizeof(cl_oldGame));
}
FS_ConditionalRestart(clc.checksumFeed, qfalse);

View file

@ -280,6 +280,7 @@ extern clientConnection_t clc;
the clientStatic_t structure is never wiped, and is used even when
no client connection is active at all
(except when CL_Shutdown is called)
==================================================================
*/
@ -339,9 +340,6 @@ typedef struct {
int pingUpdateSource; // source currently pinging or updating
char oldGame[MAX_QPATH];
qboolean oldGameSet;
// update server info
netadr_t updateServer;
char updateChallenge[MAX_TOKEN_CHARS];
@ -358,6 +356,9 @@ typedef struct {
extern clientStatic_t cls;
extern char cl_oldGame[MAX_QPATH];
extern qboolean cl_oldGameSet;
//=============================================================================
extern vm_t *cgvm; // interface to cgame dll or vm