- AngleDiff

This commit is contained in:
Christoph Oelckers 2022-08-20 16:26:01 +02:00
parent 9d5acf8350
commit 7d9406bf01
10 changed files with 20 additions and 23 deletions

View file

@ -180,9 +180,7 @@ void AIAnubis::Tick(RunListEvent* ev)
{
if (move.actor() == pTarget)
{
int nAng = getangle(pTarget->spr.pos - ap->spr.pos);
int nAngDiff = AngleDiff(ap->int_ang(), nAng);
auto nAngDiff = AngleDiff(ap->spr.angle, VecToAngle(pTarget->spr.pos - ap->spr.pos));
if (nAngDiff < 64)
{
ap->nAction = 2;

View file

@ -125,7 +125,7 @@ int RandomSize(int nSize);
int GetMyAngle(int x, int y);
int AngleDiff(int a, int b);
int AngleDiff(DAngle a, DAngle b);
int AngleDelta(int a, int b, int c);
END_PS_NS

View file

@ -310,8 +310,8 @@ void AILavaDude::Tick(RunListEvent* ev)
{
if (coll.actor() == pTarget)
{
int nAng = getangle(pTarget->spr.pos - pActor->spr.pos);
if (AngleDiff(pActor->int_ang(), nAng) < 64)
auto nAngDiff = AngleDiff(pActor->spr.angle, VecToAngle(pTarget->spr.pos - pActor->spr.pos));
if (nAngDiff < 64)
{
pActor->nAction = 2;
pActor->nFrame = 0;

View file

@ -309,9 +309,8 @@ void AILion::Tick(RunListEvent* ev)
}
else
{
int nAng = getangle(pTarget->spr.pos - pActor->spr.pos);
if (AngleDiff(pActor->int_ang(), nAng) < 64)
auto nAngDiff = AngleDiff(pActor->spr.angle, VecToAngle(pTarget->spr.pos - pActor->spr.pos));
if (nAngDiff < 64)
{
pActor->nAction = 3;
}
@ -442,8 +441,8 @@ void AILion::Tick(RunListEvent* ev)
{
if (nMov.actor() == pTarget)
{
int nAng = getangle(pTarget->spr.pos - pActor->spr.pos);
if (AngleDiff(pActor->int_ang(), nAng) < 64)
auto nAngDiff = AngleDiff(pActor->spr.angle, VecToAngle(pTarget->spr.pos - pActor->spr.pos));
if (nAngDiff < 64)
{
pActor->nAction = 3;
pActor->nFrame = 0;

View file

@ -270,8 +270,8 @@ void AIMummy::Tick(RunListEvent* ev)
{
if (nMov.actor() == pTarget)
{
int nAngle = getangle(pTarget->spr.pos - pActor->spr.pos);
if (AngleDiff(pActor->int_ang(), nAngle) < 64)
auto nAngDiff = AngleDiff(pActor->spr.angle, VecToAngle(pTarget->spr.pos - pActor->spr.pos));
if (nAngDiff < 64)
{
pActor->nAction = 2;
pActor->nFrame = 0;

View file

@ -1014,7 +1014,7 @@ void AIPlayer::Tick(RunListEvent* ev)
{
if ((sect->hitag == 45) && bTouchFloor)
{
int nDiff = AngleDiff(nNormal, (pPlayerActor->int_ang() + 1024) & kAngleMask);
int nDiff = AngleDiff(DAngle::fromBuild(nNormal), DAngle::fromBuild((pPlayerActor->int_ang() + 1024) & kAngleMask));
if (nDiff < 0) {
nDiff = -nDiff;

View file

@ -245,8 +245,8 @@ void AIScorp::Tick(RunListEvent* ev)
{
if (pTarget == nMov.actor())
{
int nAngle = getangle(pTarget->spr.pos - pActor->spr.pos);
if (AngleDiff(pActor->int_ang(), nAngle) < 64)
auto nAngDiff = AngleDiff(pActor->spr.angle, VecToAngle(pTarget->spr.pos - pActor->spr.pos));
if (nAngDiff < 64)
{
pActor->nAction = 2;
pActor->nFrame = 0;

View file

@ -427,9 +427,9 @@ void AISet::Tick(RunListEvent* ev)
{
if (pTarget == nMov.actor())
{
int nAng = getangle(pTarget->spr.pos - pActor->spr.pos);
if (AngleDiff(pActor->int_ang(), nAng) < 64)
{
auto nAngDiff = AngleDiff(pActor->spr.angle, VecToAngle(pTarget->spr.pos - pActor->spr.pos));
if (nAngDiff < 64)
{
pActor->nAction = 4;
pActor->nFrame = 0;
}

View file

@ -308,8 +308,8 @@ void AISpider::Tick(RunListEvent* ev)
{
if (nMov.actor() == pTarget)
{
int nAng = getangle(pTarget->spr.pos - spp->spr.pos);
if (AngleDiff(spp->int_ang(), nAng) < 64)
auto nAngDiff = AngleDiff(spp->spr.angle, VecToAngle(pTarget->spr.pos - spp->spr.pos));
if (nAngDiff < 64)
{
spp->nAction = 2;
spp->nFrame = 0;

View file

@ -120,9 +120,9 @@ int GetMyAngle(int x, int y)
}
// 100% done
int AngleDiff(int a, int b)
int AngleDiff(DAngle a, DAngle b)
{
int diff = (b - a) & kAngleMask;
int diff = (b - a).Buildang();
if (diff > 1024) {
diff = 2048 - diff;