Annotation of doom/p_spec.h, revision 1.1.1.1

1.1       root        1: /* P_spec.h */
                      2: 
                      3: /*
                      4: ===============================================================================
                      5: 
                      6:                                                        P_SPEC
                      7: 
                      8: ===============================================================================
                      9: */
                     10: 
                     11: /* */
                     12: /*     Animating textures and planes */
                     13: /* */
                     14: typedef struct
                     15: {
                     16:        boolean istexture;
                     17:        int             picnum;
                     18:        int             basepic;
                     19:        int             numpics;
                     20:        int             current;
                     21: } anim_t;
                     22: 
                     23: /* */
                     24: /*     source animation definition */
                     25: /* */
                     26: typedef struct
                     27: {
                     28:        boolean istexture;              /* if false, it's a flat */
                     29:        char    endname[9];
                     30:        char    startname[9];
                     31:        int             speed;
                     32: } animdef_t;
                     33: 
                     34: #define        MAXANIMS                32
                     35: 
                     36: extern anim_t  anims[MAXANIMS], *lastanim;
                     37: 
                     38: 
                     39: /* */
                     40: /*     Animating line specials */
                     41: /* */
                     42: #define        MAXLINEANIMS            64
                     43: extern int             numlinespecials;
                     44: extern line_t  *linespeciallist[MAXLINEANIMS];
                     45: 
                     46: 
                     47: /*     Define values for map objects */
                     48: #define        MO_TELEPORTMAN          14
                     49: 
                     50: 
                     51: /* at game start */
                     52: void   P_InitPicAnims (void);
                     53: 
                     54: /* at map load */
                     55: void   P_SpawnSpecials (void);
                     56: 
                     57: /* every tic */
                     58: void   P_UpdateSpecials (void);
                     59: 
                     60: /* when needed */
                     61: boolean        P_UseSpecialLine ( mobj_t *thing, line_t *line);
                     62: void   P_ShootSpecialLine ( mobj_t *thing, line_t *line);
                     63: void P_CrossSpecialLine (line_t *line,mobj_t *thing);
                     64: 
                     65: void   P_PlayerInSpecialSector (player_t *player);
                     66: 
                     67: int            twoSided(int sector,int line);
                     68: sector_t *getSector(int currentSector,int line,int side);
                     69: side_t *getSide(int currentSector,int line, int side);
                     70: fixed_t        P_FindLowestFloorSurrounding(sector_t *sec);
                     71: fixed_t        P_FindHighestFloorSurrounding(sector_t *sec);
                     72: fixed_t        P_FindNextHighestFloor(sector_t *sec,int currentheight);
                     73: fixed_t        P_FindLowestCeilingSurrounding(sector_t *sec);
                     74: fixed_t        P_FindHighestCeilingSurrounding(sector_t *sec);
                     75: int            P_FindSectorFromLineTag(line_t  *line,int start);
                     76: int            P_FindMinSurroundingLight(sector_t *sector,int max);
                     77: sector_t *getNextSector(line_t *line,sector_t *sec);
                     78: 
                     79: /* */
                     80: /*     SPECIAL */
                     81: /* */
                     82: int EV_DoDonut(line_t *line);
                     83: 
                     84: /*
                     85: ===============================================================================
                     86: 
                     87:                                                        P_LIGHTS
                     88: 
                     89: ===============================================================================
                     90: */
                     91: typedef struct
                     92: {
                     93:        thinker_t       thinker;
                     94:        sector_t        *sector;
                     95:        int                     count;
                     96:        int                     maxlight;
                     97:        int                     minlight;
                     98:        int                     maxtime;
                     99:        int                     mintime;
                    100: } lightflash_t;
                    101: 
                    102: typedef struct
                    103: {
                    104:        thinker_t       thinker;
                    105:        sector_t        *sector;
                    106:        int                     count;
                    107:        int                     minlight;
                    108:        int                     maxlight;
                    109:        int                     darktime;
                    110:        int                     brighttime;
                    111: } strobe_t;
                    112: 
                    113: typedef struct
                    114: {
                    115:        thinker_t       thinker;
                    116:        sector_t        *sector;
                    117:        int                     minlight;
                    118:        int                     maxlight;
                    119:        int                     direction;
                    120: } glow_t;
                    121: 
                    122: #define GLOWSPEED              16
                    123: #define        STROBEBRIGHT    3
                    124: #define        FASTDARK                8
                    125: #define        SLOWDARK                15
                    126: 
                    127: void   T_LightFlash (lightflash_t *flash);
                    128: void   P_SpawnLightFlash (sector_t *sector);
                    129: void   T_StrobeFlash (strobe_t *flash);
                    130: void   P_SpawnStrobeFlash (sector_t *sector, int fastOrSlow, int inSync);
                    131: void   EV_StartLightStrobing(line_t *line);
                    132: void   EV_TurnTagLightsOff(line_t      *line);
                    133: void   EV_LightTurnOn(line_t *line, int bright);
                    134: void   T_Glow(glow_t *g);
                    135: void   P_SpawnGlowingLight(sector_t *sector);
                    136: 
                    137: /*
                    138: ===============================================================================
                    139: 
                    140:                                                        P_SWITCH
                    141: 
                    142: ===============================================================================
                    143: */
                    144: typedef struct
                    145: {
                    146:        char    name1[9];
                    147:        char    name2[9];
                    148: } switchlist_t;
                    149: 
                    150: typedef enum
                    151: {
                    152:        top,
                    153:        middle,
                    154:        bottom
                    155: } bwhere_e;
                    156: 
                    157: typedef struct
                    158: {
                    159:        line_t          *line;
                    160:        bwhere_e        where;
                    161:        int                     btexture;
                    162:        int                     btimer;
                    163:        mobj_t          *soundorg;
                    164: } button_t;
                    165: 
                    166: #define        MAXSWITCHES     50              /* max # of wall switches in a level */
                    167: #define        MAXBUTTONS      16              /* 4 players, 4 buttons each at once, max. */
                    168: #define BUTTONTIME     15              /* 1 second */
                    169: 
                    170: extern button_t        buttonlist[MAXBUTTONS]; 
                    171: 
                    172: void   P_ChangeSwitchTexture(line_t *line,int useAgain);
                    173: void   P_InitSwitchList(void);
                    174: 
                    175: /*
                    176: ===============================================================================
                    177: 
                    178:                                                        P_PLATS
                    179: 
                    180: ===============================================================================
                    181: */
                    182: typedef enum
                    183: {
                    184:        up,
                    185:        down,
                    186:        waiting,
                    187:        in_stasis
                    188: } plat_e;
                    189: 
                    190: typedef enum
                    191: {
                    192:        perpetualRaise,
                    193:        downWaitUpStay,
                    194:        raiseAndChange,
                    195:        raiseToNearestAndChange
                    196: } plattype_e;
                    197: 
                    198: typedef struct
                    199: {
                    200:        thinker_t       thinker;
                    201:        sector_t        *sector;
                    202:        fixed_t         speed;
                    203:        fixed_t         low;
                    204:        fixed_t         high;
                    205:        int                     wait;
                    206:        int                     count;
                    207:        plat_e          status;
                    208:        plat_e          oldstatus;
                    209:        boolean         crush;
                    210:        int                     tag;
                    211:        plattype_e      type;
                    212: } plat_t;
                    213: 
                    214: #define        PLATWAIT        3                       /* seconds */
                    215: #define        PLATSPEED       (FRACUNIT*2)
                    216: #define        MAXPLATS        30
                    217: 
                    218: extern plat_t  *activeplats[MAXPLATS];
                    219: 
                    220: void   T_PlatRaise(plat_t      *plat);
                    221: int            EV_DoPlat(line_t *line,plattype_e type,int amount);
                    222: void   P_AddActivePlat(plat_t *plat);
                    223: void   P_RemoveActivePlat(plat_t *plat);
                    224: void   EV_StopPlat(line_t *line);
                    225: void   P_ActivateInStasis(int tag);
                    226: 
                    227: /*
                    228: ===============================================================================
                    229: 
                    230:                                                        P_DOORS
                    231: 
                    232: ===============================================================================
                    233: */
                    234: typedef enum
                    235: {
                    236:        normal,
                    237:        close30ThenOpen,
                    238:        close,
                    239:        open,
                    240:        raiseIn5Mins
                    241: } vldoor_e;
                    242: 
                    243: typedef struct
                    244: {
                    245:        thinker_t       thinker;
                    246:        vldoor_e        type;
                    247:        sector_t        *sector;
                    248:        fixed_t         topheight;
                    249:        fixed_t         speed;
                    250:        int                     direction;              /* 1 = up, 0 = waiting at top, -1 = down */
                    251:        int                     topwait;                /* tics to wait at the top */
                    252:                                                                /* (keep in case a door going down is reset) */
                    253:        int                     topcountdown;   /* when it reaches 0, start going down */
                    254: } vldoor_t;
                    255:        
                    256: #define        VDOORSPEED      FRACUNIT*6
                    257: #define        VDOORWAIT               70
                    258: 
                    259: void   EV_VerticalDoor (line_t *line, mobj_t *thing);
                    260: int            EV_DoDoor (line_t *line, vldoor_e  type);
                    261: void   T_VerticalDoor (vldoor_t *door);
                    262: void   P_SpawnDoorCloseIn30 (sector_t *sec);
                    263: void   P_SpawnDoorRaiseIn5Mins (sector_t *sec, int secnum);
                    264: 
                    265: /*
                    266: ===============================================================================
                    267: 
                    268:                                                        P_CEILNG
                    269: 
                    270: ===============================================================================
                    271: */
                    272: typedef enum
                    273: {
                    274:        lowerToFloor,
                    275:        raiseToHighest,
                    276:        lowerAndCrush,
                    277:        crushAndRaise,
                    278:        fastCrushAndRaise
                    279: } ceiling_e;
                    280: 
                    281: typedef struct
                    282: {
                    283:        thinker_t       thinker;
                    284:        ceiling_e       type;
                    285:        sector_t        *sector;
                    286:        fixed_t         bottomheight, topheight;
                    287:        fixed_t         speed;
                    288:        boolean         crush;
                    289:        int                     direction;              /* 1 = up, 0 = waiting, -1 = down */
                    290:        int                     tag;                    /* ID */
                    291:        int                     olddirection;
                    292: } ceiling_t;
                    293: 
                    294: #define        CEILSPEED               FRACUNIT*2
                    295: #define MAXCEILINGS            30
                    296: 
                    297: extern ceiling_t       *activeceilings[MAXCEILINGS];
                    298: 
                    299: int            EV_DoCeiling (line_t *line, ceiling_e  type);
                    300: void   T_MoveCeiling (ceiling_t *ceiling);
                    301: void   P_AddActiveCeiling(ceiling_t *c);
                    302: void   P_RemoveActiveCeiling(ceiling_t *c);
                    303: int            EV_CeilingCrushStop(line_t      *line);
                    304: void   P_ActivateInStasisCeiling(line_t *line);
                    305: 
                    306: /*
                    307: ===============================================================================
                    308: 
                    309:                                                        P_FLOOR
                    310: 
                    311: ===============================================================================
                    312: */
                    313: typedef enum
                    314: {
                    315:        lowerFloor,                     /* lower floor to highest surrounding floor */
                    316:        lowerFloorToLowest,     /* lower floor to lowest surrounding floor */
                    317:        turboLower,                     /* lower floor to highest surrounding floor VERY FAST */
                    318:        raiseFloor,                     /* raise floor to lowest surrounding CEILING */
                    319:        raiseFloorToNearest,    /* raise floor to next highest surrounding floor */
                    320:        raiseToTexture,         /* raise floor to shortest height texture around it */
                    321:        lowerAndChange,         /* lower floor to lowest surrounding floor and change */
                    322:                                                /* floorpic */
                    323:        raiseFloor24,
                    324:        raiseFloor24AndChange,
                    325:        raiseFloorCrush,
                    326:        donutRaise
                    327: } floor_e;
                    328: 
                    329: typedef struct
                    330: {
                    331:        thinker_t       thinker;
                    332:        floor_e         type;
                    333:        boolean         crush;
                    334:        sector_t        *sector;
                    335:        int                     direction;
                    336:        int                     newspecial;
                    337:        short           texture;
                    338:        fixed_t         floordestheight;
                    339:        fixed_t         speed;
                    340: } floormove_t;
                    341: 
                    342: #define        FLOORSPEED      FRACUNIT*3
                    343: 
                    344: typedef enum
                    345: {
                    346:        ok,
                    347:        crushed,
                    348:        pastdest
                    349: } result_e;
                    350: 
                    351: result_e       T_MovePlane(sector_t *sector,fixed_t speed,
                    352:                        fixed_t dest,boolean crush,int floorOrCeiling,int direction);
                    353: 
                    354: int            EV_BuildStairs(line_t *line);
                    355: int            EV_DoFloor(line_t *line,floor_e floortype);
                    356: void   T_MoveFloor(floormove_t *floor);
                    357: 
                    358: /*
                    359: ===============================================================================
                    360: 
                    361:                                                        P_TELEPT
                    362: 
                    363: ===============================================================================
                    364: */
                    365: int            EV_Teleport( line_t *line,mobj_t *thing );
                    366: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.