123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- /*
- ===========================================================================
- 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.
- ===========================================================================
- */
- #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,
- // Gives kfa at the beginning of the level.
- CF_GIVEALL = 8,
- CF_INFAMMO = 16,
- } 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];
- qboolean cards[NUMCARDS];
- qboolean backpack;
-
- // Frags, kills of other players.
- int frags[MAXPLAYERS];
- weapontype_t readyweapon;
-
- // Is wp_nochange if not changing.
- weapontype_t pendingweapon;
- int 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;
- int chainsawKills;
- int berserkKills;
- // Hint messages.
- const 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.
- qboolean didsecret;
- } player_t;
- //
- // INTERMISSION
- // Structure passed e.g. to WI_Start(wb)
- //
- typedef struct
- {
- qboolean 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
- qboolean 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
|