yquake2remaster/src/client/header/ref.h
Daniel Gibson 7ace8c9116 Implementing gl_hudscale cvar to scale the HUD
because it's so small in high resolutions and I'm an old man with bad
eyes.
2014-04-25 21:24:26 +02:00

150 lines
4 KiB
C

/*
* Copyright (C) 1997-2001 Id Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*
* =======================================================================
*
* ABI between client and refresher
*
* =======================================================================
*/
#ifndef CL_REF_H
#define CL_REF_H
#include "../../common/header/common.h"
#include "vid.h"
#define MAX_DLIGHTS 32
#define MAX_ENTITIES 128
#define MAX_PARTICLES 4096
#define MAX_LIGHTSTYLES 256
#define POWERSUIT_SCALE 4.0F
#define SHELL_RED_COLOR 0xF2
#define SHELL_GREEN_COLOR 0xD0
#define SHELL_BLUE_COLOR 0xF3
#define SHELL_RG_COLOR 0xDC
#define SHELL_RB_COLOR 0x68
#define SHELL_BG_COLOR 0x78
#define SHELL_DOUBLE_COLOR 0xDF
#define SHELL_HALF_DAM_COLOR 0x90
#define SHELL_CYAN_COLOR 0x72
#define SHELL_WHITE_COLOR 0xD7
#define ENTITY_FLAGS 68
#define API_VERSION 3
typedef struct entity_s {
struct model_s *model; /* opaque type outside refresh */
float angles[3];
/* most recent data */
float origin[3]; /* also used as RF_BEAM's "from" */
int frame; /* also used as RF_BEAM's diameter */
/* previous data for lerping */
float oldorigin[3]; /* also used as RF_BEAM's "to" */
int oldframe;
/* misc */
float backlerp; /* 0.0 = current, 1.0 = old */
int skinnum; /* also used as RF_BEAM's palette index */
int lightstyle; /* for flashing entities */
float alpha; /* ignore if RF_TRANSLUCENT isn't set */
struct image_s *skin; /* NULL for inline skin */
int flags;
} entity_t;
typedef struct {
vec3_t origin;
vec3_t color;
float intensity;
} dlight_t;
typedef struct {
vec3_t origin;
int color;
float alpha;
} particle_t;
typedef struct {
float rgb[3]; /* 0.0 - 2.0 */
float white; /* highest of rgb */
} lightstyle_t;
typedef struct {
int x, y, width, height; /* in virtual screen coordinates */
float fov_x, fov_y;
float vieworg[3];
float viewangles[3];
float blend[4]; /* rgba 0-1 full screen blend */
float time; /* time is uesed to auto animate */
int rdflags; /* RDF_UNDERWATER, etc */
byte *areabits; /* if not NULL, only areas with set bits will be drawn */
lightstyle_t *lightstyles; /* [MAX_LIGHTSTYLES] */
int num_entities;
entity_t *entities;
int num_dlights;
dlight_t *dlights;
int num_particles;
particle_t *particles;
} refdef_t;
// Soon to be deleted
//void R_GetRefAPI(void);
/*
* Refresh API
*/
void R_BeginRegistration(char *map);
void R_Clear(void);
struct model_s *R_RegisterModel(char *name);
struct image_s *R_RegisterSkin(char *name);
void R_SetSky(char *name, float rotate, vec3_t axis);
void R_EndRegistration(void);
struct image_s *Draw_FindPic(char *name);
void R_RenderFrame(refdef_t *fd);
void Draw_GetPicSize(int *w, int *h, char *name);
void Draw_Pic(int x, int y, char *name);
void Draw_StretchPic(int x, int y, int w, int h, char *name);
void Draw_PicScaled(int x, int y, char *pic, float factor);
void Draw_Char(int x, int y, int c);
void Draw_CharScaled(int x, int y, int num, float scale);
void Draw_TileClear(int x, int y, int w, int h, char *name);
void Draw_Fill(int x, int y, int w, int h, int c);
void Draw_FadeScreen(void);
void Draw_StretchRaw(int x, int y, int w, int h, int cols, int rows, byte *data);
int R_Init(void *hinstance, void *hWnd);
void R_Shutdown(void);
void R_SetPalette(const unsigned char *palette);
void R_BeginFrame(float camera_separation);
void GLimp_EndFrame(void);
#endif