-usehome should work properly, there's also an extra option to restart the filesystem, flushing pak files without reloading them, but it might not work properly.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1549 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2005-10-31 00:52:03 +00:00
parent 8c0c0a41db
commit 64fdee9482

View file

@ -1645,7 +1645,7 @@ Sets com_gamedir, adds the directory to the head of the path,
then loads and adds pak1.pak pak2.pak ... then loads and adds pak1.pak pak2.pak ...
================ ================
*/ */
void COM_AddGameDirectory (char *dir) void COM_AddGameDirectory (char *dir, unsigned int loadstuff)
{ {
searchpath_t *search; searchpath_t *search;
@ -1668,16 +1668,23 @@ void COM_AddGameDirectory (char *dir)
// //
// add the directory to the search path // add the directory to the search path
// //
p = Z_Malloc(strlen(dir)+1);
strcpy(p, dir); if (loadstuff & 1)
COM_AddPathHandle(&osfilefuncs, p, false, false); {
p = Z_Malloc(strlen(dir)+1);
strcpy(p, dir);
COM_AddPathHandle(&osfilefuncs, p, false, false);
}
//add any data files too //add any data files too
COM_AddDataFiles("pak", &packfilefuncs);//q1/hl/h2/q2 if (loadstuff & 2)
COM_AddDataFiles("pak", &packfilefuncs);//q1/hl/h2/q2
//pk2s never existed. //pk2s never existed.
#ifdef ZLIB #ifdef ZLIB
COM_AddDataFiles("pk3", &zipfilefuncs); //q3 + offspring if (loadstuff & 4)
COM_AddDataFiles("pk4", &zipfilefuncs); //q4 COM_AddDataFiles("pk3", &zipfilefuncs); //q3 + offspring
if (loadstuff & 8)
COM_AddDataFiles("pk4", &zipfilefuncs); //q4
//we could easily add zip, but it's friendlier not to //we could easily add zip, but it's friendlier not to
#endif #endif
} }
@ -1819,9 +1826,9 @@ void COM_Gamedir (char *dir)
// //
Cache_Flush (); Cache_Flush ();
COM_AddGameDirectory(va("%s/%s", com_quakedir, dir)); COM_AddGameDirectory(va("%s/%s", com_quakedir, dir), (unsigned int)-1);
if (*com_homedir) if (*com_homedir)
COM_AddGameDirectory(va("%s/%s", com_homedir, dir)); COM_AddGameDirectory(va("%s/%s", com_homedir, dir), (unsigned int)-1);
#ifndef SERVERONLY #ifndef SERVERONLY
@ -2015,7 +2022,7 @@ FS_ReloadPackFiles
Called when the client has downloaded a new pak/pk3 file Called when the client has downloaded a new pak/pk3 file
*/ */
void FS_ReloadPackFiles(void) void FS_ReloadPackFilesFlags(unsigned int reloadflags)
{ {
searchpath_t *oldpaths; searchpath_t *oldpaths;
searchpath_t *oldbase; searchpath_t *oldbase;
@ -2059,7 +2066,7 @@ void FS_ReloadPackFiles(void)
com_base_searchpaths = com_searchpaths; com_base_searchpaths = com_searchpaths;
if (oldpaths->funcs == &osfilefuncs) if (oldpaths->funcs == &osfilefuncs)
COM_AddGameDirectory(oldpaths->handle); COM_AddGameDirectory(oldpaths->handle, reloadflags);
oldpaths->funcs->ClosePath(oldpaths->handle); oldpaths->funcs->ClosePath(oldpaths->handle);
Z_Free(oldpaths); Z_Free(oldpaths);
@ -2070,6 +2077,19 @@ void FS_ReloadPackFiles(void)
com_base_searchpaths = com_searchpaths; com_base_searchpaths = com_searchpaths;
} }
void FS_ReloadPackFiles(void)
{
FS_ReloadPackFilesFlags((unsigned int)-1);
}
void FS_ReloadPackFiles_f(void)
{
if (atoi(Cmd_Argv(1)))
FS_ReloadPackFilesFlags(atoi(Cmd_Argv(1)));
else
FS_ReloadPackFilesFlags((unsigned int)-1);
}
/* /*
================ ================
COM_InitFilesystem COM_InitFilesystem
@ -2085,7 +2105,7 @@ void COM_InitFilesystem (void)
int gamenum=-1; int gamenum=-1;
Cmd_AddCommand("fs_restart", FS_ReloadPackFiles); Cmd_AddCommand("fs_restart", FS_ReloadPackFiles_f);
// //
// -basedir <path> // -basedir <path>
@ -2164,7 +2184,9 @@ void COM_InitFilesystem (void)
if (*com_homedir) if (*com_homedir)
{ {
strcat(com_homedir, "/.fte/"); Con_Printf("Using home directory \"%s\"\n", com_homedir);
strcat(com_homedir, "/.fte");
com_basedir = com_homedir; com_basedir = com_homedir;
} }
else else
@ -2180,7 +2202,7 @@ void COM_InitFilesystem (void)
{ {
do //use multiple -basegames do //use multiple -basegames
{ {
COM_AddGameDirectory (va("%s/%s", com_quakedir, com_argv[i+1]) ); COM_AddGameDirectory (va("%s/%s", com_quakedir, com_argv[i+1]), (unsigned int)-1);
i = COM_CheckNextParm ("-basegame", i); i = COM_CheckNextParm ("-basegame", i);
} }
@ -2189,17 +2211,17 @@ void COM_InitFilesystem (void)
else else
{ {
if (gamemode_info[gamenum].dir1) if (gamemode_info[gamenum].dir1)
COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir1)); COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir1), (unsigned int)-1);
if (gamemode_info[gamenum].dir2) if (gamemode_info[gamenum].dir2)
COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir2)); COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir2), (unsigned int)-1);
if (gamemode_info[gamenum].dir3) if (gamemode_info[gamenum].dir3)
COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir3)); COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir3), (unsigned int)-1);
if (gamemode_info[gamenum].dir4) if (gamemode_info[gamenum].dir4)
COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir4)); COM_AddGameDirectory (va("%s/%s", com_quakedir, gamemode_info[gamenum].dir4), (unsigned int)-1);
} }
if (*com_homedir) if (*com_homedir)
COM_AddGameDirectory (va("%s/fte", com_homedir) ); COM_AddGameDirectory (va("%s/fte", com_homedir), (unsigned int)-1);
// any set gamedirs will be freed up to here // any set gamedirs will be freed up to here
com_base_searchpaths = com_searchpaths; com_base_searchpaths = com_searchpaths;
@ -2207,7 +2229,7 @@ void COM_InitFilesystem (void)
i = COM_CheckParm ("-game"); //effectivly replace with +gamedir x (But overridable) i = COM_CheckParm ("-game"); //effectivly replace with +gamedir x (But overridable)
if (i && i < com_argc-1) if (i && i < com_argc-1)
{ {
COM_AddGameDirectory (va("%s/%s", com_quakedir, com_argv[i+1]) ); COM_AddGameDirectory (va("%s/%s", com_quakedir, com_argv[i+1]), (unsigned int)-1);
#ifndef CLIENTONLY #ifndef CLIENTONLY
Info_SetValueForStarKey (svs.info, "*gamedir", com_argv[i+1], MAX_SERVERINFO_STRING); Info_SetValueForStarKey (svs.info, "*gamedir", com_argv[i+1], MAX_SERVERINFO_STRING);