Support for -game_dir similar to Duke3d_w32

git-svn-id: https://svn.eduke32.com/eduke32@465 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2007-01-22 02:35:54 +00:00
parent fe9004fafe
commit 76c2340c83
3 changed files with 91 additions and 45 deletions

View file

@ -4309,6 +4309,23 @@ void ExtPreSaveMap(void)
void ExtPreLoadMap(void)
{}
static void comlinehelp(void)
{
char *s = "Syntax: mapster32 [options]\n\n"
"-?\t\tThis help message\n"
"-gFILE\t\tUse multiple group files\n"
"-jDIRECTORY\tAdd a directory to the file path stack\n"
"-hFILE\t\tUse FILE instead of DUKE3D.DEF\n"
#if defined RENDERTYPEWIN || (defined RENDERTYPESDL && !defined __APPLE__ && defined HAVE_GTK2)
"-setup\t\tDisplays the configuration dialog\n"
#endif
#if !defined(_WIN32)
"-usecwd\t\tRead game data and configuration file from working directory\n"
#endif
;
wm_msgbox("Mapster32 Command Line Help",s);
}
static void checkcommandline(int argc,char **argv)
{
int i = 1;
@ -4358,6 +4375,10 @@ static void checkcommandline(int argc,char **argv)
c++;
switch (*c)
{
case '?':
comlinehelp();
exit(0);
break;
case 'h':
case 'H':
c++;

View file

@ -8103,8 +8103,8 @@ FAKE_F3:
static void comlinehelp(void)
{
char *s = "Command line help.\n"
"?, -?\t\tThis help message\n"
char *s = "Syntax: eduke32 [options]\n\n"
"-?\t\tThis help message\n"
"-l##\t\tLevel (1-11)\n"
"-v#\t\tVolume (1-4)\n"
"-s#\t\tSkill (1-4)\n"
@ -8128,14 +8128,16 @@ static void comlinehelp(void)
"-map FILE\tUse a map FILE\n"
"-name NAME\tFoward NAME\n"
"-net\t\tNet mode game\n"
#if defined RENDERTYPEWIN || (defined RENDERTYPESDL && !defined __APPLE__ && defined HAVE_GTK2)
"-setup\t\tDisplays the configuration dialog\n"
#endif
"-nD\t\tDump game definitions to gamevars.txt\n"
#if !defined(_WIN32)
"-usecwd\t\tRead game data and configuration file from working directory\n"
#endif
"-condebug, -z#\tLine-by-line CON compilation debugging"
;
wm_msgbox(apptitle,s);
wm_msgbox("EDuke32 Command Line Help",s);
}
signed int rancid_players = 0;
@ -8367,6 +8369,41 @@ static int loadgroupfiles(char *fn)
return 0;
}
static void addgroup(const char *buffer)
{
struct strllist *s;
s = (struct strllist *)calloc(1,sizeof(struct strllist));
s->str = Bstrdup(buffer);
if (Bstrchr(s->str,'.') == 0)
Bstrcat(s->str,".grp");
if (CommandGrps)
{
struct strllist *t;
for (t = CommandGrps; t->next; t=t->next) ;
t->next = s;
return;
}
CommandGrps = s;
}
static void addgamepath(const char *buffer)
{
struct strllist *s;
s = (struct strllist *)calloc(1,sizeof(struct strllist));
s->str = strdup(buffer);
if (CommandPaths)
{
struct strllist *t;
for (t = CommandPaths; t->next; t=t->next) ;
t->next = s;
return;
}
CommandPaths = s;
}
static void checkcommandline(int argc,char **argv)
{
short i, j;
@ -8401,6 +8438,26 @@ static void checkcommandline(int argc,char **argv)
c = argv[i];
if (((*c == '/') || (*c == '-')) && (!firstnet))
{
if (!Bstrcasecmp(c+1,"grp"))
{
if (argc > i+1)
{
addgroup(argv[i+1]);
i++;
}
i++;
continue;
}
if (!Bstrcasecmp(c+1,"game_dir"))
{
if (argc > i+1)
{
addgamepath(argv[i+1]);
i++;
}
i++;
continue;
}
if (!Bstrcasecmp(c+1,"cfg"))
{
if (argc > i+1)
@ -8595,25 +8652,7 @@ static void checkcommandline(int argc,char **argv)
case 'G':
c++;
if (!*c) break;
strcpy(tempbuf,c);
if (strchr(tempbuf,'.') == 0)
strcat(tempbuf,".grp");
{
struct strllist *s;
s = (struct strllist *)calloc(1,sizeof(struct strllist));
s->str = strdup(tempbuf);
if (CommandGrps)
{
struct strllist *t;
for (t = CommandGrps; t->next; t=t->next) ;
t->next = s;
}
else
{
CommandGrps = s;
}
}
addgroup(c);
break;
case 'h':
case 'H':
@ -8635,21 +8674,7 @@ static void checkcommandline(int argc,char **argv)
case 'J':
c++;
if (!*c) break;
{
struct strllist *s;
s = (struct strllist *)calloc(1,sizeof(struct strllist));
s->str = strdup(c);
if (CommandPaths)
{
struct strllist *t;
for (t = CommandPaths; t->next; t=t->next) ;
t->next = s;
}
else
{
CommandPaths = s;
}
}
addgamepath(c);
break;
case 'l':
case 'L':

View file

@ -2960,8 +2960,8 @@ void getinput(int snum)
momx += fricxv;
momy += fricyv;
if (momx == 0) momx = 1; // HACK; the game seems to "forget" about the rest of the data if we aren't moving
if (momy == 0) momy = 1;
// if (momx == 0) momx = 1; // HACK; the game seems to "forget" about the rest of the data if we aren't moving
// if (momy == 0) momy = 1;
loc.fvel = momx;
loc.svel = momy;