summaryrefslogtreecommitdiff
path: root/src/client/screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/screen.c')
-rw-r--r--src/client/screen.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/client/screen.c b/src/client/screen.c
index 906d684..7579d17 100644
--- a/src/client/screen.c
+++ b/src/client/screen.c
@@ -46,6 +46,7 @@ static struct {
qhandle_t font_pic;
int hud_width, hud_height;
+ float hud_scale;
} scr;
static cvar_t *scr_viewsize;
@@ -1257,10 +1258,13 @@ void SCR_SetCrosshairColor(void)
void SCR_ModeChanged(void)
{
IN_Activate();
+ Con_CheckResize();
UI_ModeChanged();
// video sync flag may have changed
CL_UpdateFrameTimes();
cls.disable_screen = 0;
+ if (scr.initialized)
+ scr.hud_scale = R_ClampScale(scr_scale);
}
/*
@@ -1298,6 +1302,11 @@ static void scr_font_changed(cvar_t *self)
scr.font_pic = R_RegisterFont(self->string);
}
+static void scr_scale_changed(cvar_t *self)
+{
+ scr.hud_scale = R_ClampScale(self);
+}
+
static const cmdreg_t scr_cmds[] = {
{ "timerefresh", SCR_TimeRefresh_f },
{ "sizeup", SCR_SizeUp_f },
@@ -1331,6 +1340,7 @@ void SCR_Init(void)
scr_font = Cvar_Get("scr_font", "conchars", 0);
scr_font->changed = scr_font_changed;
scr_scale = Cvar_Get("scr_scale", "1", 0);
+ scr_scale->changed = scr_scale_changed;
scr_crosshair = Cvar_Get("crosshair", "0", CVAR_ARCHIVE);
scr_crosshair->changed = scr_crosshair_changed;
@@ -1371,6 +1381,8 @@ void SCR_Init(void)
Cmd_Register(scr_cmds);
+ scr_scale_changed(scr_scale);
+
scr.initialized = qtrue;
}
@@ -1946,7 +1958,6 @@ static void SCR_DrawPause(void)
static void SCR_DrawLoading(void)
{
- float scale;
int x, y;
if (!scr.draw_loading)
@@ -1954,15 +1965,14 @@ static void SCR_DrawLoading(void)
scr.draw_loading = qfalse;
- scale = 1.0f / Cvar_ClampValue(scr_scale, 1, 9);
- R_SetScale(&scale);
+ R_SetScale(scr.hud_scale);
- x = (r_config.width * scale - scr.loading_width) / 2;
- y = (r_config.height * scale - scr.loading_height) / 2;
+ x = (r_config.width * scr.hud_scale - scr.loading_width) / 2;
+ y = (r_config.height * scr.hud_scale - scr.loading_height) / 2;
R_DrawPic(x, y, scr.loading_pic);
- R_SetScale(NULL);
+ R_SetScale(1.0f);
}
static void SCR_DrawCrosshair(void)
@@ -2010,19 +2020,16 @@ draw:
static void SCR_Draw2D(void)
{
- float scale;
-
if (scr_draw2d->integer <= 0)
return; // turn off for screenshots
if (cls.key_dest & KEY_MENU)
return;
- scale = 1.0f / Cvar_ClampValue(scr_scale, 1, 9);
- R_SetScale(&scale);
+ R_SetScale(scr.hud_scale);
- scr.hud_height *= scale;
- scr.hud_width *= scale;
+ scr.hud_height *= scr.hud_scale;
+ scr.hud_width *= scr.hud_scale;
// crosshair has its own color and alpha
SCR_DrawCrosshair();
@@ -2057,7 +2064,7 @@ static void SCR_Draw2D(void)
SCR_DrawDebugPmove();
#endif
- R_SetScale(NULL);
+ R_SetScale(1.0f);
}
static void SCR_DrawActive(void)