mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 03:01:36 +00:00
- Blood: Replace some set_int_ang()
usage.
* A lot of this repeated code should be factored out into repeated blocks when all of this floatification is done.
This commit is contained in:
parent
8f5340c3a7
commit
a22300fe01
10 changed files with 141 additions and 134 deletions
|
@ -1414,6 +1414,12 @@ inline TAngle<T> absangle(const TAngle<T> &a1, const TAngle<T> &a2)
|
|||
return fabs((a1 - a2).Normalized180());
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline TAngle<T> clamp(const TAngle<T> &angle, const TAngle<T> &min, const TAngle<T> &max)
|
||||
{
|
||||
return TAngle<T>::fromDeg(clamp(angle.Degrees(), min.Degrees(), max.Degrees()));
|
||||
}
|
||||
|
||||
inline TAngle<double> VecToAngle(double x, double y)
|
||||
{
|
||||
return TAngle<double>::fromRad(g_atan2(y, x));
|
||||
|
@ -1636,6 +1642,7 @@ constexpr DAngle nullAngle = DAngle::fromDeg(0.);
|
|||
constexpr FAngle nullFAngle = FAngle::fromDeg(0.);
|
||||
|
||||
constexpr DAngle DAngle45 = DAngle::fromDeg(45);
|
||||
constexpr DAngle DAngle60 = DAngle::fromDeg(60);
|
||||
constexpr DAngle DAngle90 = DAngle::fromDeg(90);
|
||||
constexpr DAngle DAngle180 = DAngle::fromDeg(180);
|
||||
constexpr DAngle DAngle270 = DAngle::fromDeg(270);
|
||||
|
|
|
@ -298,10 +298,10 @@ void aiMoveForward(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
if (abs(nAng) > 341)
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
actor->vel.X += MulScale(pDudeInfo->frontSpeed, Cos(actor->int_ang()), 30);
|
||||
actor->vel.Y += MulScale(pDudeInfo->frontSpeed, Sin(actor->int_ang()), 30);
|
||||
|
@ -317,9 +317,9 @@ void aiMoveTurn(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -332,9 +332,9 @@ void aiMoveDodge(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (actor->xspr.dodgeDir)
|
||||
{
|
||||
int nCos = Cos(actor->int_ang());
|
||||
|
|
|
@ -200,9 +200,9 @@ static void batMoveDodgeUp(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nCos = Cos(actor->int_ang());
|
||||
int nSin = Sin(actor->int_ang());
|
||||
int dx = actor->vel.X;
|
||||
|
@ -223,9 +223,9 @@ static void batMoveDodgeDown(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (actor->xspr.dodgeDir == 0)
|
||||
return;
|
||||
int nCos = Cos(actor->int_ang());
|
||||
|
@ -307,11 +307,11 @@ static void batMoveForward(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -337,11 +337,11 @@ static void batMoveSwoop(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -366,11 +366,11 @@ static void batMoveFly(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->spr.angle += DAngle90;
|
||||
return;
|
||||
|
|
|
@ -393,10 +393,10 @@ static void beastMoveForward(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
if (abs(nAng) > 341)
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY();
|
||||
int nDist = approxDist(dvec);
|
||||
|
@ -410,11 +410,11 @@ static void sub_628A0(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -444,11 +444,11 @@ static void sub_62AE0(DBloodActor* actor)
|
|||
auto target = actor->GetTarget();
|
||||
int z = actor->int_pos().Z + getDudeInfo(actor->spr.type)->eyeHeight;
|
||||
int z2 = target->int_pos().Z + getDudeInfo(target->spr.type)->eyeHeight;
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -478,11 +478,11 @@ static void sub_62D7C(DBloodActor* actor)
|
|||
auto target = actor->GetTarget();
|
||||
int z = actor->int_pos().Z + getDudeInfo(actor->spr.type)->eyeHeight;
|
||||
int z2 = target->int_pos().Z + getDudeInfo(target->spr.type)->eyeHeight;
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->spr.angle += DAngle90;
|
||||
return;
|
||||
|
|
|
@ -215,9 +215,9 @@ static void eelMoveDodgeUp(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nCos = Cos(actor->int_ang());
|
||||
int nSin = Sin(actor->int_ang());
|
||||
int dx = actor->vel.X;
|
||||
|
@ -238,9 +238,9 @@ static void eelMoveDodgeDown(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (actor->xspr.dodgeDir == 0)
|
||||
return;
|
||||
int nCos = Cos(actor->int_ang());
|
||||
|
@ -319,11 +319,11 @@ static void eelMoveForward(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 26) / 120) / 120) << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -349,11 +349,11 @@ static void eelMoveSwoop(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 26) / 120) / 120) << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY();
|
||||
int nDist = approxDist(dvec);
|
||||
|
@ -375,11 +375,11 @@ static void eelMoveAscend(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 26) / 120) / 120) << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY();
|
||||
int nDist = approxDist(dvec);
|
||||
|
|
|
@ -278,11 +278,11 @@ static void sub_65D04(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -313,11 +313,11 @@ static void sub_65F44(DBloodActor* actor)
|
|||
auto target = actor->GetTarget();
|
||||
int z = actor->int_pos().Z + getDudeInfo(actor->spr.type)->eyeHeight;
|
||||
int z2 = target->int_pos().Z + getDudeInfo(target->spr.type)->eyeHeight;
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -348,11 +348,11 @@ static void sub_661E0(DBloodActor* actor)
|
|||
auto target = actor->GetTarget();
|
||||
int z = actor->int_pos().Z + getDudeInfo(actor->spr.type)->eyeHeight;
|
||||
int z2 = target->int_pos().Z + getDudeInfo(target->spr.type)->eyeHeight;
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->spr.angle += DAngle90;
|
||||
return;
|
||||
|
|
|
@ -276,9 +276,9 @@ static void gargMoveDodgeUp(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nCos = Cos(actor->int_ang());
|
||||
int nSin = Sin(actor->int_ang());
|
||||
int dx = actor->vel.X;
|
||||
|
@ -302,9 +302,9 @@ static void gargMoveDodgeDown(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (actor->xspr.dodgeDir == 0)
|
||||
return;
|
||||
int nCos = Cos(actor->int_ang());
|
||||
|
@ -520,11 +520,11 @@ static void gargMoveForward(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -553,11 +553,11 @@ static void gargMoveSlow(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -593,11 +593,11 @@ static void gargMoveSwoop(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -632,11 +632,11 @@ static void gargMoveFly(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->spr.angle += DAngle90;
|
||||
return;
|
||||
|
|
|
@ -255,9 +255,9 @@ static void ghostMoveDodgeUp(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nCos = Cos(actor->int_ang());
|
||||
int nSin = Sin(actor->int_ang());
|
||||
int dx = actor->vel.X;
|
||||
|
@ -281,9 +281,9 @@ static void ghostMoveDodgeDown(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
if (actor->xspr.dodgeDir == 0)
|
||||
return;
|
||||
int nCos = Cos(actor->int_ang());
|
||||
|
@ -416,11 +416,11 @@ static void ghostMoveForward(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -449,11 +449,11 @@ static void ghostMoveSlow(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -486,11 +486,11 @@ static void ghostMoveSwoop(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -522,11 +522,11 @@ static void ghostMoveFly(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->spr.angle += DAngle90;
|
||||
return;
|
||||
|
|
|
@ -265,11 +265,11 @@ static void sub_6CB00(DBloodActor* actor)
|
|||
{
|
||||
assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax);
|
||||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 27) / 120) / 120) << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
@ -299,11 +299,11 @@ static void sub_6CD74(DBloodActor* actor)
|
|||
auto target = actor->GetTarget();
|
||||
int z = actor->int_pos().Z + getDudeInfo(actor->spr.type)->eyeHeight;
|
||||
int z2 = target->int_pos().Z + getDudeInfo(target->spr.type)->eyeHeight;
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 27) / 120) / 120) << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->xspr.goalAng = (actor->int_ang() + 512) & 2047;
|
||||
return;
|
||||
|
@ -333,11 +333,11 @@ static void sub_6D03C(DBloodActor* actor)
|
|||
auto target = actor->GetTarget();
|
||||
int z = actor->int_pos().Z + getDudeInfo(actor->spr.type)->eyeHeight;
|
||||
int z2 = target->int_pos().Z + getDudeInfo(target->spr.type)->eyeHeight;
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 27) / 120) / 120) << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
{
|
||||
actor->spr.angle += DAngle90;
|
||||
return;
|
||||
|
|
|
@ -1114,11 +1114,11 @@ void aiGenDudeMoveForward(DBloodActor* actor)
|
|||
|
||||
if (pExtra->canFly)
|
||||
{
|
||||
int nAng = ((actor->xspr.goalAng + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nTurnRange = (pDudeInfo->angSpeed << 2) >> 4;
|
||||
actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047);
|
||||
auto nAng = deltaangle(actor->spr.angle, DAngle::fromBuild(actor->xspr.goalAng));
|
||||
auto nTurnRange = DAngle::fromQ16(pDudeInfo->angSpeed << 3);
|
||||
actor->spr.angle += clamp(nAng, -nTurnRange, nTurnRange);
|
||||
int nAccel = pDudeInfo->frontSpeed << 2;
|
||||
if (abs(nAng) > 341)
|
||||
if (abs(nAng) > DAngle60)
|
||||
return;
|
||||
if (actor->GetTarget() == nullptr)
|
||||
actor->spr.angle += DAngle45;
|
||||
|
|
Loading…
Reference in a new issue