1#include "chat.qh" 2 3// Chat (#12) 4 5void HUD_Chat() 6{ 7 if(!autocvar__hud_configure) 8 { 9 if (!autocvar_hud_panel_chat) 10 { 11 if (!autocvar_con_chatrect) 12 cvar_set("con_chatrect", "0"); 13 return; 14 } 15 if(autocvar__con_chat_maximized) 16 { 17 if(!hud_draw_maximized) return; 18 } 19 else if(chat_panel_modified) 20 { 21 panel.update_time = time; // forces reload of panel attributes 22 chat_panel_modified = false; 23 } 24 } 25 26 HUD_Panel_LoadCvars(); 27 28 if(intermission == 2) 29 { 30 // reserve some more space to the mapvote panel 31 // by resizing and moving chat panel to the bottom 32 panel_size.y = min(panel_size.y, vid_conheight * 0.2); 33 panel_pos.y = vid_conheight - panel_size.y - panel_bg_border * 2; 34 chat_posy = panel_pos.y; 35 chat_sizey = panel_size.y; 36 } 37 if(autocvar__con_chat_maximized && !autocvar__hud_configure) // draw at full screen height if maximized 38 { 39 panel_pos.y = panel_bg_border; 40 panel_size.y = vid_conheight - panel_bg_border * 2; 41 if(panel.current_panel_bg == "0") // force a border when maximized 42 { 43 string panel_bg; 44 panel_bg = strcat(hud_skin_path, "/border_default"); 45 if(precache_pic(panel_bg) == "") 46 panel_bg = "gfx/hud/default/border_default"; 47 if(panel.current_panel_bg) 48 strunzone(panel.current_panel_bg); 49 panel.current_panel_bg = strzone(panel_bg); 50 chat_panel_modified = true; 51 } 52 panel_bg_alpha = max(0.75, panel_bg_alpha); 53 } 54 55 vector pos, mySize; 56 pos = panel_pos; 57 mySize = panel_size; 58 59 // chat messages don't scale properly since they are displayed directly by the engine 60 HUD_Scale_Disable(); 61 HUD_Panel_DrawBg(); 62 63 if(panel_bg_padding) 64 { 65 pos += '1 1 0' * panel_bg_padding; 66 mySize -= '2 2 0' * panel_bg_padding; 67 } 68 69 if (!autocvar_con_chatrect) 70 cvar_set("con_chatrect", "1"); 71 72 cvar_set("con_chatrect_x", ftos(pos.x/vid_conwidth)); 73 cvar_set("con_chatrect_y", ftos(pos.y/vid_conheight)); 74 75 cvar_set("con_chatwidth", ftos(mySize.x/vid_conwidth)); 76 cvar_set("con_chat", ftos(floor(mySize.y/autocvar_con_chatsize - 0.5))); 77 78 if(autocvar__hud_configure) 79 { 80 vector chatsize = '1 1 0' * autocvar_con_chatsize; 81 cvar_set("con_chatrect_x", "9001"); // over 9000, we'll fake it instead for more control over alpha and such 82 string str = textShortenToWidth(_("^3Player^7: This is the chat area."), mySize.x, chatsize, stringwidth_colors); 83 for(int i = 0; i < autocvar_con_chat; ++i) 84 { 85 // engine displays chat text at full alpha 86 drawcolorcodedstring(pos, str, chatsize, 1, DRAWFLAG_NORMAL); 87 pos.y += chatsize.y; 88 } 89 } 90} 91