mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-21 19:32:30 +00:00
A few of Mercury's local changes and things I've done to stable.. We're
attempting to get a build WITHOUT GL to work again...
This commit is contained in:
parent
392ba79ded
commit
8e85621d15
9 changed files with 223 additions and 153 deletions
6
NEWS
6
NEWS
|
@ -1,6 +1,12 @@
|
|||
NEWS for the QuakeForge project
|
||||
-------------------------------
|
||||
|
||||
22 Jan 2000 - cl_sbar and cl_hudswap in uquake
|
||||
The cvars cl_sbar and cl_hudswap noe work in uquake just like they
|
||||
do in qw-client. In uquake, cl_sbar defaults to 1 to satisfy the
|
||||
least-surprise principle. Set it to 0 if you want a qw-client like
|
||||
HUD.
|
||||
|
||||
22 Jan 2000 - changes to command line option -game
|
||||
You may now specify multiple game directories with -game. If for
|
||||
example you wanted to use the original registered game with MegaTF
|
||||
|
|
|
@ -76,6 +76,7 @@ void VID_UnlockBuffer (void);
|
|||
#include "cdaudio.h"
|
||||
|
||||
#include "glquake.h"
|
||||
#include "cvars.h"
|
||||
|
||||
#ifndef max
|
||||
#define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
|
|
|
@ -23,6 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#ifndef _CVARS_H
|
||||
#define _CVARS_H
|
||||
|
||||
extert cvar_t gl_flashblend;
|
||||
extern cvar_t gl_flashblend;
|
||||
|
||||
#endif _CVARS_H
|
||||
|
|
|
@ -36,7 +36,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#define SURFCACHE_SIZE_AT_320X200 600*1024
|
||||
|
||||
/*
|
||||
typedef struct surfcache_s
|
||||
{
|
||||
struct surfcache_s *next;
|
||||
|
@ -50,7 +49,6 @@ typedef struct surfcache_s
|
|||
struct texture_s *texture; // checked for animating textures
|
||||
byte data[4]; // width*height elements
|
||||
} surfcache_t;
|
||||
*/
|
||||
|
||||
// !!! if this is changed, it must be changed in asm_draw.h too !!!
|
||||
typedef struct sspan_s
|
||||
|
|
|
@ -657,7 +657,7 @@ void VID_Init(unsigned char *palette)
|
|||
if (QF_XMesaSetFXmode) {
|
||||
#ifdef XMESA
|
||||
const char *str = getenv("MESA_GLX_FX");
|
||||
if (*str && *str != 'd') {
|
||||
if (str != NULL && *str != 'f') {
|
||||
if (tolower(*str) == 'w') {
|
||||
Cvar_SetValue("vid_glx_fullscreen", 0);
|
||||
} else {
|
||||
|
|
|
@ -117,6 +117,7 @@ void R_TimeRefresh_f (void);
|
|||
void R_ReadPointFile_f (void);
|
||||
texture_t *R_TextureAnimation (texture_t *base);
|
||||
|
||||
/*
|
||||
typedef struct surfcache_s
|
||||
{
|
||||
struct surfcache_s *next;
|
||||
|
@ -130,6 +131,7 @@ typedef struct surfcache_s
|
|||
struct texture_s *texture; // checked for animating textures
|
||||
byte data[4]; // width*height elements
|
||||
} surfcache_t;
|
||||
*/
|
||||
|
||||
|
||||
//====================================================
|
||||
|
|
|
@ -11,8 +11,8 @@ AC_DEFINE_UNQUOTED(VERSION,"$VERSION")
|
|||
dnl Set to yes for releases
|
||||
RELEASE=no
|
||||
|
||||
dnl At some point this might be set to yes by default
|
||||
NEWSTYLE=no
|
||||
dnl Set this to no for Id defaults
|
||||
NEWSTYLE=yes
|
||||
|
||||
AC_CANONICAL_SYSTEM
|
||||
AC_LANG_C
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
/*
|
||||
Copyright (C) 1996-1997 Id Software, Inc.
|
||||
Portions Copyright (C) 1999,2000 Nelson Rush.
|
||||
Copyright (C) 1999,2000 contributors of the QuakeForge project
|
||||
Please see the file "AUTHORS" for a list of contributors
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
|
@ -23,6 +25,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#include "quakedef.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
/*
|
||||
|
||||
background clear
|
||||
|
@ -71,50 +75,49 @@ console is:
|
|||
*/
|
||||
|
||||
|
||||
int glx, gly, glwidth, glheight;
|
||||
int glx, gly, glwidth, glheight;
|
||||
|
||||
// only the refresh window will be updated unless these variables are flagged
|
||||
int scr_copytop;
|
||||
int scr_copyeverything;
|
||||
int scr_copytop;
|
||||
int scr_copyeverything;
|
||||
|
||||
float scr_con_current;
|
||||
float scr_conlines; // lines of console to display
|
||||
float scr_con_current;
|
||||
float scr_conlines; // lines of console to display
|
||||
|
||||
float oldscreensize, oldfov;
|
||||
cvar_t scr_viewsize = {"viewsize","100", true};
|
||||
cvar_t scr_fov = {"fov","90"}; // 10 - 170
|
||||
cvar_t scr_conspeed = {"scr_conspeed","300"};
|
||||
cvar_t scr_centertime = {"scr_centertime","2"};
|
||||
cvar_t scr_showram = {"showram","1"};
|
||||
cvar_t scr_showturtle = {"showturtle","0"};
|
||||
cvar_t scr_showpause = {"showpause","1"};
|
||||
cvar_t scr_printspeed = {"scr_printspeed","8"};
|
||||
cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", true };
|
||||
float oldscreensize, oldfov;
|
||||
cvar_t scr_viewsize = {"viewsize","100", true};
|
||||
cvar_t scr_fov = {"fov","90"}; // 10 - 170
|
||||
cvar_t scr_conspeed = {"scr_conspeed","300"};
|
||||
cvar_t scr_centertime = {"scr_centertime","2"};
|
||||
cvar_t scr_showram = {"showram","1"};
|
||||
cvar_t scr_showturtle = {"showturtle","0"};
|
||||
cvar_t scr_showpause = {"showpause","1"};
|
||||
cvar_t scr_printspeed = {"scr_printspeed","8"};
|
||||
cvar_t gl_triplebuffer = {"gl_triplebuffer", "1", true };
|
||||
extern cvar_t crosshair;
|
||||
|
||||
extern cvar_t crosshair;
|
||||
qboolean scr_initialized; // ready to draw
|
||||
|
||||
qboolean scr_initialized; // ready to draw
|
||||
qpic_t *scr_ram;
|
||||
qpic_t *scr_net;
|
||||
qpic_t *scr_turtle;
|
||||
|
||||
qpic_t *scr_ram;
|
||||
qpic_t *scr_net;
|
||||
qpic_t *scr_turtle;
|
||||
int scr_fullupdate;
|
||||
|
||||
int scr_fullupdate;
|
||||
int clearconsole;
|
||||
int clearnotify;
|
||||
|
||||
int clearconsole;
|
||||
int clearnotify;
|
||||
int sb_lines;
|
||||
|
||||
int sb_lines;
|
||||
viddef_t vid; // global video state
|
||||
|
||||
viddef_t vid; // global video state
|
||||
vrect_t scr_vrect;
|
||||
|
||||
vrect_t scr_vrect;
|
||||
qboolean scr_disabled_for_loading;
|
||||
qboolean scr_drawloading;
|
||||
float scr_disabled_time;
|
||||
|
||||
qboolean scr_disabled_for_loading;
|
||||
qboolean scr_drawloading;
|
||||
float scr_disabled_time;
|
||||
|
||||
qboolean block_drawing;
|
||||
qboolean block_drawing;
|
||||
|
||||
void SCR_ScreenShot_f (void);
|
||||
|
||||
|
@ -126,12 +129,12 @@ CENTER PRINTING
|
|||
===============================================================================
|
||||
*/
|
||||
|
||||
char scr_centerstring[1024];
|
||||
float scr_centertime_start; // for slow victory printing
|
||||
float scr_centertime_off;
|
||||
int scr_center_lines;
|
||||
int scr_erase_lines;
|
||||
int scr_erase_center;
|
||||
char scr_centerstring[1024];
|
||||
float scr_centertime_start; // for slow victory printing
|
||||
float scr_centertime_off;
|
||||
int scr_center_lines;
|
||||
int scr_erase_lines;
|
||||
int scr_erase_center;
|
||||
|
||||
/*
|
||||
==============
|
||||
|
@ -160,11 +163,11 @@ void SCR_CenterPrint (char *str)
|
|||
|
||||
void SCR_DrawCenterString (void)
|
||||
{
|
||||
char *start;
|
||||
int l;
|
||||
int j;
|
||||
int x, y;
|
||||
int remaining;
|
||||
char *start;
|
||||
int l;
|
||||
int j;
|
||||
int x, y;
|
||||
int remaining;
|
||||
|
||||
// the finale prints the characters one at a time
|
||||
if (cl.intermission)
|
||||
|
@ -180,7 +183,7 @@ void SCR_DrawCenterString (void)
|
|||
else
|
||||
y = 48;
|
||||
|
||||
do
|
||||
do
|
||||
{
|
||||
// scan the width of the line
|
||||
for (l=0 ; l<40 ; l++)
|
||||
|
@ -189,7 +192,7 @@ void SCR_DrawCenterString (void)
|
|||
x = (vid.width - l*8)/2;
|
||||
for (j=0 ; j<l ; j++, x+=8)
|
||||
{
|
||||
Draw_Character (x, y, start[j]);
|
||||
Draw_Character (x, y, start[j]);
|
||||
if (!remaining--)
|
||||
return;
|
||||
}
|
||||
|
@ -201,7 +204,7 @@ void SCR_DrawCenterString (void)
|
|||
|
||||
if (!*start)
|
||||
break;
|
||||
start++; // skip the \n
|
||||
start++; // skip the \n
|
||||
} while (1);
|
||||
}
|
||||
|
||||
|
@ -255,12 +258,12 @@ Internal use only
|
|||
*/
|
||||
static void SCR_CalcRefdef (void)
|
||||
{
|
||||
float size;
|
||||
int h;
|
||||
qboolean full = false;
|
||||
float size;
|
||||
int h;
|
||||
qboolean full = false;
|
||||
|
||||
|
||||
scr_fullupdate = 0; // force a background redraw
|
||||
scr_fullupdate = 0; // force a background redraw
|
||||
vid.recalc_refdef = 0;
|
||||
|
||||
// force the status bar to redraw
|
||||
|
@ -280,16 +283,16 @@ static void SCR_CalcRefdef (void)
|
|||
if (scr_fov.value > 170)
|
||||
Cvar_Set ("fov","170");
|
||||
|
||||
// intermission is always full screen
|
||||
// intermission is always full screen
|
||||
if (cl.intermission)
|
||||
size = 120;
|
||||
else
|
||||
size = scr_viewsize.value;
|
||||
|
||||
if (size >= 120)
|
||||
sb_lines = 0; // no status bar at all
|
||||
sb_lines = 0; // no status bar at all
|
||||
else if (size >= 110)
|
||||
sb_lines = 24; // no inventory
|
||||
sb_lines = 24; // no inventory
|
||||
else
|
||||
sb_lines = 24+16+8;
|
||||
|
||||
|
@ -301,24 +304,28 @@ static void SCR_CalcRefdef (void)
|
|||
if (cl.intermission)
|
||||
{
|
||||
full = true;
|
||||
size = 100;
|
||||
size = 100.0;
|
||||
sb_lines = 0;
|
||||
}
|
||||
size /= 100.0;
|
||||
|
||||
h = vid.height - sb_lines;
|
||||
if (!cl_sbar.value && full)
|
||||
h = vid.height;
|
||||
else
|
||||
h = vid.height - sb_lines;
|
||||
|
||||
r_refdef.vrect.width = vid.width * size;
|
||||
if (r_refdef.vrect.width < 96)
|
||||
{
|
||||
size = 96.0 / r_refdef.vrect.width;
|
||||
r_refdef.vrect.width = 96; // min for icons
|
||||
r_refdef.vrect.width = 96; // min for icons
|
||||
}
|
||||
|
||||
r_refdef.vrect.height = vid.height * size;
|
||||
if (r_refdef.vrect.height > vid.height - sb_lines)
|
||||
r_refdef.vrect.height = vid.height - sb_lines;
|
||||
if (r_refdef.vrect.height > vid.height)
|
||||
if (cl_sbar.value || !full) {
|
||||
if (r_refdef.vrect.height > vid.height - sb_lines)
|
||||
r_refdef.vrect.height = vid.height - sb_lines;
|
||||
} else if (r_refdef.vrect.height > vid.height)
|
||||
r_refdef.vrect.height = vid.height;
|
||||
r_refdef.vrect.x = (vid.width - r_refdef.vrect.width)/2;
|
||||
if (full)
|
||||
|
@ -369,7 +376,6 @@ SCR_Init
|
|||
*/
|
||||
void SCR_Init (void)
|
||||
{
|
||||
|
||||
Cvar_RegisterVariable (&scr_fov);
|
||||
Cvar_RegisterVariable (&scr_viewsize);
|
||||
Cvar_RegisterVariable (&scr_conspeed);
|
||||
|
@ -419,7 +425,7 @@ SCR_DrawTurtle
|
|||
*/
|
||||
void SCR_DrawTurtle (void)
|
||||
{
|
||||
static int count;
|
||||
static int count;
|
||||
|
||||
if (!scr_showturtle.value)
|
||||
return;
|
||||
|
@ -460,10 +466,9 @@ Backported by Jules Bean <jules@jellybean.co.uk> from
|
|||
quakeworld client
|
||||
===============
|
||||
*/
|
||||
|
||||
void SCR_DrawFPS (void)
|
||||
{
|
||||
extern cvar_t show_fps;
|
||||
extern cvar_t show_fps;
|
||||
static double lastframetime;
|
||||
double t;
|
||||
extern int fps_count;
|
||||
|
@ -471,8 +476,8 @@ void SCR_DrawFPS (void)
|
|||
int x, y;
|
||||
char st[80];
|
||||
|
||||
if (!show_fps.value)
|
||||
return;
|
||||
if (!show_fps.value)
|
||||
return;
|
||||
|
||||
t = Sys_DoubleTime();
|
||||
if ((t - lastframetime) >= 1.0) {
|
||||
|
@ -488,6 +493,7 @@ void SCR_DrawFPS (void)
|
|||
Draw_String(x, y, st);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==============
|
||||
DrawPause
|
||||
|
@ -495,9 +501,9 @@ DrawPause
|
|||
*/
|
||||
void SCR_DrawPause (void)
|
||||
{
|
||||
qpic_t *pic;
|
||||
qpic_t *pic;
|
||||
|
||||
if (!scr_showpause.value) // turn off for screenshots
|
||||
if (!scr_showpause.value) // turn off for screenshots
|
||||
return;
|
||||
|
||||
if (!cl.paused)
|
||||
|
@ -517,7 +523,7 @@ SCR_DrawLoading
|
|||
*/
|
||||
void SCR_DrawLoading (void)
|
||||
{
|
||||
qpic_t *pic;
|
||||
qpic_t *pic;
|
||||
|
||||
if (!scr_drawloading)
|
||||
return;
|
||||
|
@ -542,20 +548,20 @@ void SCR_SetUpToDrawConsole (void)
|
|||
Con_CheckResize ();
|
||||
|
||||
if (scr_drawloading)
|
||||
return; // never a console with loading plaque
|
||||
return; // never a console with loading plaque
|
||||
|
||||
// decide on the height of the console
|
||||
con_forcedup = !cl.worldmodel || cls.signon != SIGNONS;
|
||||
|
||||
if (con_forcedup)
|
||||
{
|
||||
scr_conlines = vid.height; // full screen
|
||||
scr_conlines = vid.height; // full screen
|
||||
scr_con_current = scr_conlines;
|
||||
}
|
||||
else if (key_dest == key_console)
|
||||
scr_conlines = vid.height/2; // half screen
|
||||
scr_conlines = vid.height/2; // half screen
|
||||
else
|
||||
scr_conlines = 0; // none visible
|
||||
scr_conlines = 0; // none visible
|
||||
|
||||
if (scr_conlines < scr_con_current)
|
||||
{
|
||||
|
@ -598,7 +604,7 @@ void SCR_DrawConsole (void)
|
|||
else
|
||||
{
|
||||
if (key_dest == key_game || key_dest == key_message)
|
||||
Con_DrawNotify (); // only draw notify in game
|
||||
Con_DrawNotify (); // only draw notify in game
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -612,11 +618,11 @@ void SCR_DrawConsole (void)
|
|||
*/
|
||||
|
||||
typedef struct _TargaHeader {
|
||||
unsigned char id_length, colormap_type, image_type;
|
||||
unsigned short colormap_index, colormap_length;
|
||||
unsigned char colormap_size;
|
||||
unsigned short x_origin, y_origin, width, height;
|
||||
unsigned char pixel_size, attributes;
|
||||
unsigned char id_length, colormap_type, image_type;
|
||||
unsigned short colormap_index, colormap_length;
|
||||
unsigned char colormap_size;
|
||||
unsigned short x_origin, y_origin, width, height;
|
||||
unsigned char pixel_size, attributes;
|
||||
} TargaHeader;
|
||||
|
||||
|
||||
|
@ -627,10 +633,10 @@ SCR_ScreenShot_f
|
|||
*/
|
||||
void SCR_ScreenShot_f (void)
|
||||
{
|
||||
byte *buffer;
|
||||
char pcxname[80];
|
||||
char checkname[MAX_OSPATH];
|
||||
int i, c, temp;
|
||||
byte *buffer;
|
||||
char pcxname[80];
|
||||
char checkname[MAX_OSPATH];
|
||||
int i, c, temp;
|
||||
//
|
||||
// find a file name to save it to
|
||||
//
|
||||
|
@ -642,23 +648,23 @@ void SCR_ScreenShot_f (void)
|
|||
pcxname[6] = i%10 + '0';
|
||||
snprintf(checkname, sizeof(checkname), "%s/%s", com_gamedir, pcxname);
|
||||
if (Sys_FileTime(checkname) == -1)
|
||||
break; // file doesn't exist
|
||||
break; // file doesn't exist
|
||||
}
|
||||
if (i==100)
|
||||
{
|
||||
Con_Printf ("SCR_ScreenShot_f: Couldn't create a PCX file\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
buffer = malloc(glwidth*glheight*3 + 18);
|
||||
memset (buffer, 0, 18);
|
||||
buffer[2] = 2; // uncompressed type
|
||||
buffer[2] = 2; // uncompressed type
|
||||
buffer[12] = glwidth&255;
|
||||
buffer[13] = glwidth>>8;
|
||||
buffer[14] = glheight&255;
|
||||
buffer[15] = glheight>>8;
|
||||
buffer[16] = 24; // pixel size
|
||||
buffer[16] = 24; // pixel size
|
||||
|
||||
glReadPixels (glx, gly, glwidth, glheight, GL_RGB, GL_UNSIGNED_BYTE, buffer+18 );
|
||||
|
||||
|
@ -676,10 +682,6 @@ void SCR_ScreenShot_f (void)
|
|||
Con_Printf ("Wrote %s\n", pcxname);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/*
|
||||
===============
|
||||
SCR_BeginLoadingPlaque
|
||||
|
@ -726,21 +728,21 @@ void SCR_EndLoadingPlaque (void)
|
|||
|
||||
//=============================================================================
|
||||
|
||||
char *scr_notifystring;
|
||||
qboolean scr_drawdialog;
|
||||
char *scr_notifystring;
|
||||
qboolean scr_drawdialog;
|
||||
|
||||
void SCR_DrawNotifyString (void)
|
||||
{
|
||||
char *start;
|
||||
int l;
|
||||
int j;
|
||||
int x, y;
|
||||
char *start;
|
||||
int l;
|
||||
int j;
|
||||
int x, y;
|
||||
|
||||
start = scr_notifystring;
|
||||
|
||||
y = vid.height*0.35;
|
||||
|
||||
do
|
||||
do
|
||||
{
|
||||
// scan the width of the line
|
||||
for (l=0 ; l<40 ; l++)
|
||||
|
@ -748,7 +750,7 @@ void SCR_DrawNotifyString (void)
|
|||
break;
|
||||
x = (vid.width - l*8)/2;
|
||||
for (j=0 ; j<l ; j++, x+=8)
|
||||
Draw_Character (x, y, start[j]);
|
||||
Draw_Character (x, y, start[j]);
|
||||
|
||||
y += 8;
|
||||
|
||||
|
@ -757,7 +759,7 @@ void SCR_DrawNotifyString (void)
|
|||
|
||||
if (!*start)
|
||||
break;
|
||||
start++; // skip the \n
|
||||
start++; // skip the \n
|
||||
} while (1);
|
||||
}
|
||||
|
||||
|
@ -773,7 +775,7 @@ int SCR_ModalMessage (char *text)
|
|||
{
|
||||
if (cls.state == ca_dedicated)
|
||||
return true;
|
||||
|
||||
|
||||
scr_notifystring = text;
|
||||
|
||||
// draw a fresh screen
|
||||
|
@ -782,11 +784,11 @@ int SCR_ModalMessage (char *text)
|
|||
SCR_UpdateScreen ();
|
||||
scr_drawdialog = false;
|
||||
|
||||
S_ClearBuffer (); // so dma doesn't loop current sound
|
||||
S_ClearBuffer (); // so dma doesn't loop current sound
|
||||
|
||||
do
|
||||
{
|
||||
key_count = -1; // wait for a key down and up
|
||||
key_count = -1; // wait for a key down and up
|
||||
Sys_SendKeyEvents ();
|
||||
} while (key_lastpress != 'y' && key_lastpress != 'n' && key_lastpress != K_ESCAPE);
|
||||
|
||||
|
@ -808,14 +810,14 @@ Brings the console down and fades the palettes back to normal
|
|||
*/
|
||||
void SCR_BringDownConsole (void)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
scr_centertime_off = 0;
|
||||
|
||||
for (i=0 ; i<20 && scr_conlines != scr_con_current ; i++)
|
||||
SCR_UpdateScreen ();
|
||||
|
||||
cl.cshifts[0].percent = 0; // no area contents palette on next frame
|
||||
cl.cshifts[0].percent = 0; // no area contents palette on next frame
|
||||
VID_SetPalette (host_basepal);
|
||||
}
|
||||
|
||||
|
@ -843,6 +845,8 @@ void SCR_TileClear (void)
|
|||
}
|
||||
}
|
||||
|
||||
float oldsbar = 0;
|
||||
|
||||
/*
|
||||
==================
|
||||
SCR_UpdateScreen
|
||||
|
@ -876,9 +880,14 @@ void SCR_UpdateScreen (void)
|
|||
}
|
||||
|
||||
if (!scr_initialized || !con_initialized)
|
||||
return; // not initialized yet
|
||||
return; // not initialized yet
|
||||
|
||||
|
||||
if (oldsbar != cl_sbar.value) {
|
||||
oldsbar = cl_sbar.value;
|
||||
vid.recalc_refdef = true;
|
||||
}
|
||||
|
||||
GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
|
||||
|
||||
//
|
||||
|
@ -890,12 +899,6 @@ void SCR_UpdateScreen (void)
|
|||
vid.recalc_refdef = true;
|
||||
}
|
||||
|
||||
if (oldscreensize != scr_viewsize.value)
|
||||
{
|
||||
oldscreensize = scr_viewsize.value;
|
||||
vid.recalc_refdef = true;
|
||||
}
|
||||
|
||||
if (vid.recalc_refdef)
|
||||
SCR_CalcRefdef ();
|
||||
|
||||
|
@ -938,7 +941,6 @@ void SCR_UpdateScreen (void)
|
|||
{
|
||||
if (crosshair.value)
|
||||
Draw_Crosshair();
|
||||
// Draw_Character (scr_vrect.x + scr_vrect.width/2, scr_vrect.y + scr_vrect.height/2, '+');
|
||||
|
||||
SCR_DrawRam ();
|
||||
SCR_DrawNet ();
|
||||
|
@ -947,7 +949,7 @@ void SCR_UpdateScreen (void)
|
|||
SCR_DrawPause ();
|
||||
SCR_CheckDrawCenterString ();
|
||||
Sbar_Draw ();
|
||||
SCR_DrawConsole ();
|
||||
SCR_DrawConsole ();
|
||||
M_Draw ();
|
||||
}
|
||||
|
||||
|
@ -955,4 +957,3 @@ void SCR_UpdateScreen (void)
|
|||
|
||||
GL_EndRendering ();
|
||||
}
|
||||
|
||||
|
|
130
uquake/screen.c
130
uquake/screen.c
|
@ -1,6 +1,8 @@
|
|||
/*
|
||||
Copyright (C) 1996-1997 Id Software, Inc.
|
||||
Portions Copyright (C) 1999,2000 Nelson Rush.
|
||||
Copyright (C) 1999,2000 contributors of the QuakeForge project
|
||||
Please see the file "AUTHORS" for a list of contributors
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
|
@ -23,6 +25,56 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "quakedef.h"
|
||||
#include "r_local.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
/*
|
||||
|
||||
background clear
|
||||
rendering
|
||||
turtle/net/ram icons
|
||||
sbar
|
||||
centerprint / slow centerprint
|
||||
notify lines
|
||||
intermission / finale overlay
|
||||
loading plaque
|
||||
console
|
||||
menu
|
||||
|
||||
required background clears
|
||||
required update regions
|
||||
|
||||
|
||||
syncronous draw mode or async
|
||||
One off screen buffer, with updates either copied or xblited
|
||||
Need to double buffer?
|
||||
|
||||
|
||||
async draw will require the refresh area to be cleared, because it will be
|
||||
xblited, but sync draw can just ignore it.
|
||||
|
||||
sync
|
||||
draw
|
||||
|
||||
CenterPrint ()
|
||||
SlowPrint ()
|
||||
Screen_Update ();
|
||||
Con_Printf ();
|
||||
|
||||
net
|
||||
turn off messages option
|
||||
|
||||
the refresh is allways rendered, unless the console is full screen
|
||||
|
||||
|
||||
console is:
|
||||
notify lines
|
||||
half
|
||||
full
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// only the refresh window will be updated unless these variables are flagged
|
||||
int scr_copytop;
|
||||
int scr_copyeverything;
|
||||
|
@ -31,6 +83,7 @@ float scr_con_current;
|
|||
float scr_conlines; // lines of console to display
|
||||
|
||||
float oldscreensize, oldfov;
|
||||
float oldsbar;
|
||||
cvar_t scr_viewsize = {"viewsize","100", true};
|
||||
cvar_t scr_fov = {"fov","90"}; // 10 - 170
|
||||
cvar_t scr_conspeed = {"scr_conspeed","300"};
|
||||
|
@ -51,6 +104,8 @@ int scr_fullupdate;
|
|||
int clearconsole;
|
||||
int clearnotify;
|
||||
|
||||
int sb_lines;
|
||||
|
||||
viddef_t vid; // global video state
|
||||
|
||||
vrect_t *pconupdate;
|
||||
|
@ -59,6 +114,7 @@ vrect_t scr_vrect;
|
|||
qboolean scr_disabled_for_loading;
|
||||
qboolean scr_drawloading;
|
||||
float scr_disabled_time;
|
||||
|
||||
qboolean scr_skipupdate;
|
||||
|
||||
qboolean block_drawing;
|
||||
|
@ -120,7 +176,7 @@ void SCR_EraseCenterString (void)
|
|||
y = 48;
|
||||
|
||||
scr_copytop = 1;
|
||||
Draw_TileClear (0, y,vid.width, 8*scr_erase_lines);
|
||||
Draw_TileClear (0, y, vid.width, min(8*scr_erase_lines, vid.height - y - 1));
|
||||
}
|
||||
|
||||
void SCR_DrawCenterString (void)
|
||||
|
@ -287,8 +343,10 @@ Keybinding command
|
|||
*/
|
||||
void SCR_SizeUp_f (void)
|
||||
{
|
||||
if (scr_viewsize.value < 120) {
|
||||
Cvar_SetValue ("viewsize",scr_viewsize.value+10);
|
||||
vid.recalc_refdef = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -330,9 +388,9 @@ void SCR_Init (void)
|
|||
Cmd_AddCommand ("sizeup",SCR_SizeUp_f);
|
||||
Cmd_AddCommand ("sizedown",SCR_SizeDown_f);
|
||||
|
||||
scr_ram = Draw_PicFromWad ("ram");
|
||||
scr_net = Draw_PicFromWad ("net");
|
||||
scr_turtle = Draw_PicFromWad ("turtle");
|
||||
scr_ram = W_GetLumpName ("ram");
|
||||
scr_net = W_GetLumpName ("net");
|
||||
scr_turtle = W_GetLumpName ("turtle");
|
||||
|
||||
scr_initialized = true;
|
||||
}
|
||||
|
@ -403,10 +461,9 @@ Backported by Jules Bean <jules@jellybean.co.uk> from
|
|||
quakeworld client
|
||||
===============
|
||||
*/
|
||||
|
||||
void SCR_DrawFPS (void)
|
||||
{
|
||||
extern cvar_t show_fps;
|
||||
extern cvar_t show_fps;
|
||||
static double lastframetime;
|
||||
double t;
|
||||
extern int fps_count;
|
||||
|
@ -414,8 +471,8 @@ void SCR_DrawFPS (void)
|
|||
int x, y;
|
||||
char st[80];
|
||||
|
||||
if (!show_fps.value)
|
||||
return;
|
||||
if (!show_fps.value)
|
||||
return;
|
||||
|
||||
t = Sys_DoubleTime();
|
||||
if ((t - lastframetime) >= 1.0) {
|
||||
|
@ -452,7 +509,6 @@ void SCR_DrawPause (void)
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
==============
|
||||
SCR_DrawLoading
|
||||
|
@ -470,8 +526,6 @@ void SCR_DrawLoading (void)
|
|||
(vid.height - 48 - pic->height)/2, pic);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
|
@ -486,7 +540,7 @@ void SCR_SetUpToDrawConsole (void)
|
|||
|
||||
if (scr_drawloading)
|
||||
return; // never a console with loading plaque
|
||||
|
||||
|
||||
// decide on the height of the console
|
||||
con_forcedup = !cl.worldmodel || cls.signon != SIGNONS;
|
||||
|
||||
|
@ -557,7 +611,6 @@ void SCR_DrawConsole (void)
|
|||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -582,7 +635,7 @@ WritePCXfile
|
|||
==============
|
||||
*/
|
||||
void WritePCXfile (char *filename, byte *data, int width, int height,
|
||||
int rowbytes, byte *palette)
|
||||
int rowbytes, byte *palette)
|
||||
{
|
||||
int i, j, length;
|
||||
pcx_t *pcx;
|
||||
|
@ -668,10 +721,10 @@ void SCR_ScreenShot_f (void)
|
|||
}
|
||||
if (i==100)
|
||||
{
|
||||
Con_Printf ("SCR_ScreenShot_f: Couldn't create a PCX file\n");
|
||||
Con_Printf ("SCR_ScreenShot_f: Couldn't create a PCX");
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// save the pcx file
|
||||
//
|
||||
|
@ -687,10 +740,8 @@ void SCR_ScreenShot_f (void)
|
|||
Con_Printf ("Wrote %s\n", pcxname);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
|
||||
/*
|
||||
===============
|
||||
SCR_BeginLoadingPlaque
|
||||
|
@ -734,9 +785,6 @@ void SCR_EndLoadingPlaque (void)
|
|||
scr_fullupdate = 0;
|
||||
Con_ClearNotify ();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
char *scr_notifystring;
|
||||
qboolean scr_drawdialog;
|
||||
|
||||
|
@ -772,6 +820,8 @@ void SCR_DrawNotifyString (void)
|
|||
} while (1);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
/*
|
||||
==================
|
||||
SCR_ModalMessage
|
||||
|
@ -845,9 +895,9 @@ needs almost the entire 256k of stack space!
|
|||
void SCR_UpdateScreen (void)
|
||||
{
|
||||
static float oldscr_viewsize;
|
||||
static float oldlcd_x;
|
||||
static float oldlcd_x;
|
||||
vrect_t vrect;
|
||||
|
||||
|
||||
if (scr_skipupdate || block_drawing)
|
||||
return;
|
||||
|
||||
|
@ -862,11 +912,20 @@ void SCR_UpdateScreen (void)
|
|||
Con_Printf ("load failed.\n");
|
||||
}
|
||||
else
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
{ // don't suck up any cpu if minimized
|
||||
extern int Minimized;
|
||||
|
||||
if (Minimized)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cls.state == ca_dedicated)
|
||||
return; // stdout only
|
||||
return;
|
||||
|
||||
if (!scr_initialized || !con_initialized)
|
||||
return; // not initialized yet
|
||||
|
@ -897,10 +956,16 @@ void SCR_UpdateScreen (void)
|
|||
oldscreensize = scr_viewsize.value;
|
||||
vid.recalc_refdef = true;
|
||||
}
|
||||
|
||||
if (oldsbar != cl_sbar.value)
|
||||
{
|
||||
oldsbar = cl_sbar.value;
|
||||
vid.recalc_refdef = true;
|
||||
}
|
||||
|
||||
if (vid.recalc_refdef)
|
||||
{
|
||||
// something changed, so reorder the screen
|
||||
// something changed, so reorder the screen
|
||||
SCR_CalcRefdef ();
|
||||
}
|
||||
|
||||
|
@ -921,14 +986,12 @@ void SCR_UpdateScreen (void)
|
|||
|
||||
SCR_SetUpToDrawConsole ();
|
||||
SCR_EraseCenterString ();
|
||||
|
||||
|
||||
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
||||
// for linear writes all the time
|
||||
|
||||
VID_LockBuffer ();
|
||||
|
||||
V_RenderView ();
|
||||
|
||||
VID_UnlockBuffer ();
|
||||
|
||||
D_EnableBackBufferAccess (); // of all overlay stuff if drawing directly
|
||||
|
@ -967,10 +1030,11 @@ void SCR_UpdateScreen (void)
|
|||
SCR_DrawFPS ();
|
||||
SCR_CheckDrawCenterString ();
|
||||
Sbar_Draw ();
|
||||
SCR_DrawConsole ();
|
||||
SCR_DrawConsole ();
|
||||
M_Draw ();
|
||||
}
|
||||
|
||||
|
||||
D_DisableBackBufferAccess (); // for adapters that can't stay mapped in
|
||||
// for linear writes all the time
|
||||
if (pconupdate)
|
||||
|
@ -983,7 +1047,6 @@ void SCR_UpdateScreen (void)
|
|||
//
|
||||
// update one of three areas
|
||||
//
|
||||
|
||||
if (scr_copyeverything)
|
||||
{
|
||||
vrect.x = 0;
|
||||
|
@ -1013,10 +1076,9 @@ void SCR_UpdateScreen (void)
|
|||
vrect.pnext = 0;
|
||||
|
||||
VID_Update (&vrect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==================
|
||||
SCR_UpdateWholeScreen
|
||||
|
|
Loading…
Reference in a new issue