mirror of
https://github.com/id-Software/DOOM-3-BFG.git
synced 2026-03-20 09:00:25 +01:00
Initial commit
This commit is contained in:
487
doomclassic/doom/structs.h
Normal file
487
doomclassic/doom/structs.h
Normal file
@@ -0,0 +1,487 @@
|
||||
/*
|
||||
===========================================================================
|
||||
|
||||
Doom 3 BFG Edition GPL Source Code
|
||||
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
|
||||
|
||||
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
|
||||
|
||||
Doom 3 BFG Edition Source Code 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Doom 3 BFG Edition Source Code 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 Doom 3 BFG Edition Source Code. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below.
|
||||
|
||||
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
||||
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// am_map.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
int x, y;
|
||||
} fpoint_t;
|
||||
typedef struct
|
||||
{
|
||||
fpoint_t a, b;
|
||||
} fline_t;
|
||||
typedef struct
|
||||
{
|
||||
fixed_t x,y;
|
||||
} mpoint_t;
|
||||
typedef struct
|
||||
{
|
||||
mpoint_t a, b;
|
||||
} mline_t;
|
||||
typedef struct
|
||||
{
|
||||
fixed_t slp, islp;
|
||||
} islope_t;
|
||||
// am_map.structs end //
|
||||
// f_finale.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
char *name;
|
||||
mobjtype_t type;
|
||||
} castinfo_t;
|
||||
// f_finale.structs end //
|
||||
// i_input.structs begin //
|
||||
|
||||
enum {
|
||||
J_DELTAX,
|
||||
J_DELTAY,
|
||||
};
|
||||
enum InputEventType
|
||||
{
|
||||
IETAxis,
|
||||
IETButtonDigital,
|
||||
IETButtonAnalog,
|
||||
IETNone,
|
||||
} ;
|
||||
struct InputEvent
|
||||
{
|
||||
InputEventType type;
|
||||
int data;
|
||||
int action;
|
||||
int port;
|
||||
} ;
|
||||
// i_input.structs end //
|
||||
|
||||
// mus2midi.structs begin //
|
||||
typedef struct tagMUSheader_t {
|
||||
char ID[4]; // identifier "MUS" 0x1A
|
||||
WORD scoreLen;
|
||||
WORD scoreStart;
|
||||
WORD channels; // count of primary channels
|
||||
WORD sec_channels; // count of secondary channels
|
||||
WORD instrCnt;
|
||||
WORD dummy;
|
||||
//// variable-length part starts here
|
||||
} MUSheader_t ;
|
||||
typedef struct tagMidiHeaderChunk_t {
|
||||
char name[4];
|
||||
int length;
|
||||
|
||||
short format; // make 0
|
||||
short ntracks; // make 1
|
||||
short division; // 0xe250??
|
||||
} MidiHeaderChunk_t;
|
||||
typedef struct tagMidiTrackChunk_t {
|
||||
char name[4];
|
||||
int length;
|
||||
} MidiTrackChunk_t;
|
||||
// mus2midi.structs end //
|
||||
// m_menu.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
// 0 = no cursor here, 1 = ok, 2 = arrows ok
|
||||
short status;
|
||||
|
||||
char name[10];
|
||||
|
||||
// choice = menu item #.
|
||||
// if status = 2,
|
||||
// choice=0:leftarrow,1:rightarrow
|
||||
void (*routine)(int choice);
|
||||
|
||||
// hotkey in menu
|
||||
char alphaKey;
|
||||
} menuitem_t;
|
||||
typedef struct menu_s
|
||||
{
|
||||
short numitems; // # of menu items
|
||||
struct menu_s* prevMenu; // previous menu
|
||||
menuitem_t* menuitems; // menu items
|
||||
void (*routine)(); // draw routine
|
||||
short x;
|
||||
short y; // x,y of menu
|
||||
short lastOn; // last item user was on in menu
|
||||
} menu_t;
|
||||
typedef enum
|
||||
{
|
||||
newgame = 0,
|
||||
options,
|
||||
loadgame,
|
||||
savegame,
|
||||
quitdoom,
|
||||
main_end
|
||||
} main_e;
|
||||
typedef enum
|
||||
{
|
||||
g_accept,
|
||||
g_cancel,
|
||||
g_change,
|
||||
qut_end
|
||||
} quit_e;
|
||||
typedef enum
|
||||
{
|
||||
ep1,
|
||||
ep2,
|
||||
ep3,
|
||||
ep4,
|
||||
ep_end
|
||||
} episodes_e;
|
||||
typedef enum
|
||||
{
|
||||
ex1,
|
||||
ex2,
|
||||
ex_end
|
||||
} expansions_e;
|
||||
typedef enum
|
||||
{
|
||||
killthings,
|
||||
toorough,
|
||||
hurtme,
|
||||
violence,
|
||||
nightmare,
|
||||
newg_end
|
||||
} newgame_e;
|
||||
typedef enum
|
||||
{
|
||||
endgame,
|
||||
scrnsize,
|
||||
messages,
|
||||
//detail,
|
||||
option_empty1,
|
||||
mousesens,
|
||||
option_empty2,
|
||||
soundvol,
|
||||
opt_end
|
||||
} options_e;
|
||||
typedef enum
|
||||
{
|
||||
rdthsempty1,
|
||||
read1_end
|
||||
} read_e;
|
||||
typedef enum
|
||||
{
|
||||
rdthsempty2,
|
||||
read2_end
|
||||
} read_e2;
|
||||
typedef enum
|
||||
{
|
||||
sfx_vol,
|
||||
sfx_empty1,
|
||||
music_vol,
|
||||
sfx_empty2,
|
||||
sound_end
|
||||
} sound_e;
|
||||
typedef enum
|
||||
{
|
||||
load1,
|
||||
load2,
|
||||
load3,
|
||||
load4,
|
||||
load5,
|
||||
load6,
|
||||
load_end
|
||||
} load_e;
|
||||
// m_menu.structs end //
|
||||
// m_misc.structs begin //
|
||||
struct default_t
|
||||
{
|
||||
char* name;
|
||||
union {
|
||||
int * location;
|
||||
const char * * charLocation;
|
||||
};
|
||||
union {
|
||||
int defaultvalue;
|
||||
const char * charDefault;
|
||||
};
|
||||
int scantranslate; // PC scan code hack
|
||||
int untranslated; // lousy hack
|
||||
|
||||
default_t( ) :
|
||||
name( NULL ),
|
||||
location( NULL ),
|
||||
defaultvalue( 0 ),
|
||||
scantranslate( 0 ),
|
||||
untranslated( 0 ) {
|
||||
}
|
||||
|
||||
default_t( char * name_, int * location_, int defaultvalue_ ) :
|
||||
name( name_ ),
|
||||
location( location_ ),
|
||||
defaultvalue( defaultvalue_ ) {
|
||||
}
|
||||
|
||||
default_t( char * name_, const char * * charLocation_, const char * charDefault_ ) :
|
||||
name( name_ ),
|
||||
charLocation( charLocation_ ),
|
||||
charDefault( charDefault_ ) {
|
||||
}
|
||||
};
|
||||
typedef struct
|
||||
{
|
||||
char manufacturer;
|
||||
char version;
|
||||
char encoding;
|
||||
char bits_per_pixel;
|
||||
|
||||
unsigned short xmin;
|
||||
unsigned short ymin;
|
||||
unsigned short xmax;
|
||||
unsigned short ymax;
|
||||
|
||||
unsigned short hres;
|
||||
unsigned short 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;
|
||||
// m_misc.structs end //
|
||||
// p_enemy.structs begin //
|
||||
typedef enum
|
||||
{
|
||||
DI_EAST,
|
||||
DI_NORTHEAST,
|
||||
DI_NORTH,
|
||||
DI_NORTHWEST,
|
||||
DI_WEST,
|
||||
DI_SOUTHWEST,
|
||||
DI_SOUTH,
|
||||
DI_SOUTHEAST,
|
||||
DI_NODIR,
|
||||
NUMDIRS
|
||||
|
||||
} dirtype_t;
|
||||
// p_enemy.structs end //
|
||||
// p_saveg.structs begin //
|
||||
typedef enum
|
||||
{
|
||||
tc_end = 0,
|
||||
tc_mobj
|
||||
|
||||
} thinkerclass_t;
|
||||
typedef enum
|
||||
{
|
||||
tc_ceiling = 2,
|
||||
tc_door,
|
||||
tc_floor,
|
||||
tc_plat,
|
||||
tc_flash,
|
||||
tc_strobe,
|
||||
tc_glow,
|
||||
tc_endspecials,
|
||||
tc_fire
|
||||
|
||||
} specials_e;
|
||||
// p_saveg.structs end //
|
||||
// p_spec.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
qboolean istexture;
|
||||
int picnum;
|
||||
int basepic;
|
||||
int numpics;
|
||||
int speed;
|
||||
|
||||
} anim_t2;
|
||||
typedef struct
|
||||
{
|
||||
qboolean istexture; // if false, it is a flat
|
||||
char endname[9];
|
||||
char startname[9];
|
||||
int speed;
|
||||
} animdef_t;
|
||||
// p_spec.structs end //
|
||||
// r_bsp.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
int first;
|
||||
int last;
|
||||
|
||||
} cliprange_t;
|
||||
// r_bsp.structs end //
|
||||
// r_data.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
short originx;
|
||||
short originy;
|
||||
short patch;
|
||||
short stepdir;
|
||||
short colormap;
|
||||
} mappatch_t;
|
||||
typedef struct
|
||||
{
|
||||
char name[8];
|
||||
int masked;
|
||||
short width;
|
||||
short height;
|
||||
void **columndirectory; // OBSOLETE
|
||||
short patchcount;
|
||||
mappatch_t patches[1];
|
||||
} maptexture_t;
|
||||
typedef struct
|
||||
{
|
||||
// Block origin (allways UL),
|
||||
// which has allready accounted
|
||||
// for the internal origin of the patch.
|
||||
int originx;
|
||||
int originy;
|
||||
int patch;
|
||||
} texpatch_t;
|
||||
typedef struct
|
||||
{
|
||||
// Keep name for switch changing, etc.
|
||||
char name[8];
|
||||
short width;
|
||||
short height;
|
||||
|
||||
// All the patches[patchcount]
|
||||
// are drawn back to front into the cached texture.
|
||||
short patchcount;
|
||||
texpatch_t patches[1];
|
||||
|
||||
} texture_t;
|
||||
// r_data.structs end //
|
||||
// r_things.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
int x1;
|
||||
int x2;
|
||||
|
||||
int column;
|
||||
int topclip;
|
||||
int bottomclip;
|
||||
|
||||
} maskdraw_t;
|
||||
// r_things.structs end //
|
||||
// st_stuff.structs begin //
|
||||
typedef enum
|
||||
{
|
||||
NoState = -1,
|
||||
StatCount,
|
||||
ShowNextLoc
|
||||
|
||||
} stateenum_t;
|
||||
// st_stuff.structs end //
|
||||
// s_sound.structs begin //
|
||||
typedef struct
|
||||
{
|
||||
// sound information (if null, channel avail.)
|
||||
sfxinfo_t* sfxinfo;
|
||||
|
||||
// origin of sound
|
||||
void* origin;
|
||||
|
||||
// handle of the sound being played
|
||||
int handle;
|
||||
|
||||
} channel_t;
|
||||
// s_sound.structs end //
|
||||
// wi_stuff.structs begin //
|
||||
typedef enum
|
||||
{
|
||||
ANIM_ALWAYS,
|
||||
ANIM_RANDOM,
|
||||
ANIM_LEVEL
|
||||
|
||||
} animenum_t;
|
||||
typedef struct
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
|
||||
} point_t;
|
||||
typedef struct
|
||||
{
|
||||
animenum_t type;
|
||||
|
||||
// period in tics between animations
|
||||
int period;
|
||||
|
||||
// number of animation frames
|
||||
int nanims;
|
||||
|
||||
// location of animation
|
||||
point_t loc;
|
||||
|
||||
// ALWAYS: n/a,
|
||||
// RANDOM: period deviation (<256),
|
||||
// LEVEL: level
|
||||
int data1;
|
||||
|
||||
// ALWAYS: n/a,
|
||||
// RANDOM: random base period,
|
||||
// LEVEL: n/a
|
||||
int data2;
|
||||
|
||||
// actual graphics for frames of animations
|
||||
patch_t* p[3];
|
||||
|
||||
// following must be initialized to zero before use!
|
||||
|
||||
// next value of bcnt (used in conjunction with period)
|
||||
int nexttic;
|
||||
|
||||
// last drawn animation frame
|
||||
int lastdrawn;
|
||||
|
||||
// next frame number to animate
|
||||
int ctr;
|
||||
|
||||
// used by RANDOM and LEVEL when animating
|
||||
int state;
|
||||
|
||||
} anim_t;
|
||||
// wi_stuff.structs end //
|
||||
// z_zone.structs begin //
|
||||
struct lumplookup
|
||||
{
|
||||
int lump;
|
||||
lumplookup *next;
|
||||
lumplookup *prev;
|
||||
};
|
||||
typedef struct
|
||||
{
|
||||
// total bytes malloced, including header
|
||||
int size;
|
||||
|
||||
// start / end cap for linked list
|
||||
memblock_t blocklist;
|
||||
|
||||
memblock_t* rover;
|
||||
|
||||
} memzone_t;
|
||||
// z_zone.structs end //
|
||||
Reference in New Issue
Block a user