// SONIC ROBO BLAST 2 //----------------------------------------------------------------------------- // Copyright (C) 1993-1996 by id Software, Inc. // Copyright (C) 1998-2000 by DooM Legacy Team. // Copyright (C) 1999-2021 by Sonic Team Junior. // // This program is free software distributed under the // terms of the GNU General Public License, version 2. // See the 'LICENSE' file for more details. //----------------------------------------------------------------------------- /// \file p_spec.h /// \brief Implements special effects: /// Texture animation, height or lighting changes /// according to adjacent sectors, respective /// utility functions, etc. #ifndef __P_SPEC__ #define __P_SPEC__ extern mobj_t *skyboxmo[2]; // current skybox mobjs: 0 = viewpoint, 1 = centerpoint extern mobj_t *skyboxviewpnts[16]; // array of MT_SKYBOX viewpoint mobjs extern mobj_t *skyboxcenterpnts[16]; // array of MT_SKYBOX centerpoint mobjs // Amount (dx, dy) vector linedef is shifted right to get scroll amount #define SCROLL_SHIFT 5 //FOF flags typedef enum { TMFA_NOPLANES = 1, TMFA_NOSIDES = 1<<1, TMFA_INSIDES = 1<<2, TMFA_ONLYINSIDES = 1<<3, TMFA_NOSHADE = 1<<4, TMFA_SPLAT = 1<<5, } textmapfofappearance_t; typedef enum { TMFT_INTANGIBLETOP = 1, TMFT_INTANGIBLEBOTTOM = 1<<1, TMFT_DONTBLOCKPLAYER = 1<<2, TMFT_VISIBLEFROMINSIDE = (TMFT_INTANGIBLETOP|TMFT_INTANGIBLEBOTTOM|TMFT_DONTBLOCKPLAYER), TMFT_DONTBLOCKOTHERS = 1<<3, TMFT_INTANGIBLE = (TMFT_DONTBLOCKPLAYER|TMFT_DONTBLOCKOTHERS), } textmapfoftangibility_t; typedef enum { TMFW_NOSIDES = 1, TMFW_DOUBLESHADOW = 1<<1, TMFW_COLORMAPONLY = 1<<2, TMFW_NORIPPLE = 1<<3, TMFW_GOOWATER = 1<<4, TMFW_SPLAT = 1<<5, } textmapfofwater_t; typedef enum { TMFB_REVERSE = 1, TMFB_SPINDASH = 1<<1, TMFB_DYNAMIC = 1<<2, } textmapfofbobbing_t; typedef enum { TMFC_NOSHADE = 1, TMFC_NORETURN = 1<<1, TMFC_AIRBOB = 1<<2, TMFC_FLOATBOB = 1<<3, TMFC_SPLAT = 1<<4, } textmapfofcrumbling_t; typedef enum { TMFR_REVERSE = 1, TMFR_SPINDASH = 1<<1, } textmapfofrising_t; typedef enum { TMFM_BRICK = 1, TMFM_INVISIBLE = 1<<1, } textmapfofmario_t; typedef enum { TMFB_TOUCH, TMFB_SPIN, TMFB_REGULAR, TMFB_STRONG, } textmapfofbusttype_t; typedef enum { TMFB_PUSHABLES = 1, TMFB_EXECUTOR = 1<<1, TMFB_ONLYBOTTOM = 1<<2, TMFB_SPLAT = 1<<3, } textmapfofbustflags_t; typedef enum { TMFL_NOBOSSES = 1, TMFL_SPLAT = 1<<1, } textmapfoflaserflags_t; typedef enum { TMP_FLOOR = 0, TMP_CEILING = 1, TMP_BOTH = 2, } textmapplanes_t; typedef enum { TML_SECTOR = 0, TML_FLOOR = 1, TML_CEILING = 2, } textmaplightareas_t; typedef enum { TMLC_NOSECTOR = 1, TMLC_NOFLOOR = 1<<1, TMLC_NOCEILING = 1<<2, } textmaplightcopyflags_t; typedef enum { TMF_RELATIVE = 1, TMF_OVERRIDE = 1<<1, TMF_TICBASED = 1<<2, } textmapfadeflags_t; typedef enum { TMB_USETARGET = 1, TMB_SYNC = 1<<1, } textmapblinkinglightflags_t; typedef enum { TMS_VIEWPOINT = 0, TMS_CENTERPOINT = 1, TMS_BOTH = 2, } textmapskybox_t; typedef enum { TMP_CLOSE = 1, TMP_RUNPOSTEXEC = 1<<1, TMP_CALLBYNAME = 1<<2, TMP_KEEPCONTROLS = 1<<3, TMP_KEEPREALTIME = 1<<4, //TMP_ALLPLAYERS = 1<<5, //TMP_FREEZETHINKERS = 1<<6, } textmappromptflags_t; typedef enum { TMSD_FRONT = 0, TMSD_BACK = 1, TMSD_FRONTBACK = 2, } textmapsides_t; typedef enum { TMS_SCROLLCARRY = 0, TMS_SCROLLONLY = 1, TMS_CARRYONLY = 2, } textmapscroll_t; typedef enum { TMST_REGULAR = 0, TMST_ACCELERATIVE = 1, TMST_DISPLACEMENT = 2, TMST_TYPEMASK = 3, TMST_NONEXCLUSIVE = 4, } textmapscrolltype_t; typedef enum { TMPF_SLIDE = 1, TMPF_NONEXCLUSIVE = 1<<1, } textmappusherflags_t; // GETSECSPECIAL (specialval, section) // // Pulls out the special # from a particular section. // #define GETSECSPECIAL(i,j) ((i >> ((j-1)*4))&15) // This must be updated whenever we up the max flat size - quicker to assume rather than figuring out the sqrt of the specific flat's filesize. #define MAXFLATSIZE (2048<