mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-02-13 07:21:31 +00:00
add the com_base_searchpaths thing of qw and use it in Host_Game_f(), kill the no longer needed com_nummissionpacks, KillGameDir() and NumGames().
git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@998 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
parent
9d2193f1d4
commit
1c4c5ba254
2 changed files with 23 additions and 55 deletions
|
@ -34,8 +34,6 @@ cvar_t cmdline = {"cmdline","",CVAR_ROM/*|CVAR_SERVERINFO*/}; /* sending cmdline
|
||||||
|
|
||||||
qboolean com_modified; // set true if using non-id files
|
qboolean com_modified; // set true if using non-id files
|
||||||
|
|
||||||
int com_nummissionpacks; //johnfitz
|
|
||||||
|
|
||||||
qboolean fitzmode;
|
qboolean fitzmode;
|
||||||
|
|
||||||
static void COM_Path_f (void);
|
static void COM_Path_f (void);
|
||||||
|
@ -1466,6 +1464,7 @@ typedef struct searchpath_s
|
||||||
} searchpath_t;
|
} searchpath_t;
|
||||||
|
|
||||||
searchpath_t *com_searchpaths;
|
searchpath_t *com_searchpaths;
|
||||||
|
searchpath_t *com_base_searchpaths;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============
|
============
|
||||||
|
@ -1994,25 +1993,20 @@ void COM_InitFilesystem (void) //johnfitz -- modified based on topaz's tutorial
|
||||||
// start up with GAMENAME by default (id1)
|
// start up with GAMENAME by default (id1)
|
||||||
COM_AddGameDirectory (com_basedir, GAMENAME);
|
COM_AddGameDirectory (com_basedir, GAMENAME);
|
||||||
|
|
||||||
//johnfitz -- track number of mission packs added
|
|
||||||
//since we don't want to allow the "game" command to strip them away
|
|
||||||
com_nummissionpacks = 0;
|
|
||||||
if (COM_CheckParm ("-rogue"))
|
if (COM_CheckParm ("-rogue"))
|
||||||
{
|
|
||||||
COM_AddGameDirectory (com_basedir, "rogue");
|
COM_AddGameDirectory (com_basedir, "rogue");
|
||||||
com_nummissionpacks++;
|
|
||||||
}
|
|
||||||
if (COM_CheckParm ("-hipnotic"))
|
if (COM_CheckParm ("-hipnotic"))
|
||||||
{
|
|
||||||
COM_AddGameDirectory (com_basedir, "hipnotic");
|
COM_AddGameDirectory (com_basedir, "hipnotic");
|
||||||
com_nummissionpacks++;
|
|
||||||
}
|
|
||||||
if (COM_CheckParm ("-quoth"))
|
if (COM_CheckParm ("-quoth"))
|
||||||
{
|
|
||||||
COM_AddGameDirectory (com_basedir, "quoth");
|
COM_AddGameDirectory (com_basedir, "quoth");
|
||||||
com_nummissionpacks++;
|
|
||||||
}
|
/* this is the end of our base searchpath:
|
||||||
//johnfitz
|
* any set gamedirs, such as those from -game command line
|
||||||
|
* arguments or by the 'game' console command will be freed
|
||||||
|
* up to here upon a new game command.
|
||||||
|
* Set here instead of just after 'id1', because we don't want
|
||||||
|
* to allow the 'game' command to strip away the mission packs */
|
||||||
|
com_base_searchpaths = com_searchpaths;
|
||||||
|
|
||||||
i = COM_CheckParm ("-game");
|
i = COM_CheckParm ("-game");
|
||||||
if (i && i < com_argc-1)
|
if (i && i < com_argc-1)
|
||||||
|
|
|
@ -27,8 +27,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
extern cvar_t pausable;
|
extern cvar_t pausable;
|
||||||
|
|
||||||
extern int com_nummissionpacks; //johnfitz
|
|
||||||
|
|
||||||
int current_skill;
|
int current_skill;
|
||||||
|
|
||||||
void Mod_Print (void);
|
void Mod_Print (void);
|
||||||
|
@ -84,43 +82,9 @@ typedef struct searchpath_s
|
||||||
|
|
||||||
extern qboolean com_modified;
|
extern qboolean com_modified;
|
||||||
extern searchpath_t *com_searchpaths;
|
extern searchpath_t *com_searchpaths;
|
||||||
|
extern searchpath_t *com_base_searchpaths;
|
||||||
pack_t *COM_LoadPackFile (const char *packfile);
|
pack_t *COM_LoadPackFile (const char *packfile);
|
||||||
|
|
||||||
// Kill all the search packs until the game path is found. Kill it, then return
|
|
||||||
// the next path to it.
|
|
||||||
void KillGameDir(searchpath_t *search)
|
|
||||||
{
|
|
||||||
searchpath_t *search_killer;
|
|
||||||
while (search)
|
|
||||||
{
|
|
||||||
if (*search->filename)
|
|
||||||
{
|
|
||||||
com_searchpaths = search->next;
|
|
||||||
Z_Free(search);
|
|
||||||
return; //once you hit the dir, youve already freed the paks
|
|
||||||
}
|
|
||||||
Sys_FileClose (search->pack->handle); //johnfitz
|
|
||||||
search_killer = search->next;
|
|
||||||
Z_Free(search->pack->files);
|
|
||||||
Z_Free(search->pack);
|
|
||||||
Z_Free(search);
|
|
||||||
search = search_killer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return the number of games in memory
|
|
||||||
int NumGames(searchpath_t *search)
|
|
||||||
{
|
|
||||||
int found = 0;
|
|
||||||
while (search)
|
|
||||||
{
|
|
||||||
if (*search->filename)
|
|
||||||
found++;
|
|
||||||
search = search->next;
|
|
||||||
}
|
|
||||||
return found;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExtraMaps_NewGame (void);
|
void ExtraMaps_NewGame (void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -132,7 +96,7 @@ void Host_Game_f (void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned int path_id;
|
unsigned int path_id;
|
||||||
searchpath_t *search = com_searchpaths;
|
searchpath_t *search;
|
||||||
pack_t *pak;
|
pack_t *pak;
|
||||||
char pakfile[MAX_OSPATH];
|
char pakfile[MAX_OSPATH];
|
||||||
|
|
||||||
|
@ -168,8 +132,18 @@ void Host_Game_f (void)
|
||||||
Host_WriteConfiguration ();
|
Host_WriteConfiguration ();
|
||||||
|
|
||||||
//Kill the extra game if it is loaded
|
//Kill the extra game if it is loaded
|
||||||
if (NumGames(com_searchpaths) > 1 + com_nummissionpacks)
|
while (com_searchpaths != com_base_searchpaths)
|
||||||
KillGameDir(com_searchpaths);
|
{
|
||||||
|
if (com_searchpaths->pack)
|
||||||
|
{
|
||||||
|
Sys_FileClose (com_searchpaths->pack->handle);
|
||||||
|
Z_Free (com_searchpaths->pack->files);
|
||||||
|
Z_Free (com_searchpaths->pack);
|
||||||
|
}
|
||||||
|
search = com_searchpaths->next;
|
||||||
|
Z_Free (com_searchpaths);
|
||||||
|
com_searchpaths = search;
|
||||||
|
}
|
||||||
|
|
||||||
q_strlcpy (com_gamedir, va("%s/%s", com_basedir, p), sizeof(com_gamedir));
|
q_strlcpy (com_gamedir, va("%s/%s", com_basedir, p), sizeof(com_gamedir));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue