mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-21 20:11:12 +00:00
Adapt lighting effects to UDMF
This commit is contained in:
parent
44faed6285
commit
318c1b477d
4 changed files with 247 additions and 84 deletions
|
@ -2550,6 +2550,101 @@ udmf
|
|||
}
|
||||
}
|
||||
|
||||
416
|
||||
{
|
||||
title = "Start Adjustable Flickering Light";
|
||||
prefix = "(416)";
|
||||
arg0
|
||||
{
|
||||
title = "Target sector tag";
|
||||
type = 13;
|
||||
}
|
||||
arg1
|
||||
{
|
||||
title = "Speed";
|
||||
}
|
||||
arg2
|
||||
{
|
||||
title = "Brightness 1";
|
||||
}
|
||||
arg3
|
||||
{
|
||||
title = "Use target brightness?";
|
||||
type = 11;
|
||||
enum = "noyes";
|
||||
}
|
||||
arg4
|
||||
{
|
||||
title = "Brightness 2";
|
||||
}
|
||||
}
|
||||
|
||||
417
|
||||
{
|
||||
title = "Start Adjustable Pulsating Light";
|
||||
prefix = "(417)";
|
||||
arg0
|
||||
{
|
||||
title = "Target sector tag";
|
||||
type = 13;
|
||||
}
|
||||
arg1
|
||||
{
|
||||
title = "Speed";
|
||||
}
|
||||
arg2
|
||||
{
|
||||
title = "Brightness 1";
|
||||
}
|
||||
arg3
|
||||
{
|
||||
title = "Use target brightness?";
|
||||
type = 11;
|
||||
enum = "noyes";
|
||||
}
|
||||
arg4
|
||||
{
|
||||
title = "Brightness 2";
|
||||
}
|
||||
}
|
||||
|
||||
418
|
||||
{
|
||||
title = "Start Adjustable Blinking Light";
|
||||
prefix = "(418)";
|
||||
arg0
|
||||
{
|
||||
title = "Target sector tag";
|
||||
type = 13;
|
||||
}
|
||||
arg1
|
||||
{
|
||||
title = "Brightness 1 tics";
|
||||
}
|
||||
arg2
|
||||
{
|
||||
title = "Brightness 2 tics";
|
||||
}
|
||||
arg3
|
||||
{
|
||||
title = "Brightness 1";
|
||||
}
|
||||
arg4
|
||||
{
|
||||
title = "Flags";
|
||||
type = 12;
|
||||
enum
|
||||
{
|
||||
1 = "Use target brightness";
|
||||
2 = "Synchronized";
|
||||
}
|
||||
}
|
||||
arg5
|
||||
{
|
||||
title = "Brightness 2";
|
||||
}
|
||||
}
|
||||
|
||||
420
|
||||
{
|
||||
title = "Fade Light Level";
|
||||
|
@ -3238,6 +3333,101 @@ udmf
|
|||
|
||||
light
|
||||
{
|
||||
602
|
||||
{
|
||||
title = "Start Adjustable Pulsating Light";
|
||||
prefix = "(602)";
|
||||
arg0
|
||||
{
|
||||
title = "Target sector tag";
|
||||
type = 13;
|
||||
}
|
||||
arg1
|
||||
{
|
||||
title = "Speed";
|
||||
}
|
||||
arg2
|
||||
{
|
||||
title = "Brightness 1";
|
||||
}
|
||||
arg3
|
||||
{
|
||||
title = "Use target brightness?";
|
||||
type = 11;
|
||||
enum = "noyes";
|
||||
}
|
||||
arg4
|
||||
{
|
||||
title = "Brightness 2";
|
||||
}
|
||||
}
|
||||
|
||||
603
|
||||
{
|
||||
title = "Adjustable Flickering Light";
|
||||
prefix = "(603)";
|
||||
arg0
|
||||
{
|
||||
title = "Target sector tag";
|
||||
type = 13;
|
||||
}
|
||||
arg1
|
||||
{
|
||||
title = "Speed";
|
||||
}
|
||||
arg2
|
||||
{
|
||||
title = "Brightness 1";
|
||||
}
|
||||
arg3
|
||||
{
|
||||
title = "Use target brightness?";
|
||||
type = 11;
|
||||
enum = "noyes";
|
||||
}
|
||||
arg4
|
||||
{
|
||||
title = "Brightness 2";
|
||||
}
|
||||
}
|
||||
|
||||
604
|
||||
{
|
||||
title = "Start Adjustable Blinking Light";
|
||||
prefix = "(604)";
|
||||
arg0
|
||||
{
|
||||
title = "Target sector tag";
|
||||
type = 13;
|
||||
}
|
||||
arg1
|
||||
{
|
||||
title = "Brightness 1 tics";
|
||||
}
|
||||
arg2
|
||||
{
|
||||
title = "Brightness 2 tics";
|
||||
}
|
||||
arg3
|
||||
{
|
||||
title = "Brightness 1";
|
||||
}
|
||||
arg4
|
||||
{
|
||||
title = "Flags";
|
||||
type = 12;
|
||||
enum
|
||||
{
|
||||
1 = "Use target brightness";
|
||||
2 = "Synchronized";
|
||||
}
|
||||
}
|
||||
arg5
|
||||
{
|
||||
title = "Brightness 2";
|
||||
}
|
||||
}
|
||||
|
||||
606
|
||||
{
|
||||
title = "Copy Colormap";
|
||||
|
|
|
@ -3696,6 +3696,36 @@ static void P_ConvertBinaryMap(void)
|
|||
case 411: //Stop plane movement
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 416: //Start adjustable flickering light
|
||||
case 417: //Start adjustable pulsating light
|
||||
case 602: //Adjustable pulsating light
|
||||
case 603: //Adjustable flickering light
|
||||
lines[i].args[0] = tag;
|
||||
lines[i].args[1] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
|
||||
lines[i].args[2] = lines[i].frontsector->lightlevel;
|
||||
if ((lines[i].flags & ML_NOCLIMB) && lines[i].backsector)
|
||||
lines[i].args[4] = lines[i].backsector->lightlevel;
|
||||
else
|
||||
lines[i].args[3] = 1;
|
||||
break;
|
||||
case 418: //Start adjustable blinking light (unsynchronized)
|
||||
case 419: //Start adjustable blinking light (synchronized)
|
||||
case 604: //Adjustable blinking light (unsynchronized)
|
||||
case 605: //Adjustable blinking light (synchronized)
|
||||
lines[i].args[0] = tag;
|
||||
lines[i].args[1] = abs(lines[i].dx) >> FRACBITS;
|
||||
lines[i].args[2] = abs(lines[i].dy) >> FRACBITS;
|
||||
lines[i].args[3] = lines[i].frontsector->lightlevel;
|
||||
if ((lines[i].flags & ML_NOCLIMB) && lines[i].backsector)
|
||||
lines[i].args[5] = lines[i].backsector->lightlevel;
|
||||
else
|
||||
lines[i].args[4] |= TMB_USETARGET;
|
||||
if (lines[i].special % 2 == 1)
|
||||
{
|
||||
lines[i].args[4] |= TMB_SYNC;
|
||||
lines[i].special--;
|
||||
}
|
||||
break;
|
||||
case 420: //Fade light level
|
||||
lines[i].args[0] = tag;
|
||||
if (lines[i].flags & ML_DONTPEGBOTTOM)
|
||||
|
|
105
src/p_spec.c
105
src/p_spec.c
|
@ -2508,79 +2508,22 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
break;
|
||||
|
||||
case 416: // Spawn adjustable fire flicker
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
if (line->flags & ML_NOCLIMB && line->backsector)
|
||||
{
|
||||
// Use front sector for min light level, back sector for max.
|
||||
P_SpawnAdjustableFireFlicker(§ors[secnum], line->frontsector->lightlevel, line->backsector->lightlevel,
|
||||
P_AproxDistance(line->dx, line->dy)>>FRACBITS);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use front sector for min, target sector for max,
|
||||
// the same way linetype 61 does it.
|
||||
P_SpawnAdjustableFireFlicker(§ors[secnum], line->frontsector->lightlevel, sectors[secnum].lightlevel,
|
||||
P_AproxDistance(line->dx, line->dy)>>FRACBITS);
|
||||
}
|
||||
}
|
||||
TAG_ITER_SECTORS(line->args[0], secnum)
|
||||
P_SpawnAdjustableFireFlicker(§ors[secnum], line->args[2],
|
||||
line->args[3] ? sectors[secnum].lightlevel : line->args[4], line->args[1]);
|
||||
break;
|
||||
|
||||
case 417: // Spawn adjustable glowing light
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
if (line->flags & ML_NOCLIMB && line->backsector)
|
||||
{
|
||||
// Use front sector for min light level, back sector for max.
|
||||
P_SpawnAdjustableGlowingLight(§ors[secnum], line->frontsector->lightlevel, line->backsector->lightlevel,
|
||||
P_AproxDistance(line->dx, line->dy)>>FRACBITS);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use front sector for min, target sector for max,
|
||||
// the same way linetype 602 does it.
|
||||
P_SpawnAdjustableGlowingLight(§ors[secnum], line->frontsector->lightlevel, sectors[secnum].lightlevel,
|
||||
P_AproxDistance(line->dx, line->dy)>>FRACBITS);
|
||||
}
|
||||
}
|
||||
TAG_ITER_SECTORS(line->args[0], secnum)
|
||||
P_SpawnAdjustableGlowingLight(§ors[secnum], line->args[2],
|
||||
line->args[3] ? sectors[secnum].lightlevel : line->args[4], line->args[1]);
|
||||
break;
|
||||
|
||||
case 418: // Spawn adjustable strobe flash (unsynchronized)
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
if (line->flags & ML_NOCLIMB && line->backsector)
|
||||
{
|
||||
// Use front sector for min light level, back sector for max.
|
||||
P_SpawnAdjustableStrobeFlash(§ors[secnum], line->frontsector->lightlevel, line->backsector->lightlevel,
|
||||
abs(line->dx)>>FRACBITS, abs(line->dy)>>FRACBITS, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use front sector for min, target sector for max,
|
||||
// the same way linetype 602 does it.
|
||||
P_SpawnAdjustableStrobeFlash(§ors[secnum], line->frontsector->lightlevel, sectors[secnum].lightlevel,
|
||||
abs(line->dx)>>FRACBITS, abs(line->dy)>>FRACBITS, false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 419: // Spawn adjustable strobe flash (synchronized)
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
if (line->flags & ML_NOCLIMB && line->backsector)
|
||||
{
|
||||
// Use front sector for min light level, back sector for max.
|
||||
P_SpawnAdjustableStrobeFlash(§ors[secnum], line->frontsector->lightlevel, line->backsector->lightlevel,
|
||||
abs(line->dx)>>FRACBITS, abs(line->dy)>>FRACBITS, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use front sector for min, target sector for max,
|
||||
// the same way linetype 602 does it.
|
||||
P_SpawnAdjustableStrobeFlash(§ors[secnum], line->frontsector->lightlevel, sectors[secnum].lightlevel,
|
||||
abs(line->dx)>>FRACBITS, abs(line->dy)>>FRACBITS, true);
|
||||
}
|
||||
}
|
||||
case 418: // Spawn adjustable strobe flash
|
||||
TAG_ITER_SECTORS(line->args[0], secnum)
|
||||
P_SpawnAdjustableStrobeFlash(§ors[secnum], line->args[3],
|
||||
(line->args[4] & TMB_USETARGET) ? sectors[secnum].lightlevel : line->args[5],
|
||||
line->args[1], line->args[2], line->args[4] & TMB_SYNC);
|
||||
break;
|
||||
|
||||
case 420: // Fade light levels in tagged sectors to new value
|
||||
|
@ -6899,30 +6842,24 @@ void P_SpawnSpecials(boolean fromnetsave)
|
|||
|
||||
case 602: // Adjustable pulsating light
|
||||
sec = sides[*lines[i].sidenum].sector - sectors;
|
||||
TAG_ITER_SECTORS(tag, s)
|
||||
P_SpawnAdjustableGlowingLight(§ors[s], sectors[sec].lightlevel, sectors[s].lightlevel,
|
||||
P_AproxDistance(lines[i].dx, lines[i].dy)>>FRACBITS);
|
||||
TAG_ITER_SECTORS(lines[i].args[0], s)
|
||||
P_SpawnAdjustableGlowingLight(§ors[s], lines[i].args[2],
|
||||
lines[i].args[3] ? sectors[s].lightlevel : lines[i].args[4], lines[i].args[1]);
|
||||
break;
|
||||
|
||||
case 603: // Adjustable flickering light
|
||||
sec = sides[*lines[i].sidenum].sector - sectors;
|
||||
TAG_ITER_SECTORS(tag, s)
|
||||
P_SpawnAdjustableFireFlicker(§ors[s], sectors[sec].lightlevel, sectors[s].lightlevel,
|
||||
P_AproxDistance(lines[i].dx, lines[i].dy)>>FRACBITS);
|
||||
TAG_ITER_SECTORS(lines[i].args[0], s)
|
||||
P_SpawnAdjustableFireFlicker(§ors[s], lines[i].args[2],
|
||||
lines[i].args[3] ? sectors[s].lightlevel : lines[i].args[4], lines[i].args[1]);
|
||||
break;
|
||||
|
||||
case 604: // Adjustable Blinking Light (unsynchronized)
|
||||
case 604: // Adjustable Blinking Light
|
||||
sec = sides[*lines[i].sidenum].sector - sectors;
|
||||
TAG_ITER_SECTORS(tag, s)
|
||||
P_SpawnAdjustableStrobeFlash(§ors[s], sectors[sec].lightlevel, sectors[s].lightlevel,
|
||||
abs(lines[i].dx)>>FRACBITS, abs(lines[i].dy)>>FRACBITS, false);
|
||||
break;
|
||||
|
||||
case 605: // Adjustable Blinking Light (synchronized)
|
||||
sec = sides[*lines[i].sidenum].sector - sectors;
|
||||
TAG_ITER_SECTORS(tag, s)
|
||||
P_SpawnAdjustableStrobeFlash(§ors[s], sectors[sec].lightlevel, sectors[s].lightlevel,
|
||||
abs(lines[i].dx)>>FRACBITS, abs(lines[i].dy)>>FRACBITS, true);
|
||||
P_SpawnAdjustableStrobeFlash(§ors[s], lines[i].args[3],
|
||||
(lines[i].args[4] & TMB_USETARGET) ? sectors[s].lightlevel : lines[i].args[5],
|
||||
lines[i].args[1], lines[i].args[2], lines[i].args[4] & TMB_SYNC);
|
||||
break;
|
||||
|
||||
case 606: // HACK! Copy colormaps. Just plain colormaps.
|
||||
|
|
|
@ -125,6 +125,12 @@ typedef enum
|
|||
TMF_FORCE = 1<<1,
|
||||
} textmapfadeflags_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TMB_USETARGET = 1,
|
||||
TMB_SYNC = 1<<1,
|
||||
} textmapblinkinglightflags_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TMSD_FRONT = 0,
|
||||
|
|
Loading…
Reference in a new issue