home *** CD-ROM | disk | FTP | other *** search
- /* Emacs style mode select -*- C++ -*- */
- /* ----------------------------------------------------------------------------- */
- /* */
- /* $Id:$ */
- /* */
- /* Copyright (C) 1993-1996 by id Software, Inc. */
- /* */
- /* This source is available for distribution and/or modification */
- /* only under the terms of the DOOM Source Code License as */
- /* published by id Software. All rights reserved. */
- /* */
- /* The source is distributed in the hope that it will be useful, */
- /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
- /* FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License */
- /* for more details. */
- /* */
- /* DESCRIPTION: */
- /* */
- /* */
- /* ----------------------------------------------------------------------------- */
-
-
- #ifndef __D_PLAYER__
- #define __D_PLAYER__
-
-
- /* The player data structure depends on a number */
- /* of other structs: items (internal inventory), */
- /* animation states (closely tied to the sprites */
- /* used to represent them, unfortunately). */
- #include "d_items.h"
- #include "p_pspr.h"
-
- /* In addition, the player is just a special */
- /* case of the generic moving object/actor. */
- #include "p_mobj.h"
-
- /* Finally, for odd reasons, the player input */
- /* is buffered within the player data struct, */
- /* as commands per game tick. */
- #include "d_ticcmd.h"
-
- #ifdef __GNUG__
- #pragma interface
- #endif
-
-
-
-
- /* */
- /* Player states. */
- /* */
- typedef enum
- {
- /* Playing or camping. */
- PST_LIVE,
- /* Dead on the ground, view follows killer. */
- PST_DEAD,
- /* Ready to restart/respawn??? */
- PST_REBORN
-
- } playerstate_t;
-
-
- /* */
- /* Player internal flags, for cheats and debug. */
- /* */
- typedef enum
- {
- /* No clipping, walk through barriers. */
- CF_NOCLIP = 1,
- /* No damage, no health loss. */
- CF_GODMODE = 2,
- /* Not really a cheat, just a debug aid. */
- CF_NOMOMENTUM = 4
-
- } cheat_t;
-
-
- /* */
- /* Extended player object info: player_t */
- /* */
- typedef struct player_s
- {
- mobj_t* mo;
- playerstate_t playerstate;
- ticcmd_t cmd;
-
- /* Determine POV, */
- /* including viewpoint bobbing during movement. */
- /* Focal origin above r.z */
- fixed_t viewz;
- /* Base height above floor for viewz. */
- fixed_t viewheight;
- /* Bob/squat speed. */
- fixed_t deltaviewheight;
- /* bounded/scaled total momentum. */
- fixed_t bob;
-
- /* This is only used between levels, */
- /* mo->health is used during levels. */
- int health;
- int armorpoints;
- /* Armor type is 0-2. */
- int armortype;
-
- /* Power ups. invinc and invis are tic counters. */
- int powers[NUMPOWERS];
- boolean cards[NUMCARDS];
- boolean backpack;
-
- /* Frags, kills of other players. */
- int frags[MAXPLAYERS];
- weapontype_t readyweapon;
-
- /* Is wp_nochange if not changing. */
- weapontype_t pendingweapon;
-
- boolean weaponowned[NUMWEAPONS];
- int ammo[NUMAMMO];
- int maxammo[NUMAMMO];
-
- /* True if button down last tic. */
- int attackdown;
- int usedown;
-
- /* Bit flags, for cheats and debug. */
- /* See cheat_t, above. */
- int cheats;
-
- /* Refired shots are less accurate. */
- int refire;
-
- /* For intermission stats. */
- int killcount;
- int itemcount;
- int secretcount;
-
- /* Hint messages. */
- char* message;
-
- /* For screen flashing (red or bright). */
- int damagecount;
- int bonuscount;
-
- /* Who did damage (NULL for floors/ceilings). */
- mobj_t* attacker;
-
- /* So gun flashes light up areas. */
- int extralight;
-
- /* Current PLAYPAL, ??? */
- /* can be set to REDCOLORMAP for pain, etc. */
- int fixedcolormap;
-
- /* Player skin colorshift, */
- /* 0-3 for which color to draw player. */
- int colormap;
-
- /* Overlay view sprites (gun, etc). */
- pspdef_t psprites[NUMPSPRITES];
-
- /* True if secret level has been done. */
- boolean didsecret;
-
- } player_t;
-
-
- /* */
- /* INTERMISSION */
- /* Structure passed e.g. to WI_Start(wb) */
- /* */
- typedef struct
- {
- boolean in; /* whether the player is in game */
-
- /* Player stats, kills, collected items etc. */
- int skills;
- int sitems;
- int ssecret;
- int stime;
- int frags[4];
- int score; /* current score on entry, modified on return */
-
- } wbplayerstruct_t;
-
- typedef struct
- {
- int epsd; /* episode # (0-2) */
-
- /* if true, splash the secret level */
- boolean didsecret;
-
- /* previous and next levels, origin 0 */
- int last;
- int next;
-
- int maxkills;
- int maxitems;
- int maxsecret;
- int maxfrags;
-
- /* the par time */
- int partime;
-
- /* index of this player in game */
- int pnum;
-
- wbplayerstruct_t plyr[MAXPLAYERS];
-
- } wbstartstruct_t;
-
-
- #endif
- /* ----------------------------------------------------------------------------- */
- /* */
- /* $Log:$ */
- /* */
- /* ----------------------------------------------------------------------------- */
-