Pass parameters to EV_DoPolyObjFlag in a struct and not via the line

This commit is contained in:
MascaraSnake 2020-05-04 09:54:32 +02:00
parent 02c347ada2
commit 482adc6124
3 changed files with 25 additions and 10 deletions

View File

@ -2691,7 +2691,7 @@ void T_PolyObjFlag(polymove_t *th)
Polyobj_attachToSubsec(po); // relink to subsector
}
INT32 EV_DoPolyObjFlag(line_t *pfdata)
INT32 EV_DoPolyObjFlag(polyflagdata_t *pfdata)
{
polyobj_t *po;
polyobj_t *oldpo;
@ -2699,9 +2699,9 @@ INT32 EV_DoPolyObjFlag(line_t *pfdata)
size_t i;
INT32 start;
if (!(po = Polyobj_GetForNum(pfdata->tag)))
if (!(po = Polyobj_GetForNum(pfdata->polyObjNum)))
{
CONS_Debug(DBG_POLYOBJ, "EV_DoPolyFlag: bad polyobj %d\n", pfdata->tag);
CONS_Debug(DBG_POLYOBJ, "EV_DoPolyFlag: bad polyobj %d\n", pfdata->polyObjNum);
return 0;
}
@ -2724,11 +2724,11 @@ INT32 EV_DoPolyObjFlag(line_t *pfdata)
po->thinker = &th->thinker;
// set fields
th->polyObjNum = pfdata->tag;
th->polyObjNum = pfdata->polyObjNum;
th->distance = 0;
th->speed = P_AproxDistance(pfdata->dx, pfdata->dy)>>FRACBITS;
th->angle = R_PointToAngle2(pfdata->v1->x, pfdata->v1->y, pfdata->v2->x, pfdata->v2->y)>>ANGLETOFINESHIFT;
th->momx = sides[pfdata->sidenum[0]].textureoffset>>FRACBITS;
th->speed = pfdata->speed;
th->angle = pfdata->angle;
th->momx = pfdata->momx;
// save current positions
for (i = 0; i < po->numVertices; ++i)
@ -2740,7 +2740,7 @@ INT32 EV_DoPolyObjFlag(line_t *pfdata)
start = 0;
while ((po = Polyobj_GetChild(oldpo, &start)))
{
pfdata->tag = po->id;
pfdata->polyObjNum = po->id;
EV_DoPolyObjFlag(pfdata);
}

View File

@ -298,6 +298,14 @@ typedef struct polyrotdisplacedata_s
UINT8 turnobjs;
} polyrotdisplacedata_t;
typedef struct polyflagdata_s
{
INT32 polyObjNum;
INT32 speed;
UINT32 angle;
fixed_t momx;
} polyflagdata_t;
typedef struct polyfadedata_s
{
INT32 polyObjNum;
@ -337,7 +345,7 @@ INT32 EV_DoPolyObjWaypoint(polywaypointdata_t *);
INT32 EV_DoPolyObjRotate(polyrotdata_t *);
INT32 EV_DoPolyObjDisplace(polydisplacedata_t *);
INT32 EV_DoPolyObjRotDisplace(polyrotdisplacedata_t *);
INT32 EV_DoPolyObjFlag(struct line_s *);
INT32 EV_DoPolyObjFlag(polyflagdata_t *);
INT32 EV_DoPolyObjFade(polyfadedata_t *);

View File

@ -7282,8 +7282,15 @@ void P_SpawnSpecials(boolean fromnetsave)
switch (lines[i].special)
{
case 30: // Polyobj_Flag
EV_DoPolyObjFlag(&lines[i]);
{
polyflagdata_t pfd;
pfd.polyObjNum = lines[i].tag;
pfd.speed = P_AproxDistance(lines[i].dx, lines[i].dy) >> FRACBITS;
pfd.angle = R_PointToAngle2(lines[i].v1->x, lines[i].v1->y, lines[i].v2->x, lines[i].v2->y) >> ANGLETOFINESHIFT;
pfd.momx = sides[lines[i].sidenum[0]].textureoffset >> FRACBITS;
EV_DoPolyObjFlag(&pfd);
break;
}
case 31: // Polyobj_Displace
PolyDisplace(&lines[i]);