mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-11 18:50:46 +00:00
Support for automatically loading all grp/zip/pk3 files in a directory. Files go into the "autoload" directory if they're to be loaded by all main grp files that are supported, or into autoload/grpname to be loaded only if a specific grp is used. For example, autoload/duke3d.grp/hrp.zip would only be loaded if duke3d.grp was specified as the main group file (and not nam.grp, et cetera).
git-svn-id: https://svn.eduke32.com/eduke32@507 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
0dfc03afa0
commit
f889e552b2
6 changed files with 119 additions and 4 deletions
|
@ -147,6 +147,36 @@ static inline long GetTime(void)
|
||||||
return totalclock;
|
return totalclock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CACHE1D_FIND_REC *finddirs=NULL, *findfiles=NULL, *finddirshigh=NULL, *findfileshigh=NULL;
|
||||||
|
static int numdirs=0, numfiles=0;
|
||||||
|
static int currentlist=0;
|
||||||
|
|
||||||
|
static void clearfilenames(void)
|
||||||
|
{
|
||||||
|
klistfree(finddirs);
|
||||||
|
klistfree(findfiles);
|
||||||
|
finddirs = findfiles = NULL;
|
||||||
|
numfiles = numdirs = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int getfilenames(const char *path, char kind[])
|
||||||
|
{
|
||||||
|
CACHE1D_FIND_REC *r;
|
||||||
|
|
||||||
|
clearfilenames();
|
||||||
|
finddirs = klistpath(path,"*",CACHE1D_FIND_DIR);
|
||||||
|
findfiles = klistpath(path,kind,CACHE1D_FIND_FILE);
|
||||||
|
for (r = finddirs; r; r=r->next) numdirs++;
|
||||||
|
for (r = findfiles; r; r=r->next) numfiles++;
|
||||||
|
|
||||||
|
finddirshigh = finddirs;
|
||||||
|
findfileshigh = findfiles;
|
||||||
|
currentlist = 0;
|
||||||
|
if (findfileshigh) currentlist = 1;
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
void ExtLoadMap(const char *mapname)
|
void ExtLoadMap(const char *mapname)
|
||||||
{
|
{
|
||||||
long i;
|
long i;
|
||||||
|
@ -4528,6 +4558,23 @@ int ExtInit(void)
|
||||||
}
|
}
|
||||||
initgroupfile(duke3dgrp);
|
initgroupfile(duke3dgrp);
|
||||||
|
|
||||||
|
Bsprintf(tempbuf,"autoload/%s",duke3dgrp);
|
||||||
|
getfilenames(tempbuf,"*.grp");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s/%s",duke3dgrp,findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
Bsprintf(tempbuf,"autoload/%s",duke3dgrp);
|
||||||
|
getfilenames(tempbuf,"*.zip");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s/%s",duke3dgrp,findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
Bsprintf(tempbuf,"autoload/%s",duke3dgrp);
|
||||||
|
getfilenames(tempbuf,"*.pk3");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s/%s",duke3dgrp,findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
|
||||||
|
getfilenames("autoload","*.grp");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
getfilenames("autoload","*.zip");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
getfilenames("autoload","*.pk3");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
|
||||||
if (getenv("DUKE3DDEF"))
|
if (getenv("DUKE3DDEF"))
|
||||||
{
|
{
|
||||||
defsfilename = getenv("DUKE3DDEF");
|
defsfilename = getenv("DUKE3DDEF");
|
||||||
|
|
|
@ -9672,6 +9672,36 @@ int load_script(const char *szScript)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CACHE1D_FIND_REC *finddirs=NULL, *findfiles=NULL, *finddirshigh=NULL, *findfileshigh=NULL;
|
||||||
|
static int numdirs=0, numfiles=0;
|
||||||
|
static int currentlist=0;
|
||||||
|
|
||||||
|
static void clearfilenames(void)
|
||||||
|
{
|
||||||
|
klistfree(finddirs);
|
||||||
|
klistfree(findfiles);
|
||||||
|
finddirs = findfiles = NULL;
|
||||||
|
numfiles = numdirs = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int getfilenames(const char *path, char kind[])
|
||||||
|
{
|
||||||
|
CACHE1D_FIND_REC *r;
|
||||||
|
|
||||||
|
clearfilenames();
|
||||||
|
finddirs = klistpath(path,"*",CACHE1D_FIND_DIR);
|
||||||
|
findfiles = klistpath(path,kind,CACHE1D_FIND_FILE);
|
||||||
|
for (r = finddirs; r; r=r->next) numdirs++;
|
||||||
|
for (r = findfiles; r; r=r->next) numfiles++;
|
||||||
|
|
||||||
|
finddirshigh = finddirs;
|
||||||
|
findfileshigh = findfiles;
|
||||||
|
currentlist = 0;
|
||||||
|
if (findfileshigh) currentlist = 1;
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
void app_main(int argc,char **argv)
|
void app_main(int argc,char **argv)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -9899,8 +9929,28 @@ void app_main(int argc,char **argv)
|
||||||
Bsprintf(gametype_names[2],"GRUNTMATCH (NO SPAWN)");
|
Bsprintf(gametype_names[2],"GRUNTMATCH (NO SPAWN)");
|
||||||
}
|
}
|
||||||
|
|
||||||
initprintf("Main GRP file: %s.\n", duke3dgrp);
|
|
||||||
initgroupfile(duke3dgrp);
|
if (initgroupfile(duke3dgrp) == -1)
|
||||||
|
initprintf("Warning: could not find group file '%s'.\n",duke3dgrp);
|
||||||
|
else initprintf("Using group file '%s' as main group file.\n", duke3dgrp);
|
||||||
|
|
||||||
|
Bsprintf(tempbuf,"autoload/%s",duke3dgrp);
|
||||||
|
getfilenames(tempbuf,"*.grp");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s/%s",duke3dgrp,findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
Bsprintf(tempbuf,"autoload/%s",duke3dgrp);
|
||||||
|
getfilenames(tempbuf,"*.zip");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s/%s",duke3dgrp,findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
Bsprintf(tempbuf,"autoload/%s",duke3dgrp);
|
||||||
|
getfilenames(tempbuf,"*.pk3");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s/%s",duke3dgrp,findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
|
||||||
|
getfilenames("autoload","*.grp");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
getfilenames("autoload","*.zip");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
getfilenames("autoload","*.pk3");
|
||||||
|
while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf("Using group file '%s'.\n",tempbuf); initgroupfile(tempbuf); findfiles = findfiles->next; }
|
||||||
|
|
||||||
loadgroupfiles(duke3ddef);
|
loadgroupfiles(duke3ddef);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -812,6 +812,8 @@ LABELS userdefslabels[]=
|
||||||
{ "automsg", USERDEFS_AUTOMSG, 0, 0 },
|
{ "automsg", USERDEFS_AUTOMSG, 0, 0 },
|
||||||
{ "idplayers", USERDEFS_IDPLAYERS, 0, 0 },
|
{ "idplayers", USERDEFS_IDPLAYERS, 0, 0 },
|
||||||
{ "team", USERDEFS_TEAM, 0, 0 },
|
{ "team", USERDEFS_TEAM, 0, 0 },
|
||||||
|
{ "viewbob", USERDEFS_VIEWBOB, 0, 0 },
|
||||||
|
{ "weaponsway", USERDEFS_WEAPONSWAY, 0, 0 },
|
||||||
{ "", -1, 0, 0 } // END OF LIST
|
{ "", -1, 0, 0 } // END OF LIST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -314,7 +314,9 @@ enum userdefslabels {
|
||||||
USERDEFS_AUTOVOTE,
|
USERDEFS_AUTOVOTE,
|
||||||
USERDEFS_AUTOMSG,
|
USERDEFS_AUTOMSG,
|
||||||
USERDEFS_IDPLAYERS,
|
USERDEFS_IDPLAYERS,
|
||||||
USERDEFS_TEAM
|
USERDEFS_TEAM,
|
||||||
|
USERDEFS_VIEWBOB,
|
||||||
|
USERDEFS_WEAPONSWAY
|
||||||
};
|
};
|
||||||
|
|
||||||
enum sectorlabels {
|
enum sectorlabels {
|
||||||
|
|
|
@ -665,6 +665,20 @@ static void DoUserDef(int iSet, int lLabelID, int lVar2)
|
||||||
SetGameVarID(lVar2, ud.team, g_i, g_p);
|
SetGameVarID(lVar2, ud.team, g_i, g_p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case USERDEFS_VIEWBOB:
|
||||||
|
if (iSet)
|
||||||
|
ud.viewbob = lValue;
|
||||||
|
else
|
||||||
|
SetGameVarID(lVar2, ud.viewbob, g_i, g_p);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case USERDEFS_WEAPONSWAY:
|
||||||
|
if (iSet)
|
||||||
|
ud.weaponsway = lValue;
|
||||||
|
else
|
||||||
|
SetGameVarID(lVar2, ud.weaponsway, g_i, g_p);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,5 +154,5 @@ extern double msens;
|
||||||
void ContextHelp(short spritenum);
|
void ContextHelp(short spritenum);
|
||||||
void ResetKeys();
|
void ResetKeys();
|
||||||
|
|
||||||
extern void clearfilenames(void), fixspritesectors(void);
|
extern void fixspritesectors(void);
|
||||||
#define KEY_PRESSED(sc) KB_KeyPressed((sc))
|
#define KEY_PRESSED(sc) KB_KeyPressed((sc))
|
||||||
|
|
Loading…
Reference in a new issue