Rearrange FOF flags and improve custom FOF backwards compatibility

This commit is contained in:
MascaraSnake 2020-05-03 09:13:14 +02:00
parent 96a464c881
commit 35e9e5b33c
4 changed files with 21 additions and 19 deletions

View file

@ -2112,8 +2112,8 @@ udmf
4194304 = "Mario block"; 4194304 = "Mario block";
33554432 = "Intangible from below"; 33554432 = "Intangible from below";
67108864 = "Intangible from above"; 67108864 = "Intangible from above";
1073741824 = "Ripple effect"; 134217728 = "Ripple effect";
2147483648 = "Don't copy light level"; 268435456 = "Don't copy light level";
} }
} }
} }

View file

@ -3163,6 +3163,7 @@ static void P_ConvertBinaryMap(void)
lines[i].args[0] = lines[i].tag; lines[i].args[0] = lines[i].tag;
lines[i].args[1] = sides[lines[i].sidenum[1]].toptexture; lines[i].args[1] = sides[lines[i].sidenum[1]].toptexture;
lines[i].args[2] = sides[lines[i].sidenum[1]].midtexture;
if (lines[i].args[1] & FF_TRANSLUCENT) if (lines[i].args[1] & FF_TRANSLUCENT)
{ {
if (sides[lines[i].sidenum[0]].toptexture > 0) if (sides[lines[i].sidenum[0]].toptexture > 0)

View file

@ -7023,16 +7023,23 @@ void P_SpawnSpecials(boolean fromnetsave)
} }
if (lines[i].args[1] & FF_BUSTUP) if (lines[i].args[1] & FF_BUSTUP)
{ {
if (lines[i].args[1] & BFF_SHATTER) switch (lines[i].args[2] % TMFB_ONLYBOTTOM)
{
case TMFB_TOUCH:
fflr->busttype = BT_TOUCH; fflr->busttype = BT_TOUCH;
else if (lines[i].args[1] & BFF_SPINBUST) break;
case TMFB_SPIN:
fflr->busttype = BT_SPIN; fflr->busttype = BT_SPIN;
else if (lines[i].args[1] & BFF_STRONGBUST) break;
fflr->busttype = BT_STRONG; case TMFB_REGULAR:
else
fflr->busttype = BT_REGULAR; fflr->busttype = BT_REGULAR;
break;
case TMFB_STRONG:
fflr->busttype = BT_STRONG;
break;
}
if (lines[i].args[1] & BFF_SHATTERBOTTOM) if (lines[i].args[2] & TMFB_ONLYBOTTOM)
fflr->bustflags |= BF_ONLYBOTTOM; fflr->bustflags |= BF_ONLYBOTTOM;
if (lines[i].flags & ML_EFFECT4) if (lines[i].flags & ML_EFFECT4)
fflr->bustflags |= BF_PUSHABLES; fflr->bustflags |= BF_PUSHABLES;

View file

@ -144,16 +144,10 @@ typedef enum
FF_PLATFORM = 0x2000000, ///< You can jump up through this to the top. FF_PLATFORM = 0x2000000, ///< You can jump up through this to the top.
FF_REVERSEPLATFORM = 0x4000000, ///< A fall-through floor in normal gravity, a platform in reverse gravity. FF_REVERSEPLATFORM = 0x4000000, ///< A fall-through floor in normal gravity, a platform in reverse gravity.
FF_INTANGIBLEFLATS = 0x6000000, ///< Both flats are intangible, but the sides are still solid. FF_INTANGIBLEFLATS = 0x6000000, ///< Both flats are intangible, but the sides are still solid.
FF_RIPPLE = 0x40000000, ///< Ripple the flats FF_RIPPLE = 0x8000000, ///< Ripple the flats
FF_COLORMAPONLY = 0x80000000, ///< Only copy the colormap, not the lightlevel FF_COLORMAPONLY = 0x10000000, ///< Only copy the colormap, not the lightlevel
} ffloortype_e; } ffloortype_e;
//Binary map format ffloor flags, for backwards compatibility only
#define BFF_SHATTERBOTTOM 0x200000
#define BFF_SHATTER 0x8000000
#define BFF_SPINBUST 0x10000000
#define BFF_STRONGBUST 0x20000000
typedef enum typedef enum
{ {
BT_TOUCH, BT_TOUCH,