mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 04:21:23 +00:00
Revamp alpha setup for crumbling FOFs
This commit is contained in:
parent
1ad8f75538
commit
ac549eddeb
4 changed files with 51 additions and 39 deletions
|
@ -1873,22 +1873,27 @@ udmf
|
||||||
type = 13;
|
type = 13;
|
||||||
}
|
}
|
||||||
arg1
|
arg1
|
||||||
|
{
|
||||||
|
title = "Alpha";
|
||||||
|
default = 255;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
{
|
{
|
||||||
title = "Tangibility";
|
title = "Tangibility";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum = "tangibility";
|
enum = "tangibility";
|
||||||
}
|
}
|
||||||
arg2
|
arg3
|
||||||
{
|
{
|
||||||
title = "Flags";
|
title = "Flags";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
1 = "Translucent";
|
1 = "No shadow";
|
||||||
2 = "No shadow";
|
2 = "No respawn";
|
||||||
4 = "No respawn";
|
4 = "Air bobbing";
|
||||||
8 = "Air bobbing";
|
8 = "Float on water";
|
||||||
16 = "Float on water";
|
16 = "Cut cyan flat pixels";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3180,31 +3180,38 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 179: //FOF: Crumbling, no respawn, floating
|
case 179: //FOF: Crumbling, no respawn, floating
|
||||||
case 180: //FOF: Crumbling, respawn, air bobbing
|
case 180: //FOF: Crumbling, respawn, air bobbing
|
||||||
lines[i].args[0] = lines[i].tag;
|
lines[i].args[0] = lines[i].tag;
|
||||||
if (lines[i].special >= 172 && lines[i].special <= 175)
|
|
||||||
{
|
//Alpha
|
||||||
lines[i].args[1] |= TMFT_INTANGIBLEBOTTOM;
|
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
|
||||||
lines[i].args[2] |= TMFC_NOSHADE;
|
|
||||||
}
|
|
||||||
if (lines[i].special >= 174 && lines[i].special <= 175)
|
if (lines[i].special >= 174 && lines[i].special <= 175)
|
||||||
{
|
{
|
||||||
lines[i].args[2] |= TMFC_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;
|
||||||
|
|
||||||
|
if (lines[i].special >= 172 && lines[i].special <= 175)
|
||||||
|
{
|
||||||
|
lines[i].args[2] |= TMFT_INTANGIBLEBOTTOM;
|
||||||
|
if (lines[i].flags & ML_NOCLIMB)
|
||||||
|
lines[i].args[3] |= TMFC_NOSHADE;
|
||||||
|
}
|
||||||
|
|
||||||
if (lines[i].special % 2 == 1)
|
if (lines[i].special % 2 == 1)
|
||||||
lines[i].args[2] |= TMFC_NORETURN;
|
lines[i].args[3] |= TMFC_NORETURN;
|
||||||
if (lines[i].special == 176 || lines[i].special == 177 || lines[i].special == 180)
|
if (lines[i].special == 176 || lines[i].special == 177 || lines[i].special == 180)
|
||||||
lines[i].args[2] |= TMFC_AIRBOB;
|
lines[i].args[3] |= TMFC_AIRBOB;
|
||||||
if (lines[i].special >= 176 && lines[i].special <= 179)
|
if (lines[i].special >= 176 && lines[i].special <= 179)
|
||||||
lines[i].args[2] |= TMFC_FLOATBOB;
|
lines[i].args[3] |= TMFC_FLOATBOB;
|
||||||
|
if (lines[i].flags & ML_EFFECT6)
|
||||||
|
lines[i].args[3] |= TMFC_SPLAT;
|
||||||
|
|
||||||
if (lines[i].flags & ML_EFFECT1)
|
if (lines[i].flags & ML_EFFECT1)
|
||||||
lines[i].args[1] |= TMFT_DONTBLOCKOTHERS;
|
lines[i].args[2] |= TMFT_DONTBLOCKOTHERS;
|
||||||
if (lines[i].flags & ML_EFFECT2)
|
if (lines[i].flags & ML_EFFECT2)
|
||||||
lines[i].args[1] |= TMFT_DONTBLOCKPLAYER;
|
lines[i].args[2] |= TMFT_DONTBLOCKPLAYER;
|
||||||
|
|
||||||
lines[i].special = 170;
|
lines[i].special = 170;
|
||||||
break;
|
break;
|
||||||
|
@ -3338,7 +3345,7 @@ static void P_ConvertBinaryMap(void)
|
||||||
//Translucency
|
//Translucency
|
||||||
if (lines[i].special == 253 || lines[i].special == 256)
|
if (lines[i].special == 253 || lines[i].special == 256)
|
||||||
{
|
{
|
||||||
lines[i].args[2] = TMFC_TRANSLUCENT;
|
lines[i].args[2] = 1;
|
||||||
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].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255;
|
||||||
else
|
else
|
||||||
|
|
26
src/p_spec.c
26
src/p_spec.c
|
@ -6713,33 +6713,33 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CRUMBLE;
|
ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CRUMBLE;
|
||||||
|
|
||||||
//Tangibility settings
|
//Tangibility settings
|
||||||
if (lines[i].args[1] & TMFT_INTANGIBLETOP)
|
if (lines[i].args[2] & TMFT_INTANGIBLETOP)
|
||||||
ffloorflags |= FF_REVERSEPLATFORM;
|
ffloorflags |= FF_REVERSEPLATFORM;
|
||||||
if (lines[i].args[1] & TMFT_INTANGIBLEBOTTOM)
|
if (lines[i].args[2] & TMFT_INTANGIBLEBOTTOM)
|
||||||
ffloorflags |= FF_PLATFORM;
|
ffloorflags |= FF_PLATFORM;
|
||||||
if (lines[i].args[1] & TMFT_DONTBLOCKPLAYER)
|
if (lines[i].args[2] & TMFT_DONTBLOCKPLAYER)
|
||||||
ffloorflags &= ~FF_BLOCKPLAYER;
|
ffloorflags &= ~FF_BLOCKPLAYER;
|
||||||
if (lines[i].args[1] & TMFT_DONTBLOCKOTHERS)
|
if (lines[i].args[2] & TMFT_DONTBLOCKOTHERS)
|
||||||
ffloorflags &= ~FF_BLOCKOTHERS;
|
ffloorflags &= ~FF_BLOCKOTHERS;
|
||||||
|
|
||||||
//Flags
|
//Flags
|
||||||
if (lines[i].args[2] & TMFC_TRANSLUCENT)
|
if (lines[i].args[3] & TMFC_NOSHADE)
|
||||||
ffloorflags |= FF_TRANSLUCENT;
|
|
||||||
if (lines[i].args[2] & TMFC_NOSHADE)
|
|
||||||
ffloorflags |= FF_NOSHADE;
|
ffloorflags |= FF_NOSHADE;
|
||||||
if (lines[i].args[2] & TMFC_NORETURN)
|
if (lines[i].args[3] & TMFC_NORETURN)
|
||||||
ffloorflags |= FF_NORETURN;
|
ffloorflags |= FF_NORETURN;
|
||||||
if (lines[i].args[2] & TMFC_FLOATBOB)
|
if (lines[i].args[3] & TMFC_FLOATBOB)
|
||||||
ffloorflags |= FF_FLOATBOB;
|
ffloorflags |= FF_FLOATBOB;
|
||||||
|
if (lines[i].args[3] & TMFC_SPLAT)
|
||||||
|
ffloorflags |= FF_SPLAT;
|
||||||
|
|
||||||
//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[1] & TMFT_VISIBLEFROMINSIDE))
|
if (lines[i].args[1] < 0xff || (lines[i].args[2] & TMFT_VISIBLEFROMINSIDE))
|
||||||
ffloorflags |= FF_CUTEXTRA|FF_EXTRA;
|
ffloorflags |= FF_CUTEXTRA|FF_EXTRA;
|
||||||
else
|
else
|
||||||
ffloorflags |= FF_CUTLEVEL;
|
ffloorflags |= FF_CUTLEVEL;
|
||||||
|
|
||||||
//If player can enter it, render insides
|
//If player can enter it, render insides
|
||||||
if (lines[i].args[1] & TMFT_VISIBLEFROMINSIDE)
|
if (lines[i].args[2] & TMFT_VISIBLEFROMINSIDE)
|
||||||
{
|
{
|
||||||
if (ffloorflags & FF_RENDERPLANES)
|
if (ffloorflags & FF_RENDERPLANES)
|
||||||
ffloorflags |= FF_BOTHPLANES;
|
ffloorflags |= FF_BOTHPLANES;
|
||||||
|
@ -6747,8 +6747,8 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
ffloorflags |= FF_ALLSIDES;
|
ffloorflags |= FF_ALLSIDES;
|
||||||
}
|
}
|
||||||
|
|
||||||
P_AddFakeFloorsByLine(i, (ffloorflags & FF_TRANSLUCENT) ? (lines[i].alpha * 0xff) >> FRACBITS : 0xff, ffloorflags, secthinkers);
|
P_AddFakeFloorsByLine(i, lines[i].args[1], ffloorflags, secthinkers);
|
||||||
if (lines[i].args[2] & TMFC_AIRBOB)
|
if (lines[i].args[3] & TMFC_AIRBOB)
|
||||||
P_AddAirbob(lines[i].frontsector, lines[i].args[0], 16*FRACUNIT, false, false, false);
|
P_AddAirbob(lines[i].frontsector, lines[i].args[0], 16*FRACUNIT, false, false, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
10
src/p_spec.h
10
src/p_spec.h
|
@ -63,11 +63,11 @@ typedef enum
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TMFC_TRANSLUCENT = 1,
|
TMFC_NOSHADE = 1,
|
||||||
TMFC_NOSHADE = 1<<1,
|
TMFC_NORETURN = 1<<1,
|
||||||
TMFC_NORETURN = 1<<2,
|
TMFC_AIRBOB = 1<<2,
|
||||||
TMFC_AIRBOB = 1<<3,
|
TMFC_FLOATBOB = 1<<3,
|
||||||
TMFC_FLOATBOB = 1<<4,
|
TMFC_SPLAT = 1<<4,
|
||||||
} textmapfofcrumbling_t;
|
} textmapfofcrumbling_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|
Loading…
Reference in a new issue