Fix bitflags enum sectorflags_t for C++

This commit is contained in:
Eidolon 2026-03-15 15:36:11 -05:00
parent f97c3a7340
commit 6ebba60f23
2 changed files with 55 additions and 56 deletions

View file

@ -1764,31 +1764,31 @@ static void ParseTextmapSectorParameter(UINT32 i, const char *param, const char
else if (fastcmp(param, "colormapprotected") && fastcmp("true", val))
sectors[i].colormap_protected = true;
else if (fastcmp(param, "flipspecial_nofloor") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags & ~MSF_FLIPSPECIAL_FLOOR);
sectors[i].flags &= ~MSF_FLIPSPECIAL_FLOOR;
else if (fastcmp(param, "flipspecial_ceiling") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_FLIPSPECIAL_CEILING);
sectors[i].flags |= MSF_FLIPSPECIAL_CEILING;
else if (fastcmp(param, "triggerspecial_touch") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_TRIGGERSPECIAL_TOUCH);
sectors[i].flags |= MSF_TRIGGERSPECIAL_TOUCH;
else if (fastcmp(param, "triggerspecial_headbump") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_TRIGGERSPECIAL_HEADBUMP);
sectors[i].flags |= MSF_TRIGGERSPECIAL_HEADBUMP;
else if (fastcmp(param, "invertprecip") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_INVERTPRECIP);
sectors[i].flags |= MSF_INVERTPRECIP;
else if (fastcmp(param, "gravityflip") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_GRAVITYFLIP);
sectors[i].flags |= MSF_GRAVITYFLIP;
else if (fastcmp(param, "heatwave") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_HEATWAVE);
sectors[i].flags |= MSF_HEATWAVE;
else if (fastcmp(param, "noclipcamera") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_NOCLIPCAMERA);
sectors[i].flags |= MSF_NOCLIPCAMERA;
else if (fastcmp(param, "ripple_floor") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_RIPPLE_FLOOR);
sectors[i].flags |= MSF_RIPPLE_FLOOR;
else if (fastcmp(param, "ripple_ceiling") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_RIPPLE_CEILING);
sectors[i].flags |= MSF_RIPPLE_CEILING;
else if (fastcmp(param, "invertencore") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_INVERTENCORE);
sectors[i].flags |= MSF_INVERTENCORE;
else if (fastcmp(param, "flatlighting") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_FLATLIGHTING);
sectors[i].flags |= MSF_FLATLIGHTING;
else if (fastcmp(param, "forcedirectionallighting") && fastcmp("true", val))
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_DIRECTIONLIGHTING);
sectors[i].flags |= MSF_DIRECTIONLIGHTING;
else if (fastcmp(param, "nostepup") && fastcmp("true", val))
sectors[i].specialflags = static_cast<sectorspecialflags_t>(sectors[i].specialflags | SSF_NOSTEPUP);
else if (fastcmp(param, "doublestepup") && fastcmp("true", val))
@ -4867,24 +4867,24 @@ static void P_ConvertBinaryLinedefTypes(void)
{
if (lines[i].flags & ML_NOCLIMB)
{
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags & ~MSF_FLIPSPECIAL_FLOOR);
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_FLIPSPECIAL_CEILING);
sectors[s].flags &= ~MSF_FLIPSPECIAL_FLOOR;
sectors[s].flags |= MSF_FLIPSPECIAL_CEILING;
}
else if (lines[i].flags & ML_MIDSOLID)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_FLIPSPECIAL_BOTH);
sectors[s].flags |= MSF_FLIPSPECIAL_BOTH;
if (lines[i].flags & ML_MIDPEG)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_TRIGGERSPECIAL_TOUCH);
sectors[s].flags |= MSF_TRIGGERSPECIAL_TOUCH;
if (lines[i].flags & ML_NOSKEW)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_TRIGGERSPECIAL_HEADBUMP);
sectors[s].flags |= MSF_TRIGGERSPECIAL_HEADBUMP;
if (lines[i].flags & ML_SKEWTD)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_INVERTPRECIP);
sectors[s].flags |= MSF_INVERTPRECIP;
if (lines[i].flags & ML_DONTPEGTOP)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_RIPPLE_FLOOR);
sectors[s].flags |= MSF_RIPPLE_FLOOR;
if (lines[i].flags & ML_DONTPEGBOTTOM)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_RIPPLE_CEILING);
sectors[s].flags |= MSF_RIPPLE_CEILING;
}
if (GETSECSPECIAL(lines[i].frontsector->special, 4) != 12)
@ -4906,7 +4906,7 @@ static void P_ConvertBinaryLinedefTypes(void)
INT32 s;
TAG_ITER_SECTORS(tag, s)
sectors[s].flags = static_cast<sectorflags_t>(sectors[s].flags | MSF_HEATWAVE);
sectors[s].flags |= MSF_HEATWAVE;
break;
}
@ -6619,34 +6619,34 @@ static void P_ConvertBinarySectorTypes(void)
{
case 1: //Trigger linedef executor (pushable objects)
sectors[i].triggertag = tag;
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_TRIGGERLINE_PLANE);
sectors[i].flags |= MSF_TRIGGERLINE_PLANE;
sectors[i].triggerer = TO_MOBJ;
break;
case 2: //Trigger linedef executor (Anywhere in sector, all players)
sectors[i].triggertag = tag;
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags & ~MSF_TRIGGERLINE_PLANE);
sectors[i].flags &= ~MSF_TRIGGERLINE_PLANE;
sectors[i].triggerer = TO_ALLPLAYERS;
break;
case 3: //Trigger linedef executor (Floor touch, all players)
sectors[i].triggertag = tag;
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_TRIGGERLINE_PLANE);
sectors[i].flags |= MSF_TRIGGERLINE_PLANE;
sectors[i].triggerer = TO_ALLPLAYERS;
break;
case 4: //Trigger linedef executor (Anywhere in sector)
sectors[i].triggertag = tag;
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags & ~MSF_TRIGGERLINE_PLANE);
sectors[i].flags &= ~MSF_TRIGGERLINE_PLANE;
sectors[i].triggerer = TO_PLAYER;
break;
case 5: //Trigger linedef executor (Floor touch)
sectors[i].triggertag = tag;
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_TRIGGERLINE_PLANE);
sectors[i].flags |= MSF_TRIGGERLINE_PLANE;
sectors[i].triggerer = TO_PLAYER;
break;
case 8: //Check for linedef executor on FOFs
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_TRIGGERLINE_MOBJ);
sectors[i].flags |= MSF_TRIGGERLINE_MOBJ;
break;
case 15: //Invert Encore
sectors[i].flags = static_cast<sectorflags_t>(sectors[i].flags | MSF_INVERTENCORE);
sectors[i].flags |= MSF_INVERTENCORE;
break;
default:
break;

