|
|
1.1 ! root 1: // Emacs style mode select -*- C++ -*- ! 2: //----------------------------------------------------------------------------- ! 3: // ! 4: // $Id:$ ! 5: // ! 6: // Copyright (C) 1993-1996 by id Software, Inc. ! 7: // ! 8: // This source is available for distribution and/or modification ! 9: // only under the terms of the DOOM Source Code License as ! 10: // published by id Software. All rights reserved. ! 11: // ! 12: // The source is distributed in the hope that it will be useful, ! 13: // but WITHOUT ANY WARRANTY; without even the implied warranty of ! 14: // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License ! 15: // for more details. ! 16: // ! 17: // DESCRIPTION: ! 18: // ! 19: // ! 20: //----------------------------------------------------------------------------- ! 21: ! 22: ! 23: #ifndef __D_PLAYER__ ! 24: #define __D_PLAYER__ ! 25: ! 26: ! 27: // The player data structure depends on a number ! 28: // of other structs: items (internal inventory), ! 29: // animation states (closely tied to the sprites ! 30: // used to represent them, unfortunately). ! 31: #include "d_items.h" ! 32: #include "p_pspr.h" ! 33: ! 34: // In addition, the player is just a special ! 35: // case of the generic moving object/actor. ! 36: #include "p_mobj.h" ! 37: ! 38: // Finally, for odd reasons, the player input ! 39: // is buffered within the player data struct, ! 40: // as commands per game tick. ! 41: #include "d_ticcmd.h" ! 42: ! 43: #ifdef __GNUG__ ! 44: #pragma interface ! 45: #endif ! 46: ! 47: ! 48: ! 49: ! 50: // ! 51: // Player states. ! 52: // ! 53: typedef enum ! 54: { ! 55: // Playing or camping. ! 56: PST_LIVE, ! 57: // Dead on the ground, view follows killer. ! 58: PST_DEAD, ! 59: // Ready to restart/respawn??? ! 60: PST_REBORN ! 61: ! 62: } playerstate_t; ! 63: ! 64: ! 65: // ! 66: // Player internal flags, for cheats and debug. ! 67: // ! 68: typedef enum ! 69: { ! 70: // No clipping, walk through barriers. ! 71: CF_NOCLIP = 1, ! 72: // No damage, no health loss. ! 73: CF_GODMODE = 2, ! 74: // Not really a cheat, just a debug aid. ! 75: CF_NOMOMENTUM = 4 ! 76: ! 77: } cheat_t; ! 78: ! 79: ! 80: // ! 81: // Extended player object info: player_t ! 82: // ! 83: typedef struct player_s ! 84: { ! 85: mobj_t* mo; ! 86: playerstate_t playerstate; ! 87: ticcmd_t cmd; ! 88: ! 89: // Determine POV, ! 90: // including viewpoint bobbing during movement. ! 91: // Focal origin above r.z ! 92: fixed_t viewz; ! 93: // Base height above floor for viewz. ! 94: fixed_t viewheight; ! 95: // Bob/squat speed. ! 96: fixed_t deltaviewheight; ! 97: // bounded/scaled total momentum. ! 98: fixed_t bob; ! 99: ! 100: // This is only used between levels, ! 101: // mo->health is used during levels. ! 102: int health; ! 103: int armorpoints; ! 104: // Armor type is 0-2. ! 105: int armortype; ! 106: ! 107: // Power ups. invinc and invis are tic counters. ! 108: int powers[NUMPOWERS]; ! 109: boolean cards[NUMCARDS]; ! 110: boolean backpack; ! 111: ! 112: // Frags, kills of other players. ! 113: int frags[MAXPLAYERS]; ! 114: weapontype_t readyweapon; ! 115: ! 116: // Is wp_nochange if not changing. ! 117: weapontype_t pendingweapon; ! 118: ! 119: boolean weaponowned[NUMWEAPONS]; ! 120: int ammo[NUMAMMO]; ! 121: int maxammo[NUMAMMO]; ! 122: ! 123: // True if button down last tic. ! 124: int attackdown; ! 125: int usedown; ! 126: ! 127: // Bit flags, for cheats and debug. ! 128: // See cheat_t, above. ! 129: int cheats; ! 130: ! 131: // Refired shots are less accurate. ! 132: int refire; ! 133: ! 134: // For intermission stats. ! 135: int killcount; ! 136: int itemcount; ! 137: int secretcount; ! 138: ! 139: // Hint messages. ! 140: char* message; ! 141: ! 142: // For screen flashing (red or bright). ! 143: int damagecount; ! 144: int bonuscount; ! 145: ! 146: // Who did damage (NULL for floors/ceilings). ! 147: mobj_t* attacker; ! 148: ! 149: // So gun flashes light up areas. ! 150: int extralight; ! 151: ! 152: // Current PLAYPAL, ??? ! 153: // can be set to REDCOLORMAP for pain, etc. ! 154: int fixedcolormap; ! 155: ! 156: // Player skin colorshift, ! 157: // 0-3 for which color to draw player. ! 158: int colormap; ! 159: ! 160: // Overlay view sprites (gun, etc). ! 161: pspdef_t psprites[NUMPSPRITES]; ! 162: ! 163: // True if secret level has been done. ! 164: boolean didsecret; ! 165: ! 166: } player_t; ! 167: ! 168: ! 169: // ! 170: // INTERMISSION ! 171: // Structure passed e.g. to WI_Start(wb) ! 172: // ! 173: typedef struct ! 174: { ! 175: boolean in; // whether the player is in game ! 176: ! 177: // Player stats, kills, collected items etc. ! 178: int skills; ! 179: int sitems; ! 180: int ssecret; ! 181: int stime; ! 182: int frags[4]; ! 183: int score; // current score on entry, modified on return ! 184: ! 185: } wbplayerstruct_t; ! 186: ! 187: typedef struct ! 188: { ! 189: int epsd; // episode # (0-2) ! 190: ! 191: // if true, splash the secret level ! 192: boolean didsecret; ! 193: ! 194: // previous and next levels, origin 0 ! 195: int last; ! 196: int next; ! 197: ! 198: int maxkills; ! 199: int maxitems; ! 200: int maxsecret; ! 201: int maxfrags; ! 202: ! 203: // the par time ! 204: int partime; ! 205: ! 206: // index of this player in game ! 207: int pnum; ! 208: ! 209: wbplayerstruct_t plyr[MAXPLAYERS]; ! 210: ! 211: } wbstartstruct_t; ! 212: ! 213: ! 214: #endif ! 215: //----------------------------------------------------------------------------- ! 216: // ! 217: // $Log:$ ! 218: // ! 219: //-----------------------------------------------------------------------------
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.