about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorJakob Fries <jakob.fries@gmail.com>2007-08-10 11:03:16 +0000
committerJakob Fries <jakob.fries@gmail.com>2007-08-10 11:03:16 +0000
commit3d0c6b7f980566373448dcbc247245fedabf6392 (patch)
tree35e3b21c3ac349b19440ae9edb45d22c9de339a5 /src/game/client
parent8bda737f24b293e7c08ee1014f7690e3154928f9 (diff)
downloadzcatch-3d0c6b7f980566373448dcbc247245fedabf6392.tar.gz
zcatch-3d0c6b7f980566373448dcbc247245fedabf6392.zip
generic line wrapping
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/game_client.cpp79
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;
 		}
 	}