- Duke: Tidy up underwater().

This commit is contained in:
Mitchell Richters 2023-04-23 19:10:22 +10:00
parent 95fe3d1bc4
commit 8db8d43f89
2 changed files with 20 additions and 27 deletions

View file

@ -829,12 +829,10 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
static void underwater(int snum, ESyncBits actions, double floorz, double ceilingz)
{
auto p = &ps[snum];
auto pact = p->GetActor();
const auto p = &ps[snum];
const auto pact = p->GetActor();
// under water
p->jumping_counter = 0;
p->pycount += 32;
p->pycount &= 2047;
p->pyoff = BobVal(p->pycount);
@ -844,14 +842,12 @@ static void underwater(int snum, ESyncBits actions, double floorz, double ceilin
if (actions & SB_JUMP)
{
// jump
if (p->vel.Z > 0) p->vel.Z = 0;
p->vel.Z -= (348 / 256.);
if (p->vel.Z < -6) p->vel.Z = -6;
}
else if (actions & SB_CROUCH)
{
// crouch
if (p->vel.Z < 0) p->vel.Z = 0;
p->vel.Z += (348 / 256.);
if (p->vel.Z > 6) p->vel.Z = 6;
@ -876,25 +872,24 @@ static void underwater(int snum, ESyncBits actions, double floorz, double ceilin
if (p->vel.Z > 8)
p->vel.Z *= 0.5;
p->GetActor()->spr.pos.Z += p->vel.Z;
pact->spr.pos.Z += p->vel.Z;
if (p->GetActor()->getOffsetZ() > floorz - 15)
p->GetActor()->spr.pos.Z += ((floorz - 15) - p->GetActor()->getOffsetZ()) * 0.5;
if (pact->getOffsetZ() > floorz - 15)
pact->spr.pos.Z += ((floorz - 15) - pact->getOffsetZ()) * 0.5;
if (p->GetActor()->getOffsetZ() < ceilingz + 4)
if (pact->getOffsetZ() < ceilingz + 4)
{
p->GetActor()->spr.pos.Z = ceilingz + 4 + gs.playerheight;
pact->spr.pos.Z = ceilingz + 4 + gs.playerheight;
p->vel.Z = 0;
}
if (p->scuba_on && (krand() & 255) < 8)
{
auto j = spawn(pact, DukeWaterBubbleClass);
if (j)
if (const auto j = spawn(pact, DukeWaterBubbleClass))
{
j->spr.pos += (p->GetActor()->spr.Angles.Yaw.ToVector() + DVector2(4 - (global_random & 8), 4 - (global_random & 8))) * 16;
j->spr.pos += (pact->spr.Angles.Yaw.ToVector() + DVector2(4 - (global_random & 8), 4 - (global_random & 8))) * 16;
j->spr.scale = DVector2(0.046875, 0.3125);
j->spr.pos.Z = p->GetActor()->getOffsetZ() + 8;
j->spr.pos.Z = pact->getOffsetZ() + 8;
}
}
}

View file

@ -1329,11 +1329,10 @@ static void movement(int snum, ESyncBits actions, sectortype* psect, double floo
static void underwater(int snum, ESyncBits actions, double floorz, double ceilingz)
{
auto p = &ps[snum];
auto pact = p->GetActor();
const auto p = &ps[snum];
const auto pact = p->GetActor();
p->jumping_counter = 0;
p->pycount += 32;
p->pycount &= 2047;
p->pyoff = BobVal(p->pycount);
@ -1372,25 +1371,24 @@ static void underwater(int snum, ESyncBits actions, double floorz, double ceilin
if (p->vel.Z > 8)
p->vel.Z *= 0.5;
p->GetActor()->spr.pos.Z += p->vel.Z;
pact->spr.pos.Z += p->vel.Z;
if (p->GetActor()->getOffsetZ() > floorz - 15)
p->GetActor()->spr.pos.Z += ((floorz - 15) - p->GetActor()->getOffsetZ()) * 0.5;
if (pact->getOffsetZ() > floorz - 15)
pact->spr.pos.Z += ((floorz - 15) - pact->getOffsetZ()) * 0.5;
if (p->GetActor()->getOffsetZ() < ceilingz + 4)
if (pact->getOffsetZ() < ceilingz + 4)
{
p->GetActor()->spr.pos.Z = ceilingz + 4 + gs.playerheight;
pact->spr.pos.Z = ceilingz + 4 + gs.playerheight;
p->vel.Z = 0;
}
if (p->scuba_on && (krand() & 255) < 8)
{
auto j = spawn(pact, DukeWaterBubbleClass);
if (j)
if (const auto j = spawn(pact, DukeWaterBubbleClass))
{
j->spr.pos += (p->GetActor()->spr.Angles.Yaw.ToVector() + DVector2(12 - (global_random & 8), 12 - (global_random & 8))) * 16;
j->spr.pos += (pact->spr.Angles.Yaw.ToVector() + DVector2(12 - (global_random & 8), 12 - (global_random & 8))) * 16;
j->spr.scale = DVector2(0.046875, 0.03125);
j->spr.pos.Z = p->GetActor()->getOffsetZ() + 8;
j->spr.pos.Z = pact->getOffsetZ() + 8;
j->spr.cstat = CSTAT_SPRITE_TRANS_FLIP | CSTAT_SPRITE_TRANSLUCENT;
}
}