mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-22 03:41:27 +00:00
I think this works, but maybe not.. skins will be very broken if I didn't
but I'll undo this mess if that happens.
This commit is contained in:
parent
76c3e731c1
commit
75001e947c
6 changed files with 43 additions and 68 deletions
|
@ -42,6 +42,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include <cmd.h>
|
||||
#include <cvar.h>
|
||||
#include <qstructs.h>
|
||||
#include <image.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -594,24 +595,6 @@ void CL_InitCam(void);
|
|||
// skin.c
|
||||
//
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char manufacturer;
|
||||
char version;
|
||||
char encoding;
|
||||
char bits_per_pixel;
|
||||
unsigned short xmin,ymin,xmax,ymax;
|
||||
unsigned short hres,vres;
|
||||
unsigned char palette[48];
|
||||
char reserved;
|
||||
char color_planes;
|
||||
unsigned short bytes_per_line;
|
||||
unsigned short palette_type;
|
||||
char filler[58];
|
||||
unsigned char data; // unbounded
|
||||
} pcx_t;
|
||||
|
||||
|
||||
void Skin_Find (player_info_t *sc);
|
||||
byte *Skin_Cache (skin_t *skin);
|
||||
void Skin_Skins_f (void);
|
||||
|
|
|
@ -296,17 +296,6 @@ EmitBothSkyLayers ( msurface_t *fa ) {
|
|||
glDisable (GL_BLEND);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*
|
||||
R_DrawSkyChain
|
||||
*/
|
||||
void
|
||||
R_DrawSkyChain ( msurface_t *s ) {
|
||||
|
||||
msurface_t *fa;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
Quake 2 sky rendering ("skyboxes")
|
||||
|
@ -314,24 +303,20 @@ R_DrawSkyChain ( msurface_t *s ) {
|
|||
|
||||
#define SKY_TEX 2000
|
||||
|
||||
/*
|
||||
PCX Loading
|
||||
*/
|
||||
|
||||
byte *pcx_rgb;
|
||||
|
||||
#if 0
|
||||
/*
|
||||
LoadPCX
|
||||
*/
|
||||
void
|
||||
LoadPCX (QFile *f) {
|
||||
LoadPCX (QFile *f, byte **pcx_rgb)
|
||||
{
|
||||
|
||||
pcx_t *pcx, pcxbuf;
|
||||
byte palette[768];
|
||||
byte *pix;
|
||||
int x, y;
|
||||
int dataByte, runLength;
|
||||
int count;
|
||||
int x, y;
|
||||
int dataByte, runLength;
|
||||
int count;
|
||||
|
||||
/*
|
||||
Parse PCX file
|
||||
|
@ -354,10 +339,10 @@ LoadPCX (QFile *f) {
|
|||
Qseek (f, sizeof(pcxbuf) - 4, SEEK_SET);
|
||||
|
||||
count = (pcx->xmax+1) * (pcx->ymax+1);
|
||||
pcx_rgb = malloc( count * 4);
|
||||
*pcx_rgb = malloc( count * 4);
|
||||
|
||||
for (y=0 ; y<=pcx->ymax ; y++) {
|
||||
pix = pcx_rgb + 4*y*(pcx->xmax+1);
|
||||
pix = *pcx_rgb + 4*y*(pcx->xmax+1);
|
||||
for (x=0 ; x<=pcx->ymax ; ) {
|
||||
dataByte = Qgetc(f);
|
||||
|
||||
|
@ -379,6 +364,7 @@ LoadPCX (QFile *f) {
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
TARGA LOADING
|
||||
|
@ -392,8 +378,6 @@ typedef struct _TargaHeader {
|
|||
unsigned char pixel_size, attributes;
|
||||
} TargaHeader;
|
||||
|
||||
TargaHeader targa_header;
|
||||
byte *targa_rgba;
|
||||
|
||||
int
|
||||
QgetLittleShort ( QFile *f ) {
|
||||
|
@ -423,11 +407,12 @@ QgetLittleLong (QFile *f) {
|
|||
LoadTGA
|
||||
*/
|
||||
void
|
||||
LoadTGA (QFile *fin) {
|
||||
LoadTGA (QFile *fin, byte **targa_rgba) {
|
||||
|
||||
int columns, rows, numPixels;
|
||||
byte *pixbuf;
|
||||
int row, column;
|
||||
TargaHeader targa_header;
|
||||
unsigned char red = 0, green = 0, blue = 0, alphabyte = 0;
|
||||
|
||||
targa_header.id_length = Qgetc(fin);
|
||||
|
@ -456,14 +441,14 @@ LoadTGA (QFile *fin) {
|
|||
rows = targa_header.height;
|
||||
numPixels = columns * rows;
|
||||
|
||||
targa_rgba = malloc (numPixels*4);
|
||||
*targa_rgba = malloc (numPixels*4);
|
||||
|
||||
if (targa_header.id_length != 0)
|
||||
Qseek(fin, targa_header.id_length, SEEK_CUR); // skip TARGA image comment
|
||||
|
||||
if (targa_header.image_type==2) { // Uncompressed, RGB images
|
||||
for(row=rows-1; row>=0; row--) {
|
||||
pixbuf = targa_rgba + row*columns*4;
|
||||
pixbuf = *targa_rgba + row*columns*4;
|
||||
for(column=0; column<columns; column++) {
|
||||
switch (targa_header.pixel_size) {
|
||||
case 24:
|
||||
|
@ -493,7 +478,7 @@ LoadTGA (QFile *fin) {
|
|||
else if (targa_header.image_type==10) { // Runlength encoded RGB images
|
||||
unsigned char packetHeader,packetSize,j;
|
||||
for(row=rows-1; row>=0; row--) {
|
||||
pixbuf = targa_rgba + row*columns*4;
|
||||
pixbuf = *targa_rgba + row*columns*4;
|
||||
for(column=0; column<columns; ) {
|
||||
packetHeader=Qgetc(fin);
|
||||
packetSize = 1 + (packetHeader & 0x7f);
|
||||
|
@ -525,7 +510,7 @@ LoadTGA (QFile *fin) {
|
|||
row--;
|
||||
else
|
||||
goto breakOut;
|
||||
pixbuf = targa_rgba + row*columns*4;
|
||||
pixbuf = *targa_rgba + row*columns*4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -559,7 +544,7 @@ LoadTGA (QFile *fin) {
|
|||
row--;
|
||||
else
|
||||
goto breakOut;
|
||||
pixbuf = targa_rgba + row*columns*4;
|
||||
pixbuf = *targa_rgba + row*columns*4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -581,6 +566,7 @@ R_LoadSkys ( void ) {
|
|||
|
||||
int i;
|
||||
QFile *f;
|
||||
byte *skyimage = NULL;
|
||||
char name[64];
|
||||
|
||||
for (i=0 ; i<6 ; i++) {
|
||||
|
@ -592,14 +578,14 @@ R_LoadSkys ( void ) {
|
|||
Con_Printf ("Couldn't load %s\n", name);
|
||||
continue;
|
||||
}
|
||||
LoadTGA (f);
|
||||
// LoadPCX (f);
|
||||
LoadTGA (f, &skyimage);
|
||||
// LoadPCX (f, &skyimage);
|
||||
|
||||
glTexImage2D (GL_TEXTURE_2D, 0, gl_solid_format, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, targa_rgba);
|
||||
glTexImage2D (GL_TEXTURE_2D, 0, gl_solid_format, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, skyimage);
|
||||
// glTexImage2D (GL_TEXTURE_2D, 0, gl_solid_format, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, pcx_rgb);
|
||||
|
||||
free (targa_rgba);
|
||||
// free (pcx_rgb);
|
||||
// free (targa_rgba);
|
||||
free (skyimage);
|
||||
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
|
|
@ -298,7 +298,7 @@ QFile *COM_OpenRead(const char *path, int offs, int len)
|
|||
|
||||
/*
|
||||
===========
|
||||
COM_FindFile
|
||||
COM_FOpenFile
|
||||
|
||||
Finds the file in the search path.
|
||||
Sets com_filesize and one of handle or file
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
skin.c - player skins
|
||||
Copyright (C) 1996-1997 Id Software, Inc.
|
||||
Copyright (C) 1999,2000 contributors of the QuakeForge project
|
||||
Portions Copyright (C) 1999,2000 Nelson Rush.
|
||||
|
@ -104,12 +105,13 @@ Returns a pointer to the skin bitmap, or NULL to use the default
|
|||
byte *Skin_Cache (skin_t *skin)
|
||||
{
|
||||
char name[1024];
|
||||
byte *raw;
|
||||
byte *out, *pix;
|
||||
pcx_t *pcx;
|
||||
int x, y;
|
||||
int dataByte;
|
||||
int runLength;
|
||||
// byte *raw;
|
||||
byte *out;//, *pix;
|
||||
// pcx_t *pcx;
|
||||
// int x, y;
|
||||
// int dataByte;
|
||||
// int runLength;
|
||||
QFile *f;
|
||||
|
||||
if (cls.downloadtype == dl_skin)
|
||||
return NULL; // use base until downloaded
|
||||
|
@ -128,19 +130,23 @@ byte *Skin_Cache (skin_t *skin)
|
|||
// load the pic from disk
|
||||
//
|
||||
snprintf(name, sizeof(name), "skins/%s.pcx", skin->name);
|
||||
raw = COM_LoadTempFile (name);
|
||||
if (!raw)
|
||||
// raw = COM_LoadTempFile (name);
|
||||
COM_FOpenFile (name, &f);
|
||||
if (f == NULL)
|
||||
{
|
||||
Con_Printf ("Couldn't load skin %s\n", name);
|
||||
snprintf(name, sizeof(name), "skins/%s.pcx", baseskin->string);
|
||||
raw = COM_LoadTempFile (name);
|
||||
if (!raw)
|
||||
// raw = COM_LoadTempFile (name);
|
||||
COM_FOpenFile (name, &f);
|
||||
if (f == NULL)
|
||||
{
|
||||
skin->failedload = true;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
LoadPCX (f, &out);
|
||||
#if 0
|
||||
//
|
||||
// parse the PCX file
|
||||
//
|
||||
|
@ -216,7 +222,7 @@ byte *Skin_Cache (skin_t *skin)
|
|||
}
|
||||
|
||||
skin->failedload = false;
|
||||
|
||||
#endif
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
|
@ -192,7 +192,7 @@ CFLAGS += @CFLAGS@ -DQUAKEWORLD -DLIBDIR=\"$(libdir)\" $(OPTFLAGS) $(DEFS) \
|
|||
-I. $(SRC_DIR_INC) -I$(QW_COMMON_DIR) -I$(COMMON_ODIR) -I$(COMMON_DIR)
|
||||
|
||||
GENERAL_SRC = $(CL_COMMON_SRC) \
|
||||
$(QW_CL_SRC) $(QW_NET_SRC) net_chan.c skin.c \
|
||||
$(QW_CL_SRC) $(QW_NET_SRC) net_chan.c skin.c pcx.c\
|
||||
$(SYS_SRC) $(QW_GENERAL_SRC)
|
||||
|
||||
# FIXME: add dos/win specifc source
|
||||
|
|
|
@ -159,7 +159,7 @@ UQ_NET_SRC = net_com.c mdfour.c net_dgrm.c net_loop.c net_main.c net_vcr.c $(NET
|
|||
|
||||
MISC_SRC = common.c crc.c cvar.c cmd.c mathlib.c register_check.c \
|
||||
wad.c zone.c cvars.c lib_replace.c qendian.c quakefs.c \
|
||||
quakeio.c qargs.c plugin.c
|
||||
quakeio.c qargs.c plugin.c pcx.c
|
||||
ifeq ($(GENERATIONS),yes)
|
||||
MISC_SRC += unzip.c
|
||||
endif
|
||||
|
|
Loading…
Reference in a new issue