mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-29 12:40:58 +00:00
Kind of support line breaks with PAGETEXT. Can't trim trailing whitespace yet.
This commit is contained in:
parent
ef241b4521
commit
a3d000a37e
1 changed files with 12 additions and 27 deletions
|
@ -146,7 +146,7 @@ char *myfgets(char *buf, size_t bufsize, MYFILE *f)
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *myhashfgets(char *buf, size_t bufsize, MYFILE *f, boolean trim)
|
static char *myhashfgets(char *buf, size_t bufsize, MYFILE *f)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
if (myfeof(f))
|
if (myfeof(f))
|
||||||
|
@ -166,33 +166,15 @@ static char *myhashfgets(char *buf, size_t bufsize, MYFILE *f, boolean trim)
|
||||||
dbg_line++;
|
dbg_line++;
|
||||||
if (c == '#')
|
if (c == '#')
|
||||||
{
|
{
|
||||||
if (i > 0)
|
if (i > 0) // don't let i wrap past 0
|
||||||
i--; // don't include the hash in our string
|
i--; // don't include hash char in string
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (buf[i] != '#') // don't include hash char in string
|
||||||
// HACK: BS code to make sure i doesn't wrap past 0
|
i++;
|
||||||
// and put the terminator char AFTER the first non-whitespace char
|
|
||||||
// OR at position 0 if the first char is whitespace OR a hash
|
|
||||||
if (trim) // trailing whitespace only
|
|
||||||
{
|
|
||||||
if (i > 0)
|
|
||||||
i--; // current char may be '#', so skip that
|
|
||||||
while (i < bufsize && i > 0 && !myfeof(f))
|
|
||||||
{
|
|
||||||
char c = buf[i];
|
|
||||||
if (i > 0)
|
|
||||||
i--;
|
|
||||||
if ((c != '\r' && c != '\n' && c != ' ') || i == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (buf[i] != '\r' && buf[i] != '\n' && buf[i] != ' ' && buf[i] != '#')
|
|
||||||
i++; // put the null character after the first non-whitespace char
|
|
||||||
}
|
|
||||||
|
|
||||||
buf[i] = '\0';
|
buf[i] = '\0';
|
||||||
CONS_Printf("%s", buf);
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,7 +357,7 @@ static void readPlayer(MYFILE *f, INT32 num)
|
||||||
if (playertext)
|
if (playertext)
|
||||||
{
|
{
|
||||||
strcpy(description[num].notes, playertext);
|
strcpy(description[num].notes, playertext);
|
||||||
strcat(description[num].notes, myhashfgets(playertext, sizeof (description[num].notes), f, false));
|
strcat(description[num].notes, myhashfgets(playertext, sizeof (description[num].notes), f));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
strcpy(description[num].notes, "");
|
strcpy(description[num].notes, "");
|
||||||
|
@ -1391,7 +1373,7 @@ static void readcutscenescene(MYFILE *f, INT32 num, INT32 scenenum)
|
||||||
|
|
||||||
strcat(buffer,
|
strcat(buffer,
|
||||||
myhashfgets(scenetext, bufferlen
|
myhashfgets(scenetext, bufferlen
|
||||||
- strlen(buffer) - 1, f, false));
|
- strlen(buffer) - 1, f));
|
||||||
|
|
||||||
// A cutscene overwriting another one...
|
// A cutscene overwriting another one...
|
||||||
Z_Free(cutscenes[num]->scene[scenenum].text);
|
Z_Free(cutscenes[num]->scene[scenenum].text);
|
||||||
|
@ -1624,9 +1606,12 @@ static void readtextpromptpage(MYFILE *f, INT32 num, INT32 pagenum)
|
||||||
buffer = Z_Malloc(4096, PU_STATIC, NULL);
|
buffer = Z_Malloc(4096, PU_STATIC, NULL);
|
||||||
strcpy(buffer, pagetext);
|
strcpy(buffer, pagetext);
|
||||||
|
|
||||||
|
// \todo trim trailing whitespace before the #
|
||||||
|
// and also support # at the end of a PAGETEXT with no line break
|
||||||
|
|
||||||
strcat(buffer,
|
strcat(buffer,
|
||||||
myhashfgets(pagetext, bufferlen
|
myhashfgets(pagetext, bufferlen
|
||||||
- strlen(buffer) - 1, f, true));
|
- strlen(buffer) - 1, f));
|
||||||
|
|
||||||
// A text prompt overwriting another one...
|
// A text prompt overwriting another one...
|
||||||
Z_Free(textprompts[num]->page[pagenum].text);
|
Z_Free(textprompts[num]->page[pagenum].text);
|
||||||
|
|
Loading…
Reference in a new issue