mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-29 15:42:03 +00:00
Remove the bridge thinker code.
This commit is contained in:
parent
d460e1e826
commit
778ef86fee
4 changed files with 6 additions and 529 deletions
472
src/p_floor.c
472
src/p_floor.c
|
@ -1275,478 +1275,6 @@ void T_FloatSector(levelspecthink_t *floater)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// T_BridgeThinker
|
|
||||||
//
|
|
||||||
// Kind of like T_RaiseSector,
|
|
||||||
// but spreads out across
|
|
||||||
// multiple FOFs at varying
|
|
||||||
// intensity.
|
|
||||||
//
|
|
||||||
void T_BridgeThinker(levelspecthink_t *bridge)
|
|
||||||
{
|
|
||||||
msecnode_t *node;
|
|
||||||
mobj_t *thing;
|
|
||||||
sector_t *sector;
|
|
||||||
sector_t *controlsec = NULL;
|
|
||||||
INT32 i, k;
|
|
||||||
|
|
||||||
INT16 j;
|
|
||||||
boolean playeronme = false;
|
|
||||||
fixed_t ceilingdestination = 0, floordestination = 0;
|
|
||||||
result_e res = 0;
|
|
||||||
|
|
||||||
#define ORIGFLOORHEIGHT (bridge->vars[0])
|
|
||||||
#define ORIGCEILINGHEIGHT (bridge->vars[1])
|
|
||||||
#define BASESPEED (bridge->vars[2])
|
|
||||||
#define CURSPEED (bridge->vars[3])
|
|
||||||
#define STARTTAG ((INT16)bridge->vars[4])
|
|
||||||
#define ENDTAG ((INT16)bridge->vars[5])
|
|
||||||
#define DIRECTION (bridge->vars[8])
|
|
||||||
#define SAGAMT (8*FRACUNIT)
|
|
||||||
fixed_t lowceilheight = ORIGCEILINGHEIGHT - SAGAMT;
|
|
||||||
fixed_t lowfloorheight = ORIGFLOORHEIGHT - SAGAMT;
|
|
||||||
#define LOWCEILINGHEIGHT (lowceilheight)
|
|
||||||
#define LOWFLOORHEIGHT (lowfloorheight)
|
|
||||||
#define STARTCONTROLTAG (ENDTAG + 1)
|
|
||||||
#define ENDCONTROLTAG (ENDTAG + (ENDTAG - STARTTAG) + 1)
|
|
||||||
|
|
||||||
// Is someone standing on it?
|
|
||||||
for (j = STARTTAG; j <= ENDTAG; j++)
|
|
||||||
{
|
|
||||||
for (i = -1; (i = P_FindSectorFromTag(j, i)) >= 0 ;)
|
|
||||||
{
|
|
||||||
sector = §ors[i];
|
|
||||||
|
|
||||||
// Nab the control sector that this sector belongs to.
|
|
||||||
k = P_FindSectorFromTag((INT16)(j + (ENDTAG-STARTTAG) + 1), -1);
|
|
||||||
|
|
||||||
if (k == -1)
|
|
||||||
break;
|
|
||||||
|
|
||||||
controlsec = §ors[k];
|
|
||||||
|
|
||||||
// Is a player standing on me?
|
|
||||||
for (node = sector->touching_thinglist; node; node = node->m_thinglist_next)
|
|
||||||
{
|
|
||||||
thing = node->m_thing;
|
|
||||||
|
|
||||||
if (!thing->player)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!(thing->z == controlsec->ceilingheight))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
playeronme = true;
|
|
||||||
goto wegotit; // Just take the first one?
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wegotit:
|
|
||||||
if (playeronme)
|
|
||||||
{
|
|
||||||
// Lower controlsec like a regular T_RaiseSector
|
|
||||||
// Set the heights of all the other control sectors to
|
|
||||||
// be a gradient of this height toward the edges
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Raise controlsec like a regular T_RaiseSector
|
|
||||||
// Set the heights of all the other control sectors to
|
|
||||||
// be a gradient of this height toward the edges.
|
|
||||||
}
|
|
||||||
|
|
||||||
if (playeronme && controlsec)
|
|
||||||
{
|
|
||||||
INT32 dist;
|
|
||||||
|
|
||||||
bridge->sector = controlsec;
|
|
||||||
CURSPEED = BASESPEED;
|
|
||||||
|
|
||||||
{
|
|
||||||
// Translate tags to - 0 + range
|
|
||||||
/*so you have a number in [min, max].
|
|
||||||
let range = max - min, subtract min
|
|
||||||
from your number to get [0, range].
|
|
||||||
subtract range/2 to get [-range/2, range/2].
|
|
||||||
take absolute value and get [0, range/2] where
|
|
||||||
lower number = closer to midpoint. divide by
|
|
||||||
range/2 to get [0, 1]. subtract that number
|
|
||||||
from 1 to get [0, 1] with higher number = closer
|
|
||||||
to midpoint. multiply this by max sag amount*/
|
|
||||||
|
|
||||||
INT32 midpoint = STARTCONTROLTAG + ((ENDCONTROLTAG-STARTCONTROLTAG) + 1)/2;
|
|
||||||
// INT32 tagstart = STARTTAG - midpoint;
|
|
||||||
// INT32 tagend = ENDTAG - midpoint;
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "tagstart is %d, tagend is %d\n", tagstart, tagend);
|
|
||||||
|
|
||||||
// Sag is adjusted by how close you are to the center
|
|
||||||
dist = ((ENDCONTROLTAG - STARTCONTROLTAG))/2 - abs(bridge->sector->tag - midpoint);
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "Dist is %d\n", dist);
|
|
||||||
LOWCEILINGHEIGHT -= (SAGAMT) * dist;
|
|
||||||
LOWFLOORHEIGHT -= (SAGAMT) * dist;
|
|
||||||
}
|
|
||||||
|
|
||||||
// go down
|
|
||||||
if (bridge->sector->ceilingheight <= LOWCEILINGHEIGHT)
|
|
||||||
{
|
|
||||||
bridge->sector->floorheight = LOWCEILINGHEIGHT - (bridge->sector->ceilingheight - bridge->sector->floorheight);
|
|
||||||
bridge->sector->ceilingheight = LOWCEILINGHEIGHT;
|
|
||||||
bridge->sector->ceilspeed = 0;
|
|
||||||
bridge->sector->floorspeed = 0;
|
|
||||||
goto dorest;
|
|
||||||
}
|
|
||||||
|
|
||||||
DIRECTION = -1;
|
|
||||||
ceilingdestination = LOWCEILINGHEIGHT;
|
|
||||||
floordestination = LOWFLOORHEIGHT;
|
|
||||||
|
|
||||||
if ((bridge->sector->ceilingheight - LOWCEILINGHEIGHT)
|
|
||||||
< (ORIGCEILINGHEIGHT - bridge->sector->ceilingheight))
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
|
|
||||||
// Slow down as you get closer to the bottom
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(bridge->sector->ceilingheight - LOWCEILINGHEIGHT, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
// Slow down as you get closer to the top
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(ORIGCEILINGHEIGHT - bridge->sector->ceilingheight, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "Curspeed is %d\n", CURSPEED>>FRACBITS);
|
|
||||||
|
|
||||||
res = T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
ceilingdestination, // dest
|
|
||||||
0, // crush
|
|
||||||
1, // floor or ceiling (1 for ceiling)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
if (res == ok || res == pastdest)
|
|
||||||
T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
floordestination, // dest
|
|
||||||
0, // crush
|
|
||||||
0, // floor or ceiling (0 for floor)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
bridge->sector->ceilspeed = 42;
|
|
||||||
bridge->sector->floorspeed = CURSPEED*DIRECTION;
|
|
||||||
|
|
||||||
dorest:
|
|
||||||
// Adjust joined sector heights
|
|
||||||
{
|
|
||||||
sector_t *sourcesec = bridge->sector;
|
|
||||||
|
|
||||||
INT32 divisor = sourcesec->tag - ENDTAG + 1;
|
|
||||||
fixed_t heightdiff = ORIGCEILINGHEIGHT - sourcesec->ceilingheight;
|
|
||||||
fixed_t interval;
|
|
||||||
INT32 plusplusme = 0;
|
|
||||||
|
|
||||||
if (divisor > 0)
|
|
||||||
{
|
|
||||||
interval = heightdiff/divisor;
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "interval is %d\n", interval>>FRACBITS);
|
|
||||||
|
|
||||||
// TODO: Use T_MovePlane
|
|
||||||
|
|
||||||
for (j = (INT16)(ENDTAG+1); j <= sourcesec->tag; j++, plusplusme++)
|
|
||||||
{
|
|
||||||
for (i = -1; (i = P_FindSectorFromTag(j, i)) >= 0 ;)
|
|
||||||
{
|
|
||||||
if (sectors[i].ceilingheight >= sourcesec->ceilingheight)
|
|
||||||
{
|
|
||||||
sectors[i].ceilingheight = ORIGCEILINGHEIGHT - (interval*plusplusme);
|
|
||||||
sectors[i].floorheight = ORIGFLOORHEIGHT - (interval*plusplusme);
|
|
||||||
}
|
|
||||||
else // Do the regular rise
|
|
||||||
{
|
|
||||||
bridge->sector = §ors[i];
|
|
||||||
|
|
||||||
CURSPEED = BASESPEED/2;
|
|
||||||
|
|
||||||
// rise back up
|
|
||||||
if (bridge->sector->ceilingheight >= ORIGCEILINGHEIGHT)
|
|
||||||
{
|
|
||||||
bridge->sector->floorheight = ORIGCEILINGHEIGHT - (bridge->sector->ceilingheight - bridge->sector->floorheight);
|
|
||||||
bridge->sector->ceilingheight = ORIGCEILINGHEIGHT;
|
|
||||||
bridge->sector->ceilspeed = 0;
|
|
||||||
bridge->sector->floorspeed = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
DIRECTION = 1;
|
|
||||||
ceilingdestination = ORIGCEILINGHEIGHT;
|
|
||||||
floordestination = ORIGFLOORHEIGHT;
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "ceildest: %d, floordest: %d\n", ceilingdestination>>FRACBITS, floordestination>>FRACBITS);
|
|
||||||
|
|
||||||
if ((bridge->sector->ceilingheight - LOWCEILINGHEIGHT)
|
|
||||||
< (ORIGCEILINGHEIGHT - bridge->sector->ceilingheight))
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
|
|
||||||
// Slow down as you get closer to the bottom
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(bridge->sector->ceilingheight - LOWCEILINGHEIGHT, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
// Slow down as you get closer to the top
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(ORIGCEILINGHEIGHT - bridge->sector->ceilingheight, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
ceilingdestination, // dest
|
|
||||||
0, // crush
|
|
||||||
1, // floor or ceiling (1 for ceiling)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
if (res == ok || res == pastdest)
|
|
||||||
T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
floordestination, // dest
|
|
||||||
0, // crush
|
|
||||||
0, // floor or ceiling (0 for floor)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
bridge->sector->ceilspeed = 42;
|
|
||||||
bridge->sector->floorspeed = CURSPEED*DIRECTION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now the other side
|
|
||||||
divisor = ENDTAG + (ENDTAG-STARTTAG) + 1;
|
|
||||||
divisor -= sourcesec->tag;
|
|
||||||
|
|
||||||
if (divisor > 0)
|
|
||||||
{
|
|
||||||
interval = heightdiff/divisor;
|
|
||||||
plusplusme = 0;
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "interval2 is %d\n", interval>>FRACBITS);
|
|
||||||
|
|
||||||
for (j = (INT16)(sourcesec->tag+1); j <= ENDTAG + (ENDTAG-STARTTAG) + 1; j++, plusplusme++)
|
|
||||||
{
|
|
||||||
for (i = -1; (i = P_FindSectorFromTag(j, i)) >= 0 ;)
|
|
||||||
{
|
|
||||||
if (sectors[i].ceilingheight >= sourcesec->ceilingheight)
|
|
||||||
{
|
|
||||||
sectors[i].ceilingheight = sourcesec->ceilingheight + (interval*plusplusme);
|
|
||||||
sectors[i].floorheight = sourcesec->floorheight + (interval*plusplusme);
|
|
||||||
}
|
|
||||||
else // Do the regular rise
|
|
||||||
{
|
|
||||||
bridge->sector = §ors[i];
|
|
||||||
|
|
||||||
CURSPEED = BASESPEED/2;
|
|
||||||
|
|
||||||
// rise back up
|
|
||||||
if (bridge->sector->ceilingheight >= ORIGCEILINGHEIGHT)
|
|
||||||
{
|
|
||||||
bridge->sector->floorheight = ORIGCEILINGHEIGHT - (bridge->sector->ceilingheight - bridge->sector->floorheight);
|
|
||||||
bridge->sector->ceilingheight = ORIGCEILINGHEIGHT;
|
|
||||||
bridge->sector->ceilspeed = 0;
|
|
||||||
bridge->sector->floorspeed = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
DIRECTION = 1;
|
|
||||||
ceilingdestination = ORIGCEILINGHEIGHT;
|
|
||||||
floordestination = ORIGFLOORHEIGHT;
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "ceildest: %d, floordest: %d\n", ceilingdestination>>FRACBITS, floordestination>>FRACBITS);
|
|
||||||
|
|
||||||
if ((bridge->sector->ceilingheight - LOWCEILINGHEIGHT)
|
|
||||||
< (ORIGCEILINGHEIGHT - bridge->sector->ceilingheight))
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
|
|
||||||
// Slow down as you get closer to the bottom
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(bridge->sector->ceilingheight - LOWCEILINGHEIGHT, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
// Slow down as you get closer to the top
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(ORIGCEILINGHEIGHT - bridge->sector->ceilingheight, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
ceilingdestination, // dest
|
|
||||||
0, // crush
|
|
||||||
1, // floor or ceiling (1 for ceiling)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
if (res == ok || res == pastdest)
|
|
||||||
T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
floordestination, // dest
|
|
||||||
0, // crush
|
|
||||||
0, // floor or ceiling (0 for floor)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
bridge->sector->ceilspeed = 42;
|
|
||||||
bridge->sector->floorspeed = CURSPEED*DIRECTION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// for (i = -1; (i = P_FindSectorFromTag(bridge->sourceline->tag, i)) >= 0 ;)
|
|
||||||
// P_RecalcPrecipInSector(§ors[i]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Iterate control sectors
|
|
||||||
for (j = (INT16)(ENDTAG+1); j <= (ENDTAG+(ENDTAG-STARTTAG)+1); j++)
|
|
||||||
{
|
|
||||||
for (i = -1; (i = P_FindSectorFromTag(j, i)) >= 0 ;)
|
|
||||||
{
|
|
||||||
bridge->sector = §ors[i];
|
|
||||||
|
|
||||||
CURSPEED = BASESPEED/2;
|
|
||||||
|
|
||||||
// rise back up
|
|
||||||
if (bridge->sector->ceilingheight >= ORIGCEILINGHEIGHT)
|
|
||||||
{
|
|
||||||
bridge->sector->floorheight = ORIGCEILINGHEIGHT - (bridge->sector->ceilingheight - bridge->sector->floorheight);
|
|
||||||
bridge->sector->ceilingheight = ORIGCEILINGHEIGHT;
|
|
||||||
bridge->sector->ceilspeed = 0;
|
|
||||||
bridge->sector->floorspeed = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
DIRECTION = 1;
|
|
||||||
ceilingdestination = ORIGCEILINGHEIGHT;
|
|
||||||
floordestination = ORIGFLOORHEIGHT;
|
|
||||||
|
|
||||||
// CONS_Debug(DBG_GAMELOGIC, "ceildest: %d, floordest: %d\n", ceilingdestination>>FRACBITS, floordestination>>FRACBITS);
|
|
||||||
|
|
||||||
if ((bridge->sector->ceilingheight - LOWCEILINGHEIGHT)
|
|
||||||
< (ORIGCEILINGHEIGHT - bridge->sector->ceilingheight))
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
|
|
||||||
// Slow down as you get closer to the bottom
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(bridge->sector->ceilingheight - LOWCEILINGHEIGHT, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fixed_t origspeed = CURSPEED;
|
|
||||||
// Slow down as you get closer to the top
|
|
||||||
CURSPEED = FixedMul(CURSPEED,FixedDiv(ORIGCEILINGHEIGHT - bridge->sector->ceilingheight, (ORIGCEILINGHEIGHT - LOWCEILINGHEIGHT)>>5));
|
|
||||||
|
|
||||||
if (CURSPEED <= origspeed/16)
|
|
||||||
CURSPEED = origspeed/16;
|
|
||||||
else if (CURSPEED > origspeed)
|
|
||||||
CURSPEED = origspeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
ceilingdestination, // dest
|
|
||||||
0, // crush
|
|
||||||
1, // floor or ceiling (1 for ceiling)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
if (res == ok || res == pastdest)
|
|
||||||
T_MovePlane
|
|
||||||
(
|
|
||||||
bridge->sector, // sector
|
|
||||||
CURSPEED, // speed
|
|
||||||
floordestination, // dest
|
|
||||||
0, // crush
|
|
||||||
0, // floor or ceiling (0 for floor)
|
|
||||||
DIRECTION // direction
|
|
||||||
);
|
|
||||||
|
|
||||||
bridge->sector->ceilspeed = 42;
|
|
||||||
bridge->sector->floorspeed = CURSPEED*DIRECTION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Update precip
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef SAGAMT
|
|
||||||
#undef LOWFLOORHEIGHT
|
|
||||||
#undef LOWCEILINGHEIGHT
|
|
||||||
#undef ORIGFLOORHEIGHT
|
|
||||||
#undef ORIGCEILINGHEIGHT
|
|
||||||
#undef BASESPEED
|
|
||||||
#undef CURSPEED
|
|
||||||
#undef STARTTAG
|
|
||||||
#undef ENDTAG
|
|
||||||
#undef DIRECTION
|
|
||||||
}
|
|
||||||
|
|
||||||
static mobj_t *SearchMarioNode(msecnode_t *node)
|
static mobj_t *SearchMarioNode(msecnode_t *node)
|
||||||
{
|
{
|
||||||
mobj_t *thing = NULL;
|
mobj_t *thing = NULL;
|
||||||
|
|
|
@ -1275,7 +1275,6 @@ typedef enum
|
||||||
tc_marioblockchecker,
|
tc_marioblockchecker,
|
||||||
tc_spikesector,
|
tc_spikesector,
|
||||||
tc_floatsector,
|
tc_floatsector,
|
||||||
tc_bridgethinker,
|
|
||||||
tc_crushceiling,
|
tc_crushceiling,
|
||||||
tc_scroll,
|
tc_scroll,
|
||||||
tc_friction,
|
tc_friction,
|
||||||
|
@ -2291,11 +2290,6 @@ static void P_NetArchiveThinkers(void)
|
||||||
SaveSpecialLevelThinker(th, tc_floatsector);
|
SaveSpecialLevelThinker(th, tc_floatsector);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (th->function.acp1 == (actionf_p1)T_BridgeThinker)
|
|
||||||
{
|
|
||||||
SaveSpecialLevelThinker(th, tc_bridgethinker);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if (th->function.acp1 == (actionf_p1)T_LaserFlash)
|
else if (th->function.acp1 == (actionf_p1)T_LaserFlash)
|
||||||
{
|
{
|
||||||
SaveLaserThinker(th, tc_laserflash);
|
SaveLaserThinker(th, tc_laserflash);
|
||||||
|
@ -3487,10 +3481,6 @@ static void P_NetUnArchiveThinkers(void)
|
||||||
th = LoadSpecialLevelThinker((actionf_p1)T_FloatSector, 0);
|
th = LoadSpecialLevelThinker((actionf_p1)T_FloatSector, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case tc_bridgethinker:
|
|
||||||
th = LoadSpecialLevelThinker((actionf_p1)T_BridgeThinker, 3);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case tc_laserflash:
|
case tc_laserflash:
|
||||||
th = LoadLaserThinker((actionf_p1)T_LaserFlash);
|
th = LoadLaserThinker((actionf_p1)T_LaserFlash);
|
||||||
break;
|
break;
|
||||||
|
|
40
src/p_spec.c
40
src/p_spec.c
|
@ -5975,39 +5975,6 @@ static void P_AddFloatThinker(sector_t *sec, INT32 tag, line_t *sourceline)
|
||||||
floater->sourceline = sourceline;
|
floater->sourceline = sourceline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Adds a bridge thinker.
|
|
||||||
* Bridge thinkers cause a group of FOFs to behave like
|
|
||||||
* a bridge made up of pieces, that bows under weight.
|
|
||||||
*
|
|
||||||
* \param sec Control sector.
|
|
||||||
* \sa P_SpawnSpecials, T_BridgeThinker
|
|
||||||
* \author SSNTails <http://www.ssntails.org>
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
static inline void P_AddBridgeThinker(line_t *sourceline, sector_t *sec)
|
|
||||||
{
|
|
||||||
levelspecthink_t *bridge;
|
|
||||||
|
|
||||||
// create an initialize new thinker
|
|
||||||
bridge = Z_Calloc(sizeof (*bridge), PU_LEVSPEC, NULL);
|
|
||||||
P_AddThinker(THINK_MAIN, &bridge->thinker);
|
|
||||||
|
|
||||||
bridge->thinker.function.acp1 = (actionf_p1)T_BridgeThinker;
|
|
||||||
|
|
||||||
bridge->sector = sec;
|
|
||||||
bridge->vars[0] = sourceline->frontsector->floorheight;
|
|
||||||
bridge->vars[1] = sourceline->frontsector->ceilingheight;
|
|
||||||
bridge->vars[2] = P_AproxDistance(sourceline->dx, sourceline->dy); // Speed
|
|
||||||
bridge->vars[2] = FixedDiv(bridge->vars[2], 16*FRACUNIT);
|
|
||||||
bridge->vars[3] = bridge->vars[2];
|
|
||||||
|
|
||||||
// Start tag and end tag are TARGET SECTORS, not CONTROL SECTORS
|
|
||||||
// Control sector tags should be End_Tag + (End_Tag - Start_Tag)
|
|
||||||
bridge->vars[4] = sourceline->tag; // Start tag
|
|
||||||
bridge->vars[5] = (sides[sourceline->sidenum[0]].textureoffset>>FRACBITS); // End tag
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a plane displacement thinker.
|
* Adds a plane displacement thinker.
|
||||||
* Whenever the "control" sector moves,
|
* Whenever the "control" sector moves,
|
||||||
|
@ -6753,13 +6720,6 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 65: // Bridge Thinker
|
|
||||||
/*
|
|
||||||
// Disable this until it's working right!
|
|
||||||
for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;)
|
|
||||||
P_AddBridgeThinker(&lines[i], §ors[s]);*/
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 66: // Displace floor by front sector
|
case 66: // Displace floor by front sector
|
||||||
for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;)
|
for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;)
|
||||||
P_AddPlaneDisplaceThinker(pd_floor, P_AproxDistance(lines[i].dx, lines[i].dy)>>8, sides[lines[i].sidenum[0]].sector-sectors, s, !!(lines[i].flags & ML_NOCLIMB));
|
P_AddPlaneDisplaceThinker(pd_floor, P_AproxDistance(lines[i].dx, lines[i].dy)>>8, sides[lines[i].sidenum[0]].sector-sectors, s, !!(lines[i].flags & ML_NOCLIMB));
|
||||||
|
|
|
@ -354,7 +354,6 @@ void T_StartCrumble(elevator_t *elevator);
|
||||||
void T_MarioBlock(levelspecthink_t *block);
|
void T_MarioBlock(levelspecthink_t *block);
|
||||||
void T_SpikeSector(levelspecthink_t *spikes);
|
void T_SpikeSector(levelspecthink_t *spikes);
|
||||||
void T_FloatSector(levelspecthink_t *floater);
|
void T_FloatSector(levelspecthink_t *floater);
|
||||||
void T_BridgeThinker(levelspecthink_t *bridge);
|
|
||||||
void T_MarioBlockChecker(levelspecthink_t *block);
|
void T_MarioBlockChecker(levelspecthink_t *block);
|
||||||
void T_ThwompSector(levelspecthink_t *thwomp);
|
void T_ThwompSector(levelspecthink_t *thwomp);
|
||||||
void T_NoEnemiesSector(levelspecthink_t *nobaddies);
|
void T_NoEnemiesSector(levelspecthink_t *nobaddies);
|
||||||
|
|
Loading…
Reference in a new issue