Quake II RTX doxygen
1.0 dev
|
|
Go to the documentation of this file.
21 #include "refresh/images.h"
24 #define STAT_MINUS (STAT_PICS - 1) // num frame for '-' stats digit
58 static cvar_t *scr_showstats;
59 static cvar_t *scr_showpmove;
97 cvar_t *scr_timegraph;
98 cvar_t *scr_debuggraph;
100 static cvar_t *scr_graphheight;
101 static cvar_t *scr_graphscale;
102 static cvar_t *scr_graphshift;
109 "num_0",
"num_1",
"num_2",
"num_3",
"num_4",
"num_5",
110 "num_6",
"num_7",
"num_8",
"num_9",
"num_minus"
113 "anum_0",
"anum_1",
"anum_2",
"anum_3",
"anum_4",
"anum_5",
114 "anum_6",
"anum_7",
"anum_8",
"anum_9",
"anum_minus"
119 U32_BLACK, U32_RED, U32_GREEN, U32_YELLOW,
120 U32_BLUE, U32_CYAN, U32_MAGENTA, U32_WHITE
131 #define SCR_DrawString(x, y, flags, string) \
132 SCR_DrawStringEx(x, y, flags, MAX_STRING_CHARS, string, scr.font_pic)
140 const char *s, qhandle_t font)
142 size_t len = strlen(s);
148 if ((flags & UI_CENTER) == UI_CENTER) {
149 x -= len * CHAR_WIDTH / 2;
150 }
else if (flags & UI_RIGHT) {
151 x -= len * CHAR_WIDTH;
164 const char *s, qhandle_t font)
193 float SCR_FadeAlpha(
unsigned startTime,
unsigned visTime,
unsigned fadeTime)
196 unsigned timeLeft, delta =
cls.
realtime - startTime;
198 if (delta >= visTime) {
202 if (fadeTime > visTime) {
207 timeLeft = visTime - delta;
208 if (timeLeft < fadeTime) {
209 alpha = (float)timeLeft / fadeTime;
223 for (i = 0; s[i]; i++) {
227 c[i] = Q_charhex(s[i]);
235 color->u8[0] =
c[0] | (
c[0] << 4);
236 color->u8[1] =
c[1] | (
c[1] << 4);
237 color->u8[2] =
c[2] | (
c[2] << 4);
241 color->u8[0] =
c[1] | (
c[0] << 4);
242 color->u8[1] =
c[3] | (
c[2] << 4);
243 color->u8[2] =
c[5] | (
c[4] << 4);
247 color->u8[0] =
c[1] | (
c[0] << 4);
248 color->u8[1] =
c[3] | (
c[2] << 4);
249 color->u8[2] =
c[5] | (
c[4] << 4);
250 color->u8[3] =
c[7] | (
c[6] << 4);
261 if (i == COLOR_NONE) {
285 void CL_AddNetgraph(
void)
291 if (!
scr.initialized)
296 if (scr_debuggraph->integer || scr_timegraph->integer)
306 in =
cls.
netchan->incoming_acknowledged & CMD_MASK;
321 static graphsamp_t values[2048];
330 values[current & 2047].value = value;
331 values[current & 2047].color =
color;
340 static void SCR_DrawDebugGraph(
void)
342 int a, x, y, w, i, h;
354 w, scr_graphheight->value, 8);
356 for (a = 0; a < w; a++) {
357 i = (current - 1 - a + 2048) & 2047;
359 color = values[i].color;
360 v = v * scr_graphscale->value + scr_graphshift->value;
363 v += scr_graphheight->value * (1 + (
int)(-v / scr_graphheight->value));
364 h = (
int)v % (
int)scr_graphheight->value;
377 scr.hud_height -= CHAR_HEIGHT;
379 w =
scr.hud_width * percent / 100;
384 len =
Q_scnprintf(buffer,
sizeof(buffer),
"%d%%", percent);
385 x = (
scr.hud_width - len * CHAR_WIDTH) / 2;
389 int sec = framenum / 10;
390 int min = sec / 60; sec %= 60;
392 Q_scnprintf(buffer,
sizeof(buffer),
"%d:%02d.%d", min, sec, framenum % 10);
418 cl_paused->integer &&
430 if ((percent = MVD_GetDemoPercent(&paused, &framenum)) == -1) {
518 #define LAG_HEIGHT 48
520 #define LAG_CRIT_BIT (1 << 31)
521 #define LAG_WARN_BIT (1 << 30)
523 #define LAG_BASE 0xD5
524 #define LAG_WARN 0xDC
525 #define LAG_CRIT 0xF2
539 int i =
cls.
netchan->incoming_acknowledged & CMD_MASK;
563 int i, j, v,
c, v_min, v_max, v_range;
568 v_range = v_max - v_min;
573 j =
lag.head - i - 1;
642 #define FOR_EACH_DRAWOBJ(obj) \
643 LIST_FOR_EACH(drawobj_t, obj, &scr_objects, entry)
644 #define FOR_EACH_DRAWOBJ_SAFE(obj, next) \
645 LIST_FOR_EACH_SAFE(drawobj_t, obj, next, &scr_objects, entry)
665 }
else if (argnum == 4) {
683 if (LIST_EMPTY(&scr_objects)) {
684 Com_Printf(
"No draw strings registered.\n");
687 Com_Printf(
"Name X Y\n"
688 "--------------- ---- ----\n");
691 Com_Printf(
"%-15s %4d %4d\n", s, obj->
x, obj->
y);
697 Com_Printf(
"Usage: %s <name> <x> <y> [color]\n",
Cmd_Argv(0));
701 color.u32 = U32_BLACK;
702 flags = UI_IGNORECOLOR;
714 if (!strcmp(
c,
"alt")) {
715 flags |= UI_ALTCOLOR;
716 }
else if (strcmp(
c,
"none")) {
718 Com_Printf(
"Unknown color '%s'\n",
c);
721 flags &= ~UI_IGNORECOLOR;
732 if (obj->
macro == macro && obj->
cvar == cvar) {
741 obj = Z_Malloc(
sizeof(*obj));
749 List_Append(&scr_objects, &obj->
entry);
757 if (LIST_EMPTY(&scr_objects)) {
786 Com_Printf(
"Usage: %s <name>\n",
Cmd_Argv(0));
790 if (LIST_EMPTY(&scr_objects)) {
791 Com_Printf(
"No draw strings registered.\n");
796 if (!strcmp(s,
"all")) {
800 List_Init(&scr_objects);
801 Com_Printf(
"Deleted all draw strings.\n");
812 if (obj->
macro == macro && obj->
cvar == cvar) {
813 List_Remove(&obj->
entry);
819 Com_Printf(
"Draw string '%s' not found.\n", s);
824 char buffer[MAX_QPATH];
832 x +=
scr.hud_width + 1;
835 y +=
scr.hud_height - CHAR_HEIGHT + 1;
837 if (!(obj->
flags & UI_IGNORECOLOR)) {
841 obj->
macro->function(buffer,
sizeof(buffer));
846 if (!(obj->
flags & UI_IGNORECOLOR)) {
864 char buffer[MAX_QPATH];
866 Q_snprintf(buffer, MAX_QPATH,
"%d FPS at %3d%%", fps, scale);
870 int x =
scr.hud_width - 2;
885 #define MAX_CHAT_TEXT 150
886 #define MAX_CHAT_LINES 32
887 #define CHAT_LINE_MASK (MAX_CHAT_LINES - 1)
912 p = strrchr(line->
text,
'\n');
919 int x, y, flags, step;
920 unsigned i, lines, time;
936 x +=
scr.hud_width + 1;
943 y +=
scr.hud_height - CHAR_HEIGHT + 1;
955 for (i = 0; i < lines; i++) {
993 y =
scr.hud_height - 11 * CHAR_HEIGHT;
996 if (cl.frameflags & FF_##f) { \
997 SCR_DrawString(x, y, UI_ALTCOLOR, #f); \
1019 static void SCR_DrawDebugStats(
void)
1021 char buffer[MAX_QPATH];
1025 j = scr_showstats->integer;
1033 y = (
scr.hud_height - j * CHAR_HEIGHT) / 2;
1034 for (i = 0; i < j; i++) {
1045 static void SCR_DrawDebugPmove(
void)
1047 static const char *
const types[] = {
1048 "NORMAL",
"SPECTATOR",
"DEAD",
"GIB",
"FREEZE"
1050 static const char *
const flags[] = {
1051 "DUCKED",
"JUMP_HELD",
"ON_GROUND",
1052 "TIME_WATERJUMP",
"TIME_LAND",
"TIME_TELEPORT",
1053 "NO_PREDICTION",
"TELEPORT_BIT"
1058 if (!scr_showpmove->integer)
1062 y = (
scr.hud_height - 2 * CHAR_HEIGHT) / 2;
1072 for (i = 0; i < 8; i++) {
1135 Com_Printf(
"Usage: sky <basename> [rotate] [axis x y z]\n");
1140 Com_Printf(
"No map loaded.\n");
1160 VectorSet(axis, 0, 0, 1);
1173 unsigned start, stop;
1177 Com_Printf(
"No map loaded.\n");
1186 for (i = 0; i < 128; i++) {
1187 cl.
refdef.viewangles[1] = i / 128.0f * 360.0f;
1192 for (i = 0; i < 128; i++) {
1193 cl.
refdef.viewangles[1] = i / 128.0f * 360.0f;
1202 time = (stop - start) * 0.001f;
1203 Com_Printf(
"%f seconds (%f fps)\n", time, 128.0f / time);
1217 scr.crosshair_pic = R_RegisterPic(buffer);
1222 scr.crosshair_width = w * scale;
1223 scr.crosshair_height = h * scale;
1224 if (
scr.crosshair_width < 1)
1225 scr.crosshair_width = 1;
1226 if (
scr.crosshair_height < 1)
1227 scr.crosshair_height = 1;
1232 scr.crosshair_color.u8[0] = (byte)(
ch_red->value * 255);
1233 scr.crosshair_color.u8[1] = (byte)(
ch_green->value * 255);
1234 scr.crosshair_color.u8[2] = (byte)(
ch_blue->value * 255);
1236 scr.crosshair_color.u8[3] = (byte)(
ch_alpha->value * 255);
1238 scr.crosshair_pic = 0;
1250 health =
cl.
frame.
ps.stats[STAT_HEALTH];
1252 VectorSet(
scr.crosshair_color.u8, 0, 0, 0);
1257 scr.crosshair_color.u8[0] = 255;
1261 scr.crosshair_color.u8[1] = 255;
1262 }
else if (health < 33) {
1263 scr.crosshair_color.u8[1] = 0;
1265 scr.crosshair_color.u8[1] = (255 * (health - 33)) / 33;
1270 scr.crosshair_color.u8[2] = 255;
1271 }
else if (health < 66) {
1272 scr.crosshair_color.u8[2] = 0;
1274 scr.crosshair_color.u8[2] = (255 * (health - 66)) / 33;
1286 if (
scr.initialized)
1289 scr.hud_alpha = 1.f;
1301 for (i = 0; i < 2; i++)
1303 scr.sb_pics[i][j] = R_RegisterPic(
sb_nums[i][j]);
1305 scr.inven_pic = R_RegisterPic(
"inventory");
1306 scr.field_pic = R_RegisterPic(
"field_3");
1308 scr.backtile_pic =
R_RegisterImage(
"backtile", IT_PIC, IF_PERMANENT | IF_REPEAT, NULL);
1310 scr.pause_pic = R_RegisterPic(
"pause");
1313 scr.loading_pic = R_RegisterPic(
"loading");
1316 scr.net_pic = R_RegisterPic(
"net");
1324 scr.font_pic = R_RegisterFont(self->string);
1354 scr_netgraph =
Cvar_Get(
"netgraph",
"0", 0);
1355 scr_timegraph =
Cvar_Get(
"timegraph",
"0", 0);
1356 scr_debuggraph =
Cvar_Get(
"debuggraph",
"0", 0);
1357 scr_graphheight =
Cvar_Get(
"graphheight",
"32", 0);
1358 scr_graphscale =
Cvar_Get(
"graphscale",
"1", 0);
1359 scr_graphshift =
Cvar_Get(
"graphshift",
"0", 0);
1402 scr_showstats =
Cvar_Get(
"scr_showstats",
"0", 0);
1403 scr_showpmove =
Cvar_Get(
"scr_showpmove",
"0", 0);
1410 scr.initialized = qtrue;
1416 scr.initialized = qfalse;
1435 if (developer->integer) {
1445 scr.draw_loading = qtrue;
1478 #define ICON_WIDTH 24
1479 #define ICON_HEIGHT 24
1480 #define DIGIT_WIDTH 16
1481 #define ICON_SPACE 8
1483 #define HUD_DrawString(x, y, string) \
1484 R_DrawString(x, y, 0, MAX_STRING_CHARS, string, scr.font_pic)
1486 #define HUD_DrawAltString(x, y, string) \
1487 R_DrawString(x, y, UI_XORCOLOR, MAX_STRING_CHARS, string, scr.font_pic)
1489 #define HUD_DrawCenterString(x, y, string) \
1490 SCR_DrawStringMulti(x, y, UI_CENTER, MAX_STRING_CHARS, string, scr.font_pic)
1492 #define HUD_DrawAltCenterString(x, y, string) \
1493 SCR_DrawStringMulti(x, y, UI_CENTER | UI_XORCOLOR, MAX_STRING_CHARS, string, scr.font_pic)
1529 #define DISPLAY_ITEMS 17
1534 int num, selected_num, item;
1535 int index[MAX_ITEMS];
1536 char string[MAX_STRING_CHARS];
1542 if (!(
cl.
frame.
ps.stats[STAT_LAYOUTS] & 2))
1545 selected =
cl.
frame.
ps.stats[STAT_SELECTED_ITEM];
1549 for (i = 0; i < MAX_ITEMS; i++) {
1550 if (i == selected) {
1567 x = (
scr.hud_width - 256) / 2;
1568 y = (
scr.hud_height - 240) / 2;
1587 Q_snprintf(
string,
sizeof(
string),
"%6s %3i %s",
1590 if (item != selected) {
1605 static int display_item = -1;
1606 static int display_start_time = 0;
1608 float duration = 0.f;
1609 if (display_item != item)
1612 display_item = item;
1621 alpha = max(0.f, min(1.f, 5.f - 4.f * duration));
1629 int index = CS_ITEMS + item;
1638 char buffer[MAX_QPATH];
1654 if (token[2] == 0) {
1655 if (token[0] ==
'x') {
1656 if (token[1] ==
'l') {
1662 if (token[1] ==
'r') {
1664 x =
scr.hud_width + atoi(token);
1668 if (token[1] ==
'v') {
1670 x =
scr.hud_width / 2 - 160 + atoi(token);
1675 if (token[0] ==
'y') {
1676 if (token[1] ==
't') {
1682 if (token[1] ==
'b') {
1684 y =
scr.hud_height + atoi(token);
1688 if (token[1] ==
'v') {
1690 y =
scr.hud_height / 2 - 120 + atoi(token);
1696 if (!strcmp(token,
"pic")) {
1699 value = atoi(token);
1700 if (value < 0 || value >= MAX_STATS) {
1701 Com_Error(ERR_DROP,
"%s: invalid stat index", __func__);
1704 if (index < 0 || index >= MAX_IMAGES) {
1705 Com_Error(ERR_DROP,
"%s: invalid pic index", __func__);
1719 if (!strcmp(token,
"client")) {
1721 int score, ping, time;
1724 x =
scr.hud_width / 2 - 160 + atoi(token);
1726 y =
scr.hud_height / 2 - 120 + atoi(token);
1729 value = atoi(token);
1730 if (value < 0 || value >= MAX_CLIENTS) {
1731 Com_Error(ERR_DROP,
"%s: invalid client index", __func__);
1736 score = atoi(token);
1746 Q_snprintf(buffer,
sizeof(buffer),
"%i", score);
1748 Q_snprintf(buffer,
sizeof(buffer),
"Ping: %i", ping);
1750 Q_snprintf(buffer,
sizeof(buffer),
"Time: %i", time);
1760 if (!strcmp(token,
"ctf")) {
1765 x =
scr.hud_width / 2 - 160 + atoi(token);
1767 y =
scr.hud_height / 2 - 120 + atoi(token);
1770 value = atoi(token);
1771 if (value < 0 || value >= MAX_CLIENTS) {
1772 Com_Error(ERR_DROP,
"%s: invalid client index", __func__);
1777 score = atoi(token);
1784 Q_snprintf(buffer,
sizeof(buffer),
"%3d %3d %-12.12s",
1785 score, ping, ci->
name);
1794 if (!strcmp(token,
"picn")) {
1801 if (!strcmp(token,
"num")) {
1804 width = atoi(token);
1806 value = atoi(token);
1807 if (value < 0 || value >= MAX_STATS) {
1808 Com_Error(ERR_DROP,
"%s: invalid stat index", __func__);
1815 if (!strcmp(token,
"hnum")) {
1828 if (
cl.
frame.
ps.stats[STAT_FLASHES] & 1)
1835 if (!strcmp(token,
"anum")) {
1843 else if (value >= 0)
1848 if (
cl.
frame.
ps.stats[STAT_FLASHES] & 4)
1855 if (!strcmp(token,
"rnum")) {
1866 if (
cl.
frame.
ps.stats[STAT_FLASHES] & 2)
1873 if (!strcmp(token,
"stat_string")) {
1875 index = atoi(token);
1876 if (index < 0 || index >= MAX_STATS) {
1877 Com_Error(ERR_DROP,
"%s: invalid stat index", __func__);
1880 if (index < 0 || index >= MAX_CONFIGSTRINGS) {
1881 Com_Error(ERR_DROP,
"%s: invalid string index", __func__);
1887 if (!strcmp(token,
"cstring")) {
1893 if (!strcmp(token,
"cstring2")) {
1899 if (!strcmp(token,
"string")) {
1905 if (!strcmp(token,
"string2")) {
1911 if (!strcmp(token,
"if")) {
1913 value = atoi(token);
1914 if (value < 0 || value >= MAX_STATS) {
1915 Com_Error(ERR_DROP,
"%s: invalid stat index", __func__);
1919 while (strcmp(token,
"endif")) {
1929 if (!strcmp(token,
"color")) {
1953 if (!cl_paused->integer)
1958 x = (
scr.hud_width -
scr.pause_width) / 2;
1959 y = (
scr.hud_height -
scr.pause_height) / 2;
1968 if (!
scr.draw_loading)
1971 scr.draw_loading = qfalse;
1990 x = (
scr.hud_width -
scr.crosshair_width) / 2;
1991 y = (
scr.hud_height -
scr.crosshair_height) / 2;
1997 scr.crosshair_width,
1998 scr.crosshair_height,
2019 if (!(
cl.
frame.
ps.stats[STAT_LAYOUTS] & 1))
2038 scr.hud_height *=
scr.hud_scale;
2039 scr.hud_width *=
scr.hud_scale;
2072 SCR_DrawDebugStats();
2073 SCR_DrawDebugPmove();
2099 float zoomx = (float)
r_config.width / (
float)image->width;
2100 float zoomy = (float)
r_config.height / (
float)image->height;
2101 float zoom = min(zoomx, zoomy);
2103 int w = (
int)(image->width * zoom);
2104 int h = (
int)(image->height * zoom);
2144 static int recursive;
2146 if (!
scr.initialized) {
2154 if (delta < 120 * 1000) {
2159 Com_Printf(
"Loading plaque timed out.\n");
2162 if (recursive > 1) {
2163 Com_Error(ERR_FATAL,
"%s: recursively called", __func__);
2184 if (scr_timegraph->integer)
2187 if (scr_debuggraph->integer || scr_timegraph->integer || scr_netgraph->integer)
2188 SCR_DrawDebugGraph();
2198 return scr.font_pic;
2203 scr.hud_alpha = alpha;
color_index_t Com_ParseColor(const char *s, color_index_t last)
static cvar_t * scr_lag_x
static void scr_scale_changed(cvar_t *self)
void SCR_ModeChanged(void)
qhandle_t R_RegisterImage(const char *name, imagetype_t type, imageflags_t flags, qerror_t *err_p)
char configstrings[MAX_CONFIGSTRINGS][MAX_QPATH]
qhandle_t sb_pics[2][STAT_PICS]
const uint32_t colorTable[8]
void SCR_AddToChatHUD(const char *text)
void(* R_SetColor)(uint32_t color)
qhandle_t image_precache[MAX_IMAGES]
static void SCR_DrawDemo(void)
void(* R_SetSky)(const char *name, float rotate, vec3_t axis)
void(* R_SetAlpha)(float clpha)
static void HUD_DrawNumber(int x, int y, int color, int width, int value)
#define SCR_DrawString(x, y, flags, string)
static cvar_t * scr_lag_max
size_t Q_snprintf(char *dest, size_t size, const char *fmt,...)
static void SCR_DrawTurtle(void)
struct client_static_s::@3 demo
static cvar_t * scr_lag_min
static void SCR_ExecuteLayoutString(const char *s)
void SCR_ClearChatHUD_f(void)
static void SCR_DrawNet(void)
cvar_t * Cvar_Get(const char *var_name, const char *var_value, int flags)
static cvar_t * scr_scale
const char *const colorNames[10]
void(* R_ClearColor)(void)
static void SCR_SizeDown_f(void)
int SCR_DrawStringEx(int x, int y, int flags, size_t maxlen, const char *s, qhandle_t font)
void SCR_DrawStringMulti(int x, int y, int flags, size_t maxlen, const char *s, qhandle_t font)
static void SCR_UnDraw_c(genctx_t *ctx, int argnum)
static void SCR_DrawFPS(void)
static void scr_crosshair_changed(cvar_t *self)
static cvar_t * scr_crosshair
static cvar_t * scr_alpha
void(* R_DrawFill8)(int x, int y, int w, int h, int c)
float R_ClampScale(cvar_t *var)
void(* R_BeginFrame)(void)
static void SCR_DrawCenterString(void)
void SCR_RegisterMedia(void)
static unsigned scr_chathead
int CL_GetResolutionScale()
void Cmd_Deregister(const cmdreg_t *reg)
static void SCR_DrawStats(void)
void SCR_SetHudAlpha(float alpha)
static cvar_t * scr_chathud_x
unsigned Sys_Milliseconds(void)
static void SCR_DrawPause(void)
void SCR_DebugGraph(float value, int color)
qboolean Prompt_AddMatch(genctx_t *ctx, const char *s)
static void SCR_DrawLoading(void)
static cvar_t * ch_health
void(* R_SetAlphaScale)(float alpha)
static const cmdreg_t scr_cmds[]
qboolean UI_IsTransparent(void)
void SCR_UpdateScreen(void)
static void SCR_SizeUp_f(void)
static cvar_t * scr_showturtle
static void SCR_DrawCrosshair(void)
void Cvar_Variable_g(genctx_t *ctx)
void Com_Error(error_type_t type, const char *fmt,...)
#define HUD_DrawString(x, y, string)
static void SCR_Draw_c(genctx_t *ctx, int argnum)
static const char *const sb_nums[2][STAT_PICS]
static cvar_t * scr_showpause
static cvar_t * scr_lag_y
qhandle_t SCR_GetFont(void)
float Cvar_ClampValue(cvar_t *var, float min, float max)
static void SCR_TileClear(void)
void(* R_DrawPic)(int x, int y, qhandle_t pic)
char layout[MAX_NET_STRING]
void Cmd_Register(const cmdreg_t *reg)
#define HUD_DrawCenterString(x, y, string)
int(* R_DrawString)(int x, int y, int flags, size_t maxChars, const char *string, qhandle_t font)
clientinfo_t baseclientinfo
static char scr_centerstring[MAX_STRING_CHARS]
char * Key_GetBinding(const char *binding)
size_t Q_strlcpy(char *dst, const char *src, size_t size)
static void SCR_DrawChatHUD(void)
#define FOR_EACH_DRAWOBJ(obj)
#define FOR_EACH_DRAWOBJ_SAFE(obj, next)
void Cvar_SetInteger(cvar_t *var, int value, from_t from)
clientinfo_t clientinfo[MAX_CLIENTS]
void UI_Draw(int realtime)
static cvar_t * scr_demobar
static void SCR_Color_g(genctx_t *ctx)
void SCR_CenterPrint(const char *str)
void Cmd_Macro_g(genctx_t *ctx)
cvar_t * Cvar_WeakGet(const char *var_name)
static int scr_center_lines
void UI_ModeChanged(void)
float SCR_FadeAlpha(unsigned startTime, unsigned visTime, unsigned fadeTime)
static void SCR_Draw_f(void)
static void SCR_LagDraw(int x, int y)
static void SCR_Draw2D(void)
void SCR_SetCrosshairColor(void)
qboolean R_GetPicSize(int *w, int *h, qhandle_t pic)
static cvar_t * scr_chathud
#define HUD_DrawAltString(x, y, string)
int Cvar_ClampInteger(cvar_t *var, int min, int max)
static cvar_t * scr_centertime
static void SCR_DrawInventory(void)
void(* R_RenderFrame)(refdef_t *fd)
void(* R_DrawStretchPic)(int x, int y, int w, int h, qhandle_t pic)
static unsigned scr_centertime_start
void Con_CheckResize(void)
static cvar_t * scr_lag_draw
static void SCR_DrawLayout(void)
static void SCR_DrawSelectedItemName(int x, int y, int item)
void(* R_SetScale)(float scale)
static void scr_font_changed(cvar_t *self)
static void draw_percent_bar(int percent, qboolean paused, int framenum)
unsigned samples[LAG_WIDTH]
void(* R_DrawChar)(int x, int y, int flags, int ch, qhandle_t font)
static cvar_t * scr_chathud_lines
char * COM_Parse(const char **data_p)
client_history_t history[CMD_BACKUP]
image_t * IMG_ForHandle(qhandle_t h)
void CL_UpdateFrameTimes(void)
static chatline_t scr_chatlines[MAX_CHAT_LINES]
size_t Q_concat(char *dest, size_t size,...)
void SCR_EndLoadingPlaque(void)
static cvar_t * scr_showitemname
static void SCR_Draw_g(genctx_t *ctx)
void Con_ClearNotify_f(void)
qboolean SCR_ParseColor(const char *s, color_t *color)
CONST PIXELFORMATDESCRIPTOR int
static void SCR_DrawObjects(void)
void Con_DrawConsole(void)
cmd_macro_t * Cmd_FindMacro(const char *name)
size_t Q_scnprintf(char *dest, size_t size, const char *fmt,...)
void SCR_BeginLoadingPlaque(void)
static void SCR_DrawActive(void)
static cvar_t * scr_draw2d
static cvar_t * scr_chathud_y
static void SCR_UnDraw_f(void)
static cvar_t * scr_chathud_time
#define HUD_DrawAltCenterString(x, y, string)
static void SCR_Sky_f(void)
static void SCR_TimeRefresh_f(void)
static LIST_DECL(scr_objects)