mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-01-10 11:50:56 +00:00
7ace8c9116
because it's so small in high resolutions and I'm an old man with bad eyes.
150 lines
4 KiB
C
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
|