dvr/app/jni/prboom/w_wad.h

147 lines
4.3 KiB
C
Raw Normal View History

2016-03-03 22:28:59 +00:00
/* Emacs style mode select -*- C++ -*-
*-----------------------------------------------------------------------------
*
*
* PrBoom: a Doom port merged with LxDoom and LSDLDoom
* based on BOOM, a modified and improved DOOM engine
* Copyright (C) 1999 by
* id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
* Copyright (C) 1999-2000 by
* Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
* Copyright 2005, 2006 by
* Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko
*
* 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.
*
* DESCRIPTION:
* WAD I/O functions.
*
*-----------------------------------------------------------------------------*/
#ifndef __W_WAD__
#define __W_WAD__
#ifdef __GNUG__
#pragma interface
#endif
//
// TYPES
//
typedef struct
{
char identification[4]; // Should be "IWAD" or "PWAD".
int numlumps;
int infotableofs;
} wadinfo_t;
typedef struct
{
int filepos;
int size;
char name[8];
} filelump_t;
//
// WADFILE I/O related stuff.
//
// CPhipps - defined enum in wider scope
// Ty 08/29/98 - add source field to identify where this lump came from
typedef enum {
// CPhipps - define elements in order of 'how new/unusual'
source_iwad=0, // iwad file load
source_pre, // predefined lump
source_auto_load, // lump auto-loaded by config file
source_pwad, // pwad file load
source_lmp, // lmp file load
source_net // CPhipps
} wad_source_t;
// CPhipps - changed wad init
// We _must_ have the wadfiles[] the same as those actually loaded, so there
// is no point having these separate entities. This belongs here.
typedef struct {
const char* name;
wad_source_t src;
int handle;
} wadfile_info_t;
extern wadfile_info_t *wadfiles;
extern size_t numwadfiles; // CPhipps - size of the wadfiles array
void W_Init(void); // CPhipps - uses the above array
void W_ReleaseAllWads(void); // Proff - Added for iwad switching
void W_InitCache(void);
void W_DoneCache(void);
typedef struct
{
// WARNING: order of some fields important (see info.c).
char name[9];
int size;
// killough 1/31/98: hash table fields, used for ultra-fast hash table lookup
int index, next;
// killough 4/17/98: namespace tags, to prevent conflicts between resources
enum {
ns_global=0,
ns_sprites,
ns_flats,
ns_colormaps,
ns_prboom
} li_namespace; // haleyjd 05/21/02: renamed from "namespace"
wadfile_info_t *wadfile;
int position;
wad_source_t source;
} lumpinfo_t;
extern lumpinfo_t *lumpinfo;
extern int numlumps;
// killough 4/17/98: if W_CheckNumForName() called with only
// one argument, pass ns_global as the default namespace
#define W_CheckNumForName(name) (W_CheckNumForName)(name, ns_global)
int (W_CheckNumForName)(const char* name, int); // killough 4/17/98
int W_GetNumForName (const char* name);
int W_LumpLength (int lump);
void W_ReadLump (int lump, void *dest);
// CPhipps - modified for 'new' lump locking
const void* W_CacheLumpNum (int lump);
const void* W_LockLumpNum(int lump);
void W_UnlockLumpNum(int lump);
// CPhipps - convenience macros
//#define W_CacheLumpNum(num) (W_CacheLumpNum)((num),1)
#define W_CacheLumpName(name) W_CacheLumpNum (W_GetNumForName(name))
//#define W_UnlockLumpNum(num) (W_UnlockLumpNum)((num),1)
#define W_UnlockLumpName(name) W_UnlockLumpNum (W_GetNumForName(name))
char *AddDefaultExtension(char *, const char *); // killough 1/18/98
void ExtractFileBase(const char *, char *); // killough
unsigned W_LumpNameHash(const char *s); // killough 1/31/98
void W_HashLumps(void); // cph 2001/07/07 - made public
#endif