diff options
| author | Jakob Fries <jakob.fries@gmail.com> | 2007-08-10 11:03:16 +0000 |
|---|---|---|
| committer | Jakob Fries <jakob.fries@gmail.com> | 2007-08-10 11:03:16 +0000 |
| commit | 3d0c6b7f980566373448dcbc247245fedabf6392 (patch) | |
| tree | 35e3b21c3ac349b19440ae9edb45d22c9de339a5 /src/game/client | |
| parent | 8bda737f24b293e7c08ee1014f7690e3154928f9 (diff) | |
| download | zcatch-3d0c6b7f980566373448dcbc247245fedabf6392.tar.gz zcatch-3d0c6b7f980566373448dcbc247245fedabf6392.zip | |
generic line wrapping
Diffstat (limited to 'src/game/client')
| -rw-r--r-- | src/game/client/game_client.cpp | 79 |
1 files changed, 10 insertions, 69 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp index 7b94261d..0fd1b1e2 100644 --- a/src/game/client/game_client.cpp +++ b/src/game/client/game_client.cpp @@ -413,75 +413,14 @@ void chat_reset() void chat_add_line(int client_id, const char *line) { + chat_current_line = (chat_current_line+1)%chat_max_lines; + chat_lines[chat_current_line].tick = client_tick(); + chat_lines[chat_current_line].client_id = client_id; + if(client_id == -1) // server message - { - chat_current_line = (chat_current_line+1)%chat_max_lines; - chat_lines[chat_current_line].tick = client_tick(); - chat_lines[chat_current_line].client_id = client_id; sprintf(chat_lines[chat_current_line].text, "*** %s", line); - } else - { - int len; - int loop_count = 0; - while ((len = strlen(line)) > 0) - { - const int max_line_len = 80; - const char *str; - int str_len; - - chat_current_line = (chat_current_line+1)%chat_max_lines; - chat_lines[chat_current_line].tick = client_tick(); - chat_lines[chat_current_line].client_id = client_id; - // check if we need to cut it - if (len > max_line_len) - { - int cutoff = max_line_len; - - // find space - while (cutoff > 0) - { - if (line[cutoff] == ' ') - break; - else - cutoff--; - } - - // if no space was found, force cut off - if (!cutoff) - cutoff = max_line_len; - - str = line; - str_len = cutoff; - - line += cutoff; - - // get rid of leading spaces - while (line[0] == ' ') - line++; - } - else - { - str = line; - str_len = len; - - line += len; - } - - if (loop_count == 0) - { - sprintf(chat_lines[chat_current_line].text, "%s: %s", client_datas[client_id].name, str); // TODO: abit nasty - chat_lines[chat_current_line].text[strlen(client_datas[client_id].name) + 2 + str_len] = '\0'; - } - else - { - memcpy(chat_lines[chat_current_line].text, str, str_len); - chat_lines[chat_current_line].text[str_len] = '\0'; - } - - loop_count++; - } - } + sprintf(chat_lines[chat_current_line].text, "%s: %s", client_datas[client_id].name, line); // TODO: abit nasty } struct killmsg @@ -1679,7 +1618,7 @@ void render_game() // render chat input char buf[sizeof(chat_input)+16]; sprintf(buf, "Chat: %s_", chat_input); - gfx_pretty_text(x, y, 10, buf); + gfx_pretty_text(x, y, 10, buf, 380); starty = y; } @@ -1691,9 +1630,11 @@ void render_game() int r = ((chat_current_line-i)+chat_max_lines)%chat_max_lines; if(client_tick() > chat_lines[r].tick+50*15) break; + + int lines = int(gfx_pretty_text_width(10, chat_lines[r].text)) / 380 + 1; - gfx_pretty_text(x, y, 10, chat_lines[r].text); - y -= 8; + gfx_pretty_text(x, y - 8 * (lines - 1), 10, chat_lines[r].text, 380); + y -= 8 * lines; } } |