mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 04:21:23 +00:00
Adapt setup of some lighting linedef executors to UDMF
This commit is contained in:
parent
68aa14f7d0
commit
fe708db398
4 changed files with 121 additions and 22 deletions
|
@ -2511,6 +2511,28 @@ udmf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
402
|
||||||
|
{
|
||||||
|
title = "Copy Light Level";
|
||||||
|
prefix = "(402)";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Target sector tag";
|
||||||
|
type = 13;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Flags";
|
||||||
|
type = 12;
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
1 = "Don't copy main light level";
|
||||||
|
2 = "Don't copy floor light level";
|
||||||
|
4 = "Don't copy ceiling light level";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
408
|
408
|
||||||
{
|
{
|
||||||
title = "Set Tagged Sector's Flats";
|
title = "Set Tagged Sector's Flats";
|
||||||
|
@ -2528,6 +2550,46 @@ udmf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
420
|
||||||
|
{
|
||||||
|
title = "Fade Light Level";
|
||||||
|
prefix = "(420)";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Target sector tag";
|
||||||
|
type = 13;
|
||||||
|
}
|
||||||
|
arg1
|
||||||
|
{
|
||||||
|
title = "Destination light level";
|
||||||
|
}
|
||||||
|
arg2
|
||||||
|
{
|
||||||
|
title = "Speed";
|
||||||
|
}
|
||||||
|
arg3
|
||||||
|
{
|
||||||
|
title = "Flags";
|
||||||
|
type = 12;
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
1 = "Speed is tic duration";
|
||||||
|
2 = "Override existing fade";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
421
|
||||||
|
{
|
||||||
|
title = "Stop Lighting Effect";
|
||||||
|
prefix = "(421)";
|
||||||
|
arg0
|
||||||
|
{
|
||||||
|
title = "Target sector tag";
|
||||||
|
type = 13;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
435
|
435
|
||||||
{
|
{
|
||||||
title = "Change Plane Scroller Direction";
|
title = "Change Plane Scroller Direction";
|
||||||
|
|
|
@ -3657,6 +3657,10 @@ static void P_ConvertBinaryMap(void)
|
||||||
lines[i].args[2] = !!(lines[i].flags & ML_NOCLIMB);
|
lines[i].args[2] = !!(lines[i].flags & ML_NOCLIMB);
|
||||||
lines[i].special = 400;
|
lines[i].special = 400;
|
||||||
break;
|
break;
|
||||||
|
case 402: //Copy light level
|
||||||
|
lines[i].args[0] = tag;
|
||||||
|
lines[i].args[1] = 0;
|
||||||
|
break;
|
||||||
case 403: //Move tagged sector's floor
|
case 403: //Move tagged sector's floor
|
||||||
case 404: //Move tagged sector's ceiling
|
case 404: //Move tagged sector's ceiling
|
||||||
lines[i].args[0] = tag;
|
lines[i].args[0] = tag;
|
||||||
|
@ -3692,6 +3696,30 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 411: //Stop plane movement
|
case 411: //Stop plane movement
|
||||||
lines[i].args[0] = tag;
|
lines[i].args[0] = tag;
|
||||||
break;
|
break;
|
||||||
|
case 420: //Fade light level
|
||||||
|
lines[i].args[0] = tag;
|
||||||
|
if (lines[i].flags & ML_DONTPEGBOTTOM)
|
||||||
|
{
|
||||||
|
lines[i].args[1] = max(sides[lines[i].sidenum[0]].textureoffset >> FRACBITS, 0);
|
||||||
|
// failsafe: if user specifies Back Y Offset and NOT Front Y Offset, use the Back Offset
|
||||||
|
// to be consistent with other light and fade specials
|
||||||
|
lines[i].args[2] = ((lines[i].sidenum[1] != 0xFFFF && !(sides[lines[i].sidenum[0]].rowoffset >> FRACBITS)) ?
|
||||||
|
max(min(sides[lines[i].sidenum[1]].rowoffset >> FRACBITS, 255), 0)
|
||||||
|
: max(min(sides[lines[i].sidenum[0]].rowoffset >> FRACBITS, 255), 0));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lines[i].args[1] = lines[i].frontsector->lightlevel;
|
||||||
|
lines[i].args[2] = abs(P_AproxDistance(lines[i].dx, lines[i].dy)) >> FRACBITS;
|
||||||
|
}
|
||||||
|
if (lines[i].flags & ML_EFFECT4)
|
||||||
|
lines[i].args[3] |= TMF_TICBASED;
|
||||||
|
if (lines[i].flags & ML_EFFECT5)
|
||||||
|
lines[i].args[3] |= TMF_FORCE;
|
||||||
|
break;
|
||||||
|
case 421: //Stop lighting effect
|
||||||
|
lines[i].args[0] = tag;
|
||||||
|
break;
|
||||||
case 428: //Start platform movement
|
case 428: //Start platform movement
|
||||||
lines[i].args[0] = tag;
|
lines[i].args[0] = tag;
|
||||||
lines[i].args[1] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
|
lines[i].args[1] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
|
||||||
|
|
28
src/p_spec.c
28
src/p_spec.c
|
@ -2123,7 +2123,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
EV_DoCeiling(line->args[0], line, instantMoveCeilingByFrontSector);
|
EV_DoCeiling(line->args[0], line, instantMoveCeilingByFrontSector);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 402: // Set tagged sector's light level
|
case 402: // Copy light level to tagged sectors
|
||||||
{
|
{
|
||||||
INT16 newlightlevel;
|
INT16 newlightlevel;
|
||||||
INT16 newfloorlightlevel, newceilinglightlevel;
|
INT16 newfloorlightlevel, newceilinglightlevel;
|
||||||
|
@ -2138,8 +2138,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
newfloorlightsec = line->frontsector->floorlightsec;
|
newfloorlightsec = line->frontsector->floorlightsec;
|
||||||
newceilinglightsec = line->frontsector->ceilinglightsec;
|
newceilinglightsec = line->frontsector->ceilinglightsec;
|
||||||
|
|
||||||
// act on all sectors with the same tag as the triggering linedef
|
TAG_ITER_SECTORS(line->args[0], secnum)
|
||||||
TAG_ITER_SECTORS(tag, secnum)
|
|
||||||
{
|
{
|
||||||
if (sectors[secnum].lightingdata)
|
if (sectors[secnum].lightingdata)
|
||||||
{
|
{
|
||||||
|
@ -2152,15 +2151,22 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
// actually is: could be lightlevel_t, fireflicker_t, glow_t, etc.)
|
// actually is: could be lightlevel_t, fireflicker_t, glow_t, etc.)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(line->args[1] & TMLC_NOSECTOR))
|
||||||
sectors[secnum].lightlevel = newlightlevel;
|
sectors[secnum].lightlevel = newlightlevel;
|
||||||
|
if (!(line->args[1] & TMLC_NOFLOOR))
|
||||||
|
{
|
||||||
sectors[secnum].floorlightlevel = newfloorlightlevel;
|
sectors[secnum].floorlightlevel = newfloorlightlevel;
|
||||||
sectors[secnum].floorlightabsolute = newfloorlightabsolute;
|
sectors[secnum].floorlightabsolute = newfloorlightabsolute;
|
||||||
|
sectors[secnum].floorlightsec = newfloorlightsec;
|
||||||
|
}
|
||||||
|
if (!(line->args[1] & TMLC_NOCEILING))
|
||||||
|
{
|
||||||
sectors[secnum].ceilinglightlevel = newceilinglightlevel;
|
sectors[secnum].ceilinglightlevel = newceilinglightlevel;
|
||||||
sectors[secnum].ceilinglightabsolute = newceilinglightabsolute;
|
sectors[secnum].ceilinglightabsolute = newceilinglightabsolute;
|
||||||
sectors[secnum].floorlightsec = newfloorlightsec;
|
|
||||||
sectors[secnum].ceilinglightsec = newceilinglightsec;
|
sectors[secnum].ceilinglightsec = newceilinglightsec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 403: // Move planes by front sector
|
case 403: // Move planes by front sector
|
||||||
|
@ -2638,21 +2644,11 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 420: // Fade light levels in tagged sectors to new value
|
case 420: // Fade light levels in tagged sectors to new value
|
||||||
P_FadeLight(tag,
|
P_FadeLight(line->args[0], line->args[1], line->args[2], line->args[3] & TMF_TICBASED, line->args[3] & TMF_FORCE);
|
||||||
(line->flags & ML_DONTPEGBOTTOM) ? max(sides[line->sidenum[0]].textureoffset>>FRACBITS, 0) : line->frontsector->lightlevel,
|
|
||||||
// failsafe: if user specifies Back Y Offset and NOT Front Y Offset, use the Back Offset
|
|
||||||
// to be consistent with other light and fade specials
|
|
||||||
(line->flags & ML_DONTPEGBOTTOM) ?
|
|
||||||
((line->sidenum[1] != 0xFFFF && !(sides[line->sidenum[0]].rowoffset>>FRACBITS)) ?
|
|
||||||
max(min(sides[line->sidenum[1]].rowoffset>>FRACBITS, 255), 0)
|
|
||||||
: max(min(sides[line->sidenum[0]].rowoffset>>FRACBITS, 255), 0))
|
|
||||||
: abs(P_AproxDistance(line->dx, line->dy))>>FRACBITS,
|
|
||||||
(line->flags & ML_EFFECT4),
|
|
||||||
(line->flags & ML_EFFECT5));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 421: // Stop lighting effect in tagged sectors
|
case 421: // Stop lighting effect in tagged sectors
|
||||||
TAG_ITER_SECTORS(tag, secnum)
|
TAG_ITER_SECTORS(line->args[0], secnum)
|
||||||
if (sectors[secnum].lightingdata)
|
if (sectors[secnum].lightingdata)
|
||||||
{
|
{
|
||||||
P_RemoveThinker(&((elevator_t *)sectors[secnum].lightingdata)->thinker);
|
P_RemoveThinker(&((elevator_t *)sectors[secnum].lightingdata)->thinker);
|
||||||
|
|
13
src/p_spec.h
13
src/p_spec.h
|
@ -112,6 +112,19 @@ typedef enum
|
||||||
TMP_BOTH = 2,
|
TMP_BOTH = 2,
|
||||||
} textmapplanes_t;
|
} textmapplanes_t;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
TMLC_NOSECTOR = 1,
|
||||||
|
TMLC_NOFLOOR = 1<<1,
|
||||||
|
TMLC_NOCEILING = 1<<2,
|
||||||
|
} textmaplightcopyflags_t;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
TMF_TICBASED = 1,
|
||||||
|
TMF_FORCE = 1<<1,
|
||||||
|
} textmapfadeflags_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TMSD_FRONT = 0,
|
TMSD_FRONT = 0,
|
||||||
|
|
Loading…
Reference in a new issue