A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 1173 lines 22 kB view raw
1/* Emacs style mode select -*- C++ -*- 2 *----------------------------------------------------------------------------- 3 * 4 * 5 * PrBoom a Doom port merged with LxDoom and LSDLDoom 6 * based on BOOM, a modified and improved DOOM engine 7 * Copyright (C) 1999 by 8 * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman 9 * Copyright (C) 1999-2000 by 10 * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze 11 * 12 * This program is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License 14 * as published by the Free Software Foundation; either version 2 15 * of the License, or (at your option) any later version. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * You should have received a copy of the GNU General Public License 23 * along with this program; if not, write to the Free Software 24 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 25 * 02111-1307, USA. 26 * 27 * DESCRIPTION: definitions, declarations and prototypes for specials 28 * 29 *-----------------------------------------------------------------------------*/ 30 31#ifndef __P_SPEC__ 32#define __P_SPEC__ 33 34#include "r_defs.h" 35#include "d_player.h" 36 37// Define values for map objects 38#define MO_TELEPORTMAN 14 39 40// p_floor 41 42#define ELEVATORSPEED (FRACUNIT*4) 43#define FLOORSPEED FRACUNIT 44 45// p_ceilng 46 47#define CEILSPEED FRACUNIT 48#define CEILWAIT 150 49 50// p_doors 51 52#define VDOORSPEED (FRACUNIT*2) 53#define VDOORWAIT 150 54 55// p_plats 56 57#define PLATWAIT 3 58#define PLATSPEED FRACUNIT 59 60// p_switch 61 62// 4 players, 4 buttons each at once, max. 63// killough 2/14/98: redefine in terms of MAXPLAYERS 64#define MAXBUTTONS (MAXPLAYERS*4) 65 66// 1 second, in ticks. 67#define BUTTONTIME TICRATE 68 69// p_lights 70 71#define GLOWSPEED 8 72#define STROBEBRIGHT 5 73#define FASTDARK 15 74#define SLOWDARK 35 75 76//jff 3/14/98 add bits and shifts for generalized sector types 77 78#define DAMAGE_MASK 0x60 79#define DAMAGE_SHIFT 5 80#define SECRET_MASK 0x80 81#define SECRET_SHIFT 7 82#define FRICTION_MASK 0x100 83#define FRICTION_SHIFT 8 84#define PUSH_MASK 0x200 85#define PUSH_SHIFT 9 86 87//jff 02/04/98 Define masks, shifts, for fields in 88// generalized linedef types 89 90#define GenEnd 0x8000 91#define GenFloorBase 0x6000 92#define GenCeilingBase 0x4000 93#define GenDoorBase 0x3c00 94#define GenLockedBase 0x3800 95#define GenLiftBase 0x3400 96#define GenStairsBase 0x3000 97#define GenCrusherBase 0x2F80 98 99#define TriggerType 0x0007 100#define TriggerTypeShift 0 101 102// define masks and shifts for the floor type fields 103 104#define FloorCrush 0x1000 105#define FloorChange 0x0c00 106#define FloorTarget 0x0380 107#define FloorDirection 0x0040 108#define FloorModel 0x0020 109#define FloorSpeed 0x0018 110 111#define FloorCrushShift 12 112#define FloorChangeShift 10 113#define FloorTargetShift 7 114#define FloorDirectionShift 6 115#define FloorModelShift 5 116#define FloorSpeedShift 3 117 118// define masks and shifts for the ceiling type fields 119 120#define CeilingCrush 0x1000 121#define CeilingChange 0x0c00 122#define CeilingTarget 0x0380 123#define CeilingDirection 0x0040 124#define CeilingModel 0x0020 125#define CeilingSpeed 0x0018 126 127#define CeilingCrushShift 12 128#define CeilingChangeShift 10 129#define CeilingTargetShift 7 130#define CeilingDirectionShift 6 131#define CeilingModelShift 5 132#define CeilingSpeedShift 3 133 134// define masks and shifts for the lift type fields 135 136#define LiftTarget 0x0300 137#define LiftDelay 0x00c0 138#define LiftMonster 0x0020 139#define LiftSpeed 0x0018 140 141#define LiftTargetShift 8 142#define LiftDelayShift 6 143#define LiftMonsterShift 5 144#define LiftSpeedShift 3 145 146// define masks and shifts for the stairs type fields 147 148#define StairIgnore 0x0200 149#define StairDirection 0x0100 150#define StairStep 0x00c0 151#define StairMonster 0x0020 152#define StairSpeed 0x0018 153 154#define StairIgnoreShift 9 155#define StairDirectionShift 8 156#define StairStepShift 6 157#define StairMonsterShift 5 158#define StairSpeedShift 3 159 160// define masks and shifts for the crusher type fields 161 162#define CrusherSilent 0x0040 163#define CrusherMonster 0x0020 164#define CrusherSpeed 0x0018 165 166#define CrusherSilentShift 6 167#define CrusherMonsterShift 5 168#define CrusherSpeedShift 3 169 170// define masks and shifts for the door type fields 171 172#define DoorDelay 0x0300 173#define DoorMonster 0x0080 174#define DoorKind 0x0060 175#define DoorSpeed 0x0018 176 177#define DoorDelayShift 8 178#define DoorMonsterShift 7 179#define DoorKindShift 5 180#define DoorSpeedShift 3 181 182// define masks and shifts for the locked door type fields 183 184#define LockedNKeys 0x0200 185#define LockedKey 0x01c0 186#define LockedKind 0x0020 187#define LockedSpeed 0x0018 188 189#define LockedNKeysShift 9 190#define LockedKeyShift 6 191#define LockedKindShift 5 192#define LockedSpeedShift 3 193 194// define names for the TriggerType field of the general linedefs 195 196enum 197{ 198 WalkOnce, 199 WalkMany, 200 SwitchOnce, 201 SwitchMany, 202 GunOnce, 203 GunMany, 204 PushOnce, 205 PushMany, 206}; 207typedef unsigned triggertype_e; 208 209// define names for the Speed field of the general linedefs 210 211enum 212{ 213 SpeedSlow, 214 SpeedNormal, 215 SpeedFast, 216 SpeedTurbo, 217}; 218typedef unsigned motionspeed_e; 219 220// define names for the Target field of the general floor 221 222enum 223{ 224 FtoHnF, 225 FtoLnF, 226 FtoNnF, 227 FtoLnC, 228 FtoC, 229 FbyST, 230 Fby24, 231 Fby32, 232}; 233typedef unsigned floortarget_e; 234 235// define names for the Changer Type field of the general floor 236 237enum 238{ 239 FNoChg, 240 FChgZero, 241 FChgTxt, 242 FChgTyp, 243}; 244typedef unsigned floorchange_e; 245 246// define names for the Change Model field of the general floor 247 248enum 249{ 250 FTriggerModel, 251 FNumericModel, 252}; 253typedef unsigned floormodel_t; 254 255// define names for the Target field of the general ceiling 256 257enum 258{ 259 CtoHnC, 260 CtoLnC, 261 CtoNnC, 262 CtoHnF, 263 CtoF, 264 CbyST, 265 Cby24, 266 Cby32, 267}; 268typedef unsigned ceilingtarget_e; 269 270// define names for the Changer Type field of the general ceiling 271 272enum 273{ 274 CNoChg, 275 CChgZero, 276 CChgTxt, 277 CChgTyp, 278}; 279typedef unsigned ceilingchange_e; 280 281// define names for the Change Model field of the general ceiling 282 283enum 284{ 285 CTriggerModel, 286 CNumericModel, 287}; 288typedef unsigned ceilingmodel_t; 289 290// define names for the Target field of the general lift 291 292enum 293{ 294 F2LnF, 295 F2NnF, 296 F2LnC, 297 LnF2HnF, 298}; 299typedef unsigned lifttarget_e; 300 301// define names for the door Kind field of the general ceiling 302 303enum 304{ 305 OdCDoor, 306 ODoor, 307 CdODoor, 308 CDoor, 309}; 310typedef unsigned intdoorkind_e; 311 312// define names for the locked door Kind field of the general ceiling 313 314enum 315{ 316 AnyKey, 317 RCard, 318 BCard, 319 YCard, 320 RSkull, 321 BSkull, 322 YSkull, 323 AllKeys, 324}; 325typedef unsigned keykind_e; 326 327////////////////////////////////////////////////////////////////// 328// 329// enums for classes of linedef triggers 330// 331////////////////////////////////////////////////////////////////// 332 333//jff 2/23/98 identify the special classes that can share sectors 334 335enum 336{ 337 floor_special, 338 ceiling_special, 339 lighting_special, 340}; 341typedef unsigned special_e; 342 343//jff 3/15/98 pure texture/type change for better generalized support 344enum 345{ 346 trigChangeOnly, 347 numChangeOnly, 348}; 349typedef unsigned change_e; 350 351// p_plats 352 353enum 354{ 355 up, 356 down, 357 waiting, 358 in_stasis 359}; 360typedef unsigned plat_e; 361 362enum 363{ 364 perpetualRaise, 365 downWaitUpStay, 366 raiseAndChange, 367 raiseToNearestAndChange, 368 blazeDWUS, 369 genLift, //jff added to support generalized Plat types 370 genPerpetual, 371 toggleUpDn, //jff 3/14/98 added to support instant toggle type 372 373}; 374typedef unsigned plattype_e; 375 376// p_doors 377 378enum 379{ 380 normal, 381 close30ThenOpen, 382 p_close, 383 p_open, 384 raiseIn5Mins, 385 blazeRaise, 386 blazeOpen, 387 blazeClose, 388 389 //jff 02/05/98 add generalize door types 390 genRaise, 391 genBlazeRaise, 392 genOpen, 393 genBlazeOpen, 394 genClose, 395 genBlazeClose, 396 genCdO, 397 genBlazeCdO, 398}; 399typedef unsigned vldoor_e; 400 401// p_ceilng 402 403enum 404{ 405 lowerToFloor, 406 raiseToHighest, 407 lowerToLowest, 408 lowerToMaxFloor, 409 lowerAndCrush, 410 crushAndRaise, 411 fastCrushAndRaise, 412 silentCrushAndRaise, 413 414 //jff 02/04/98 add types for generalized ceiling mover 415 genCeiling, 416 genCeilingChg, 417 genCeilingChg0, 418 genCeilingChgT, 419 420 //jff 02/05/98 add types for generalized ceiling mover 421 genCrusher, 422 genSilentCrusher, 423 424}; 425typedef unsigned ceiling_e; 426 427// p_floor 428 429enum 430{ 431 // lower floor to highest surrounding floor 432 lowerFloor, 433 434 // lower floor to lowest surrounding floor 435 lowerFloorToLowest, 436 437 // lower floor to highest surrounding floor VERY FAST 438 turboLower, 439 440 // raise floor to lowest surrounding CEILING 441 raiseFloor, 442 443 // raise floor to next highest surrounding floor 444 raiseFloorToNearest, 445 446 //jff 02/03/98 lower floor to next lowest neighbor 447 lowerFloorToNearest, 448 449 //jff 02/03/98 lower floor 24 absolute 450 lowerFloor24, 451 452 //jff 02/03/98 lower floor 32 absolute 453 lowerFloor32Turbo, 454 455 // raise floor to shortest height texture around it 456 raiseToTexture, 457 458 // lower floor to lowest surrounding floor 459 // and change floorpic 460 lowerAndChange, 461 462 raiseFloor24, 463 464 //jff 02/03/98 raise floor 32 absolute 465 raiseFloor32Turbo, 466 467 raiseFloor24AndChange, 468 raiseFloorCrush, 469 470 // raise to next highest floor, turbo-speed 471 raiseFloorTurbo, 472 donutRaise, 473 raiseFloor512, 474 475 //jff 02/04/98 add types for generalized floor mover 476 genFloor, 477 genFloorChg, 478 genFloorChg0, 479 genFloorChgT, 480 481 //new types for stair builders 482 buildStair, 483 genBuildStair, 484}; 485typedef unsigned floor_e; 486 487enum 488{ 489 build8, // slowly build by 8 490 turbo16 // quickly build by 16 491 492}; 493typedef unsigned stair_e; 494 495enum 496{ 497 elevateUp, 498 elevateDown, 499 elevateCurrent, 500}; 501typedef unsigned elevator_e; 502 503////////////////////////////////////////////////////////////////// 504// 505// general enums 506// 507////////////////////////////////////////////////////////////////// 508 509// texture type enum 510enum 511{ 512 top, 513 middle, 514 bottom 515 516}; 517typedef unsigned bwhere_e; 518 519// crush check returns 520enum 521{ 522 ok, 523 crushed, 524 pastdest 525}; 526typedef unsigned result_e; 527 528////////////////////////////////////////////////////////////////// 529// 530// linedef and sector special data types 531// 532////////////////////////////////////////////////////////////////// 533 534// p_switch 535 536// switch animation structure type 537 538#if defined(__MWERKS__) 539#pragma options align=packed 540#endif 541 542typedef struct 543{ 544 char name1[9]; 545 char name2[9]; 546 short episode; 547} PACKEDATTR switchlist_t; //jff 3/23/98 pack to read from memory 548 549#if defined(__MWERKS__) 550#pragma options align=reset 551#endif 552 553typedef struct 554{ 555 line_t* line; 556 bwhere_e where; 557 int btexture; 558 int btimer; 559 mobj_t* soundorg; 560 561} button_t; 562 563// p_lights 564 565typedef struct 566{ 567 thinker_t thinker; 568 sector_t* sector; 569 int count; 570 int maxlight; 571 int minlight; 572 573} fireflicker_t; 574 575typedef struct 576{ 577 thinker_t thinker; 578 sector_t* sector; 579 int count; 580 int maxlight; 581 int minlight; 582 int maxtime; 583 int mintime; 584 585} lightflash_t; 586 587typedef struct 588{ 589 thinker_t thinker; 590 sector_t* sector; 591 int count; 592 int minlight; 593 int maxlight; 594 int darktime; 595 int brighttime; 596 597} strobe_t; 598 599typedef struct 600{ 601 thinker_t thinker; 602 sector_t* sector; 603 int minlight; 604 int maxlight; 605 int direction; 606 607} glow_t; 608 609// p_plats 610 611typedef struct 612{ 613 thinker_t thinker; 614 sector_t* sector; 615 fixed_t speed; 616 fixed_t low; 617 fixed_t high; 618 int wait; 619 int count; 620 plat_e status; 621 plat_e oldstatus; 622 boolean crush; 623 int tag; 624 plattype_e type; 625 626 struct platlist *list; // killough 627} plat_t; 628 629// New limit-free plat structure -- killough 630 631typedef struct platlist { 632 plat_t *plat; 633 struct platlist *next,**prev; 634} platlist_t; 635 636// p_ceilng 637 638typedef struct 639{ 640 thinker_t thinker; 641 vldoor_e type; 642 sector_t* sector; 643 fixed_t topheight; 644 fixed_t speed; 645 646 // 1 = up, 0 = waiting at top, -1 = down 647 int direction; 648 649 // tics to wait at the top 650 int topwait; 651 // (keep in case a door going down is reset) 652 // when it reaches 0, start going down 653 int topcountdown; 654 655 //jff 1/31/98 keep track of line door is triggered by 656 line_t *line; 657 658 /* killough 10/98: sector tag for gradual lighting effects */ 659 int lighttag; 660} vldoor_t; 661 662// p_doors 663 664typedef struct 665{ 666 thinker_t thinker; 667 ceiling_e type; 668 sector_t* sector; 669 fixed_t bottomheight; 670 fixed_t topheight; 671 fixed_t speed; 672 fixed_t oldspeed; 673 boolean crush; 674 675 //jff 02/04/98 add these to support ceiling changers 676 int newspecial; 677 int oldspecial; //jff 3/14/98 add to fix bug in change transfers 678 short texture; 679 680 // 1 = up, 0 = waiting, -1 = down 681 int direction; 682 683 // ID 684 int tag; 685 int olddirection; 686 struct ceilinglist *list; // jff 2/22/98 copied from killough's plats 687} ceiling_t; 688 689typedef struct ceilinglist { 690 ceiling_t *ceiling; 691 struct ceilinglist *next,**prev; 692} ceilinglist_t; 693 694// p_floor 695 696typedef struct 697{ 698 thinker_t thinker; 699 floor_e type; 700 boolean crush; 701 sector_t* sector; 702 int direction; 703 int newspecial; 704 int oldspecial; //jff 3/14/98 add to fix bug in change transfers 705 short texture; 706 fixed_t floordestheight; 707 fixed_t speed; 708 709} floormove_t; 710 711typedef struct 712{ 713 thinker_t thinker; 714 elevator_e type; 715 sector_t* sector; 716 int direction; 717 fixed_t floordestheight; 718 fixed_t ceilingdestheight; 719 fixed_t speed; 720} elevator_t; 721 722// p_spec 723 724// killough 3/7/98: Add generalized scroll effects 725enum 726{ 727 sc_side, 728 sc_floor, 729 sc_ceiling, 730 sc_carry, 731 sc_carry_ceiling, // killough 4/11/98: carry objects hanging on ceilings 732}; /* type */ 733 734typedef struct { 735 thinker_t thinker; // Thinker structure for scrolling 736 fixed_t dx, dy; // (dx,dy) scroll speeds 737 int affectee; // Number of affected sidedef, sector, tag, or whatever 738 int control; // Control sector (-1 if none) used to control scrolling 739 fixed_t last_height; // Last known height of control sector 740 fixed_t vdx, vdy; // Accumulated velocity if accelerative 741 int accel; // Whether it's accelerative 742 unsigned type; // Type of scroll effect 743} scroll_t; 744 745// phares 3/12/98: added new model of friction for ice/sludge effects 746 747typedef struct { 748 thinker_t thinker; // Thinker structure for friction 749 int friction; // friction value (E800 = normal) 750 int movefactor; // inertia factor when adding to momentum 751 int affectee; // Number of affected sector 752} friction_t; 753 754// phares 3/20/98: added new model of Pushers for push/pull effects 755 756enum 757{ 758 p_push, 759 p_pull, 760 p_wind, 761 p_current, 762}; /* type */ 763 764typedef struct { 765 thinker_t thinker; // Thinker structure for Pusher 766 unsigned type; 767 mobj_t* source; // Point source if point pusher 768 int x_mag; // X Strength 769 int y_mag; // Y Strength 770 int magnitude; // Vector strength for point pusher 771 int radius; // Effective radius for point pusher 772 int x; // X of point source if point pusher 773 int y; // Y of point source if point pusher 774 int affectee; // Number of affected sector 775} pusher_t; 776 777////////////////////////////////////////////////////////////////// 778// 779// external data declarations 780// 781////////////////////////////////////////////////////////////////// 782 783// 784// End-level timer (-TIMER option) 785// 786extern boolean levelTimer; 787extern int levelTimeCount; 788 789// list of retriggerable buttons active 790extern button_t buttonlist[MAXBUTTONS]; 791 792extern platlist_t *activeplats; // killough 2/14/98 793 794extern ceilinglist_t *activeceilings; // jff 2/22/98 795 796//////////////////////////////////////////////////////////////// 797// 798// Linedef and sector special utility function prototypes 799// 800//////////////////////////////////////////////////////////////// 801 802int twoSided 803( int sector, 804 int line ); 805 806sector_t* getSector 807( int currentSector, 808 int line, 809 int side ); 810 811side_t* getSide 812( int currentSector, 813 int line, 814 int side ); 815 816fixed_t P_FindLowestFloorSurrounding 817( sector_t* sec ); 818 819fixed_t P_FindHighestFloorSurrounding 820( sector_t* sec ); 821 822fixed_t P_FindNextHighestFloor 823( sector_t* sec, 824 int currentheight ); 825 826fixed_t P_FindNextLowestFloor 827( sector_t* sec, 828 int currentheight ); 829 830fixed_t P_FindLowestCeilingSurrounding 831( sector_t* sec ); // jff 2/04/98 832 833fixed_t P_FindHighestCeilingSurrounding 834( sector_t* sec ); // jff 2/04/98 835 836fixed_t P_FindNextLowestCeiling 837( sector_t *sec, 838 int currentheight ); // jff 2/04/98 839 840fixed_t P_FindNextHighestCeiling 841( sector_t *sec, 842 int currentheight ); // jff 2/04/98 843 844fixed_t P_FindShortestTextureAround 845( int secnum ); // jff 2/04/98 846 847fixed_t P_FindShortestUpperAround 848( int secnum ); // jff 2/04/98 849 850sector_t* P_FindModelFloorSector 851( fixed_t floordestheight, 852 int secnum ); //jff 02/04/98 853 854sector_t* P_FindModelCeilingSector 855( fixed_t ceildestheight, 856 int secnum ); //jff 02/04/98 857 858int P_FindSectorFromLineTag 859( const line_t *line, 860 int start ); // killough 4/17/98 861 862int P_FindLineFromLineTag 863( const line_t *line, 864 int start ); // killough 4/17/98 865 866int P_FindMinSurroundingLight 867( sector_t* sector, 868 int max ); 869 870sector_t* getNextSector 871( line_t* line, 872 sector_t* sec ); 873 874int P_CheckTag 875(line_t *line); // jff 2/27/98 876 877boolean P_CanUnlockGenDoor 878( line_t* line, 879 player_t* player); 880 881boolean P_SectorActive 882( special_e t, 883 sector_t* s ); 884 885boolean P_IsSecret 886( sector_t *sec ); 887 888boolean P_WasSecret 889( sector_t *sec ); 890 891void P_ChangeSwitchTexture 892( line_t* line, 893 int useAgain ); 894 895//////////////////////////////////////////////////////////////// 896// 897// Linedef and sector special action function prototypes 898// 899//////////////////////////////////////////////////////////////// 900 901// p_lights 902 903void T_LightFlash 904( lightflash_t* flash ); 905 906void T_StrobeFlash 907( strobe_t* flash ); 908 909// jff 8/8/98 add missing thinker for flicker 910void T_FireFlicker 911( fireflicker_t* flick ); 912 913void T_Glow 914( glow_t* g ); 915 916// p_plats 917 918void T_PlatRaise 919( plat_t* plat ); 920 921// p_doors 922 923void T_VerticalDoor 924( vldoor_t* door ); 925 926// p_ceilng 927 928void T_MoveCeiling 929( ceiling_t* ceiling ); 930 931// p_floor 932 933result_e T_MovePlane 934( sector_t* sector, 935 fixed_t speed, 936 fixed_t dest, 937 boolean crush, 938 int floorOrCeiling, 939 int direction ); 940 941void T_MoveFloor 942( floormove_t* floor ); 943 944void T_MoveElevator 945( elevator_t* elevator ); 946 947// p_spec 948 949void T_Scroll 950( scroll_t * ); // killough 3/7/98: scroll effect thinker 951 952void T_Friction 953( friction_t * ); // phares 3/12/98: friction thinker 954 955void T_Pusher 956( pusher_t * ); // phares 3/20/98: Push thinker 957 958//////////////////////////////////////////////////////////////// 959// 960// Linedef and sector special handler prototypes 961// 962//////////////////////////////////////////////////////////////// 963 964// p_telept 965 966int EV_Teleport 967( line_t* line, 968 int side, 969 mobj_t* thing ); 970 971// killough 2/14/98: Add silent teleporter 972int EV_SilentTeleport 973( line_t* line, 974 int side, 975 mobj_t* thing ); 976 977// killough 1/31/98: Add silent line teleporter 978int EV_SilentLineTeleport 979( line_t* line, 980 int side, 981 mobj_t* thing, 982 boolean reverse); 983 984// p_floor 985 986int 987EV_DoElevator 988( line_t* line, 989 elevator_e type ); 990 991int EV_BuildStairs 992( line_t* line, 993 stair_e type ); 994 995int EV_DoFloor 996( line_t* line, 997 floor_e floortype ); 998 999// p_ceilng 1000 1001int EV_DoCeiling 1002( line_t* line, 1003 ceiling_e type ); 1004 1005int EV_CeilingCrushStop 1006( line_t* line ); 1007 1008// p_doors 1009 1010int EV_VerticalDoor 1011( line_t* line, 1012 mobj_t* thing ); 1013 1014int EV_DoDoor 1015( line_t* line, 1016 vldoor_e type ); 1017 1018int EV_DoLockedDoor 1019( line_t* line, 1020 vldoor_e type, 1021 mobj_t* thing ); 1022 1023// p_lights 1024 1025int EV_StartLightStrobing 1026( line_t* line ); 1027 1028int EV_TurnTagLightsOff 1029( line_t* line ); 1030 1031int EV_LightTurnOn 1032( line_t* line, 1033 int bright ); 1034 1035int EV_LightTurnOnPartway(line_t* line, fixed_t level); // killough 10/10/98 1036 1037// p_floor 1038 1039int EV_DoChange 1040( line_t* line, 1041 change_e changetype ); 1042 1043int EV_DoDonut 1044( line_t* line ); 1045 1046// p_plats 1047 1048int EV_DoPlat 1049( line_t* line, 1050 plattype_e type, 1051 int amount ); 1052 1053int EV_StopPlat 1054( line_t* line ); 1055 1056// p_genlin 1057 1058int EV_DoGenFloor 1059( line_t* line ); 1060 1061int EV_DoGenCeiling 1062( line_t* line ); 1063 1064int EV_DoGenLift 1065( line_t* line ); 1066 1067int EV_DoGenStairs 1068( line_t* line ); 1069 1070int EV_DoGenCrusher 1071( line_t* line ); 1072 1073int EV_DoGenDoor 1074( line_t* line ); 1075 1076int EV_DoGenLockedDoor 1077( line_t* line ); 1078 1079//////////////////////////////////////////////////////////////// 1080// 1081// Linedef and sector special thinker spawning 1082// 1083//////////////////////////////////////////////////////////////// 1084 1085// at game start 1086void P_InitPicAnims 1087( void ); 1088 1089void P_InitSwitchList 1090( void ); 1091 1092// at map load 1093void P_SpawnSpecials 1094( void ); 1095 1096// every tic 1097void P_UpdateSpecials 1098( void ); 1099 1100// when needed 1101boolean P_UseSpecialLine 1102( mobj_t* thing, 1103 line_t* line, 1104 int side ); 1105 1106void P_ShootSpecialLine 1107( mobj_t* thing, 1108 line_t* line ); 1109 1110void P_CrossSpecialLine(line_t *line, int side, mobj_t *thing); 1111 1112void P_PlayerInSpecialSector 1113( player_t* player ); 1114 1115// p_lights 1116 1117void P_SpawnFireFlicker 1118( sector_t* sector ); 1119 1120void P_SpawnLightFlash 1121( sector_t* sector ); 1122 1123void P_SpawnStrobeFlash 1124( sector_t* sector, 1125 int fastOrSlow, 1126 int inSync ); 1127 1128void P_SpawnGlowingLight 1129( sector_t* sector ); 1130 1131// p_plats 1132 1133void P_AddActivePlat 1134( plat_t* plat ); 1135 1136void P_RemoveActivePlat 1137( plat_t* plat ); 1138 1139void P_RemoveAllActivePlats 1140( void ); // killough 1141 1142void P_ActivateInStasis 1143( int tag ); 1144 1145// p_doors 1146 1147void P_SpawnDoorCloseIn30 1148( sector_t* sec ); 1149 1150void P_SpawnDoorRaiseIn5Mins 1151( sector_t* sec, 1152 int secnum ); 1153 1154// p_ceilng 1155 1156void P_RemoveActiveCeiling 1157( ceiling_t* ceiling ); //jff 2/22/98 1158 1159void P_RemoveAllActiveCeilings 1160( void ); //jff 2/22/98 1161 1162void P_AddActiveCeiling 1163( ceiling_t* c ); 1164 1165void P_RemoveActiveCeiling 1166( ceiling_t* c ); 1167 1168int P_ActivateInStasisCeiling 1169( line_t* line ); 1170 1171mobj_t* P_GetPushThing(int); // phares 3/23/98 1172 1173#endif