diff --git a/engine/common/common.c b/engine/common/common.c index a30e64305..b7fcef3dc 100644 --- a/engine/common/common.c +++ b/engine/common/common.c @@ -3766,17 +3766,29 @@ being registered. */ void COM_CheckRegistered (void) { + char *newdef; vfsfile_t *h; h = FS_OpenVFS("gfx/pop.lmp", "rb", FS_GAME); - static_registered = false; - if (!h) - return; - VFS_CLOSE(h); + if (h) + { + static_registered = true; + VFS_CLOSE(h); + } + else + static_registered = false; - static_registered = true; - Con_TPrintf (TL_REGISTEREDVERSION); + + newdef = static_registered?"1":"0"; + + if (strcmp(registered.defaultstr, newdef)) + { + registered.defaultstr = newdef; + Cvar_ForceSet(®istered, newdef); + if (static_registered) + Con_TPrintf (TL_REGISTEREDVERSION); + } } @@ -4146,12 +4158,6 @@ void COM_Init (void) Cmd_AddCommand ("errorme", COM_ErrorMe_f); COM_InitFilesystem (); - COM_CheckRegistered (); - if (static_registered) - registered.defaultstr = "1"; - else - registered.defaultstr = "0"; - Cvar_Register (®istered, "Copy protection"); Cvar_Register (&gameversion, "Gamecode"); Cvar_Register (&gameversion_min, "Gamecode"); diff --git a/engine/common/fs.c b/engine/common/fs.c index 8ed4371ee..d8b90a368 100644 --- a/engine/common/fs.c +++ b/engine/common/fs.c @@ -23,6 +23,7 @@ extern cvar_t com_fs_cache; int active_fs_cachetype; static int fs_referencetype; int fs_finds; +void COM_CheckRegistered (void); struct { @@ -489,10 +490,12 @@ void COM_Path_f (void) Con_Printf ("Pure paths:\n"); for (s=com_purepaths ; s ; s=s->nextpure) { - Con_Printf("%s %s%s%s\n", s->logicalpath, + Con_Printf("%s %s%s%s%s%s\n", s->logicalpath, (s->flags & SPF_REFERENCED)?"(ref)":"", (s->flags & SPF_TEMPORARY)?"(temp)":"", - (s->flags & SPF_COPYPROTECTED)?"(c)":""); + (s->flags & SPF_COPYPROTECTED)?"(c)":"", + (s->flags & SPF_EXPLICIT)?"(e)":"", + (s->flags & SPF_UNTRUSTED)?"(u)":"" ); } Con_Printf ("----------\n"); if (fs_puremode == 2) @@ -507,10 +510,12 @@ void COM_Path_f (void) if (s == com_base_searchpaths) Con_Printf ("----------\n"); - Con_Printf("%s %s%s%s\n", s->logicalpath, + Con_Printf("%s %s%s%s%s%s\n", s->logicalpath, (s->flags & SPF_REFERENCED)?"(ref)":"", (s->flags & SPF_TEMPORARY)?"(temp)":"", - (s->flags & SPF_COPYPROTECTED)?"(c)":""); + (s->flags & SPF_COPYPROTECTED)?"(c)":"", + (s->flags & SPF_EXPLICIT)?"(e)":"", + (s->flags & SPF_UNTRUSTED)?"(u)":"" ); } } @@ -808,6 +813,7 @@ int FS_FLocateFile(const char *filename, FSLF_ReturnType_e returntype, flocation { for (search = com_purepaths ; search ; search = search->nextpure) { + depth += ((search->flags & SPF_EXPLICIT) || returntype == FSLFRT_DEPTH_ANYPATH); fs_finds++; if (search->handle->FindFile(search->handle, loc, filename, pf)) { @@ -823,7 +829,6 @@ int FS_FLocateFile(const char *filename, FSLF_ReturnType_e returntype, flocation com_file_untrusted = !!(search->flags & SPF_UNTRUSTED); goto out; } - depth += ((search->flags & SPF_EXPLICIT) || returntype == FSLFRT_DEPTH_ANYPATH); } } @@ -834,6 +839,7 @@ int FS_FLocateFile(const char *filename, FSLF_ReturnType_e returntype, flocation // for (search = com_searchpaths ; search ; search = search->next) { + depth += ((search->flags & SPF_EXPLICIT) || returntype == FSLFRT_DEPTH_ANYPATH); fs_finds++; if (search->handle->FindFile(search->handle, loc, filename, pf)) { @@ -849,7 +855,6 @@ int FS_FLocateFile(const char *filename, FSLF_ReturnType_e returntype, flocation com_file_untrusted = !!(search->flags & SPF_UNTRUSTED); goto out; } - depth += ((search->flags & SPF_EXPLICIT) || returntype == FSLFRT_DEPTH_ANYPATH); } } fail: @@ -2914,6 +2919,9 @@ static void FS_StartupWithGame(int gamenum) if (i && i < com_argc-1) { COM_Gamedir(com_argv[i+1]); +#ifndef CLIENTONLY + Info_SetValueForStarKey (svs.info, "*gamedir", com_argv[i+1], MAX_SERVERINFO_STRING); +#endif } #ifdef ANDROID @@ -3328,6 +3336,7 @@ qboolean FS_ChangeGame(ftemanifest_t *man, qboolean allowreloadconfigs) FS_BeginNextPackageDownload(); + COM_CheckRegistered(); if (allowreloadconfigs) {