From eae2e638aa32843c7898dedf7cd165b90075943f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 15 Sep 2022 18:52:39 +0200 Subject: [PATCH] - floatified all getangle calls. --- source/games/duke/src/animatesprites_d.cpp | 6 +++--- source/games/duke/src/animatesprites_r.cpp | 6 +++--- source/games/duke/src/gameexec.cpp | 10 ++++------ source/games/duke/src/player_r.cpp | 18 +++++++++--------- source/games/duke/src/prediction.cpp | 2 +- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/source/games/duke/src/animatesprites_d.cpp b/source/games/duke/src/animatesprites_d.cpp index d476ab3dd..7a268621a 100644 --- a/source/games/duke/src/animatesprites_d.cpp +++ b/source/games/duke/src/animatesprites_d.cpp @@ -204,10 +204,10 @@ void animatesprites_d(tspriteArray& tsprites, int x, int y, int a, double interp case FORCESPHERE: if (t->statnum == STAT_MISC && OwnerAc) { - int sqa = getangle( OwnerAc->spr.pos.XY() - ps[screenpeek].pos.XY()); - int sqb = getangle(OwnerAc->spr.pos.XY() - t->pos.XY()); + auto sqa = VecToAngle( OwnerAc->spr.pos.XY() - ps[screenpeek].pos.XY()); + auto sqb = VecToAngle(OwnerAc->spr.pos.XY() - t->pos.XY()); - if (abs(getincangle(sqa, sqb)) > 512) + if (absangle(sqa, sqb) > DAngle90) { double dist1 = (OwnerAc->spr.pos.XY() - t->pos.XY()).LengthSquared(); double dist2 = (OwnerAc->spr.pos.XY() - ps[screenpeek].GetActor()->spr.pos.XY()).LengthSquared(); diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index b20f2d8a4..78e83d199 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -199,10 +199,10 @@ void animatesprites_r(tspriteArray& tsprites, int x, int y, int a, double interp case FORCESPHERE: if (t->statnum == STAT_MISC && OwnerAc) { - int sqa = getangle(OwnerAc->spr.pos.XY() - ps[screenpeek].pos.XY()); - int sqb = getangle(OwnerAc->spr.pos.XY() - t->pos.XY()); + auto sqa = VecToAngle(OwnerAc->spr.pos.XY() - ps[screenpeek].pos.XY()); + auto sqb = VecToAngle(OwnerAc->spr.pos.XY() - t->pos.XY()); - if (abs(getincangle(sqa, sqb)) > 512) + if (absangle(sqa, sqb) > DAngle90) { double dist1 = (OwnerAc->spr.pos.XY() - t->pos.XY()).LengthSquared(); double dist2 = (OwnerAc->spr.pos.XY() - ps[screenpeek].GetActor()->spr.pos.XY()).LengthSquared(); diff --git a/source/games/duke/src/gameexec.cpp b/source/games/duke/src/gameexec.cpp index 296f6d5a8..c5e1aefce 100644 --- a/source/games/duke/src/gameexec.cpp +++ b/source/games/duke/src/gameexec.cpp @@ -2426,15 +2426,13 @@ int ParseState::parse(void) j = 1; else if( (l& pfacing) ) { + DAngle ang; if (g_ac->isPlayer() && ud.multimode > 1) - j = getincangle(ps[otherp].angle.ang.Buildang(), getangle(ps[g_p].pos.XY() - ps[otherp].pos.XY())); + ang = absangle(ps[otherp].angle.ang, VecToAngle(ps[g_p].pos.XY() - ps[otherp].pos.XY())); else - j = getincangle(ps[g_p].angle.ang.Buildang(), getangle(g_ac->spr.pos.XY() - ps[g_p].pos.XY())); + ang = absangle(ps[g_p].angle.ang, VecToAngle(g_ac->spr.pos.XY() - ps[g_p].pos.XY())); - if( j > -128 && j < 128 ) - j = 1; - else - j = 0; + j = ang < DAngle22_5; } parseifelse( j); diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 3d122c0b6..2104410e2 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -519,7 +519,6 @@ static void shootstuff(DDukeActor* actor, int p, DVector3 pos, DAngle ang, int a { double x; int j = findplayer(actor, &x); - // sa = getangle(ps[j].oposx-sx,ps[j].oposy-sy); if (actor->spr.picnum == HULK) ang -= randomAngle(22.5 / 4); else if (actor->spr.picnum == VIXEN) @@ -2375,26 +2374,27 @@ void onMotorcycleMove(int snum, walltype* wal) { auto p = &ps[snum]; auto pact = p->GetActor(); - int angleDelta = abs(p->angle.ang.Buildang() - getangle(wal->delta())); + double angleDelta = absangle(p->angle.ang, VecToAngle(wal->delta())).Degrees(); double damageAmount = p->MotoSpeed * p->MotoSpeed; p->angle.addadjustment(DAngle::fromBuildf(p->MotoSpeed / (krand() & 1 ? -2 : 2))); - if (angleDelta >= 441 && angleDelta <= 581) + // That's some very weird angles here... + if (angleDelta >= 77.51 && angleDelta <= 102.13) { damageAmount *= (1. / 256.); p->MotoSpeed = 0; if (S_CheckActorSoundPlaying(pact, 238) == 0) S_PlayActorSound(238, pact); } - else if (angleDelta >= 311 && angleDelta <= 711) + else if (angleDelta >= 54.66 && angleDelta <= 125) { damageAmount *= (1. / 2048.); p->MotoSpeed -= (p->MotoSpeed / 2.) + (p->MotoSpeed / 4.); if (S_CheckActorSoundPlaying(pact, 238) == 0) S_PlayActorSound(238, pact); } - else if (angleDelta >= 111 && angleDelta <= 911) + else if (angleDelta >= 19.51 && angleDelta <= 160.14) { damageAmount *= (1. / 16384.); p->MotoSpeed -= p->MotoSpeed / 2.; @@ -2429,23 +2429,23 @@ void onBoatMove(int snum, int psectlotag, walltype* wal) { auto p = &ps[snum]; auto pact = p->GetActor(); - int angleDelta = abs(p->angle.ang.Buildang() - getangle(wal->delta())); + double angleDelta = absangle(p->angle.ang, VecToAngle(wal->delta())).Degrees(); p->angle.addadjustment(DAngle::fromBuildf(p->MotoSpeed / (krand() & 1 ? -4 : 4))); - if (angleDelta >= 441 && angleDelta <= 581) + if (angleDelta >= 77.51 && angleDelta <= 102.13) { p->MotoSpeed = ((p->MotoSpeed / 2.) + (p->MotoSpeed / 4.)) / 4.; if (psectlotag == 1 && S_CheckActorSoundPlaying(pact, 178) == 0) S_PlayActorSound(178, pact); } - else if (angleDelta >= 311 && angleDelta <= 711) + else if (angleDelta >= 54.66 && angleDelta <= 125) { p->MotoSpeed -= ((p->MotoSpeed / 2.) + (p->MotoSpeed / 4.)) / 8.; if (psectlotag == 1 && S_CheckActorSoundPlaying(pact, 179) == 0) S_PlayActorSound(179, pact); } - else if (angleDelta >= 111 && angleDelta <= 911) + else if (angleDelta >= 19.51 && angleDelta <= 160.14) { p->MotoSpeed -= p->MotoSpeed / 16.; if (psectlotag == 1 && S_CheckActorSoundPlaying(pact, 180) == 0) diff --git a/source/games/duke/src/prediction.cpp b/source/games/duke/src/prediction.cpp index d81032fdd..5a2431df0 100644 --- a/source/games/duke/src/prediction.cpp +++ b/source/games/duke/src/prediction.cpp @@ -180,7 +180,7 @@ void fakedomovethings(void) } if(badguy(chz.actor) && chz.actor()->s.xrepeat > 24 && abs(p->GetActor()->s.z- chz.actor()->s.z) < (84<<8) ) { - j = getangle(chz.actor()->s.x-myx, chz.actor()->s.y-myy); + j = g etangle(chz.actor()->s.x-myx, chz.actor()->s.y-myy); myxvel -= bcos(j, 4); myyvel -= bsin(j, 4); }