mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-01 22:21:05 +00:00
-Pass tag as argument to EV_ functions
-Get rid of junk linedefs for specialized EV_ calls -Store tag in args[0]
This commit is contained in:
parent
4bedca6ba7
commit
7025f12d95
7 changed files with 80 additions and 83 deletions
|
@ -383,18 +383,18 @@ void T_CrushCeiling(ceiling_t *ceiling)
|
|||
|
||||
/** Starts a ceiling mover.
|
||||
*
|
||||
* \param tag Tag.
|
||||
* \param line The source line.
|
||||
* \param type The type of ceiling movement.
|
||||
* \return 1 if at least one ceiling mover was started, 0 otherwise.
|
||||
* \sa EV_DoCrush, EV_DoFloor, EV_DoElevator, T_MoveCeiling
|
||||
*/
|
||||
INT32 EV_DoCeiling(line_t *line, ceiling_e type)
|
||||
INT32 EV_DoCeiling(mtag_t tag, line_t *line, ceiling_e type)
|
||||
{
|
||||
INT32 rtn = 0, firstone = 1;
|
||||
INT32 secnum = -1;
|
||||
sector_t *sec;
|
||||
ceiling_t *ceiling;
|
||||
mtag_t tag = Tag_FGet(&line->tags);
|
||||
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
|
@ -603,19 +603,19 @@ INT32 EV_DoCeiling(line_t *line, ceiling_e type)
|
|||
|
||||
/** Starts a ceiling crusher.
|
||||
*
|
||||
* \param tag Tag.
|
||||
* \param line The source line.
|
||||
* \param type The type of ceiling, either ::crushAndRaise or
|
||||
* ::fastCrushAndRaise.
|
||||
* \return 1 if at least one crusher was started, 0 otherwise.
|
||||
* \sa EV_DoCeiling, EV_DoFloor, EV_DoElevator, T_CrushCeiling
|
||||
*/
|
||||
INT32 EV_DoCrush(line_t *line, ceiling_e type)
|
||||
INT32 EV_DoCrush(mtag_t tag, line_t *line, ceiling_e type)
|
||||
{
|
||||
INT32 rtn = 0;
|
||||
INT32 secnum = -1;
|
||||
sector_t *sec;
|
||||
ceiling_t *ceiling;
|
||||
mtag_t tag = Tag_FGet(&line->tags);
|
||||
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
|
|
|
@ -3873,7 +3873,6 @@ void A_BossDeath(mobj_t *mo)
|
|||
{
|
||||
thinker_t *th;
|
||||
mobj_t *mo2;
|
||||
line_t junk;
|
||||
INT32 i;
|
||||
|
||||
if (LUA_CallAction(A_BOSSDEATH, mo))
|
||||
|
@ -3925,18 +3924,11 @@ void A_BossDeath(mobj_t *mo)
|
|||
}
|
||||
else
|
||||
{
|
||||
// Initialize my junk
|
||||
junk.tags.tags = NULL;
|
||||
junk.tags.count = 0;
|
||||
|
||||
// Bring the egg trap up to the surface
|
||||
// Incredibly shitty code ahead
|
||||
Tag_FSet(&junk.tags, LE_CAPSULE0);
|
||||
EV_DoElevator(&junk, elevateHighest, false);
|
||||
Tag_FSet(&junk.tags, LE_CAPSULE1);
|
||||
EV_DoElevator(&junk, elevateUp, false);
|
||||
Tag_FSet(&junk.tags, LE_CAPSULE2);
|
||||
EV_DoElevator(&junk, elevateHighest, false);
|
||||
EV_DoElevator(LE_CAPSULE0, NULL, elevateHighest, false);
|
||||
EV_DoElevator(LE_CAPSULE1, NULL, elevateUp, false);
|
||||
EV_DoElevator(LE_CAPSULE2, NULL, elevateHighest, false);
|
||||
|
||||
if (mapheaderinfo[gamemap-1]->muspostbossname[0] &&
|
||||
S_MusicExists(mapheaderinfo[gamemap-1]->muspostbossname, !midi_disabled, !digital_disabled))
|
||||
|
@ -4058,12 +4050,7 @@ bossjustdie:
|
|||
}
|
||||
case MT_KOOPA:
|
||||
{
|
||||
// Initialize my junk
|
||||
junk.tags.tags = NULL;
|
||||
junk.tags.count = 0;
|
||||
|
||||
Tag_FSet(&junk.tags, LE_KOOPA);
|
||||
EV_DoCeiling(&junk, raiseToHighest);
|
||||
EV_DoCeiling(LE_KOOPA, NULL, raiseToHighest);
|
||||
return;
|
||||
}
|
||||
case MT_FANG:
|
||||
|
|
|
@ -1805,13 +1805,12 @@ void T_PlaneDisplace(planedisplace_t *pd)
|
|||
// (egg capsule button), P_PlayerInSpecialSector (buttons),
|
||||
// and P_SpawnSpecials (continuous floor movers and instant lower).
|
||||
//
|
||||
void EV_DoFloor(line_t *line, floor_e floortype)
|
||||
void EV_DoFloor(mtag_t tag, line_t *line, floor_e floortype)
|
||||
{
|
||||
INT32 firstone = 1;
|
||||
INT32 secnum = -1;
|
||||
sector_t *sec;
|
||||
floormove_t *dofloor;
|
||||
mtag_t tag = Tag_FGet(&line->tags);
|
||||
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
{
|
||||
|
@ -2022,12 +2021,11 @@ void EV_DoFloor(line_t *line, floor_e floortype)
|
|||
//
|
||||
// jff 2/22/98 new type to move floor and ceiling in parallel
|
||||
//
|
||||
void EV_DoElevator(line_t *line, elevator_e elevtype, boolean customspeed)
|
||||
void EV_DoElevator(mtag_t tag, line_t *line, elevator_e elevtype, boolean customspeed)
|
||||
{
|
||||
INT32 secnum = -1;
|
||||
sector_t *sec;
|
||||
elevator_t *elevator;
|
||||
mtag_t tag = Tag_FGet(&line->tags);
|
||||
|
||||
// act on all sectors with the same tag as the triggering linedef
|
||||
TAG_ITER_SECTORS(tag, secnum)
|
||||
|
|
|
@ -1381,19 +1381,13 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
return;
|
||||
case MT_AXE:
|
||||
{
|
||||
line_t junk;
|
||||
thinker_t *th;
|
||||
mobj_t *mo2;
|
||||
|
||||
if (player->bot)
|
||||
return;
|
||||
|
||||
// Initialize my junk
|
||||
junk.tags.tags = NULL;
|
||||
junk.tags.count = 0;
|
||||
|
||||
Tag_FSet(&junk.tags, LE_AXE);
|
||||
EV_DoElevator(&junk, bridgeFall, false);
|
||||
EV_DoElevator(LE_AXE, NULL, bridgeFall, false);
|
||||
|
||||
// scan the remaining thinkers to find koopa
|
||||
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
|
||||
|
|
|
@ -3081,6 +3081,28 @@ static void P_ConvertBinaryMap(void)
|
|||
|
||||
break;
|
||||
}
|
||||
case 50: //Instantly lower floor on level load
|
||||
case 51: //Instantly raise ceiling on level load
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 53: //Continuous floor/ceiling mover
|
||||
case 54: //Continuous floor mover
|
||||
case 55: //Continuous ceiling mover
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 56: //Continuous two-speed floor/ceiling mover
|
||||
case 57: //Continuous two-speed floor mover
|
||||
case 58: //Continuous two-speed ceiling mover
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 59: //Activate moving platform
|
||||
case 60: //Activate moving platform (adjustable speed)
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 61: //Crusher (Ceiling to floor)
|
||||
case 62: //Crusher (Floor to ceiling)
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 76: //Make FOF bouncy
|
||||
lines[i].args[0] = tag;
|
||||
lines[i].args[1] = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
|
||||
|
@ -3482,6 +3504,26 @@ static void P_ConvertBinaryMap(void)
|
|||
else
|
||||
lines[i].args[1] = 255;
|
||||
break;
|
||||
case 400: //Set tagged sector's floor height/texture
|
||||
case 401: //Set tagged sector's ceiling height/texture
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 403: //Move tagged sector's floor
|
||||
case 404: //Move tagged sector's ceiling
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 405: //Move floor according to front texture offsets
|
||||
case 407: //Move ceiling according to front texture offsets
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 428: //Start platform movement
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 429: //Crush ceiling once
|
||||
case 430: //Crush floor once
|
||||
case 431: //Crush floor and ceiling once
|
||||
lines[i].args[0] = tag;
|
||||
break;
|
||||
case 443: //Call Lua function
|
||||
if (lines[i].text)
|
||||
{
|
||||
|
|
70
src/p_spec.c
70
src/p_spec.c
|
@ -2234,11 +2234,11 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
switch (line->special)
|
||||
{
|
||||
case 400: // Set tagged sector's floor height/pic
|
||||
EV_DoFloor(line, instantMoveFloorByFrontSector);
|
||||
EV_DoFloor(line->args[0], line, instantMoveFloorByFrontSector);
|
||||
break;
|
||||
|
||||
case 401: // Set tagged sector's ceiling height/pic
|
||||
EV_DoCeiling(line, instantMoveCeilingByFrontSector);
|
||||
EV_DoCeiling(line->args[0], line, instantMoveCeilingByFrontSector);
|
||||
break;
|
||||
|
||||
case 402: // Set tagged sector's light level
|
||||
|
@ -2272,37 +2272,21 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
break;
|
||||
|
||||
case 403: // Move floor, linelen = speed, frontsector floor = dest height
|
||||
EV_DoFloor(line, moveFloorByFrontSector);
|
||||
EV_DoFloor(line->args[0], line, moveFloorByFrontSector);
|
||||
break;
|
||||
|
||||
case 404: // Move ceiling, linelen = speed, frontsector ceiling = dest height
|
||||
EV_DoCeiling(line, moveCeilingByFrontSector);
|
||||
EV_DoCeiling(line->args[0], line, moveCeilingByFrontSector);
|
||||
break;
|
||||
|
||||
case 405: // Move floor by front side texture offsets, offset x = speed, offset y = amount to raise/lower
|
||||
EV_DoFloor(line, moveFloorByFrontTexture);
|
||||
EV_DoFloor(line->args[0], line, moveFloorByFrontTexture);
|
||||
break;
|
||||
|
||||
case 407: // Move ceiling by front side texture offsets, offset x = speed, offset y = amount to raise/lower
|
||||
EV_DoCeiling(line, moveCeilingByFrontTexture);
|
||||
EV_DoCeiling(line->args[0], line, moveCeilingByFrontTexture);
|
||||
break;
|
||||
|
||||
/* case 405: // Lower floor by line, dx = speed, dy = amount to lower
|
||||
EV_DoFloor(line, lowerFloorByLine);
|
||||
break;
|
||||
|
||||
case 406: // Raise floor by line, dx = speed, dy = amount to raise
|
||||
EV_DoFloor(line, raiseFloorByLine);
|
||||
break;
|
||||
|
||||
case 407: // Lower ceiling by line, dx = speed, dy = amount to lower
|
||||
EV_DoCeiling(line, lowerCeilingByLine);
|
||||
break;
|
||||
|
||||
case 408: // Raise ceiling by line, dx = speed, dy = amount to raise
|
||||
EV_DoCeiling(line, raiseCeilingByLine);
|
||||
break;*/
|
||||
|
||||
case 409: // Change tagged sectors' tag
|
||||
// (formerly "Change calling sectors' tag", but behavior was changed)
|
||||
{
|
||||
|
@ -2886,19 +2870,19 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
break;
|
||||
|
||||
case 428: // Start floating platform movement
|
||||
EV_DoElevator(line, elevateContinuous, true);
|
||||
EV_DoElevator(line->args[0], line, elevateContinuous, true);
|
||||
break;
|
||||
|
||||
case 429: // Crush Ceiling Down Once
|
||||
EV_DoCrush(line, crushCeilOnce);
|
||||
EV_DoCrush(line->args[0], line, crushCeilOnce);
|
||||
break;
|
||||
|
||||
case 430: // Crush Floor Up Once
|
||||
EV_DoFloor(line, crushFloorOnce);
|
||||
EV_DoFloor(line->args[0], line, crushFloorOnce);
|
||||
break;
|
||||
|
||||
case 431: // Crush Floor & Ceiling to middle Once
|
||||
EV_DoCrush(line, crushBothOnce);
|
||||
EV_DoCrush(line->args[0], line, crushBothOnce);
|
||||
break;
|
||||
|
||||
case 432: // Enable 2D Mode (Disable if noclimb)
|
||||
|
@ -4414,7 +4398,6 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
|
|||
{
|
||||
thinker_t *th;
|
||||
mobj_t *mo2;
|
||||
line_t junk;
|
||||
|
||||
if (player->bot || sector->ceilingdata || sector->floordata)
|
||||
return;
|
||||
|
@ -4434,20 +4417,13 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
|
|||
// clear the special so you can't push the button twice.
|
||||
sector->special = 0;
|
||||
|
||||
// Initialize my junk
|
||||
junk.tags.tags = NULL;
|
||||
junk.tags.count = 0;
|
||||
|
||||
// Move the button down
|
||||
Tag_FSet(&junk.tags, LE_CAPSULE0);
|
||||
EV_DoElevator(&junk, elevateDown, false);
|
||||
EV_DoElevator(LE_CAPSULE0, NULL, elevateDown, false);
|
||||
|
||||
// Open the top FOF
|
||||
Tag_FSet(&junk.tags, LE_CAPSULE1);
|
||||
EV_DoFloor(&junk, raiseFloorToNearestFast);
|
||||
EV_DoFloor(LE_CAPSULE1, NULL, raiseFloorToNearestFast);
|
||||
// Open the bottom FOF
|
||||
Tag_FSet(&junk.tags, LE_CAPSULE2);
|
||||
EV_DoCeiling(&junk, lowerToLowestFast);
|
||||
EV_DoCeiling(LE_CAPSULE2, NULL, lowerToLowestFast);
|
||||
|
||||
// Mark all players with the time to exit thingy!
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
|
@ -6342,11 +6318,11 @@ void P_SpawnSpecials(boolean fromnetsave)
|
|||
break;
|
||||
|
||||
case 50: // Insta-Lower Sector
|
||||
EV_DoFloor(&lines[i], instantLower);
|
||||
EV_DoFloor(lines[i].args[0], &lines[i], instantLower);
|
||||
break;
|
||||
|
||||
case 51: // Instant raise for ceilings
|
||||
EV_DoCeiling(&lines[i], instantRaise);
|
||||
EV_DoCeiling(lines[i].args[0], &lines[i], instantRaise);
|
||||
break;
|
||||
|
||||
case 52: // Continuously Falling sector
|
||||
|
@ -6356,20 +6332,20 @@ void P_SpawnSpecials(boolean fromnetsave)
|
|||
case 53: // New super cool and awesome moving floor and ceiling type
|
||||
case 54: // New super cool and awesome moving floor type
|
||||
if (lines[i].backsector)
|
||||
EV_DoFloor(&lines[i], bounceFloor);
|
||||
EV_DoFloor(lines[i].args[0], &lines[i], bounceFloor);
|
||||
if (lines[i].special == 54)
|
||||
break;
|
||||
/* FALLTHRU */
|
||||
|
||||
case 55: // New super cool and awesome moving ceiling type
|
||||
if (lines[i].backsector)
|
||||
EV_DoCeiling(&lines[i], bounceCeiling);
|
||||
EV_DoCeiling(lines[i].args[0], &lines[i], bounceCeiling);
|
||||
break;
|
||||
|
||||
case 56: // New super cool and awesome moving floor and ceiling crush type
|
||||
case 57: // New super cool and awesome moving floor crush type
|
||||
if (lines[i].backsector)
|
||||
EV_DoFloor(&lines[i], bounceFloorCrush);
|
||||
EV_DoFloor(lines[i].args[0], &lines[i], bounceFloorCrush);
|
||||
|
||||
if (lines[i].special == 57)
|
||||
break; //only move the floor
|
||||
|
@ -6377,23 +6353,23 @@ void P_SpawnSpecials(boolean fromnetsave)
|
|||
|
||||
case 58: // New super cool and awesome moving ceiling crush type
|
||||
if (lines[i].backsector)
|
||||
EV_DoCeiling(&lines[i], bounceCeilingCrush);
|
||||
EV_DoCeiling(lines[i].args[0], &lines[i], bounceCeilingCrush);
|
||||
break;
|
||||
|
||||
case 59: // Activate floating platform
|
||||
EV_DoElevator(&lines[i], elevateContinuous, false);
|
||||
EV_DoElevator(lines[i].args[0], &lines[i], elevateContinuous, false);
|
||||
break;
|
||||
|
||||
case 60: // Floating platform with adjustable speed
|
||||
EV_DoElevator(&lines[i], elevateContinuous, true);
|
||||
EV_DoElevator(lines[i].args[0], &lines[i], elevateContinuous, true);
|
||||
break;
|
||||
|
||||
case 61: // Crusher!
|
||||
EV_DoCrush(&lines[i], crushAndRaise);
|
||||
EV_DoCrush(lines[i].args[0], &lines[i], crushAndRaise);
|
||||
break;
|
||||
|
||||
case 62: // Crusher (up and then down)!
|
||||
EV_DoCrush(&lines[i], fastCrushAndRaise);
|
||||
EV_DoCrush(lines[i].args[0], &lines[i], fastCrushAndRaise);
|
||||
break;
|
||||
|
||||
case 63: // support for drawn heights coming from different sector
|
||||
|
|
|
@ -307,9 +307,9 @@ typedef struct
|
|||
|
||||
#define CEILSPEED (FRACUNIT)
|
||||
|
||||
INT32 EV_DoCeiling(line_t *line, ceiling_e type);
|
||||
INT32 EV_DoCeiling(mtag_t tag, line_t *line, ceiling_e type);
|
||||
|
||||
INT32 EV_DoCrush(line_t *line, ceiling_e type);
|
||||
INT32 EV_DoCrush(mtag_t tag, line_t *line, ceiling_e type);
|
||||
void T_CrushCeiling(ceiling_t *ceiling);
|
||||
|
||||
void T_MoveCeiling(ceiling_t *ceiling);
|
||||
|
@ -520,8 +520,8 @@ typedef enum
|
|||
|
||||
result_e T_MovePlane(sector_t *sector, fixed_t speed, fixed_t dest, boolean crush,
|
||||
boolean ceiling, INT32 direction);
|
||||
void EV_DoFloor(line_t *line, floor_e floortype);
|
||||
void EV_DoElevator(line_t *line, elevator_e elevtype, boolean customspeed);
|
||||
void EV_DoFloor(mtag_t tag, line_t *line, floor_e floortype);
|
||||
void EV_DoElevator(mtag_t tag, line_t *line, elevator_e elevtype, boolean customspeed);
|
||||
void EV_CrumbleChain(sector_t *sec, ffloor_t *rover);
|
||||
void EV_BounceSector(sector_t *sector, fixed_t momz, line_t *sourceline);
|
||||
|
||||
|
|
Loading…
Reference in a new issue