⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p_local.h

📁 The source code of Doom legacy for windows
💻 H
字号:
// Emacs style mode select   -*- C++ -*-//-----------------------------------------------------------------------------//// $Id: p_local.h,v 1.17 2001/04/17 22:26:07 calumr Exp $//// Copyright (C) 1993-1996 by id Software, Inc.// Portions Copyright (C) 1998-2000 by DooM Legacy Team.//// This program 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 2// of the License, or (at your option) any later version.//// This program 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.////// $Log: p_local.h,v $// Revision 1.17  2001/04/17 22:26:07  calumr// Initial Mac add//// Revision 1.16  2001/03/21 18:24:38  stroggonmeth// Misc changes and fixes. Code cleanup//// Revision 1.15  2001/02/10 12:27:14  bpereira// no message//// Revision 1.14  2001/01/25 22:15:43  bpereira// added heretic support//// Revision 1.13  2000/11/03 02:37:36  stroggonmeth// Fix a few warnings when compiling.//// Revision 1.12  2000/11/02 19:49:35  bpereira// no message//// Revision 1.11  2000/11/02 17:50:08  stroggonmeth// Big 3Dfloors & FraggleScript commit!!//// Revision 1.10  2000/10/21 08:43:30  bpereira// no message//// Revision 1.9  2000/08/31 14:30:55  bpereira// no message//// Revision 1.8  2000/04/16 18:38:07  bpereira// no message//// Revision 1.7  2000/04/13 23:47:47  stroggonmeth// See logs//// Revision 1.6  2000/04/11 19:07:24  stroggonmeth// Finished my logs, fixed a crashing bug.//// Revision 1.5  2000/04/08 17:29:24  stroggonmeth// no message//// Revision 1.4  2000/04/06 20:40:22  hurdler// Mostly remove warnings under windows//// Revision 1.3  2000/04/04 00:32:46  stroggonmeth// Initial Boom compatability plus few misc changes all around.//// Revision 1.2  2000/02/27 00:42:10  hurdler// fix CR+LF problem//// Revision 1.1.1.1  2000/02/22 20:32:32  hurdler// Initial import into CVS (v1.29 pr3)////// DESCRIPTION://      Play functions, animation, global header.////-----------------------------------------------------------------------------#ifndef __P_LOCAL__#define __P_LOCAL__#include "command.h"#include "d_player.h"#include "d_think.h"#include "m_fixed.h"#include "m_bbox.h"#include "p_tick.h"#include "r_defs.h"#include "p_maputl.h"// SoM: These are only needed in p_spec.cvoid        R_AddPortal(line_t*  line, portal_t* portal);portal_t*   R_CreatePortal(portaltype_e  type, line_t* mline, sector_t* msector, portal_t* parent);#define FLOATSPEED              (FRACUNIT*4)// added by Boris : for dehacked patches, replaced #define by intextern int MAXHEALTH;   // 100#define VIEWHEIGHT               41#define VIEWHEIGHTS             "41"// default viewheight is changeable at consoleextern consvar_t cv_viewheight; // p_mobj.c// mapblocks are used to check movement// against lines and things#define MAPBLOCKUNITS   128#define MAPBLOCKSIZE    (MAPBLOCKUNITS*FRACUNIT)#define MAPBLOCKSHIFT   (FRACBITS+7)#define MAPBMASK        (MAPBLOCKSIZE-1)#define MAPBTOFRAC      (MAPBLOCKSHIFT-FRACBITS)// player radius used only in am_map.c#define PLAYERRADIUS    (16*FRACUNIT)// MAXRADIUS is for precalculated sector block boxes// the spider demon is larger,// but we do not have any moving sectors nearby#define MAXRADIUS       (32*FRACUNIT)#define MAXMOVE         (30*FRACUNIT/NEWTICRATERATIO)//added:26-02-98: max Z move up or down without jumping//      above this, a heigth difference is considered as a 'dropoff'#define MAXSTEPMOVE     (24*FRACUNIT)//added:22-02-98: initial momz when player jumps (moves up)#define JUMPGRAVITY     (6*FRACUNIT/NEWTICRATERATIO)#define USERANGE        (64*FRACUNIT)#define MELEERANGE      (64*FRACUNIT)#define MISSILERANGE    (32*64*FRACUNIT)// follow a player exlusively for 3 seconds#define BASETHRESHOLD   100//#define AIMINGTOSLOPE(aiming)   finetangent[(2048+(aiming>>ANGLETOFINESHIFT)) & FINEMASK]#define AIMINGTOSLOPE(aiming)   finesine[(aiming>>ANGLETOFINESHIFT) & FINEMASK]//26-07-98: p_mobj.cextern  consvar_t cv_gravity;//// P_TICK//// both the head and tail of the thinker listextern  thinker_t       thinkercap;void P_InitThinkers (void);void P_AddThinker (thinker_t* thinker);void P_RemoveThinker (thinker_t* thinker);//// P_PSPR//void P_SetupPsprites (player_t* curplayer);void P_MovePsprites (player_t* curplayer);void P_DropWeapon (player_t* player);//// P_USER//typedef struct camera_s{    boolean     chase;    angle_t     aiming;    int         fixedcolormap;    //SoM: Things used by FS cameras.    fixed_t     viewheight;    angle_t     startangle;    mobj_t*     mo;} camera_t;extern camera_t camera;extern consvar_t cv_cam_dist;  extern consvar_t cv_cam_height;extern consvar_t cv_cam_speed;void   P_ResetCamera (player_t* player);void   P_PlayerThink (player_t* player);// client predictionvoid   CL_ResetSpiritPosition (mobj_t *mobj);void   P_MoveSpirit (player_t* p,ticcmd_t *cmd, int realtics);//// P_MOBJ//#define ONFLOORZ        MININT#define ONCEILINGZ      MAXINT// Time interval for item respawning.// WARING MUST be a power of 2#define ITEMQUESIZE     128extern mapthing_t     *itemrespawnque[ITEMQUESIZE];extern tic_t          itemrespawntime[ITEMQUESIZE];extern int              iquehead;extern int              iquetail;void P_RespawnSpecials (void);void P_RespawnWeapons(void);mobj_t*P_SpawnMobj( fixed_t       x,  fixed_t       y,  fixed_t       z,  mobjtype_t    type );void    P_RemoveMobj (mobj_t* th);boolean P_SetMobjState (mobj_t* mobj, statenum_t state);void    P_MobjThinker (mobj_t* mobj);//spawn splash at surface of water in sector where the mobj residesvoid    P_SpawnSplash (mobj_t* mo, fixed_t z);//Fab: when fried in in lava/slime, spawn some smokevoid    P_SpawnSmoke (fixed_t x, fixed_t y, fixed_t z);void    P_SpawnPuff (fixed_t x, fixed_t y, fixed_t z);void    P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, int damage);void    P_SpawnBloodSplats (fixed_t x, fixed_t y, fixed_t z, int damage, fixed_t momx, fixed_t momy);mobj_t *P_SpawnMissile (mobj_t* source, mobj_t* dest, mobjtype_t type);mobj_t *P_SPMAngle ( mobj_t* source, mobjtype_t type, angle_t angle );#define P_SpawnPlayerMissile(s,t) P_SPMAngle(s,t,s->angle)//// P_ENEMY//// when pushing a line //#define MAXSPECIALCROSS 16extern  int     *spechit;                //SoM: 3/15/2000: Limit removalextern  int     numspechit;void P_NoiseAlert (mobj_t* target, mobj_t* emmiter);void P_UnsetThingPosition (mobj_t* thing);void P_SetThingPosition (mobj_t* thing);//// P_MAP//// If "floatok" true, move would be ok// if within "tmfloorz - tmceilingz".extern boolean          floatok;extern fixed_t          tmfloorz;extern fixed_t          tmceilingz;extern fixed_t          tmsectorceilingz;      //added:28-02-98: p_spawnmobjextern mobj_t*          tmfloorthing;extern  line_t*         ceilingline;extern  line_t*         blockingline;extern  msecnode_t*     sector_list;boolean P_CheckPosition (mobj_t *thing, fixed_t x, fixed_t y);boolean P_TryMove (mobj_t* thing, fixed_t x, fixed_t y, boolean allowdropoff);boolean P_TeleportMove (mobj_t* thing, fixed_t x, fixed_t y);void    P_SlideMove (mobj_t* mo);boolean P_CheckSight (mobj_t* t1, mobj_t* t2);void    P_UseLines (player_t* player);boolean P_CheckSector(sector_t *sector, boolean crunch);boolean P_ChangeSector (sector_t* sector, boolean crunch);void    P_DelSeclist(msecnode_t *);void    P_CreateSecNodeList(mobj_t*,fixed_t,fixed_t);int     P_GetMoveFactor(mobj_t* mo);void    P_Initsecnode( void );extern mobj_t*  linetarget;     // who got hit (or NULL)extern fixed_t attackrange;fixed_tP_AimLineAttack( mobj_t*       t1,  angle_t       angle,  fixed_t       distance );voidP_LineAttack( mobj_t*       t1,  angle_t       angle,  fixed_t       distance,  fixed_t       slope,  int           damage );voidP_RadiusAttack( mobj_t*       spot,  mobj_t*       source,  int           damage );//// P_SETUP//extern byte*            rejectmatrix;   // for fast sight rejectionextern short*           blockmaplump;   // offsets in blockmap are from hereextern short*           blockmap;extern int              bmapwidth;extern int              bmapheight;     // in mapblocksextern fixed_t          bmaporgx;extern fixed_t          bmaporgy;       // origin of block mapextern mobj_t**         blocklinks;     // for thing chains//// P_INTER//extern int              maxammo[NUMAMMO];extern int              clipammo[NUMAMMO];voidP_TouchSpecialThing( mobj_t*       special,  mobj_t*       toucher );booleanP_DamageMobj( mobj_t*       target,  mobj_t*       inflictor,  mobj_t*       source,  int           damage );//// P_SIGHT//// slopes to top and bottom of targetextern fixed_t  topslope;extern fixed_t  bottomslope;//// P_SPEC//#include "p_spec.h"//SoM: 3/6/2000: Added public "boomsupport variable"extern int boomsupport;extern int variable_friction;extern int allow_pushers;// heretic specificextern int ceilmovesound;extern int doorclosesound;#define TELEFOGHEIGHT  (32*FRACUNIT)extern mobjtype_t      PuffType;#define FOOTCLIPSIZE   (10*FRACUNIT)#define HITDICE(a) ((1+(P_Random()&7))*a)#define MAXCHICKENHEALTH 30#define BLINKTHRESHOLD  (4*32)#define WPNLEV2TICS     (40*TICRATE)#define FLIGHTTICS      (60*TICRATE)#define CHICKENTICS     (40*TICRATE)#define FLOATRANDZ      (MAXINT-1)void P_RepositionMace(mobj_t *mo);void P_ActivateBeak(player_t *player);void P_PlayerUseArtifact(player_t *player, artitype_t arti);void P_DSparilTeleport(mobj_t *actor);void P_InitMonsters(void);boolean P_LookForMonsters(mobj_t *actor);int P_GetThingFloorType(mobj_t *thing);mobj_t *P_CheckOnmobj(mobj_t *thing);void P_AddMaceSpot(mapthing_t *mthing);boolean P_SightPathTraverse (fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2);void P_HerePlayerInSpecialSector(player_t *player);void P_UpdateBeak(player_t *player, pspdef_t *psp);boolean P_TestMobjLocation(mobj_t *mobj);void P_PostChickenWeapon(player_t *player, weapontype_t weapon);void P_SetPsprite ( player_t*     player,                    int           position,                    statenum_t    stnum );boolean P_UseArtifact(player_t *player, artitype_t arti);boolean P_Teleport(mobj_t *thing, fixed_t x, fixed_t y, angle_t angle);boolean P_SeekerMissile(mobj_t *actor, angle_t thresh, angle_t turnMax);mobj_t *P_SpawnMissileAngle(mobj_t *source, mobjtype_t type,        angle_t angle, fixed_t momz);boolean P_SetMobjStateNF(mobj_t *mobj, statenum_t state);boolean P_CheckMissileSpawn (mobj_t* th);void P_ThrustMobj(mobj_t *mo, angle_t angle, fixed_t move);void P_Thrust(player_t *player, angle_t angle, fixed_t move);void P_ExplodeMissile (mobj_t* mo);void P_SetMessage(player_t *player, char *message, boolean ultmsg);boolean P_GiveArtifact(player_t *player, artitype_t arti, mobj_t *mo);boolean P_ChickenMorphPlayer(player_t *player);void P_Massacre(void);#endif  // __P_LOCAL__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -