From 54ef648936894499354c0afb3f0d486ce44a4dbd Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Sat, 27 Aug 2022 16:04:55 +1000 Subject: [PATCH] - SW: Change `limit_ang_center` and `limit_ang_delta` to `DAngle` objects. --- source/games/sw/src/game.h | 6 +++--- source/games/sw/src/player.cpp | 18 +++++++++--------- source/games/sw/src/track.cpp | 18 +++++++++--------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index bccb29f9f..93d93c60e 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -1517,11 +1517,11 @@ struct SECTOR_OBJECT morph_dist, // dist from CENTER morph_z_speed, // z speed for morph point morph_xoff, // save xoff from center - morph_yoff, // save yoff from center + morph_yoff; // save yoff from center - //scale_rand_reverse, // random at random interval + //scale_rand_reverse; // random at random interval // limit rotation angle - limit_ang_center, // for limiting the angle of turning - turrets etc + DAngle limit_ang_center, // for limiting the angle of turning - turrets etc limit_ang_delta; // }; diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index bbfb04896..68c6088fb 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -1530,7 +1530,7 @@ void DoPlayerTurnVehicleRect(PLAYER* pp, int *x, int *y, int *ox, int *oy) void DoPlayerTurnTurret(PLAYER* pp, float avel) { - binangle new_ang, diff; + DAngle new_ang, diff; SECTOR_OBJECT* sop = pp->sop; if (sop->drive_angspeed) @@ -1547,22 +1547,22 @@ void DoPlayerTurnTurret(PLAYER* pp, float avel) if (fabs(avel) >= FLT_EPSILON) { - new_ang = pp->angle.ang + degang(avel); + new_ang = DAngle::fromBam(pp->angle.ang.asbam()) + DAngle::fromDeg(avel); - if (sop->limit_ang_center >= 0) + if (sop->limit_ang_center >= nullAngle) { - diff = getincanglebam(buildang(sop->limit_ang_center), new_ang); + diff = (new_ang - sop->limit_ang_center).Normalized180(); - if (labs(diff.signedbuild()) >= sop->limit_ang_delta) + if (abs(diff) >= sop->limit_ang_delta) { - if (diff.asbam() > INT32_MAX) - new_ang = buildang(sop->limit_ang_center - sop->limit_ang_delta); + if (diff < nullAngle) + new_ang = sop->limit_ang_center - sop->limit_ang_delta; else - new_ang = buildang(sop->limit_ang_center + sop->limit_ang_delta); + new_ang = sop->limit_ang_center + sop->limit_ang_delta; } } - pp->angle.ang = new_ang; + pp->angle.ang = bamang(new_ang.BAMs()); pp->actor->set_int_ang(pp->angle.ang.asbuild()); } diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index fb6abf580..2e6af6e97 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -1225,8 +1225,8 @@ void SetupSectorObject(sectortype* sectp, short tag) KillActor(actor); break; case SO_LIMIT_TURN: - sop->limit_ang_center = actor->int_ang(); - sop->limit_ang_delta = actor->spr.lotag; + sop->limit_ang_center = DAngle::fromBuild(actor->int_ang()); + sop->limit_ang_delta = DAngle::fromBuild(actor->spr.lotag); KillActor(actor); break; case SO_MATCH_EVENT: @@ -2731,7 +2731,7 @@ void DoAutoTurretObject(SECTOR_OBJECT* sop) if (!actor) return; short delta_ang; - int diff; + DAngle diff; short i; if ((sop->max_damage != -9999 && sop->max_damage <= 0) || !actor->hasU()) @@ -2801,16 +2801,16 @@ void DoAutoTurretObject(SECTOR_OBJECT* sop) sop->ang = NORM_ANGLE(sop->ang + (delta_ang >> 3)); //sop->ang += delta_ang >> 2; - if (sop->limit_ang_center >= 0) + if (sop->limit_ang_center >= nullAngle) { - diff = getincangle(sop->limit_ang_center, sop->ang); + diff = (DAngle::fromBuild(sop->ang) - sop->limit_ang_center).Normalized180(); - if (labs(diff) >= sop->limit_ang_delta) + if (abs(diff) >= sop->limit_ang_delta) { - if (diff < 0) - sop->ang = sop->limit_ang_center - sop->limit_ang_delta; + if (diff < nullAngle) + sop->ang = (sop->limit_ang_center - sop->limit_ang_delta).Buildang(); else - sop->ang = sop->limit_ang_center + sop->limit_ang_delta; + sop->ang = (sop->limit_ang_center + sop->limit_ang_delta).Buildang(); } }