View file

@ -340,33 +340,32 @@ struct botcontroller_t
angle_t forceAngle;
};
typedef enum
{
// flipspecial - planes with effect
MSF_FLIPSPECIAL_FLOOR = 1,
MSF_FLIPSPECIAL_CEILING = 1<<1,
MSF_FLIPSPECIAL_BOTH = (MSF_FLIPSPECIAL_FLOOR|MSF_FLIPSPECIAL_CEILING),
// triggerspecial - conditions under which plane touch causes effect
MSF_TRIGGERSPECIAL_TOUCH = 1<<2,
MSF_TRIGGERSPECIAL_HEADBUMP = 1<<3,
// triggerline - conditions for linedef executor triggering
MSF_TRIGGERLINE_PLANE = 1<<4, // require plane touch
MSF_TRIGGERLINE_MOBJ = 1<<5, // allow non-pushable mobjs to trigger
// invertprecip - inverts presence of precipitation
MSF_INVERTPRECIP = 1<<6,
MSF_GRAVITYFLIP = 1<<7,
MSF_HEATWAVE = 1<<8,
MSF_NOCLIPCAMERA = 1<<9,
// water ripple
MSF_RIPPLE_FLOOR = 1<<10,
MSF_RIPPLE_CEILING = 1<<11,
// invert encore color remap status
MSF_INVERTENCORE = 1<<12,
// turn off directional lighting
MSF_FLATLIGHTING = 1<<13,
// force it on (even if it was disabled)
MSF_DIRECTIONLIGHTING = 1<<14,
} sectorflags_t;
typedef int sectorflags_t;
// flipspecial - planes with effect
#define MSF_FLIPSPECIAL_FLOOR (1)
#define MSF_FLIPSPECIAL_CEILING (1<<1)
#define MSF_FLIPSPECIAL_BOTH ((MSF_FLIPSPECIAL_FLOOR)|(MSF_FLIPSPECIAL_CEILING))
// triggerspecial - conditions under which plane touch causes effect
#define MSF_TRIGGERSPECIAL_TOUCH (1<<2)
#define MSF_TRIGGERSPECIAL_HEADBUMP (1<<3)
// triggerline - conditions for linedef executor triggering
#define MSF_TRIGGERLINE_PLANE (1<<4) // require plane touch
#define MSF_TRIGGERLINE_MOBJ (1<<5) // allow non-pushable mobjs to trigger
// invertprecip - inverts presence of precipitation
#define MSF_INVERTPRECIP (1<<6)
#define MSF_GRAVITYFLIP (1<<7)
#define MSF_HEATWAVE (1<<8)
#define MSF_NOCLIPCAMERA (1<<9)
// water ripple
#define MSF_RIPPLE_FLOOR (1<<10)
#define MSF_RIPPLE_CEILING (1<<11)
// invert encore color remap status
#define MSF_INVERTENCORE (1<<12)
// turn off directional lighting
#define MSF_FLATLIGHTING (1<<13)
// force it on (even if it was disabled)
#define MSF_DIRECTIONLIGHTING (1<<14)
typedef enum
{