mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 01:01:33 +00:00
Revamp alpha setup for the remaining FOFs
This commit is contained in:
parent
6521496d8a
commit
5f9af65aa0
4 changed files with 171 additions and 158 deletions
|
@ -1757,31 +1757,29 @@ udmf
|
||||||
}
|
}
|
||||||
arg1
|
arg1
|
||||||
{
|
{
|
||||||
title = "Visibility";
|
title = "Alpha";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Appearance";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
1 = "Don't render planes";
|
1 = "Don't render planes";
|
||||||
2 = "Don't render sides";
|
2 = "Don't render sides";
|
||||||
4 = "Render insides";
|
4 = "Render insides";
|
||||||
|
8 = "Render only insides";
|
||||||
|
16 = "No shadow";
|
||||||
|
32 = "Cut cyan flat pixels";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
arg2
|
arg3
|
||||||
{
|
{
|
||||||
title = "Tangibility";
|
title = "Tangibility";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum = "tangibility";
|
enum = "tangibility";
|
||||||
}
|
}
|
||||||
arg3
|
|
||||||
{
|
|
||||||
title = "Appearance";
|
|
||||||
type = 12;
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
1 = "Translucent";
|
|
||||||
2 = "No shadow";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
120
|
120
|
||||||
|
@ -1931,31 +1929,29 @@ udmf
|
||||||
}
|
}
|
||||||
arg1
|
arg1
|
||||||
{
|
{
|
||||||
title = "Visibility";
|
title = "Alpha";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Appearance";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
1 = "Don't render planes";
|
1 = "Don't render planes";
|
||||||
2 = "Don't render sides";
|
2 = "Don't render sides";
|
||||||
4 = "Render insides";
|
4 = "Render insides";
|
||||||
|
8 = "Render only insides";
|
||||||
|
16 = "No shadow";
|
||||||
|
32 = "Cut cyan flat pixels";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
arg2
|
arg3
|
||||||
{
|
{
|
||||||
title = "Tangibility";
|
title = "Tangibility";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum = "tangibility";
|
enum = "tangibility";
|
||||||
}
|
}
|
||||||
arg3
|
|
||||||
{
|
|
||||||
title = "Appearance";
|
|
||||||
type = 12;
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
1 = "Translucent";
|
|
||||||
2 = "No shadow";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
arg4
|
arg4
|
||||||
{
|
{
|
||||||
title = "Speed";
|
title = "Speed";
|
||||||
|
@ -2011,14 +2007,8 @@ udmf
|
||||||
}
|
}
|
||||||
arg1
|
arg1
|
||||||
{
|
{
|
||||||
title = "Visibility";
|
title = "Alpha";
|
||||||
type = 12;
|
default = 255;
|
||||||
enum
|
|
||||||
{
|
|
||||||
1 = "Don't render planes";
|
|
||||||
2 = "Don't render sides";
|
|
||||||
4 = "Don't render insides";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
arg2
|
arg2
|
||||||
{
|
{
|
||||||
|
@ -2026,8 +2016,12 @@ udmf
|
||||||
type = 12;
|
type = 12;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
1 = "Translucent";
|
1 = "Don't render planes";
|
||||||
2 = "No shadow";
|
2 = "Don't render sides";
|
||||||
|
4 = "Don't render insides";
|
||||||
|
8 = "Render only insides";
|
||||||
|
16 = "No shadow";
|
||||||
|
32 = "Cut cyan flat pixels";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
156
src/p_setup.c
156
src/p_setup.c
|
@ -3016,35 +3016,36 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 105: //FOF: solid, invisible
|
case 105: //FOF: solid, invisible
|
||||||
lines[i].args[0] = lines[i].tag;
|
lines[i].args[0] = lines[i].tag;
|
||||||
|
|
||||||
//Visibility
|
//Alpha
|
||||||
|
if (lines[i].special == 102)
|
||||||
|
{
|
||||||
|
if (lines[i].flags & ML_NOCLIMB)
|
||||||
|
lines[i].args[2] |= TMFA_INSIDES;
|
||||||
|
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
||||||
|
lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
|
||||||
|
else
|
||||||
|
lines[i].args[1] = 128;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
lines[i].args[1] = 255;
|
||||||
|
|
||||||
|
//Appearance
|
||||||
if (lines[i].special == 105)
|
if (lines[i].special == 105)
|
||||||
lines[i].args[1] = TMFV_NOPLANES|TMFV_NOSIDES;
|
lines[i].args[2] = TMFA_NOPLANES|TMFA_NOSIDES;
|
||||||
else if (lines[i].special == 104)
|
else if (lines[i].special == 104)
|
||||||
lines[i].args[1] = TMFV_NOSIDES;
|
lines[i].args[2] = TMFA_NOSIDES;
|
||||||
else if (lines[i].special == 103)
|
else if (lines[i].special == 103)
|
||||||
lines[i].args[1] = TMFV_NOPLANES;
|
lines[i].args[2] = TMFA_NOPLANES;
|
||||||
|
if (lines[i].special != 100 && (lines[i].special != 104 || !(lines[i].flags & ML_NOCLIMB)))
|
||||||
|
lines[i].args[2] |= TMFA_NOSHADE;
|
||||||
|
if (lines[i].flags & ML_EFFECT6)
|
||||||
|
lines[i].args[2] |= TMFA_SPLAT;
|
||||||
|
|
||||||
//Tangibility
|
//Tangibility
|
||||||
if (lines[i].flags & ML_EFFECT1)
|
if (lines[i].flags & ML_EFFECT1)
|
||||||
lines[i].args[2] |= TMFT_DONTBLOCKOTHERS;
|
lines[i].args[3] |= TMFT_DONTBLOCKOTHERS;
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
if (lines[i].flags & ML_EFFECT2)
|
||||||
lines[i].args[2] |= TMFT_DONTBLOCKPLAYER;
|
lines[i].args[3] |= TMFT_DONTBLOCKPLAYER;
|
||||||
|
|
||||||
//Translucency
|
|
||||||
if (lines[i].special == 102)
|
|
||||||
{
|
|
||||||
lines[i].args[3] |= TMFA_TRANSLUCENT;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
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
|
|
||||||
lines[i].alpha = FRACUNIT/2;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Shadow?
|
|
||||||
if (lines[i].special != 100 && (lines[i].special != 104 || !(lines[i].flags & ML_NOCLIMB)))
|
|
||||||
lines[i].args[3] |= TMFA_NOSHADE;
|
|
||||||
|
|
||||||
lines[i].special = 100;
|
lines[i].special = 100;
|
||||||
break;
|
break;
|
||||||
|
@ -3098,40 +3099,41 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 146: //FOF: only tangible from sides
|
case 146: //FOF: only tangible from sides
|
||||||
lines[i].args[0] = lines[i].tag;
|
lines[i].args[0] = lines[i].tag;
|
||||||
|
|
||||||
//Visibility
|
//Alpha
|
||||||
|
if (lines[i].special == 141 || lines[i].special == 142 || lines[i].special == 144 || lines[i].special == 145)
|
||||||
|
{
|
||||||
|
if (lines[i].flags & ML_NOCLIMB)
|
||||||
|
lines[i].args[2] |= TMFA_INSIDES;
|
||||||
|
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
||||||
|
lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
|
||||||
|
else
|
||||||
|
lines[i].args[1] = 128;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
lines[i].args[1] = 255;
|
||||||
|
|
||||||
|
//Appearance
|
||||||
if (lines[i].special == 142 || lines[i].special == 145)
|
if (lines[i].special == 142 || lines[i].special == 145)
|
||||||
lines[i].args[1] = TMFV_NOSIDES;
|
lines[i].args[2] = TMFA_NOSIDES;
|
||||||
else if (lines[i].special == 146)
|
else if (lines[i].special == 146)
|
||||||
lines[i].args[1] = TMFV_NOPLANES;
|
lines[i].args[2] = TMFA_NOPLANES;
|
||||||
|
if (lines[i].special != 146 && (lines[i].flags & ML_NOCLIMB))
|
||||||
|
lines[i].args[2] |= TMFA_NOSHADE;
|
||||||
|
if (lines[i].flags & ML_EFFECT6)
|
||||||
|
lines[i].args[2] |= TMFA_SPLAT;
|
||||||
|
|
||||||
//Tangibility
|
//Tangibility
|
||||||
if (lines[i].special <= 142)
|
if (lines[i].special <= 142)
|
||||||
lines[i].args[2] |= TMFT_INTANGIBLEBOTTOM;
|
lines[i].args[3] |= TMFT_INTANGIBLEBOTTOM;
|
||||||
else if (lines[i].special <= 145)
|
else if (lines[i].special <= 145)
|
||||||
lines[i].args[2] |= TMFT_INTANGIBLETOP;
|
lines[i].args[3] |= TMFT_INTANGIBLETOP;
|
||||||
else
|
else
|
||||||
lines[i].args[2] |= TMFT_INTANGIBLEBOTTOM|TMFT_INTANGIBLETOP;
|
lines[i].args[3] |= TMFT_INTANGIBLEBOTTOM|TMFT_INTANGIBLETOP;
|
||||||
|
|
||||||
if (lines[i].flags & ML_EFFECT1)
|
if (lines[i].flags & ML_EFFECT1)
|
||||||
lines[i].args[2] |= TMFT_DONTBLOCKOTHERS;
|
lines[i].args[3] |= TMFT_DONTBLOCKOTHERS;
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
if (lines[i].flags & ML_EFFECT2)
|
||||||
lines[i].args[2] |= TMFT_DONTBLOCKPLAYER;
|
lines[i].args[3] |= TMFT_DONTBLOCKPLAYER;
|
||||||
|
|
||||||
//Translucency
|
|
||||||
if (lines[i].special == 141 || lines[i].special == 142 || lines[i].special == 144 || lines[i].special == 145)
|
|
||||||
{
|
|
||||||
lines[i].args[3] |= TMFA_TRANSLUCENT;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
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
|
|
||||||
lines[i].alpha = FRACUNIT/2;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Shadow?
|
|
||||||
if (lines[i].special != 146 && (lines[i].flags & ML_NOCLIMB))
|
|
||||||
lines[i].args[3] |= TMFA_NOSHADE;
|
|
||||||
|
|
||||||
lines[i].special = 100;
|
lines[i].special = 100;
|
||||||
break;
|
break;
|
||||||
|
@ -3227,33 +3229,34 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 195: // FOF: Rising, intangible from bottom, translucent
|
case 195: // FOF: Rising, intangible from bottom, translucent
|
||||||
lines[i].args[0] = lines[i].tag;
|
lines[i].args[0] = lines[i].tag;
|
||||||
|
|
||||||
//Visibility
|
|
||||||
if (lines[i].special == 193)
|
|
||||||
lines[i].args[1] = TMFV_NOPLANES|TMFV_NOSIDES;
|
|
||||||
if (lines[i].special >= 194)
|
|
||||||
lines[i].args[1] = TMFV_TOGGLEINSIDES;
|
|
||||||
|
|
||||||
//Tangibility
|
|
||||||
if (lines[i].flags & ML_EFFECT1)
|
|
||||||
lines[i].args[2] |= TMFT_DONTBLOCKOTHERS;
|
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
|
||||||
lines[i].args[2] |= TMFT_DONTBLOCKPLAYER;
|
|
||||||
if (lines[i].special >= 194)
|
|
||||||
lines[i].args[2] |= TMFT_INTANGIBLEBOTTOM;
|
|
||||||
|
|
||||||
//Translucency
|
//Translucency
|
||||||
if (lines[i].special == 192 || lines[i].special == 195)
|
if (lines[i].special == 192 || lines[i].special == 195)
|
||||||
{
|
{
|
||||||
lines[i].args[3] |= TMFA_TRANSLUCENT;
|
|
||||||
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
||||||
lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255;
|
lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
|
||||||
else
|
else
|
||||||
lines[i].alpha = FRACUNIT/2;
|
lines[i].args[1] = 128;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
lines[i].args[1] = 255;
|
||||||
|
|
||||||
//Shadow?
|
//Appearance
|
||||||
|
if (lines[i].special == 193)
|
||||||
|
lines[i].args[2] = TMFA_NOPLANES|TMFA_NOSIDES;
|
||||||
|
if (lines[i].special >= 194)
|
||||||
|
lines[i].args[2] = TMFA_INSIDES;
|
||||||
if (lines[i].special != 190 && (lines[i].special <= 193 || lines[i].flags & ML_NOCLIMB))
|
if (lines[i].special != 190 && (lines[i].special <= 193 || lines[i].flags & ML_NOCLIMB))
|
||||||
lines[i].args[3] |= TMFA_NOSHADE;
|
lines[i].args[2] |= TMFA_NOSHADE;
|
||||||
|
if (lines[i].flags & ML_EFFECT6)
|
||||||
|
lines[i].args[2] |= TMFA_SPLAT;
|
||||||
|
|
||||||
|
//Tangibility
|
||||||
|
if (lines[i].flags & ML_EFFECT1)
|
||||||
|
lines[i].args[3] |= TMFT_DONTBLOCKOTHERS;
|
||||||
|
if (lines[i].flags & ML_EFFECT2)
|
||||||
|
lines[i].args[3] |= TMFT_DONTBLOCKPLAYER;
|
||||||
|
if (lines[i].special >= 194)
|
||||||
|
lines[i].args[3] |= TMFT_INTANGIBLEBOTTOM;
|
||||||
|
|
||||||
//Speed
|
//Speed
|
||||||
lines[i].args[4] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
|
lines[i].args[4] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
|
||||||
|
@ -3282,23 +3285,26 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 222: //FOF: Intangible, sides only
|
case 222: //FOF: Intangible, sides only
|
||||||
lines[i].args[0] = lines[i].tag;
|
lines[i].args[0] = lines[i].tag;
|
||||||
|
|
||||||
//Visibility
|
//Alpha
|
||||||
if (lines[i].special == 222)
|
|
||||||
lines[i].args[1] |= TMFV_NOPLANES;
|
|
||||||
if (lines[i].special == 221)
|
|
||||||
lines[i].args[1] |= TMFV_TOGGLEINSIDES;
|
|
||||||
|
|
||||||
//Appearance
|
|
||||||
if (lines[i].special == 221)
|
if (lines[i].special == 221)
|
||||||
{
|
{
|
||||||
lines[i].args[2] |= TMFA_TRANSLUCENT;
|
|
||||||
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
||||||
lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255;
|
lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
|
||||||
else
|
else
|
||||||
lines[i].alpha = FRACUNIT/2;
|
lines[i].args[1] = 128;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
lines[i].args[1] = 255;
|
||||||
|
|
||||||
|
//Appearance
|
||||||
|
if (lines[i].special == 222)
|
||||||
|
lines[i].args[2] |= TMFA_NOPLANES;
|
||||||
|
if (lines[i].special != 221)
|
||||||
|
lines[i].args[2] |= TMFA_INSIDES;
|
||||||
if (lines[i].special != 220 && !(lines[i].flags & ML_NOCLIMB))
|
if (lines[i].special != 220 && !(lines[i].flags & ML_NOCLIMB))
|
||||||
lines[i].args[2] |= TMFA_NOSHADE;
|
lines[i].args[2] |= TMFA_NOSHADE;
|
||||||
|
if (lines[i].flags & ML_EFFECT6)
|
||||||
|
lines[i].args[2] |= TMFA_SPLAT;
|
||||||
|
|
||||||
lines[i].special = 220;
|
lines[i].special = 220;
|
||||||
break;
|
break;
|
||||||
|
|
93
src/p_spec.c
93
src/p_spec.c
|
@ -6602,46 +6602,51 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
case 100: // FOF (solid)
|
case 100: // FOF (solid)
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL;
|
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL;
|
||||||
|
|
||||||
//Visibility settings
|
//Appearance settings
|
||||||
if (lines[i].args[1] & TMFV_NOPLANES)
|
if (lines[i].args[2] & TMFA_NOPLANES)
|
||||||
ffloorflags &= ~FF_RENDERPLANES;
|
ffloorflags &= ~FF_RENDERPLANES;
|
||||||
if (lines[i].args[1] & TMFV_NOSIDES)
|
if (lines[i].args[2] & TMFA_NOSIDES)
|
||||||
ffloorflags &= ~FF_RENDERSIDES;
|
ffloorflags &= ~FF_RENDERSIDES;
|
||||||
if (lines[i].args[1] & TMFV_TOGGLEINSIDES)
|
if (lines[i].args[2] & TMFA_INSIDES)
|
||||||
{
|
{
|
||||||
if (ffloorflags & FF_RENDERPLANES)
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
ffloorflags |= FF_BOTHPLANES;
|
ffloorflags |= FF_BOTHPLANES;
|
||||||
if (ffloorflags & FF_RENDERSIDES)
|
if (ffloorflags & FF_RENDERSIDES)
|
||||||
ffloorflags |= FF_ALLSIDES;
|
ffloorflags |= FF_ALLSIDES;
|
||||||
}
|
}
|
||||||
|
if (lines[i].args[2] & TMFA_ONLYINSIDES)
|
||||||
|
{
|
||||||
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
|
ffloorflags |= FF_INVERTPLANES;
|
||||||
|
if (ffloorflags & FF_RENDERSIDES)
|
||||||
|
ffloorflags |= FF_INVERTSIDES;
|
||||||
|
}
|
||||||
|
if (lines[i].args[2] & TMFA_NOSHADE)
|
||||||
|
ffloorflags |= FF_NOSHADE;
|
||||||
|
if (lines[i].args[2] & TMFA_SPLAT)
|
||||||
|
ffloorflags |= FF_SPLAT;
|
||||||
|
|
||||||
//Tangibility settings
|
//Tangibility settings
|
||||||
if (lines[i].args[2] & TMFT_INTANGIBLETOP)
|
if (lines[i].args[3] & TMFT_INTANGIBLETOP)
|
||||||
ffloorflags |= FF_REVERSEPLATFORM;
|
ffloorflags |= FF_REVERSEPLATFORM;
|
||||||
if (lines[i].args[2] & TMFT_INTANGIBLEBOTTOM)
|
if (lines[i].args[3] & TMFT_INTANGIBLEBOTTOM)
|
||||||
ffloorflags |= FF_PLATFORM;
|
ffloorflags |= FF_PLATFORM;
|
||||||
if (lines[i].args[2] & TMFT_DONTBLOCKPLAYER)
|
if (lines[i].args[3] & TMFT_DONTBLOCKPLAYER)
|
||||||
ffloorflags &= ~FF_BLOCKPLAYER;
|
ffloorflags &= ~FF_BLOCKPLAYER;
|
||||||
if (lines[i].args[2] & TMFT_DONTBLOCKOTHERS)
|
if (lines[i].args[3] & TMFT_DONTBLOCKOTHERS)
|
||||||
ffloorflags &= ~FF_BLOCKOTHERS;
|
ffloorflags &= ~FF_BLOCKOTHERS;
|
||||||
|
|
||||||
//Appearance settings
|
|
||||||
if ((lines[i].args[3] & TMFA_TRANSLUCENT) && (ffloorflags & FF_RENDERALL)) //Translucent
|
|
||||||
ffloorflags |= FF_TRANSLUCENT;
|
|
||||||
if (lines[i].args[3] & TMFA_NOSHADE)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
//Cutting options
|
//Cutting options
|
||||||
if (ffloorflags & FF_RENDERALL)
|
if (ffloorflags & FF_RENDERALL)
|
||||||
{
|
{
|
||||||
//If translucent or player can enter it, cut inner walls
|
//If translucent or player can enter it, cut inner walls
|
||||||
if ((ffloorflags & FF_TRANSLUCENT) || (lines[i].args[2] & TMFT_VISIBLEFROMINSIDE))
|
if ((lines[i].args[1] < 255) || (lines[i].args[3] & TMFT_VISIBLEFROMINSIDE))
|
||||||
ffloorflags |= FF_CUTEXTRA|FF_EXTRA;
|
ffloorflags |= FF_CUTEXTRA|FF_EXTRA;
|
||||||
else
|
else
|
||||||
ffloorflags |= FF_CUTLEVEL;
|
ffloorflags |= FF_CUTLEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, (ffloorflags & FF_TRANSLUCENT) ? (lines[i].alpha * 0xff) >> FRACBITS : 0xff, ffloorflags, secthinkers);
|
P_AddFakeFloorsByLine(i, lines[i].args[1], ffloorflags, secthinkers);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 120: // FOF (water)
|
case 120: // FOF (water)
|
||||||
|
@ -6765,40 +6770,45 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
|
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL;
|
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL;
|
||||||
|
|
||||||
//Visibility settings
|
//Appearance settings
|
||||||
if (lines[i].args[1] & TMFV_NOPLANES)
|
if (lines[i].args[2] & TMFA_NOPLANES)
|
||||||
ffloorflags &= ~FF_RENDERPLANES;
|
ffloorflags &= ~FF_RENDERPLANES;
|
||||||
if (lines[i].args[1] & TMFV_NOSIDES)
|
if (lines[i].args[2] & TMFA_NOSIDES)
|
||||||
ffloorflags &= ~FF_RENDERSIDES;
|
ffloorflags &= ~FF_RENDERSIDES;
|
||||||
if (lines[i].args[1] & TMFV_TOGGLEINSIDES)
|
if (lines[i].args[2] & TMFA_INSIDES)
|
||||||
{
|
{
|
||||||
if (ffloorflags & FF_RENDERPLANES)
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
ffloorflags |= FF_BOTHPLANES;
|
ffloorflags |= FF_BOTHPLANES;
|
||||||
if (ffloorflags & FF_RENDERSIDES)
|
if (ffloorflags & FF_RENDERSIDES)
|
||||||
ffloorflags |= FF_ALLSIDES;
|
ffloorflags |= FF_ALLSIDES;
|
||||||
}
|
}
|
||||||
|
if (lines[i].args[2] & TMFA_ONLYINSIDES)
|
||||||
|
{
|
||||||
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
|
ffloorflags |= FF_INVERTPLANES;
|
||||||
|
if (ffloorflags & FF_RENDERSIDES)
|
||||||
|
ffloorflags |= FF_INVERTSIDES;
|
||||||
|
}
|
||||||
|
if (lines[i].args[2] & TMFA_NOSHADE)
|
||||||
|
ffloorflags |= FF_NOSHADE;
|
||||||
|
if (lines[i].args[2] & TMFA_SPLAT)
|
||||||
|
ffloorflags |= FF_SPLAT;
|
||||||
|
|
||||||
//Tangibility settings
|
//Tangibility settings
|
||||||
if (lines[i].args[2] & TMFT_INTANGIBLETOP)
|
if (lines[i].args[3] & TMFT_INTANGIBLETOP)
|
||||||
ffloorflags |= FF_REVERSEPLATFORM;
|
ffloorflags |= FF_REVERSEPLATFORM;
|
||||||
if (lines[i].args[2] & TMFT_INTANGIBLEBOTTOM)
|
if (lines[i].args[3] & TMFT_INTANGIBLEBOTTOM)
|
||||||
ffloorflags |= FF_PLATFORM;
|
ffloorflags |= FF_PLATFORM;
|
||||||
if (lines[i].args[2] & TMFT_DONTBLOCKPLAYER)
|
if (lines[i].args[3] & TMFT_DONTBLOCKPLAYER)
|
||||||
ffloorflags &= ~FF_BLOCKPLAYER;
|
ffloorflags &= ~FF_BLOCKPLAYER;
|
||||||
if (lines[i].args[2] & TMFT_DONTBLOCKOTHERS)
|
if (lines[i].args[3] & TMFT_DONTBLOCKOTHERS)
|
||||||
ffloorflags &= ~FF_BLOCKOTHERS;
|
ffloorflags &= ~FF_BLOCKOTHERS;
|
||||||
|
|
||||||
//Appearance settings
|
|
||||||
if ((lines[i].args[3] & TMFA_TRANSLUCENT) && (ffloorflags & FF_RENDERALL)) //Translucent
|
|
||||||
ffloorflags |= FF_TRANSLUCENT;
|
|
||||||
if (lines[i].args[3] & TMFA_NOSHADE)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
|
||||||
|
|
||||||
//Cutting options
|
//Cutting options
|
||||||
if (ffloorflags & FF_RENDERALL)
|
if (ffloorflags & FF_RENDERALL)
|
||||||
{
|
{
|
||||||
//If translucent or player can enter it, cut inner walls
|
//If translucent or player can enter it, cut inner walls
|
||||||
if ((ffloorflags & FF_TRANSLUCENT) || (lines[i].args[2] & TMFT_VISIBLEFROMINSIDE))
|
if ((lines[i].args[1] < 255) || (lines[i].args[3] & TMFT_VISIBLEFROMINSIDE))
|
||||||
ffloorflags |= FF_CUTEXTRA|FF_EXTRA;
|
ffloorflags |= FF_CUTEXTRA|FF_EXTRA;
|
||||||
else
|
else
|
||||||
ffloorflags |= FF_CUTLEVEL;
|
ffloorflags |= FF_CUTLEVEL;
|
||||||
|
@ -6827,24 +6837,29 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
case 220: //Intangible
|
case 220: //Intangible
|
||||||
ffloorflags = FF_EXISTS|FF_RENDERALL|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES;
|
ffloorflags = FF_EXISTS|FF_RENDERALL|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES;
|
||||||
|
|
||||||
//Visibility settings
|
//Appearance settings
|
||||||
if (lines[i].args[1] & TMFV_NOPLANES)
|
if (lines[i].args[2] & TMFA_NOPLANES)
|
||||||
ffloorflags &= ~FF_RENDERPLANES;
|
ffloorflags &= ~FF_RENDERPLANES;
|
||||||
if (lines[i].args[1] & TMFV_NOSIDES)
|
if (lines[i].args[2] & TMFA_NOSIDES)
|
||||||
ffloorflags &= ~FF_RENDERSIDES;
|
ffloorflags &= ~FF_RENDERSIDES;
|
||||||
if (!(lines[i].args[1] & TMFV_TOGGLEINSIDES))
|
if (!(lines[i].args[2] & TMFA_INSIDES))
|
||||||
{
|
{
|
||||||
if (ffloorflags & FF_RENDERPLANES)
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
ffloorflags |= FF_BOTHPLANES;
|
ffloorflags |= FF_BOTHPLANES;
|
||||||
if (ffloorflags & FF_RENDERSIDES)
|
if (ffloorflags & FF_RENDERSIDES)
|
||||||
ffloorflags |= FF_ALLSIDES;
|
ffloorflags |= FF_ALLSIDES;
|
||||||
}
|
}
|
||||||
|
if (lines[i].args[2] & TMFA_ONLYINSIDES)
|
||||||
//Appearance settings
|
{
|
||||||
if ((lines[i].args[2] & TMFA_TRANSLUCENT) && (ffloorflags & FF_RENDERALL))
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
ffloorflags |= FF_TRANSLUCENT;
|
ffloorflags |= FF_INVERTPLANES;
|
||||||
|
if (ffloorflags & FF_RENDERSIDES)
|
||||||
|
ffloorflags |= FF_INVERTSIDES;
|
||||||
|
}
|
||||||
if (lines[i].args[2] & TMFA_NOSHADE)
|
if (lines[i].args[2] & TMFA_NOSHADE)
|
||||||
ffloorflags |= FF_NOSHADE;
|
ffloorflags |= FF_NOSHADE;
|
||||||
|
if (lines[i].args[2] & TMFA_SPLAT)
|
||||||
|
ffloorflags |= FF_SPLAT;
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, (ffloorflags & FF_TRANSLUCENT) ? (lines[i].alpha * 0xff) >> FRACBITS : 0xff, ffloorflags, secthinkers);
|
P_AddFakeFloorsByLine(i, (ffloorflags & FF_TRANSLUCENT) ? (lines[i].alpha * 0xff) >> FRACBITS : 0xff, ffloorflags, secthinkers);
|
||||||
break;
|
break;
|
||||||
|
|
18
src/p_spec.h
18
src/p_spec.h
|
@ -24,10 +24,13 @@ extern mobj_t *skyboxcenterpnts[16]; // array of MT_SKYBOX centerpoint mobjs
|
||||||
//FOF flags
|
//FOF flags
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TMFV_NOPLANES = 1,
|
TMFA_NOPLANES = 1,
|
||||||
TMFV_NOSIDES = 1<<1,
|
TMFA_NOSIDES = 1<<1,
|
||||||
TMFV_TOGGLEINSIDES = 1<<2,
|
TMFA_INSIDES = 1<<2,
|
||||||
} textmapfofvisibility_t;
|
TMFA_ONLYINSIDES = 1<<3,
|
||||||
|
TMFA_NOSHADE = 1<<4,
|
||||||
|
TMFA_SPLAT = 1<<5,
|
||||||
|
} textmapfofappearance_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -36,14 +39,9 @@ typedef enum
|
||||||
TMFT_DONTBLOCKPLAYER = 1<<2,
|
TMFT_DONTBLOCKPLAYER = 1<<2,
|
||||||
TMFT_VISIBLEFROMINSIDE = (TMFT_INTANGIBLETOP|TMFT_INTANGIBLEBOTTOM|TMFT_DONTBLOCKPLAYER),
|
TMFT_VISIBLEFROMINSIDE = (TMFT_INTANGIBLETOP|TMFT_INTANGIBLEBOTTOM|TMFT_DONTBLOCKPLAYER),
|
||||||
TMFT_DONTBLOCKOTHERS = 1<<3,
|
TMFT_DONTBLOCKOTHERS = 1<<3,
|
||||||
|
TMFT_INTANGIBLE = (TMFT_DONTBLOCKPLAYER|TMFT_DONTBLOCKOTHERS),
|
||||||
} textmapfoftangibility_t;
|
} textmapfoftangibility_t;
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TMFA_TRANSLUCENT = 1,
|
|
||||||
TMFA_NOSHADE = 1<<1,
|
|
||||||
} textmapfofappearance_t;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TMFW_NOSIDES = 1,
|
TMFW_NOSIDES = 1,
|
||||||
|
|
Loading…
Reference in a new issue