line[index++] = STRING_COLOR_DEFAULT + '0';
// special color codes for chat messages must always come first
// for Con_PrintToHistory to work properly
- if (*msg <= 2)
+ if (*msg == 1 || *msg == 2)
{
+ // play talk wav
if (*msg == 1)
- {
- // play talk wav
S_LocalSound ("sound/misc/talk.wav");
- }
- //if (gamemode == GAME_NEXUIZ)
- //{
- line[index++] = STRING_COLOR_TAG;
- line[index++] = '3';
- //}
- //else
- //{
- // // go to colored text
- // mask = 128;
- //}
+ line[index++] = STRING_COLOR_TAG;
+ line[index++] = '3';
msg++;
}
// store timestamp
{
float x, v;
char *text;
- int i;
+ int i, stop;
float time;
char temptext[MAX_INPUTLINE];
int colorindex = -1; //-1 for default
v = 8;
else
v = 0;
- for (i= con_current-con_notify.integer+1 ; i<=con_current ; i++)
+ // make a copy of con_current here so that we can't get in a runaway loop printing new messages while drawing the notify text
+ stop = con_current;
+ for (i= stop-con_notify.integer+1 ; i<=stop ; i++)
{
if (i < 0)
text = con_text + (i % con_totallines)*con_linewidth;
if (gamemode == GAME_NEXUIZ) {
- int linewidth;
+ int chars = 0;
+ int finalchars = 0;
+ int j;
- for (linewidth = con_linewidth; linewidth && text[linewidth-1] == ' '; linewidth--);
- x = (vid_conwidth.integer - linewidth * con_textsize.value) * 0.5;
+ // count up to the last non-whitespace, and ignore color codes
+ for (j = 0;j < con_linewidth && text[j];j++)
+ {
+ if (text[j] == '^' && (text[j+1] >= '0' && text[j+1] <= '9'))
+ {
+ j++;
+ continue;
+ }
+ chars++;
+ if (text[j] == ' ')
+ continue;
+ finalchars = chars;
+ }
+ // center the line using the calculated width
+ x = (vid_conwidth.integer - finalchars * con_textsize.value) * 0.5;
} else
x = 0;
*/
void Con_DrawConsole (int lines)
{
- int i, rows, j;
+ int i, rows, j, stop;
float y;
char *text;
int colorindex = -1;
rows = (int)ceil((lines/con_textsize.value)-2); // rows of text to draw
y = lines - (rows+2)*con_textsize.value; // may start slightly negative
- for (i = con_current - rows + 1;i <= con_current;i++, y += con_textsize.value)
+ // make a copy of con_current here so that we can't get in a runaway loop printing new messages while drawing the notify text
+ stop = con_current;
+ for (i = stop - rows + 1;i <= stop;i++, y += con_textsize.value)
{
j = max(i - con_backscroll, 0);
text = con_text + (j % con_totallines)*con_linewidth;
return false;
if (t->numfilenames > 1)
Con_Printf("^1 %i maps found :\n", t->numfilenames);
- len = Z_Malloc(t->numfilenames);
+ len = (unsigned char *)Z_Malloc(t->numfilenames);
min = 666;
for(max=i=0;i<t->numfilenames;i++)
{
if (!entities && lumplen >= 10)
{
FS_Seek(f, lumpofs, SEEK_SET);
- entities = Z_Malloc(lumplen + 1);
+ entities = (char *)Z_Malloc(lumplen + 1);
FS_Read(f, entities, lumplen);
}
if (entities)
for (;;)
{
int l;
- if (!COM_ParseToken(&data, false))
+ if (!COM_ParseTokenConsole(&data))
break;
if (com_token[0] == '{')
continue;
for (l = 0;l < (int)sizeof(keyname) - 1 && com_token[k+l] && com_token[k+l] > ' ';l++)
keyname[l] = com_token[k+l];
keyname[l] = 0;
- if (!COM_ParseToken(&data, false))
+ if (!COM_ParseTokenConsole(&data))
break;
if (developer.integer >= 100)
Con_Printf("key: %s %s\n", keyname, com_token);