123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- // 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:$
- //
- //-----------------------------------------------------------------------------
|