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

View file

@ -538,10 +538,10 @@ void CL_ParseGamestate( msg_t *msg ) {
CL_StopRecord_f(); CL_StopRecord_f();
// reinitialize the filesystem if the game directory has changed // 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; cl_oldGameSet = qtrue;
Q_strncpyz(cls.oldGame, oldGame, sizeof(cls.oldGame)); Q_strncpyz(cl_oldGame, oldGame, sizeof(cl_oldGame));
} }
FS_ConditionalRestart(clc.checksumFeed, qfalse); 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 the clientStatic_t structure is never wiped, and is used even when
no client connection is active at all 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 int pingUpdateSource; // source currently pinging or updating
char oldGame[MAX_QPATH];
qboolean oldGameSet;
// update server info // update server info
netadr_t updateServer; netadr_t updateServer;
char updateChallenge[MAX_TOKEN_CHARS]; char updateChallenge[MAX_TOKEN_CHARS];
@ -358,6 +356,9 @@ typedef struct {
extern clientStatic_t cls; extern clientStatic_t cls;
extern char cl_oldGame[MAX_QPATH];
extern qboolean cl_oldGameSet;
//============================================================================= //=============================================================================
extern vm_t *cgvm; // interface to cgame dll or vm extern vm_t *cgvm; // interface to cgame dll or vm