diff --git a/src/p_mobj.c b/src/p_mobj.c index 8f89ed0b0dca0cbf32d22a47e8f8fb8bd5cd1e02..39adbc5ab9b0bd82c90cb1d3b06c138b99f20083 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1689,7 +1689,7 @@ static void P_PushableCheckBustables(mobj_t *mo) if (!(rover->flags & FF_BUSTUP)) continue; // Bustable by pushables? - if (!(rover->master->args[3] & 1)) continue; + if (!(rover->master->args[3] & TMFB_PUSHABLES)) continue; if (!rover->master->frontsector->crumblestate) { diff --git a/src/p_setup.c b/src/p_setup.c index a09b2d6595a85b8b7101c78338e8eb5c4402c4ef..e9df4eecdd3afc99c929ee2c74dddf9da012078e 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -2810,24 +2810,24 @@ static void P_ConvertBinaryMap(void) //Visibility if (lines[i].special == 105) - lines[i].args[1] = 3; + lines[i].args[1] = TMFV_NOPLANES|TMFV_NOSIDES; else if (lines[i].special == 104) - lines[i].args[1] = 2; + lines[i].args[1] = TMFV_NOSIDES; else if (lines[i].special == 103) - lines[i].args[1] = 1; + lines[i].args[1] = TMFV_NOPLANES; //Tangibility if (lines[i].flags & ML_EFFECT1) - lines[i].args[2] |= 8; + lines[i].args[2] |= TMFT_DONTBLOCKOTHERS; if (lines[i].flags & ML_EFFECT2) - lines[i].args[2] |= 4; + lines[i].args[2] |= TMFT_DONTBLOCKPLAYER; //Translucency if (lines[i].special == 102) { - lines[i].args[3] |= 1; + lines[i].args[3] |= TMFA_TRANSLUCENT; if (lines[i].flags & ML_NOCLIMB) - lines[i].args[1] |= 4; + lines[i].args[1] |= TMFV_TOGGLEINSIDES; if (sides[lines[i].sidenum[0]].toptexture > 0) lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255; else @@ -2836,7 +2836,7 @@ static void P_ConvertBinaryMap(void) //Shadow? if (lines[i].special != 100 && (lines[i].special != 104 || !(lines[i].flags & ML_NOCLIMB))) - lines[i].args[3] |= 1; + lines[i].args[3] |= TMFA_NOSHADE; lines[i].special = 100; break; @@ -2850,7 +2850,7 @@ static void P_ConvertBinaryMap(void) //Opaque? if (lines[i].special == 120 || lines[i].special == 122) - lines[i].args[1] |= 1; + lines[i].args[1] |= TMFW_OPAQUE; else { if (sides[lines[i].sidenum[0]].toptexture > 0) @@ -2861,19 +2861,19 @@ static void P_ConvertBinaryMap(void) //No sides? if (lines[i].special == 122 || lines[i].special == 123 || lines[i].special == 125) - lines[i].args[1] |= 2; + lines[i].args[1] |= TMFW_NOSIDES; //Flags if (lines[i].flags & ML_NOCLIMB) - lines[i].args[1] |= 4; + lines[i].args[1] |= TMFW_DOUBLESHADOW; if (lines[i].flags & ML_EFFECT4) - lines[i].args[1] |= 8; + lines[i].args[1] |= TMFW_COLORMAPONLY; if (!(lines[i].flags & ML_EFFECT5)) - lines[i].args[1] |= 16; + lines[i].args[1] |= TMFW_NORIPPLE; //Goo? if (lines[i].special >= 124) - lines[i].args[1] |= 32; + lines[i].args[1] |= TMFW_GOOWATER; lines[i].special = 120; break; @@ -2888,29 +2888,29 @@ static void P_ConvertBinaryMap(void) //Visibility if (lines[i].special == 142 || lines[i].special == 145) - lines[i].args[1] = 2; + lines[i].args[1] = TMFV_NOSIDES; else if (lines[i].special == 146) - lines[i].args[1] = 1; + lines[i].args[1] = TMFV_NOPLANES; //Tangibility if (lines[i].special <= 142) - lines[i].args[2] |= 2; + lines[i].args[2] |= TMFT_INTANGIBLEBOTTOM; else if (lines[i].special <= 145) - lines[i].args[2] |= 1; + lines[i].args[2] |= TMFT_INTANGIBLETOP; else - lines[i].args[2] |= 3; + lines[i].args[2] |= TMFT_INTANGIBLEBOTTOM|TMFT_INTANGIBLETOP; if (lines[i].flags & ML_EFFECT1) - lines[i].args[2] |= 8; + lines[i].args[2] |= TMFT_DONTBLOCKOTHERS; if (lines[i].flags & ML_EFFECT2) - lines[i].args[2] |= 4; + lines[i].args[2] |= TMFT_DONTBLOCKPLAYER; //Translucency if (lines[i].special == 141 || lines[i].special == 142 || lines[i].special == 144 || lines[i].special == 145) { - lines[i].args[3] |= 1; + lines[i].args[3] |= TMFA_TRANSLUCENT; if (lines[i].flags & ML_NOCLIMB) - lines[i].args[1] |= 4; + lines[i].args[1] |= TMFV_TOGGLEINSIDES; if (sides[lines[i].sidenum[0]].toptexture > 0) lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255; else @@ -2919,7 +2919,7 @@ static void P_ConvertBinaryMap(void) //Shadow? if (lines[i].special != 146 && (lines[i].flags & ML_NOCLIMB)) - lines[i].args[3] |= 2; + lines[i].args[3] |= TMFA_NOSHADE; lines[i].special = 100; break; @@ -2937,24 +2937,24 @@ static void P_ConvertBinaryMap(void) lines[i].args[0] = lines[i].tag; if (lines[i].special >= 172 && lines[i].special <= 175) { - lines[i].args[1] |= 2; //Intangible from below + lines[i].args[1] |= TMFT_INTANGIBLEBOTTOM; if (lines[i].flags & ML_NOCLIMB) - lines[i].args[2] |= 2; //Don't cast shadow + lines[i].args[2] |= TMFC_NOSHADE; } if (lines[i].special >= 174 && lines[i].special <= 175) { - lines[i].args[2] |= 1; //Translucent + lines[i].args[2] |= TMFC_TRANSLUCENT; if (sides[lines[i].sidenum[0]].toptexture > 0) lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255; else lines[i].alpha = FRACUNIT/2; } if (lines[i].special % 2 == 1) - lines[i].args[2] |= 4; //Don't respawn + lines[i].args[2] |= TMFC_NORETURN; if (lines[i].special == 176 || lines[i].special == 177 || lines[i].special == 180) - lines[i].args[2] |= 8; //Air bobbing + lines[i].args[2] |= TMFC_AIRBOB; if (lines[i].special >= 176 && lines[i].special <= 179) - lines[i].args[2] |= 16; //Float on water + lines[i].args[2] |= TMFC_FLOATBOB; lines[i].special = 170; break; case 200: //FOF: Light block @@ -2975,30 +2975,30 @@ static void P_ConvertBinaryMap(void) //Visibility if (lines[i].special == 222) - lines[i].args[1] |= 1; //Don't render planes + lines[i].args[1] |= TMFV_NOPLANES; if (lines[i].special == 221) - lines[i].args[1] |= 4; //Don't render insides + lines[i].args[1] |= TMFV_TOGGLEINSIDES; //Appearance if (lines[i].special == 221) { - lines[i].args[2] |= 1; //Translucent + lines[i].args[2] |= TMFA_TRANSLUCENT; if (sides[lines[i].sidenum[0]].toptexture > 0) lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255; else lines[i].alpha = FRACUNIT/2; } if (lines[i].special != 220 && !(lines[i].flags & ML_NOCLIMB)) - lines[i].args[2] |= 2; //Don't cast shadow + lines[i].args[2] |= TMFA_NOSHADE; lines[i].special = 220; break; case 250: //FOF: Mario block lines[i].args[0] = lines[i].tag; - if (lines[i].flags & ML_NOCLIMB) //Brick block - lines[i].args[1] |= 1; - if (lines[i].flags & ML_EFFECT1) //Invisible - lines[i].args[1] |= 2; + if (lines[i].flags & ML_NOCLIMB) + lines[i].args[1] |= TMFM_BRICK; + if (lines[i].flags & ML_EFFECT1) + lines[i].args[1] |= TMFM_INVISIBLE; break; case 251: //FOF: Thwomp block lines[i].args[0] = lines[i].tag; @@ -3029,18 +3029,18 @@ static void P_ConvertBinaryMap(void) //Bustable type if (lines[i].special <= 253) - lines[i].args[1] = 0; + lines[i].args[1] = TMFB_TOUCH; else if (lines[i].special >= 255) - lines[i].args[1] = 1; + lines[i].args[1] = TMFB_SPIN; else if (lines[i].flags & ML_NOCLIMB) - lines[i].args[1] = 3; + lines[i].args[1] = TMFB_STRONG; else - lines[i].args[1] = 2; + lines[i].args[1] = TMFB_REGULAR; //Translucency if (lines[i].special == 253 || lines[i].special == 256) { - lines[i].args[2] = 1; + lines[i].args[2] = TMFC_TRANSLUCENT; if (sides[lines[i].sidenum[0]].toptexture > 0) lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255; else @@ -3048,14 +3048,14 @@ static void P_ConvertBinaryMap(void) } if (lines[i].flags & ML_EFFECT4) - lines[i].args[3] |= 1; //Bustable by pushables + lines[i].args[3] |= TMFB_PUSHABLES; if (lines[i].flags & ML_EFFECT5) { - lines[i].args[3] |= 2; //Trigger linedef executor + lines[i].args[3] |= TMFB_EXECUTOR; lines[i].args[4] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS; } if (lines[i].special == 252 && lines[i].flags & ML_NOCLIMB) - lines[i].args[4] |= 4; //Bust only from below + lines[i].args[4] |= TMFB_ONLYBOTTOM; lines[i].special = 254; break; diff --git a/src/p_spec.c b/src/p_spec.c index ff6275889ff7a47d5ecdadafa76093d2ccaee7be..9f5eed74a42c738af9c9166de0534b445dd98e19 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -6736,11 +6736,11 @@ void P_SpawnSpecials(boolean fromnetsave) ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL; //Visibility settings - if (lines[i].args[1] & 1) //Don't render planes + if (lines[i].args[1] & TMFV_NOPLANES) ffloorflags &= ~FF_RENDERPLANES; - if (lines[i].args[1] & 2) //Don't render sides + if (lines[i].args[1] & TMFV_NOSIDES) ffloorflags &= ~FF_RENDERSIDES; - if (lines[i].args[1] & 4) //Render insides + if (lines[i].args[1] & TMFV_TOGGLEINSIDES) { if (ffloorflags & FF_RENDERPLANES) ffloorflags |= FF_BOTHPLANES; @@ -6749,26 +6749,26 @@ void P_SpawnSpecials(boolean fromnetsave) } //Tangibility settings - if (lines[i].args[2] & 1) //Intangible from top + if (lines[i].args[2] & TMFT_INTANGIBLETOP) ffloorflags |= FF_REVERSEPLATFORM; - if (lines[i].args[2] & 2) //Intangible from bottom + if (lines[i].args[2] & TMFT_INTANGIBLEBOTTOM) ffloorflags |= FF_PLATFORM; - if (lines[i].args[2] & 4) //Don't block player + if (lines[i].args[2] & TMFT_DONTBLOCKPLAYER) ffloorflags &= ~FF_BLOCKPLAYER; - if (lines[i].args[2] & 8) //Don't block others + if (lines[i].args[2] & TMFT_DONTBLOCKOTHERS) ffloorflags &= ~FF_BLOCKOTHERS; //Appearance settings - if ((lines[i].args[3] & 1) && (ffloorflags & FF_RENDERALL)) //Translucent + if ((lines[i].args[3] & TMFA_TRANSLUCENT) && (ffloorflags & FF_RENDERALL)) //Translucent ffloorflags |= FF_TRANSLUCENT; - if (lines[i].args[3] & 2) //Don't cast shadow + if (lines[i].args[3] & TMFA_NOSHADE) ffloorflags |= FF_NOSHADE; //Cutting options if (ffloorflags & FF_RENDERALL) { //If translucent or player can enter it, cut inner walls - if ((ffloorflags & FF_TRANSLUCENT) || (lines[i].args[2] & 7)) + if ((ffloorflags & FF_TRANSLUCENT) || (lines[i].args[2] & TMFT_VISIBLEFROMINSIDE)) ffloorflags |= FF_CUTEXTRA|FF_EXTRA; else ffloorflags |= FF_CUTLEVEL; @@ -6779,17 +6779,17 @@ void P_SpawnSpecials(boolean fromnetsave) case 120: // FOF (water) ffloorflags = FF_EXISTS|FF_RENDERPLANES|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES; - if (!(lines[i].args[1] & 1)) + if (!(lines[i].args[1] & TMFW_OPAQUE)) ffloorflags |= FF_TRANSLUCENT; - if (!(lines[i].args[1] & 2)) + if (!(lines[i].args[1] & TMFW_NOSIDES)) ffloorflags |= FF_RENDERSIDES|FF_ALLSIDES; - if (lines[i].args[1] & 4) + if (lines[i].args[1] & TMFW_DOUBLESHADOW) ffloorflags |= FF_DOUBLESHADOW; - if (lines[i].args[1] & 8) + if (lines[i].args[1] & TMFW_COLORMAPONLY) ffloorflags |= FF_COLORMAPONLY; - if (!(lines[i].args[1] & 16)) + if (!(lines[i].args[1] & TMFW_NORIPPLE)) ffloorflags |= FF_RIPPLE; - if (lines[i].args[1] & 32) + if (lines[i].args[1] & TMFW_GOOWATER) ffloorflags |= FF_GOOWATER; P_AddFakeFloorsByLine(i, ffloorflags, secthinkers); break; @@ -6819,33 +6819,33 @@ void P_SpawnSpecials(boolean fromnetsave) ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CRUMBLE; //Tangibility settings - if (lines[i].args[1] & 1) //Intangible from top + if (lines[i].args[1] & TMFT_INTANGIBLETOP) ffloorflags |= FF_REVERSEPLATFORM; - if (lines[i].args[1] & 2) //Intangible from bottom + if (lines[i].args[1] & TMFT_INTANGIBLEBOTTOM) ffloorflags |= FF_PLATFORM; - if (lines[i].args[1] & 4) //Don't block player + if (lines[i].args[1] & TMFT_DONTBLOCKPLAYER) ffloorflags &= ~FF_BLOCKPLAYER; - if (lines[i].args[1] & 8) //Don't block others + if (lines[i].args[1] & TMFT_DONTBLOCKOTHERS) ffloorflags &= ~FF_BLOCKOTHERS; //Flags - if (lines[i].args[2] & 1) //Translucent + if (lines[i].args[2] & TMFC_TRANSLUCENT) ffloorflags |= FF_TRANSLUCENT; - if (lines[i].args[2] & 2) //Don't cast shadow + if (lines[i].args[2] & TMFC_NOSHADE) ffloorflags |= FF_NOSHADE; - if (lines[i].args[2] & 4) //Don't respawn + if (lines[i].args[2] & TMFC_NORETURN) ffloorflags |= FF_NORETURN; - if (lines[i].args[2] & 16) //Float on water + if (lines[i].args[2] & TMFC_FLOATBOB) ffloorflags |= FF_FLOATBOB; //If translucent or player can enter it, cut inner walls - if ((ffloorflags & FF_TRANSLUCENT) || (lines[i].args[1] & 7)) + if ((ffloorflags & FF_TRANSLUCENT) || (lines[i].args[1] & TMFT_VISIBLEFROMINSIDE)) ffloorflags |= FF_CUTEXTRA|FF_EXTRA; else ffloorflags |= FF_CUTLEVEL; //If player can enter it, render insides - if (lines[i].args[1] & 7) + if (lines[i].args[1] & TMFT_VISIBLEFROMINSIDE) { if (ffloorflags & FF_RENDERPLANES) ffloorflags |= FF_BOTHPLANES; @@ -6854,7 +6854,7 @@ void P_SpawnSpecials(boolean fromnetsave) } P_AddFakeFloorsByLine(i, ffloorflags, secthinkers); - if (lines[i].args[2] & 8) //Air bobbing + if (lines[i].args[2] & TMFC_AIRBOB) P_AddAirbob(lines[i].frontsector, lines + i, 16*FRACUNIT, false, false, false); break; @@ -6918,11 +6918,11 @@ void P_SpawnSpecials(boolean fromnetsave) ffloorflags = FF_EXISTS|FF_RENDERALL|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES; //Visibility settings - if (lines[i].args[1] & 1) //Don't render planes + if (lines[i].args[1] & TMFV_NOPLANES) ffloorflags &= ~FF_RENDERPLANES; - if (lines[i].args[1] & 2) //Don't render sides + if (lines[i].args[1] & TMFV_NOSIDES) ffloorflags &= ~FF_RENDERSIDES; - if (!(lines[i].args[1] & 4)) //Render insides + if (!(lines[i].args[1] & TMFV_TOGGLEINSIDES)) { if (ffloorflags & FF_RENDERPLANES) ffloorflags |= FF_BOTHPLANES; @@ -6931,9 +6931,9 @@ void P_SpawnSpecials(boolean fromnetsave) } //Appearance settings - if ((lines[i].args[2] & 1) && (ffloorflags & FF_RENDERALL)) //Translucent + if ((lines[i].args[2] & TMFA_TRANSLUCENT) && (ffloorflags & FF_RENDERALL)) ffloorflags |= FF_TRANSLUCENT; - if (lines[i].args[2] & 2) //Don't cast shadow + if (lines[i].args[2] & TMFA_NOSHADE) ffloorflags |= FF_NOSHADE; P_AddFakeFloorsByLine(i, ffloorflags, secthinkers); @@ -6945,9 +6945,9 @@ void P_SpawnSpecials(boolean fromnetsave) case 250: // Mario Block ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_MARIO; - if (lines[i].args[1] & 1) //Brick block + if (lines[i].args[1] & TMFM_BRICK) ffloorflags |= FF_SHATTERBOTTOM; - if (lines[i].args[1] & 2) // Invisible + if (lines[i].args[1] & TMFM_INVISIBLE) ffloorflags &= ~(FF_SOLID|FF_RENDERALL|FF_CUTLEVEL); P_AddFakeFloorsByLine(i, ffloorflags, secthinkers); @@ -6969,13 +6969,13 @@ void P_SpawnSpecials(boolean fromnetsave) //Bustable type switch (lines[i].args[1]) { - case 0: + case TMFB_TOUCH: ffloorflags |= FF_SHATTER; break; - case 1: + case TMFB_SPIN: ffloorflags |= FF_SPINBUST; break; - case 3: + case TMFB_STRONG: ffloorflags |= FF_STRONGBUST; break; default: @@ -6985,7 +6985,7 @@ void P_SpawnSpecials(boolean fromnetsave) if (lines[i].args[2]) ffloorflags |= FF_TRANSLUCENT; - if (lines[i].args[2] & 4) + if (lines[i].args[3] & TMFB_ONLYBOTTOM) ffloorflags |= FF_SHATTERBOTTOM; if (!(ffloorflags & FF_SHATTER) || ffloorflags & FF_SHATTERBOTTOM) diff --git a/src/p_spec.h b/src/p_spec.h index d756f1942cd5df09d580fed144ba56e7202445db..6d13e9da7416ee1212e598519491ef0fcd903c86 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -21,6 +21,69 @@ extern mobj_t *skyboxmo[2]; // current skybox mobjs: 0 = viewpoint, 1 = centerpo extern mobj_t *skyboxviewpnts[16]; // array of MT_SKYBOX viewpoint mobjs extern mobj_t *skyboxcenterpnts[16]; // array of MT_SKYBOX centerpoint mobjs +//FOF flags +typedef enum +{ + TMFV_NOPLANES = 1, + TMFV_NOSIDES = 1<<1, + TMFV_TOGGLEINSIDES = 1<<2, +} textmapfofvisibility_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, +} textmapfoftangibility_t; + +typedef enum +{ + TMFA_TRANSLUCENT = 1, + TMFA_NOSHADE = 1<<1, +} textmapfofappearance_t; + +typedef enum +{ + TMFW_OPAQUE = 1, + TMFW_NOSIDES = 1<<1, + TMFW_DOUBLESHADOW = 1<<2, + TMFW_COLORMAPONLY = 1<<3, + TMFW_NORIPPLE = 1<<4, + TMFW_GOOWATER = 1<<5, +} textmapfofwater_t; + +typedef enum +{ + TMFC_TRANSLUCENT = 1, + TMFC_NOSHADE = 1<<1, + TMFC_NORETURN = 1<<2, + TMFC_AIRBOB = 1<<3, + TMFC_FLOATBOB = 1<<4, +} textmapfofcrumbling_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, +} textmapfofbustflags_t; + // GETSECSPECIAL (specialval, section) // // Pulls out the special # from a particular section. diff --git a/src/p_user.c b/src/p_user.c index c1dc2676d5e8f2ee8234db7be3389b5ffc638a77..8accce238de7af8421adc30b6a91197cd20a6131 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2663,7 +2663,7 @@ static void P_CheckBustableBlocks(player_t *player) EV_CrumbleChain(NULL, rover); // node->m_sector // Run a linedef executor?? - if (rover->master->args[3] & 2) + if (rover->master->args[3] & TMFB_EXECUTOR) P_LinedefExecute((INT16)(rover->master->args[4]), player->mo, node->m_sector); goto bustupdone; @@ -12213,7 +12213,7 @@ void P_PlayerThink(player_t *player) player->powers[pw_nocontrol]--; else player->powers[pw_nocontrol] = 0; - + //pw_super acts as a timer now if (player->powers[pw_super] && (player->mo->state < &states[S_PLAY_SUPER_TRANS1]