diff options
author | Darkvater <darkvater@openttd.org> | 2006-11-16 17:41:24 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2006-11-16 17:41:24 +0000 |
commit | edcbb105656514e6b422d2d5e04f6dcb2e30459b (patch) | |
tree | 7c2185201a93f3c8c674dabd72895508d9d7290a | |
parent | 81b84c909189d05d8f6bc08218d1f4208fdeb99e (diff) | |
download | openttd-edcbb105656514e6b422d2d5e04f6dcb2e30459b.tar.xz |
(svn r7172) -Fix [r6931]: The console showed '?' characters instead of colours. Now strip all
colours for the console. It's a bit magicky (magic numbers) but UTF8 fixes that soon.
-rw-r--r-- | console.c | 1 | ||||
-rw-r--r-- | string.c | 13 | ||||
-rw-r--r-- | string.h | 3 |
3 files changed, 17 insertions, 0 deletions
@@ -400,6 +400,7 @@ void IConsolePrint(uint16 color_code, const char *string) memmove(&_iconsole_buffer[0], &_iconsole_buffer[1], sizeof(_iconsole_buffer[0]) * ICON_BUFFER); _iconsole_buffer[ICON_BUFFER] = strdup(string); + str_strip_colours(_iconsole_buffer[ICON_BUFFER]); str_validate(_iconsole_buffer[ICON_BUFFER]); memmove(&_iconsole_cbuffer[0], &_iconsole_cbuffer[1], sizeof(_iconsole_cbuffer[0]) * ICON_BUFFER); @@ -72,6 +72,19 @@ void str_validate(char *str) if (!IsValidAsciiChar(*str, CS_ALPHANUMERAL)) *str = '?'; } +void str_strip_colours(char *str) +{ + char *dst = str; + for (; *str != '\0';) { + if (*str >= 15 && *str <= 31) { // magic colour codes + str++; + } else { + *dst++ = *str++; + } + } + *dst = '\0'; +} + /** * Only allow certain keys. You can define the filter to be used. This makes * sure no invalid keys can get into an editbox, like BELL. @@ -29,6 +29,9 @@ char* CDECL str_fmt(const char* str, ...); * replaces them with a question mark '?' */ void str_validate(char *str); +/** Scans the string for colour codes and strips them */ +void str_strip_colours(char *str); + /** * Valid filter types for IsValidAsciiChar. */ |