cvar_t scr_conalpha2factor = {CF_CLIENT | CF_ARCHIVE, "scr_conalpha2factor", "0", "opacity of console background gfx/conback2 relative to scr_conalpha; when 0, gfx/conback2 is not drawn"};
cvar_t scr_conalpha3factor = {CF_CLIENT | CF_ARCHIVE, "scr_conalpha3factor", "0", "opacity of console background gfx/conback3 relative to scr_conalpha; when 0, gfx/conback3 is not drawn"};
cvar_t scr_conbrightness = {CF_CLIENT | CF_ARCHIVE, "scr_conbrightness", "1", "brightness of console background (0 = black, 1 = image)"};
-cvar_t scr_conforcewhiledisconnected = {CF_CLIENT, "scr_conforcewhiledisconnected", "1", "forces fullscreen console while disconnected"};
+cvar_t scr_conforcewhiledisconnected = {CF_CLIENT, "scr_conforcewhiledisconnected", "1", "1 forces fullscreen console while disconnected, 2 also forces it when the listen server has started but the client is still loading"};
+cvar_t scr_conheight = {CF_CLIENT | CF_ARCHIVE, "scr_conheight", "0.5", "fraction of screen height occupied by console (reduced as necessary for visibility of loading progress and infobar)"};
cvar_t scr_conscroll_x = {CF_CLIENT | CF_ARCHIVE, "scr_conscroll_x", "0", "scroll speed of gfx/conback in x direction"};
cvar_t scr_conscroll_y = {CF_CLIENT | CF_ARCHIVE, "scr_conscroll_y", "0", "scroll speed of gfx/conback in y direction"};
cvar_t scr_conscroll2_x = {CF_CLIENT | CF_ARCHIVE, "scr_conscroll2_x", "0", "scroll speed of gfx/conback2 in x direction"};
cvar_t scr_loadingscreen_firstforstartup = {CF_CLIENT, "scr_loadingscreen_firstforstartup","0", "remove loading.tga from random scr_loadingscreen_count selection and only display it on client startup, 0 = normal, 1 = firstforstartup"};
cvar_t scr_loadingscreen_barcolor = {CF_CLIENT, "scr_loadingscreen_barcolor", "0 0 1", "rgb color of loadingscreen progress bar"};
cvar_t scr_loadingscreen_barheight = {CF_CLIENT, "scr_loadingscreen_barheight", "8", "the height of the loadingscreen progress bar"};
-cvar_t scr_loadingscreen_maxfps = {CF_CLIENT, "scr_loadingscreen_maxfps", "10", "restrict maximal FPS for loading screen so it will not update very often (this will make lesser loading times on a maps loading large number of models)"};
+cvar_t scr_loadingscreen_maxfps = {CF_CLIENT, "scr_loadingscreen_maxfps", "20", "maximum FPS for loading screen so it will not update very often (this reduces loading time with lots of models)"};
cvar_t scr_infobar_height = {CF_CLIENT, "scr_infobar_height", "8", "the height of the infobar items"};
cvar_t vid_conwidthauto = {CF_CLIENT | CF_ARCHIVE, "vid_conwidthauto", "1", "automatically update vid_conwidth to match aspect ratio"};
cvar_t vid_conwidth = {CF_CLIENT | CF_ARCHIVE, "vid_conwidth", "640", "virtual width of 2D graphics system (note: changes may be overwritten, see vid_conwidthauto)"};
qbool scr_initialized; // ready to draw
-float scr_con_current;
-int scr_con_margin_bottom;
+qbool scr_loading = false; // we are in a loading screen
+
+unsigned int scr_con_current;
+static unsigned int scr_con_margin_bottom;
extern int con_vislines;
*/
void SCR_CenterPrint(const char *str)
{
- strlcpy (scr_centerstring, str, sizeof (scr_centerstring));
+ dp_strlcpy (scr_centerstring, str, sizeof (scr_centerstring));
scr_centertime_off = scr_centertime.value;
scr_centertime_start = cl.time;
}
}
+/*
+============
+SCR_Centerprint_f
+
+Print something to the center of the screen using SCR_Centerprint
+============
+*/
+static void SCR_Centerprint_f (cmd_state_t *cmd)
+{
+ char msg[MAX_INPUTLINE];
+ unsigned int i, c, p;
+ c = Cmd_Argc(cmd);
+ if(c >= 2)
+ {
+ dp_strlcpy(msg, Cmd_Argv(cmd,1), sizeof(msg));
+ for(i = 2; i < c; ++i)
+ {
+ dp_strlcat(msg, " ", sizeof(msg));
+ dp_strlcat(msg, Cmd_Argv(cmd, i), sizeof(msg));
+ }
+ c = (unsigned int)strlen(msg);
+ for(p = 0, i = 0; i < c; ++i)
+ {
+ if(msg[i] == '\\')
+ {
+ if(msg[i+1] == 'n')
+ msg[p++] = '\n';
+ else if(msg[i+1] == '\\')
+ msg[p++] = '\\';
+ else {
+ msg[p++] = '\\';
+ msg[p++] = msg[i+1];
+ }
+ ++i;
+ } else {
+ msg[p++] = msg[i];
+ }
+ }
+ msg[p] = '\0';
+ SCR_CenterPrint(msg);
+ }
+}
static void SCR_DrawCenterString (void)
{
*/
static void SCR_DrawInfobar(void)
{
- int offset = 0;
+ unsigned int offset = 0;
offset += SCR_DrawQWDownload(offset);
offset += SCR_DrawCurlDownload(offset);
if(scr_infobartime_off > 0)
offset += SCR_DrawInfobarString(offset);
+ if(!offset && scr_loading)
+ offset = scr_loadingscreen_barheight.integer;
if(offset != scr_con_margin_bottom)
Con_DPrintf("broken console margin calculation: %d != %d\n", offset, scr_con_margin_bottom);
}
if(Cmd_Argc(cmd) == 3)
{
scr_infobartime_off = atof(Cmd_Argv(cmd, 1));
- strlcpy(scr_infobarstring, Cmd_Argv(cmd, 2), sizeof(scr_infobarstring));
+ dp_strlcpy(scr_infobarstring, Cmd_Argv(cmd, 2), sizeof(scr_infobarstring));
}
else
{
*/
static void SCR_SetUpToDrawConsole (void)
{
- // lines of console to display
- float conlines;
#ifdef CONFIG_MENU
static int framecounter = 0;
#endif
else
key_consoleactive &= ~KEY_CONSOLEACTIVE_FORCED;
-// decide on the height of the console
+ // decide on the height of the console
if (key_consoleactive & KEY_CONSOLEACTIVE_USER)
- conlines = vid_conheight.integer/2; // half screen
+ scr_con_current = vid_conheight.integer * scr_conheight.value;
else
- conlines = 0; // none visible
-
- scr_con_current = conlines;
+ scr_con_current = 0; // none visible
}
/*
*/
void SCR_DrawConsole (void)
{
+ // infobar and loading progress are not drawn simultaneously
scr_con_margin_bottom = SCR_InfobarHeight();
+ if (!scr_con_margin_bottom && scr_loading)
+ scr_con_margin_bottom = scr_loadingscreen_barheight.integer;
if (key_consoleactive & KEY_CONSOLEACTIVE_FORCED)
{
// full screen
Con_DrawConsole (vid_conheight.integer - scr_con_margin_bottom);
}
else if (scr_con_current)
- Con_DrawConsole (min((int)scr_con_current, vid_conheight.integer - scr_con_margin_bottom));
+ Con_DrawConsole (min(scr_con_current, vid_conheight.integer - scr_con_margin_bottom));
else
con_vislines = 0;
}
Cvar_RegisterVariable (&scr_conscroll3_y);
Cvar_RegisterVariable (&scr_conbrightness);
Cvar_RegisterVariable (&scr_conforcewhiledisconnected);
+ Cvar_RegisterVariable (&scr_conheight);
#ifdef CONFIG_MENU
Cvar_RegisterVariable (&scr_menuforcewhiledisconnected);
#endif
if (Sys_CheckParm ("-noconsole"))
Cvar_SetQuick(&scr_conforcewhiledisconnected, "0");
+ Cmd_AddCommand(CF_CLIENT, "cprint", SCR_Centerprint_f, "print something at the screen center");
Cmd_AddCommand(CF_CLIENT, "sizeup",SCR_SizeUp_f, "increase view size (increases viewsize cvar)");
Cmd_AddCommand(CF_CLIENT, "sizedown",SCR_SizeDown_f, "decrease view size (decreases viewsize cvar)");
Cmd_AddCommand(CF_CLIENT, "screenshot",SCR_ScreenShot_f, "takes a screenshot of the next rendered frame");
if (Cmd_Argc(cmd) == 2)
{
const char *ext;
- strlcpy(filename, Cmd_Argv(cmd, 1), sizeof(filename));
+ dp_strlcpy(filename, Cmd_Argv(cmd, 1), sizeof(filename));
ext = FS_FileExtension(filename);
if (!strcasecmp(ext, "jpg"))
{
shotnumber++;
}
- buffer1 = (unsigned char *)Mem_Alloc(tempmempool, vid.width * vid.height * 4);
- buffer2 = (unsigned char *)Mem_Alloc(tempmempool, vid.width * vid.height * (scr_screenshot_alpha.integer ? 4 : 3));
+ buffer1 = (unsigned char *)Mem_Alloc(tempmempool, vid.mode.width * vid.mode.height * 4);
+ buffer2 = (unsigned char *)Mem_Alloc(tempmempool, vid.mode.width * vid.mode.height * (scr_screenshot_alpha.integer ? 4 : 3));
- if (SCR_ScreenShot (filename, buffer1, buffer2, 0, 0, vid.width, vid.height, false, false, false, jpeg, png, true, scr_screenshot_alpha.integer != 0))
+ if (SCR_ScreenShot (filename, buffer1, buffer2, 0, 0, vid.mode.width, vid.mode.height, false, false, false, jpeg, png, true, scr_screenshot_alpha.integer != 0))
Con_Printf("Wrote %s\n", filename);
else
{
Con_Printf(CON_ERROR "Unable to write %s\n", filename);
if(jpeg || png)
{
- if(SCR_ScreenShot (filename, buffer1, buffer2, 0, 0, vid.width, vid.height, false, false, false, false, false, true, scr_screenshot_alpha.integer != 0))
+ if(SCR_ScreenShot (filename, buffer1, buffer2, 0, 0, vid.mode.width, vid.mode.height, false, false, false, false, false, true, scr_screenshot_alpha.integer != 0))
{
- strlcpy(filename + strlen(filename) - 3, "tga", 4);
+ dp_strlcpy(filename + strlen(filename) - 3, "tga", 4);
Con_Printf("Wrote %s\n", filename);
}
}
// soundrate is figured out on the first SoundFrame
if(width == 0 && height != 0)
- width = (int) (height * (double)vid.width / ((double)vid.height * vid_pixelheight.value)); // keep aspect
+ width = (int) (height * (double)vid.mode.width / ((double)vid.mode.height * vid_pixelheight.value)); // keep aspect
if(width != 0 && height == 0)
- height = (int) (width * ((double)vid.height * vid_pixelheight.value) / (double)vid.width); // keep aspect
+ height = (int) (width * ((double)vid.mode.height * vid_pixelheight.value) / (double)vid.mode.width); // keep aspect
- if(width < 2 || width > vid.width) // can't scale up
- width = vid.width;
- if(height < 2 || height > vid.height) // can't scale up
- height = vid.height;
+ if(width < 2 || width > vid.mode.width) // can't scale up
+ width = vid.mode.width;
+ if(height < 2 || height > vid.mode.height) // can't scale up
+ height = vid.mode.height;
// ensure it's all even; if not, scale down a little
if(width % 1)
cls.capturevideo.starttime = cls.capturevideo.lastfpstime = host.realtime;
cls.capturevideo.soundsampleframe = 0;
cls.capturevideo.realtime = cl_capturevideo_realtime.integer != 0;
- cls.capturevideo.screenbuffer = (unsigned char *)Mem_Alloc(tempmempool, vid.width * vid.height * 4);
+ cls.capturevideo.screenbuffer = (unsigned char *)Mem_Alloc(tempmempool, vid.mode.width * vid.mode.height * 4);
cls.capturevideo.outbuffer = (unsigned char *)Mem_Alloc(tempmempool, width * height * (4+4) + 18);
dpsnprintf(cls.capturevideo.basename, sizeof(cls.capturevideo.basename), "video/%s%03i", Sys_TimeString(cl_capturevideo_nameformat.string), cl_capturevideo_number.integer);
Cvar_SetValueQuick(&cl_capturevideo_number, cl_capturevideo_number.integer + 1);
CHECKGLERROR
// speed is critical here, so do saving as directly as possible
- GL_ReadPixelsBGRA(x, y, vid.width, vid.height, cls.capturevideo.screenbuffer);
+ GL_ReadPixelsBGRA(x, y, vid.mode.width, vid.mode.height, cls.capturevideo.screenbuffer);
- SCR_ScaleDownBGRA (cls.capturevideo.screenbuffer, vid.width, vid.height, cls.capturevideo.outbuffer, width, height);
+ SCR_ScaleDownBGRA (cls.capturevideo.screenbuffer, vid.mode.width, vid.mode.height, cls.capturevideo.outbuffer, width, height);
cls.capturevideo.videoframes(newframestepframenum - cls.capturevideo.framestepframe);
cls.capturevideo.framestepframe = newframestepframenum;
- if(cl_capturevideo_printfps.integer)
+ if(cl_capturevideo_printfps.integer && host.realtime > cls.capturevideo.lastfpstime + 1)
{
- char buf[80];
- double t = host.realtime;
- if(t > cls.capturevideo.lastfpstime + 1)
- {
- double fps1 = (cls.capturevideo.frame - cls.capturevideo.lastfpsframe) / (t - cls.capturevideo.lastfpstime + 0.0000001);
- double fps = (cls.capturevideo.frame ) / (t - cls.capturevideo.starttime + 0.0000001);
- dpsnprintf(buf, sizeof(buf), "capturevideo: (%.1fs) last second %.3ffps, total %.3ffps\n", cls.capturevideo.frame / cls.capturevideo.framerate, fps1, fps);
- Sys_Print(buf);
- cls.capturevideo.lastfpstime = t;
- cls.capturevideo.lastfpsframe = cls.capturevideo.frame;
- }
+ double fps1 = (cls.capturevideo.frame - cls.capturevideo.lastfpsframe) / (host.realtime - cls.capturevideo.lastfpstime + 0.0000001);
+ double fps = (cls.capturevideo.frame ) / (host.realtime - cls.capturevideo.starttime + 0.0000001);
+ Sys_Printf("capturevideo: (%.1fs) last second %.3ffps, total %.3ffps\n", cls.capturevideo.frame / cls.capturevideo.framerate, fps1, fps);
+ cls.capturevideo.lastfpstime = host.realtime;
+ cls.capturevideo.lastfpsframe = cls.capturevideo.frame;
}
}
return;
}
- strlcpy (basename, Cmd_Argv(cmd, 1), sizeof (basename));
+ dp_strlcpy (basename, Cmd_Argv(cmd, 1), sizeof (basename));
size = atoi(Cmd_Argv(cmd, 2));
if (size != 128 && size != 256 && size != 512 && size != 1024)
{
Con_Print("envmap: size must be one of 128, 256, 512, or 1024\n");
return;
}
- if (size > vid.width || size > vid.height)
+ if (size > vid.mode.width || size > vid.mode.height)
{
Con_Print("envmap: your resolution is not big enough to render that size\n");
return;
R_Mesh_Start();
R_RenderView(rt->fbo, rt->depthtexture, rt->colortexture[0], 0, 0, size, size);
R_Mesh_Finish();
- SCR_ScreenShot(filename, buffer1, buffer2, 0, vid.height - (r_refdef.view.y + r_refdef.view.height), size, size, envmapinfo[j].flipx, envmapinfo[j].flipy, envmapinfo[j].flipdiagonaly, false, false, false, false);
+ SCR_ScreenShot(filename, buffer1, buffer2, 0, vid.mode.height - (r_refdef.view.y + r_refdef.view.height), size, size, envmapinfo[j].flipx, envmapinfo[j].flipy, envmapinfo[j].flipdiagonaly, false, false, false, false);
}
Mem_Free (buffer1);
int k;
char lmplabel[256], picname[256];
float x, y;
- strlcpy (lmplabel,MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring)), sizeof (lmplabel));
- strlcpy (picname, MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring)), sizeof (picname));
+ dp_strlcpy (lmplabel,MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring)), sizeof (lmplabel));
+ dp_strlcpy (picname, MSG_ReadString(&cl_message, cl_readstring, sizeof(cl_readstring)), sizeof (picname));
if (gamemode == GAME_NEHAHRA) // LadyHavoc: nasty old legacy junk
{
x = MSG_ReadByte(&cl_message);
if (!cl.showlmps[k].isactive)
break;
cl.showlmps[k].isactive = true;
- strlcpy (cl.showlmps[k].label, lmplabel, sizeof (cl.showlmps[k].label));
- strlcpy (cl.showlmps[k].pic, picname, sizeof (cl.showlmps[k].pic));
+ dp_strlcpy (cl.showlmps[k].label, lmplabel, sizeof (cl.showlmps[k].label));
+ dp_strlcpy (cl.showlmps[k].pic, picname, sizeof (cl.showlmps[k].pic));
cl.showlmps[k].x = x;
cl.showlmps[k].y = y;
cl.num_showlmps = max(cl.num_showlmps, k + 1);
}
loadingscreenstack_t;
static loadingscreenstack_t *loadingscreenstack = NULL;
-static qbool scr_loading = false; // we are in a loading screen
rtexture_t *loadingscreentexture = NULL; // last framebuffer before loading screen, kept for the background
static float loadingscreentexture_vertex3f[12];
static float loadingscreentexture_texcoord2f[8];
static int loadingscreenpic_number = 0;
+/// User-friendly connection status for the menu and/or loading screen,
+/// colours and \n not supported.
+char cl_connect_status[MAX_QPATH]; // should match size of loadingscreenstack_t msg[]
static void SCR_DrawLoadingScreen(void);
static void SCR_DrawScreen (void)
if (r_stereo_sidebyside.integer)
{
- r_refdef.view.width = (int)(vid.width * size / 2.5);
- r_refdef.view.height = (int)(vid.height * size / 2.5 * (1 - bound(0, r_letterbox.value, 100) / 100));
+ r_refdef.view.width = (int)(vid.mode.width * size / 2.5);
+ r_refdef.view.height = (int)(vid.mode.height * size / 2.5 * (1 - bound(0, r_letterbox.value, 100) / 100));
r_refdef.view.depth = 1;
- r_refdef.view.x = (int)((vid.width - r_refdef.view.width * 2.5) * 0.5);
- r_refdef.view.y = (int)((vid.height - r_refdef.view.height)/2);
+ r_refdef.view.x = (int)((vid.mode.width - r_refdef.view.width * 2.5) * 0.5);
+ r_refdef.view.y = (int)((vid.mode.height - r_refdef.view.height)/2);
r_refdef.view.z = 0;
if (r_stereo_side)
r_refdef.view.x += (int)(r_refdef.view.width * 1.5);
}
else if (r_stereo_horizontal.integer)
{
- r_refdef.view.width = (int)(vid.width * size / 2);
- r_refdef.view.height = (int)(vid.height * size * (1 - bound(0, r_letterbox.value, 100) / 100));
+ r_refdef.view.width = (int)(vid.mode.width * size / 2);
+ r_refdef.view.height = (int)(vid.mode.height * size * (1 - bound(0, r_letterbox.value, 100) / 100));
r_refdef.view.depth = 1;
- r_refdef.view.x = (int)((vid.width - r_refdef.view.width * 2.0)/2);
- r_refdef.view.y = (int)((vid.height - r_refdef.view.height)/2);
+ r_refdef.view.x = (int)((vid.mode.width - r_refdef.view.width * 2.0)/2);
+ r_refdef.view.y = (int)((vid.mode.height - r_refdef.view.height)/2);
r_refdef.view.z = 0;
if (r_stereo_side)
r_refdef.view.x += (int)(r_refdef.view.width);
}
else if (r_stereo_vertical.integer)
{
- r_refdef.view.width = (int)(vid.width * size);
- r_refdef.view.height = (int)(vid.height * size * (1 - bound(0, r_letterbox.value, 100) / 100) / 2);
+ r_refdef.view.width = (int)(vid.mode.width * size);
+ r_refdef.view.height = (int)(vid.mode.height * size * (1 - bound(0, r_letterbox.value, 100) / 100) / 2);
r_refdef.view.depth = 1;
- r_refdef.view.x = (int)((vid.width - r_refdef.view.width)/2);
- r_refdef.view.y = (int)((vid.height - r_refdef.view.height * 2.0)/2);
+ r_refdef.view.x = (int)((vid.mode.width - r_refdef.view.width)/2);
+ r_refdef.view.y = (int)((vid.mode.height - r_refdef.view.height * 2.0)/2);
r_refdef.view.z = 0;
if (r_stereo_side)
r_refdef.view.y += (int)(r_refdef.view.height);
}
else
{
- r_refdef.view.width = (int)(vid.width * size);
- r_refdef.view.height = (int)(vid.height * size * (1 - bound(0, r_letterbox.value, 100) / 100));
+ r_refdef.view.width = (int)(vid.mode.width * size);
+ r_refdef.view.height = (int)(vid.mode.height * size * (1 - bound(0, r_letterbox.value, 100) / 100));
r_refdef.view.depth = 1;
- r_refdef.view.x = (int)((vid.width - r_refdef.view.width)/2);
- r_refdef.view.y = (int)((vid.height - r_refdef.view.height)/2);
+ r_refdef.view.x = (int)((vid.mode.width - r_refdef.view.width)/2);
+ r_refdef.view.y = (int)((vid.mode.height - r_refdef.view.height)/2);
r_refdef.view.z = 0;
}
// if CSQC is loaded, it is required to provide the CSQC_UpdateView function,
// and won't render a view if it does not call that.
- if (cl.csqc_loaded)
+ if (CLVM_prog->loaded && !(CLVM_prog->flag & PRVM_CSQC_SIMPLE))
CL_VM_UpdateView(r_stereo_side ? 0.0 : max(0.0, cl.time - cl.oldtime));
else
{
if (!r_stereo_sidebyside.integer && !r_stereo_horizontal.integer && !r_stereo_vertical.integer)
{
- r_refdef.view.width = vid.width;
- r_refdef.view.height = vid.height;
+ r_refdef.view.width = vid.mode.width;
+ r_refdef.view.height = vid.mode.height;
r_refdef.view.depth = 1;
r_refdef.view.x = 0;
r_refdef.view.y = 0;
unsigned char *buffer1;
unsigned char *buffer2;
dpsnprintf(filename, sizeof(filename), "timedemoscreenshots/%s%06d.tga", cls.demoname, cls.td_frames);
- buffer1 = (unsigned char *)Mem_Alloc(tempmempool, vid.width * vid.height * 4);
- buffer2 = (unsigned char *)Mem_Alloc(tempmempool, vid.width * vid.height * 3);
- SCR_ScreenShot(filename, buffer1, buffer2, 0, 0, vid.width, vid.height, false, false, false, false, false, true, false);
+ buffer1 = (unsigned char *)Mem_Alloc(tempmempool, vid.mode.width * vid.mode.height * 4);
+ buffer2 = (unsigned char *)Mem_Alloc(tempmempool, vid.mode.width * vid.mode.height * 3);
+ SCR_ScreenShot(filename, buffer1, buffer2, 0, 0, vid.mode.width, vid.mode.height, false, false, false, false, false, true, false);
Mem_Free(buffer1);
Mem_Free(buffer2);
}
SCR_DrawTurtle ();
SCR_DrawPause ();
if (!r_letterbox.value)
+ {
Sbar_Draw();
+ if (CLVM_prog->loaded && CLVM_prog->flag & PRVM_CSQC_SIMPLE)
+ CL_VM_DrawHud(r_stereo_side ? 0.0 : max(0.0, cl.time - cl.oldtime));
+ }
SHOWLMP_drawall();
SCR_CheckDrawCenterString();
}
if (scr_loading)
{
- loadingscreenstack_t connect_status;
- qbool show_connect_status = !loadingscreenstack && (cls.connect_trying || cls.state == ca_connected);
- if (show_connect_status)
+ // connect_status replaces any dummy_status
+ if ((!loadingscreenstack || loadingscreenstack->msg[0] == '\0') && cl_connect_status[0] != '\0')
{
+ loadingscreenstack_t connect_status, *og_ptr = loadingscreenstack;
+
connect_status.absolute_loading_amount_min = 0;
- if (cls.signon > 0)
- dpsnprintf(connect_status.msg, sizeof(connect_status.msg), "Connect: Signon stage %i of %i", cls.signon, SIGNONS);
- else if (cls.connect_remainingtries > 0)
- dpsnprintf(connect_status.msg, sizeof(connect_status.msg), "Connect: Trying... %i", cls.connect_remainingtries);
- else
- dpsnprintf(connect_status.msg, sizeof(connect_status.msg), "Connect: Waiting %i seconds for reply", 10 + cls.connect_remainingtries);
+ dp_strlcpy(connect_status.msg, cl_connect_status, sizeof(cl_connect_status));
loadingscreenstack = &connect_status;
+ SCR_DrawLoadingScreen();
+ loadingscreenstack = og_ptr;
}
-
- SCR_DrawLoadingScreen();
-
- if (show_connect_status)
- loadingscreenstack = NULL;
+ else
+ SCR_DrawLoadingScreen();
}
SCR_DrawConsole();
SCR_ClearLoadingScreenTexture();
- w = vid.width; h = vid.height;
+ w = vid.mode.width; h = vid.mode.height;
loadingscreentexture_w = loadingscreentexture_h = 1;
loadingscreentexture = R_LoadTexture2D(r_main_texturepool, "loadingscreentexture", w, h, NULL, TEXTYPE_COLORBUFFER, TEXF_RENDERTARGET | TEXF_FORCENEAREST | TEXF_CLAMP, -1, NULL);
- R_Mesh_CopyToTexture(loadingscreentexture, 0, 0, 0, 0, vid.width, vid.height);
+ R_Mesh_CopyToTexture(loadingscreentexture, 0, 0, 0, 0, vid.mode.width, vid.mode.height);
loadingscreentexture_vertex3f[2] = loadingscreentexture_vertex3f[5] = loadingscreentexture_vertex3f[8] = loadingscreentexture_vertex3f[11] = 0;
loadingscreentexture_vertex3f[0] = loadingscreentexture_vertex3f[9] = 0;
s->prev = loadingscreenstack;
loadingscreenstack = s;
- strlcpy(s->msg, msg, sizeof(s->msg));
+ dp_strlcpy(s->msg, msg, sizeof(s->msg));
s->relative_completion = 0;
if(s->prev)
// apply scale base
if(scr_loadingscreen_scale_base.integer)
{
- w *= vid_conwidth.integer / (float) vid.width;
- h *= vid_conheight.integer / (float) vid.height;
+ w *= vid_conwidth.integer / (float) vid.mode.width;
+ h *= vid_conheight.integer / (float) vid.mode.height;
}
// apply scale limit
qbool R_Stereo_Active(void)
{
- return (vid.stereobuffer || r_stereo_sidebyside.integer || r_stereo_horizontal.integer || r_stereo_vertical.integer || R_Stereo_ColorMasking());
+ return (vid.mode.stereobuffer || r_stereo_sidebyside.integer || r_stereo_horizontal.integer || r_stereo_vertical.integer || R_Stereo_ColorMasking());
}
static void SCR_UpdateVars(void)
float conwidth = bound(160, vid_conwidth.value, 32768);
float conheight = bound(90, vid_conheight.value, 24576);
if (vid_conwidthauto.integer)
- conwidth = floor(conheight * vid.width / (vid.height * vid_pixelheight.value));
+ conwidth = floor(conheight * vid.mode.width / (vid.mode.height * vid_pixelheight.value));
if (vid_conwidth.value != conwidth)
Cvar_SetValueQuick(&vid_conwidth, conwidth);
if (vid_conheight.value != conheight)
{
if(!loadingscreenstack && !cls.connect_trying && (cls.state != ca_connected || cls.signon == SIGNONS))
SCR_EndLoadingPlaque();
- else if (scr_loadingscreen_maxfps.value)
+ else if (scr_loadingscreen_maxfps.value > 0)
{
static float lastupdate;
float now = Sys_DirtyTime();
- if (now - lastupdate < 1.0f / scr_loadingscreen_maxfps.value)
+ if (now - lastupdate < min(1.0f / scr_loadingscreen_maxfps.value, 0.1))
return;
lastupdate = now;
}
qglDrawBuffer(GL_BACK);CHECKGLERROR
#endif
- R_Viewport_InitOrtho(&viewport, &identitymatrix, 0, 0, vid.width, vid.height, 0, 0, vid_conwidth.integer, vid_conheight.integer, -10, 100, NULL);
+ R_Viewport_InitOrtho(&viewport, &identitymatrix, 0, 0, vid.mode.width, vid.mode.height, 0, 0, vid_conwidth.integer, vid_conheight.integer, -10, 100, NULL);
R_Mesh_SetRenderTargets(0, NULL, NULL, NULL, NULL, NULL);
R_SetViewport(&viewport);
GL_ScissorTest(false);
r_refdef.view.colormask[2] = 0;
}
- if (vid.stereobuffer)
+ if (vid.mode.stereobuffer)
qglDrawBuffer(GL_BACK_RIGHT);
SCR_DrawScreen();
r_refdef.view.colormask[2] = r_stereo_redcyan.integer || r_stereo_redblue.integer;
}
- if (vid.stereobuffer)
+ if (vid.mode.stereobuffer)
qglDrawBuffer(GL_BACK_LEFT);
SCR_DrawScreen();
#endif
qglFlush(); // ensure that the commands are submitted to the GPU before we do other things
-
- if (!vid_activewindow)
- VID_SetMouse(false, false, false);
- else if (key_consoleactive)
- VID_SetMouse(vid.fullscreen, false, false);
- else if (key_dest == key_menu_grabbed)
- VID_SetMouse(true, vid_mouse.integer && !in_client_mouse && !vid_touchscreen.integer, !vid_touchscreen.integer);
- else if (key_dest == key_menu)
- VID_SetMouse(vid.fullscreen, vid_mouse.integer && !in_client_mouse && !vid_touchscreen.integer, !vid_touchscreen.integer);
- else
- VID_SetMouse(vid.fullscreen, vid_mouse.integer && !cl.csqc_wantsmousemove && cl_prydoncursor.integer <= 0 && (!cls.demoplayback || cl_demo_mousegrab.integer) && !vid_touchscreen.integer, !vid_touchscreen.integer);
-
VID_Finish();
}