mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
add support for the include command to names.h loaded by Mapster32, and names.h no longer requires # in front of commands for CON compatibility
git-svn-id: https://svn.eduke32.com/eduke32@1987 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
8f55e7c94a
commit
6cbc6a1a0c
1 changed files with 85 additions and 32 deletions
|
@ -206,7 +206,7 @@ void overheadeditor(void);
|
||||||
static int32_t getlinehighlight(int32_t xplc, int32_t yplc, int32_t line);
|
static int32_t getlinehighlight(int32_t xplc, int32_t yplc, int32_t line);
|
||||||
void fixspritesectors(void);
|
void fixspritesectors(void);
|
||||||
static int32_t movewalls(int32_t start, int32_t offs);
|
static int32_t movewalls(int32_t start, int32_t offs);
|
||||||
int32_t loadnames(const char *namesfile);
|
int32_t loadnames(const char *namesfile, int8_t root);
|
||||||
void updatenumsprites(void);
|
void updatenumsprites(void);
|
||||||
static void getclosestpointonwall(int32_t x, int32_t y, int32_t dawall, int32_t *nx, int32_t *ny,
|
static void getclosestpointonwall(int32_t x, int32_t y, int32_t dawall, int32_t *nx, int32_t *ny,
|
||||||
int32_t maybe_screen_coord_p);
|
int32_t maybe_screen_coord_p);
|
||||||
|
@ -513,7 +513,7 @@ int32_t app_main(int32_t argc, const char **argv)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
loadnames(g_namesFileName);
|
loadnames(g_namesFileName, 1);
|
||||||
|
|
||||||
if (initinput()) return -1;
|
if (initinput()) return -1;
|
||||||
|
|
||||||
|
@ -8658,22 +8658,17 @@ static int16_t whitelinescan(int16_t sucksect, int16_t dalinehighlight)
|
||||||
return(tnewnumwalls);
|
return(tnewnumwalls);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t loadnames(const char *namesfile)
|
int32_t loadnames(const char *namesfile, int8_t root)
|
||||||
{
|
{
|
||||||
char buffer[1024], *p, *name, *number, *endptr;
|
char buffer[1024], *p, *name, *number, *endptr;
|
||||||
int32_t num, syms=0, line=0, a, comment=0;
|
static int32_t syms=0;
|
||||||
|
int32_t num, line=0, a, comment=0;
|
||||||
|
int8_t quotes=0, anglebrackets=0;
|
||||||
BFILE *fp;
|
BFILE *fp;
|
||||||
|
|
||||||
Bstrncpy(buffer, namesfile, sizeof(buffer));
|
Bstrncpy(buffer, namesfile, sizeof(buffer));
|
||||||
buffer[sizeof(buffer)-1] = 0;
|
buffer[sizeof(buffer)-1] = 0;
|
||||||
|
|
||||||
p = buffer;
|
|
||||||
while (*p)
|
|
||||||
{
|
|
||||||
*p = Btoupper(*p);
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
|
|
||||||
fp = fopenfrompath(buffer,"r");
|
fp = fopenfrompath(buffer,"r");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
{
|
{
|
||||||
|
@ -8691,6 +8686,7 @@ int32_t loadnames(const char *namesfile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (root)
|
||||||
//clearbufbyte(names, sizeof(names), 0);
|
//clearbufbyte(names, sizeof(names), 0);
|
||||||
Bmemset(names,0,sizeof(names));
|
Bmemset(names,0,sizeof(names));
|
||||||
|
|
||||||
|
@ -8708,12 +8704,26 @@ int32_t loadnames(const char *namesfile)
|
||||||
|
|
||||||
p = buffer;
|
p = buffer;
|
||||||
line++;
|
line++;
|
||||||
while (*p == 32) p++;
|
while (*p == 32) p++; // 32 == 0x20 == space
|
||||||
if (*p == 0) continue; // blank line
|
if (*p == 0) continue; // blank line
|
||||||
|
|
||||||
if (*p == '#' && !comment)
|
if (*p == '#') // make '#' optional for compatibility
|
||||||
{
|
|
||||||
p++;
|
p++;
|
||||||
|
|
||||||
|
if (*p == '/')
|
||||||
|
{
|
||||||
|
if (*(p+1) == '/') continue; // comment
|
||||||
|
if (*(p+1) == '*') {comment++; continue;} /* comment */
|
||||||
|
}
|
||||||
|
else if (*p == '*' && p[1] == '/')
|
||||||
|
{
|
||||||
|
comment--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (comment)
|
||||||
|
continue;
|
||||||
|
else if (!comment)
|
||||||
|
{
|
||||||
while (*p == 32) p++;
|
while (*p == 32) p++;
|
||||||
if (*p == 0) continue; // null directive
|
if (*p == 0) continue; // null directive
|
||||||
|
|
||||||
|
@ -8774,24 +8784,67 @@ int32_t loadnames(const char *namesfile)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else goto badline;
|
else if (!Bstrncmp(p, "include ", 8))
|
||||||
}
|
|
||||||
else if (*p == '/')
|
|
||||||
{
|
{
|
||||||
if (*(p+1) == '*') {comment++; continue;}
|
// #include_...
|
||||||
if (*(p+1) == '/') continue; // comment
|
p += 8;
|
||||||
}
|
while (*p == 32) p++;
|
||||||
else if (*p == '*' && p[1] == '/')
|
if (*p == 0)
|
||||||
{
|
{
|
||||||
comment--;
|
initprintf("Error: Malformed #include at line %d\n", line-1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (comment)
|
|
||||||
|
if (*p == '\"')
|
||||||
|
{
|
||||||
|
quotes = 1;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
else if (*p == '<')
|
||||||
|
{
|
||||||
|
anglebrackets = 1;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
name = p;
|
||||||
|
if (quotes == 1)
|
||||||
|
{
|
||||||
|
while (*p != '\"' && *p != 0) p++;
|
||||||
|
quotes = 0;
|
||||||
|
if (*p == 0)
|
||||||
|
{
|
||||||
|
initprintf("Error: Missing \'\"\' in #include at line %d\n", line-1);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
*p = 0;
|
||||||
|
}
|
||||||
|
else if (anglebrackets == 1)
|
||||||
|
{
|
||||||
|
while (*p != '>' && *p != 0) p++;
|
||||||
|
anglebrackets = 0;
|
||||||
|
if (*p == 0)
|
||||||
|
{
|
||||||
|
initprintf("Error: Missing \'>\' in #include at line %d\n", line-1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
*p = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (*p != 32 && *p != 0) p++;
|
||||||
|
*p = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadnames(name, 0);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
badline:
|
badline:
|
||||||
initprintf("Error: Invalid statement found at character %d on line %d\n", (int32_t)(p-buffer), line-1);
|
initprintf("Error: Invalid statement found at character %d on line %d\n", (int32_t)(p-buffer), line-1);
|
||||||
}
|
}
|
||||||
initprintf("Read %d lines, loaded %d names.\n", line, syms);
|
if (root)
|
||||||
|
initprintf("Loaded %d names.\n", syms);
|
||||||
|
|
||||||
Bfclose(fp);
|
Bfclose(fp);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue