- pushmove wrapper and a few other replacements.

This commit is contained in:
Christoph Oelckers 2022-02-05 12:47:05 +01:00
parent 8482e66caa
commit 9cd57f4510
6 changed files with 29 additions and 17 deletions

View file

@ -455,9 +455,7 @@ void moveplayers(void)
}
else
{
p->__int_pos.X = act->int_pos().X;
p->__int_pos.Y = act->int_pos().Y;
p->__int_pos.Z = act->int_pos().Z - (20 << 8);
p->getposfromactor(act, -20);
p->newOwner = nullptr;
@ -794,7 +792,7 @@ void movecrane(DDukeActor *actor, int crane)
ps[p].__int_pos.X = actor->int_pos().X - bcos(ang, -6);
ps[p].__int_pos.Y = actor->int_pos().Y - bsin(ang, -6);
ps[p].__int_pos.Z = actor->int_pos().Z + (2 << 8);
SetActor(ps[p].GetActor(), ps[p].__int_pos);
SetActor(ps[p].GetActor(), ps[p].player_int_pos());
ps[p].setCursector(ps[p].GetActor()->sector());
}
}
@ -2685,7 +2683,7 @@ void handle_se00(DDukeActor* actor)
ps[p].__int_pos.Z += zchange;
vec2_t res;
rotatepoint(Owner->int_pos().vec2, ps[p].__int_pos.vec2, (q * l), &res);
rotatepoint(Owner->int_pos().vec2, ps[p].player_int_pos().vec2, (q * l), &res);
ps[p].bobpos.X += res.X - ps[p].player_int_pos().X;
ps[p].bobpos.Y += res.Y - ps[p].player_int_pos().Y;
@ -2859,7 +2857,7 @@ void handle_se14(DDukeActor* actor, bool checkstat, int RPG, int JIBS6)
if (actor->sector() == psp->sector())
{
rotatepoint(actor->int_pos().vec2, ps[p].__int_pos.vec2, q, &ps[p].__int_pos.vec2);
rotatepoint(actor->int_pos().vec2, ps[p].player_int_pos().vec2, q, &ps[p].__int_pos.vec2);
ps[p].__int_pos.X += m;
ps[p].__int_pos.Y +=x;

View file

@ -247,4 +247,10 @@ inline ESpriteFlags randomXFlip()
return CSTAT_SPRITE_XFLIP;
}
inline int pushmove_p(player_struct* actor, sectortype** const sect, int32_t const walldist, int32_t const ceildist, int32_t const flordist,
uint32_t const cliptype, bool clear = true)
{
return ::pushmove(&actor->__int_pos, sect, walldist, ceildist, flordist, cliptype, clear);
}
END_DUKE_NS

View file

@ -631,7 +631,7 @@ void playerisdead(int snum, int psectlotag, int fz, int cz)
updatesector(p->player_int_pos().X, p->player_int_pos().Y, &p->cursector);
pushmove(&p->__int_pos, &p->cursector, 128L, (4 << 8), (20 << 8), CLIPMASK0);
pushmove_p(p, &p->cursector, 128L, (4 << 8), (20 << 8), CLIPMASK0);
if (fz > cz + (16 << 8) && actor->spr.pal != 1)
p->angle.rotscrnang = buildang(p->dead_flag + ((fz + p->player_int_pos().Z) >> 7));

View file

@ -2009,7 +2009,7 @@ int operateTripbomb(int snum)
auto p = &ps[snum];
HitInfo hit{};
hitscan(p->__int_pos, p->cursector, { p->angle.ang.bcos(), p->angle.ang.bsin(), -p->horizon.sum().asq16() >> 11 }, hit, CLIPMASK1);
hitscan(p->player_int_pos(), p->cursector, { p->angle.ang.bcos(), p->angle.ang.bsin(), -p->horizon.sum().asq16() >> 11 }, hit, CLIPMASK1);
if (hit.hitSector == nullptr || hit.actor())
return 0;
@ -3083,7 +3083,7 @@ HORIZONLY:
while (ud.clipping == 0)
{
int blocked;
blocked = (pushmove(&p->__int_pos, &p->cursector, 164, (4 << 8), (4 << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
blocked = (pushmove_p(p, &p->cursector, 164, (4 << 8), (4 << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
if (fabs(pact->floorz - pact->ceilingz) < 48 || blocked)
{

View file

@ -3830,10 +3830,10 @@ HORIZONLY:
if (wal->lotag < 44)
{
dofurniture(clip.hitWall, p->cursector, snum);
pushmove(&p->__int_pos, &p->cursector, 172L, (4L << 8), (4L << 8), CLIPMASK0);
pushmove_p(p, &p->cursector, 172L, (4L << 8), (4L << 8), CLIPMASK0);
}
else
pushmove(&p->__int_pos, &p->cursector, 172L, (4L << 8), (4L << 8), CLIPMASK0);
pushmove_p(p, &p->cursector, 172L, (4L << 8), (4L << 8), CLIPMASK0);
}
}
}
@ -3934,9 +3934,9 @@ HORIZONLY:
{
int blocked;
if (pact->spr.clipdist == 64)
blocked = (pushmove(&p->__int_pos, &p->cursector, 128, (4 << 8), (4 << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
blocked = (pushmove_p(p, &p->cursector, 128, (4 << 8), (4 << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
else
blocked = (pushmove(&p->__int_pos, &p->cursector, 16, (4 << 8), (4 << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
blocked = (pushmove_p(p, &p->cursector, 16, (4 << 8), (4 << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
if (fabs(pact->floorz - pact->ceilingz) < 48 || blocked)
{
@ -4048,8 +4048,7 @@ void OnMotorcycle(struct player_struct *p, DDukeActor* motosprite)
{
if (motosprite)
{
p->__int_pos.X = motosprite->int_pos().X;
p->__int_pos.Y = motosprite->int_pos().Y;
p->getxyfromactor(motosprite);
p->angle.ang = buildang(motosprite->spr.ang);
p->ammo_amount[MOTORCYCLE_WEAPON] = motosprite->saved_ammo;
deletesprite(motosprite);
@ -4128,8 +4127,7 @@ void OnBoat(struct player_struct *p, DDukeActor* boat)
{
if (boat)
{
p->__int_pos.X = boat->int_pos().X;
p->__int_pos.Y = boat->int_pos().Y;
p->getxyfromactor(boat);
p->angle.ang = buildang(boat->spr.ang);
p->ammo_amount[BOAT_WEAPON] = boat->saved_ammo;
deletesprite(boat);

View file

@ -418,6 +418,16 @@ struct player_struct
return { int(opos.X * worldtoint), int(opos.Y * worldtoint),int(opos.Z * zworldtoint) };
}
void player_add_int_z(int z)
{
__int_pos.Z += z;
}
void player_set_int_z(int z)
{
__int_pos.Z = z;
}
};
struct Cycler