From 8b6737a436155dc62f504888375413ab0843de2b Mon Sep 17 00:00:00 2001 From: Shpoike Date: Sun, 19 Jul 2020 01:42:15 +0100 Subject: [PATCH] Make menuqc respect qs's scr_menuscale cvar instead of scr_sbarscale. --- Quake/gl_draw.c | 6 ++++++ Quake/in_sdl.c | 4 +++- Quake/menu.c | 5 +++-- Quake/pr_cmds.c | 17 +++++++++++++++-- Quake/pr_ext.c | 32 ++++++++++++++++++++++++++++---- Quake/screen.h | 1 + 6 files changed, 56 insertions(+), 9 deletions(-) diff --git a/Quake/gl_draw.c b/Quake/gl_draw.c index 0958a09e..bf554d55 100644 --- a/Quake/gl_draw.c +++ b/Quake/gl_draw.c @@ -826,6 +826,12 @@ void GL_SetCanvas (canvastype newcanvas) glOrtho (0, 640, 200, 0, -99999, 99999); glViewport (glx + (glwidth - 320*s) / 2, gly + (glheight - 200*s) / 2, 640*s, 200*s); break; + case CANVAS_MENUQC: + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); + glOrtho (0, glwidth/s, glheight/s, 0, -99999, 99999); + glViewport (glx, gly, glwidth, glheight); + break; case CANVAS_CSQC: s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); glOrtho (0, glwidth/s, glheight/s, 0, -99999, 99999); diff --git a/Quake/in_sdl.c b/Quake/in_sdl.c index d81fb1f5..76964982 100644 --- a/Quake/in_sdl.c +++ b/Quake/in_sdl.c @@ -495,7 +495,9 @@ void IN_MouseMotion(int dx, int dy, int wx, int wy) PR_SwitchQCVM(&cls.menu_qcvm); if (qcvm->cursorforced) { - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + float s; + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); wx /= s; wy /= s; diff --git a/Quake/menu.c b/Quake/menu.c index 2510d747..568e7c23 100644 --- a/Quake/menu.c +++ b/Quake/menu.c @@ -2863,7 +2863,8 @@ void M_Draw (void) { if (cls.menu_qcvm.extfuncs.m_draw) { //Spike -- menuqc - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + float s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); if (!host_initialized) return; MQC_Begin(); @@ -2875,7 +2876,7 @@ void M_Draw (void) S_ExtraUpdate (); } - GL_SetCanvas (CANVAS_CSQC); + GL_SetCanvas (CANVAS_MENUQC); glEnable (GL_BLEND); //in the finest tradition of glquake, we litter gl state calls all over the place. yay state trackers. glDisable (GL_ALPHA_TEST); //in the finest tradition of glquake, we litter gl state calls all over the place. yay state trackers. glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); diff --git a/Quake/pr_cmds.c b/Quake/pr_cmds.c index 7a6d513b..6d5a198f 100644 --- a/Quake/pr_cmds.c +++ b/Quake/pr_cmds.c @@ -2084,15 +2084,28 @@ static void PF_clientstate (void) static void PF_cvar_menuhack (void) { //hack around menuqc expecting vid_conwidth/vid_conheight to work. const char *str = G_STRING(OFS_PARM0); + float s; if (!strcmp(str, "vid_conwidth")) { - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + if (qcvm == &cls.menu_qcvm) + { + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); + } + else + s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); G_FLOAT(OFS_RETURN) = vid.width/s; } else if (!strcmp(str, "vid_conheight")) { - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + if (qcvm == &cls.menu_qcvm) + { + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); + } + else + s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); G_FLOAT(OFS_RETURN) = vid.height/s; } else diff --git a/Quake/pr_ext.c b/Quake/pr_ext.c index 5de19486..fe036fa9 100644 --- a/Quake/pr_ext.c +++ b/Quake/pr_ext.c @@ -4824,7 +4824,14 @@ static void PF_cl_stringwidth(void) static void PF_cl_drawsetclip(void) { - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + float s; + if (qcvm == &cls.menu_qcvm) + { + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); + } + else + s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); float x = G_FLOAT(OFS_PARM0)*s; float y = G_FLOAT(OFS_PARM1)*s; @@ -5380,7 +5387,14 @@ static void PF_m_getkeydest(void) } static void PF_m_getmousepos(void) { - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + float s; + if (qcvm == &cls.menu_qcvm) + { + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); + } + else + s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); G_FLOAT(OFS_RETURN+0) = vid.cursorpos[0]/s; G_FLOAT(OFS_RETURN+1) = vid.cursorpos[1]/s; @@ -5886,7 +5900,14 @@ void R_RenderScene (void); float CalcFovy (float fov_x, float width, float height); static void PF_m_renderscene(void) { - float s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); + float s; + if (qcvm == &cls.menu_qcvm) + { + s = q_min((float)glwidth / 320.0, (float)glheight / 200.0); + s = CLAMP (1.0, scr_menuscale.value, s); + } + else + s = CLAMP (1.0, scr_sbarscale.value, (float)glwidth / 320.0); VectorCopy(viewprops.origin, r_refdef.vieworg); VectorCopy(viewprops.angles, r_refdef.viewangles); @@ -5912,7 +5933,10 @@ static void PF_m_renderscene(void) vid.recalc_refdef = true; GL_Set2D(); - GL_SetCanvas (CANVAS_CSQC); + if (qcvm == &cls.menu_qcvm) + GL_SetCanvas (CANVAS_MENUQC); + else + GL_SetCanvas (CANVAS_CSQC); glEnable (GL_BLEND); glDisable (GL_ALPHA_TEST); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); diff --git a/Quake/screen.h b/Quake/screen.h index 1038bec4..1830360b 100644 --- a/Quake/screen.h +++ b/Quake/screen.h @@ -69,6 +69,7 @@ typedef enum { CANVAS_BOTTOMRIGHT, CANVAS_TOPRIGHT, CANVAS_CSQC, + CANVAS_MENUQC, CANVAS_INVALID = -1 } canvastype; extern cvar_t scr_menuscale;