A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
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