X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=console.c;h=aabc53ea1c313a211f2892bbc07569b00888f0f1;hb=05b6edf1a4dac900a2d587ce8f26077642ba1792;hp=043dbeb8e6d17ac7bd919408212302661fd9f264;hpb=0e936f973c3dcb7f74691912db3ad85e8805ccf1;p=xonotic%2Fdarkplaces.git diff --git a/console.c b/console.c index 043dbeb8..aabc53ea 100644 --- a/console.c +++ b/console.c @@ -39,7 +39,7 @@ int con_backscroll; int con_current; // offset in current line for next print int con_x; -char *con_text = 0; +char con_text[CON_TEXTSIZE]; //seconds cvar_t con_notifytime = {CVAR_SAVE, "con_notifytime","3"}; @@ -60,8 +60,6 @@ extern int key_insert; qboolean con_initialized; -mempool_t *console_mempool; - /* ============================================================================== @@ -138,7 +136,7 @@ void Log_Open (void) if (logfile != NULL || log_file.string[0] == '\0') return; - logfile = FS_Open (log_file.string, "ab", false); + logfile = FS_Open (log_file.string, "ab", false, false); if (logfile != NULL) { strlcpy (crt_log_file, log_file.string, sizeof (crt_log_file)); @@ -252,7 +250,7 @@ void Log_Printf (const char *logfilename, const char *fmt, ...) { qfile_t *file; - file = FS_Open (logfilename, "ab", true); + file = FS_Open (logfilename, "ab", true, false); if (file != NULL) { va_list argptr; @@ -403,8 +401,6 @@ Con_Init */ void Con_Init (void) { - console_mempool = Mem_AllocPool("console", 0, NULL); - con_text = Mem_Alloc(console_mempool, CON_TEXTSIZE); memset (con_text, ' ', CON_TEXTSIZE); con_linewidth = -1; Con_CheckResize (); @@ -448,27 +444,11 @@ All console printing must go through this in order to be displayed If no console is visible, the notify window will pop up. ================ */ -void Con_PrintToHistory(const char *txt) +void Con_PrintToHistory(const char *txt, int mask) { - int y, c, l, mask; + int y, c, l; static int cr; - if (txt[0] == 1) - { - mask = 128; // go to colored text - S_LocalSound ("sound/misc/talk.wav"); - // play talk wav - txt++; - } - else if (txt[0] == 2) - { - mask = 128; // go to colored text - txt++; - } - else - mask = 0; - - while ( (c = *txt) ) { // count word length @@ -576,6 +556,7 @@ extern cvar_t timeformat; extern qboolean sys_nostdout; void Con_Print(const char *msg) { + int mask = 0; static int index = 0; static char line[16384]; @@ -588,7 +569,24 @@ void Con_Print(const char *msg) // special color codes for chat messages must always come first // for Con_PrintToHistory to work properly if (*msg <= 2) - line[index++] = *msg++; + { + if (*msg == 1) + { + // play talk wav + S_LocalSound ("sound/misc/talk.wav"); + } + if (gamemode == GAME_NEXUIZ) + { + line[index++] = '^'; + line[index++] = '3'; + } + else + { + // go to colored text + mask = 128; + } + msg++; + } // store timestamp for (;*timestamp;index++, timestamp++) if (index < sizeof(line) - 2) @@ -603,9 +601,6 @@ void Con_Print(const char *msg) line[index] = 0; // send to log file Log_ConPrint(line); - // send to scrollable buffer - if (con_initialized && cls.state != ca_dedicated) - Con_PrintToHistory(line); // send to terminal or dedicated server window if (!sys_nostdout) { @@ -614,6 +609,9 @@ void Con_Print(const char *msg) *p = qfont_table[*p]; Sys_PrintToTerminal(line); } + // send to scrollable buffer + if (con_initialized && cls.state != ca_dedicated) + Con_PrintToHistory(line, mask); // empty the line buffer index = 0; } @@ -690,18 +688,30 @@ DRAWING static vec4_t _con_colors[] = { - {1.0, 1.0, 1.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, - {1.0, 1.0, 0.0, 1.0}, - {0.0, 1.0, 1.0, 1.0}, - {1.0, 0.0, 1.0, 1.0}, - {0.1, 0.1, 0.1, 1.0} + // Quake3 colors + // LordHavoc: why on earth is cyan before magenta in Quake3? + // LordHavoc: note: Doom3 uses white for [0] and [7] + {0.0, 0.0, 0.0, 1.0}, // black + {1.0, 0.0, 0.0, 1.0}, // red + {0.0, 1.0, 0.0, 1.0}, // green + {1.0, 1.0, 0.0, 1.0}, // yellow + {0.0, 0.0, 1.0, 1.0}, // blue + {0.0, 1.0, 1.0, 1.0}, // cyan + {1.0, 0.0, 1.0, 1.0}, // magenta + {1.0, 1.0, 1.0, 1.0} // white + // Black's color table + //{1.0, 1.0, 1.0, 1.0}, + //{1.0, 0.0, 0.0, 1.0}, + //{0.0, 1.0, 0.0, 1.0}, + //{0.0, 0.0, 1.0, 1.0}, + //{1.0, 1.0, 0.0, 1.0}, + //{0.0, 1.0, 1.0, 1.0}, + //{1.0, 0.0, 1.0, 1.0}, + //{0.1, 0.1, 0.1, 1.0} }; #define _con_colors_count (sizeof(_con_colors) / sizeof(vec3_t)) -#define _con_color_tag '@' +#define _con_color_tag '^' // color is read and changed in the end static void _Con_DrawString( float x, float y, const char *text, int maxlen, float scalex, float scaley, int flags ) @@ -710,7 +720,7 @@ static void _Con_DrawString( float x, float y, const char *text, int maxlen, flo const char *first, *last; int len; - color = _con_colors[0]; + color = _con_colors[7]; if( maxlen < 1) len = strlen( text ); else @@ -721,8 +731,8 @@ static void _Con_DrawString( float x, float y, const char *text, int maxlen, flo // iterate until we get the next color tag or reach the end of the text part to draw for( ; len && *last != _con_color_tag ; len--, last++ ) ; - // dont do anything if we havent read anything yet - if( last != text ) { + // only draw the partial string if we have read anything + if( last != first ) { // draw the string DrawQ_String( x, y, first, last - first, scalex, scaley, color[0], color[1], color[2], color[3], flags ); // update x to be at the new start position @@ -752,7 +762,7 @@ static void _Con_DrawString( float x, float y, const char *text, int maxlen, flo color = _con_colors[index]; // we dont want to display the color tag and the color index first = last; - } + } } } @@ -907,7 +917,7 @@ void Con_DrawConsole (int lines) rows = (lines-16)>>3; // rows of text to draw y = lines - 16 - (rows<<3); // may start slightly negative - + for (i = con_current - rows + 1;i <= con_current;i++, y += 8) { j = max(i - con_backscroll, 0);