mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-13 07:57:23 +00:00
Fix auto game-restart when disconnecting from a server that explicitly set fs_game to "baseq3" instead of ""
This commit is contained in:
parent
abe85940ae
commit
de182882f1
4 changed files with 16 additions and 12 deletions
|
@ -538,12 +538,14 @@ 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(FS_ConditionalRestart(clc.checksumFeed, qfalse) && !cls.oldGameSet)
|
if(!cls.oldGameSet && (Cvar_Flags("fs_game") & CVAR_MODIFIED))
|
||||||
{
|
{
|
||||||
cls.oldGameSet = qtrue;
|
cls.oldGameSet = qtrue;
|
||||||
Q_strncpyz(cls.oldGame, oldGame, sizeof(cls.oldGame));
|
Q_strncpyz(cls.oldGame, oldGame, sizeof(cls.oldGame));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FS_ConditionalRestart(clc.checksumFeed, qfalse);
|
||||||
|
|
||||||
// This used to call CL_StartHunkUsers, but now we enter the download state before loading the
|
// This used to call CL_StartHunkUsers, but now we enter the download state before loading the
|
||||||
// cgame
|
// cgame
|
||||||
CL_InitDownloads();
|
CL_InitDownloads();
|
||||||
|
|
|
@ -170,9 +170,14 @@ int Cvar_Flags(const char *var_name)
|
||||||
|
|
||||||
if(!(var = Cvar_FindVar(var_name)))
|
if(!(var = Cvar_FindVar(var_name)))
|
||||||
return CVAR_NONEXISTENT;
|
return CVAR_NONEXISTENT;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(var->modified)
|
||||||
|
return var->flags | CVAR_MODIFIED;
|
||||||
else
|
else
|
||||||
return var->flags;
|
return var->flags;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============
|
============
|
||||||
|
|
|
@ -3879,13 +3879,13 @@ void FS_Restart( int checksumFeed ) {
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
FS_ConditionalRestart
|
FS_ConditionalRestart
|
||||||
restart if necessary
|
|
||||||
|
Restart if necessary
|
||||||
|
Return qtrue if restarting due to game directory changed, qfalse otherwise
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
|
qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
|
||||||
{
|
{
|
||||||
int retval;
|
|
||||||
|
|
||||||
if(fs_gamedirvar->modified)
|
if(fs_gamedirvar->modified)
|
||||||
{
|
{
|
||||||
if(FS_FilenameCompare(lastValidGame, fs_gamedirvar->string) &&
|
if(FS_FilenameCompare(lastValidGame, fs_gamedirvar->string) &&
|
||||||
|
@ -3896,13 +3896,8 @@ qboolean FS_ConditionalRestart(int checksumFeed, qboolean disconnect)
|
||||||
return qtrue;
|
return qtrue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
fs_gamedirvar->modified = qfalse;
|
fs_gamedirvar->modified = qfalse;
|
||||||
retval = qtrue;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
retval = qfalse;
|
|
||||||
|
|
||||||
if(checksumFeed != fs_checksumFeed)
|
if(checksumFeed != fs_checksumFeed)
|
||||||
FS_Restart(checksumFeed);
|
FS_Restart(checksumFeed);
|
||||||
|
|
|
@ -888,7 +888,9 @@ default values.
|
||||||
#define CVAR_SERVER_CREATED 0x0800 // cvar was created by a server the client connected to.
|
#define CVAR_SERVER_CREATED 0x0800 // cvar was created by a server the client connected to.
|
||||||
#define CVAR_VM_CREATED 0x1000 // cvar was created exclusively in one of the VMs.
|
#define CVAR_VM_CREATED 0x1000 // cvar was created exclusively in one of the VMs.
|
||||||
#define CVAR_PROTECTED 0x2000 // prevent modifying this var from VMs or the server
|
#define CVAR_PROTECTED 0x2000 // prevent modifying this var from VMs or the server
|
||||||
#define CVAR_NONEXISTENT 0xFFFFFFFF // Cvar doesn't exist.
|
// These flags are only returned by the Cvar_Flags() function
|
||||||
|
#define CVAR_MODIFIED 0x40000000 // Cvar was modified
|
||||||
|
#define CVAR_NONEXISTENT 0x80000000 // Cvar doesn't exist.
|
||||||
|
|
||||||
// nothing outside the Cvar_*() functions should modify these fields!
|
// nothing outside the Cvar_*() functions should modify these fields!
|
||||||
typedef struct cvar_s cvar_t;
|
typedef struct cvar_s cvar_t;
|
||||||
|
|
Loading…
Reference in a new issue