From 55eb824e7d35e7b249037bf27b5e9a59771ce090 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 31 Aug 2022 00:47:02 +0200 Subject: [PATCH] - migrated several move_sprite calls --- source/games/sw/src/actor.cpp | 4 +--- source/games/sw/src/ai.cpp | 6 ++---- source/games/sw/src/bunny.cpp | 13 ++++++------- source/games/sw/src/coolg.cpp | 7 ++----- source/games/sw/src/eel.cpp | 6 ++---- source/games/sw/src/hornet.cpp | 7 ++----- source/games/sw/src/track.cpp | 13 ++++--------- 7 files changed, 19 insertions(+), 37 deletions(-) diff --git a/source/games/sw/src/actor.cpp b/source/games/sw/src/actor.cpp index f05a7503b..e923c73fa 100644 --- a/source/games/sw/src/actor.cpp +++ b/source/games/sw/src/actor.cpp @@ -371,9 +371,7 @@ int DoActorSectorDamage(DSWActor* actor) bool move_debris(DSWActor* actor, const DVector2& change) { - actor->user.coll = move_sprite(actor, change.X * worldtoint, change.Y * worldtoint, 0, - actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), 0, ACTORMOVETICS); - + actor->user.coll = move_sprite(actor, DVector3(change, 0), actor->user.ceiling_dist, actor->user.floor_dist, 0, ACTORMOVETICS); return actor->user.coll.type == kHitNone; } diff --git a/source/games/sw/src/ai.cpp b/source/games/sw/src/ai.cpp index cbefd0e48..45c16eaf1 100644 --- a/source/games/sw/src/ai.cpp +++ b/source/games/sw/src/ai.cpp @@ -1298,7 +1298,6 @@ int DoActorMoveJump(DSWActor* actor) Collision move_scan(DSWActor* actor, int ang, int dist, int *stopx, int *stopy, int *stopz) { - int nx,ny; uint32_t cliptype = CLIPMASK_ACTOR; DSWActor* highActor; @@ -1321,10 +1320,9 @@ Collision move_scan(DSWActor* actor, int ang, int dist, int *stopx, int *stopy, // do the move actor->set_int_ang(ang); - nx = MulScale(dist, bcos(actor->int_ang()), 14); - ny = MulScale(dist, bsin(actor->int_ang()), 14); + auto vec = actor->spr.angle.ToVector() * dist * inttoworld; - Collision ret = move_sprite(actor, nx, ny, 0, actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), cliptype, 1); + Collision ret = move_sprite(actor, DVector3(vec, 0), actor->user.ceiling_dist, actor->user.floor_dist, cliptype, 1); // move_sprite DOES do a getzrange point? // should I look down with a FAFgetzrange to see where I am? diff --git a/source/games/sw/src/bunny.cpp b/source/games/sw/src/bunny.cpp index 38bef00d8..8732f7252 100644 --- a/source/games/sw/src/bunny.cpp +++ b/source/games/sw/src/bunny.cpp @@ -830,17 +830,16 @@ int PickBunnyJumpSpeed(DSWActor* actor, int pix_height) int DoBunnyBeginJumpAttack(DSWActor* actor) { DSWActor* target = actor->user.targetActor; - int tang; - tang = getangle(target->spr.pos - actor->spr.pos); + DAngle tang = VecToAngle(target->spr.pos - actor->spr.pos); - Collision coll = move_sprite(actor, bcos(tang, -7), bsin(tang, -7), - 0L, actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), CLIPMASK_ACTOR, ACTORMOVETICS); + Collision coll = move_sprite(actor, DVector3(tang.ToVector() * 8, 0), actor->user.ceiling_dist, actor->user.floor_dist, CLIPMASK_ACTOR, ACTORMOVETICS); + auto rndang = DAngle::fromBuild(RANDOM_NEG(256, 6) >> 6); if (coll.type != kHitNone) - actor->set_int_ang(NORM_ANGLE(actor->int_ang() + 1024) + (RANDOM_NEG(256, 6) >> 6)); - else - actor->set_int_ang(NORM_ANGLE(tang + (RANDOM_NEG(256, 6) >> 6))); + actor->spr.angle += DAngle180 + rndang; + else + actor->spr.angle = tang + rndang; DoActorSetSpeed(actor, FAST_SPEED); diff --git a/source/games/sw/src/coolg.cpp b/source/games/sw/src/coolg.cpp index 70b8fd380..f8395bea7 100644 --- a/source/games/sw/src/coolg.cpp +++ b/source/games/sw/src/coolg.cpp @@ -741,8 +741,6 @@ int DoCoolgCircle(DSWActor* actor) int DoCoolgDeath(DSWActor* actor) { - int nx, ny; - actor->spr.cstat &= ~(CSTAT_SPRITE_TRANSLUCENT); actor->spr.cstat &= ~(CSTAT_SPRITE_INVISIBLE); actor->spr.xrepeat = 42; @@ -763,10 +761,9 @@ int DoCoolgDeath(DSWActor* actor) DoActorSlide(actor); // slide while falling - nx = MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14); - ny = MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14); + auto vec = actor->spr.angle.ToVector() * actor->spr.xvel * inttoworld; - actor->user.coll = move_sprite(actor, nx, ny, 0L, actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), CLIPMASK_MISSILE, ACTORMOVETICS); + actor->user.coll = move_sprite(actor, DVector3(vec, 0), actor->user.ceiling_dist, actor->user.floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS); DoFindGroundPoint(actor); // on the ground diff --git a/source/games/sw/src/eel.cpp b/source/games/sw/src/eel.cpp index 5a609b9bc..81d5ecc37 100644 --- a/source/games/sw/src/eel.cpp +++ b/source/games/sw/src/eel.cpp @@ -509,7 +509,6 @@ int DoEelMatchPlayerZ(DSWActor* actor) int DoEelDeath(DSWActor* actor) { - int nx, ny; if (actor->user.Flags & (SPR_FALLING)) { DoFall(actor); @@ -525,10 +524,9 @@ int DoEelDeath(DSWActor* actor) DoActorSlide(actor); // slide while falling - nx = MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14); - ny = MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14); + auto vec = actor->spr.angle.ToVector() * actor->spr.xvel * inttoworld; - actor->user.coll = move_sprite(actor, nx, ny, 0L, actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), CLIPMASK_MISSILE, ACTORMOVETICS); + actor->user.coll = move_sprite(actor, DVector3(vec, 0), actor->user.ceiling_dist, actor->user.floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS); DoFindGroundPoint(actor); // on the ground diff --git a/source/games/sw/src/hornet.cpp b/source/games/sw/src/hornet.cpp index c04acef55..220318fa7 100644 --- a/source/games/sw/src/hornet.cpp +++ b/source/games/sw/src/hornet.cpp @@ -485,8 +485,6 @@ int DoHornetCircle(DSWActor* actor) int DoHornetDeath(DSWActor* actor) { - int nx, ny; - if (actor->user.Flags & (SPR_FALLING)) { actor->user.loz = actor->user.zclip; @@ -506,10 +504,9 @@ int DoHornetDeath(DSWActor* actor) DoActorSlide(actor); // slide while falling - nx = MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14); - ny = MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14); + auto vec = actor->spr.angle.ToVector() * actor->spr.xvel * inttoworld; - actor->user.coll = move_sprite(actor, nx, ny, 0L, actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), 1, ACTORMOVETICS); + actor->user.coll = move_sprite(actor, DVector3(vec, 0), actor->user.ceiling_dist, actor->user.floor_dist, 1, ACTORMOVETICS); // on the ground if (actor->spr.pos.Z >= actor->user.loz) diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index 72f299752..3d6e11878 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -3362,7 +3362,7 @@ int ActorFollowTrack(DSWActor* actor, short locktics) TRACK_POINT* tpoint; short pnum; - int nx = 0, ny = 0, nz = 0; + DVector3 vec(0,0,0); // if not on a track then better not go here if (actor->user.track == -1) @@ -3462,8 +3462,6 @@ int ActorFollowTrack(DSWActor* actor, short locktics) actor->spr.xvel = (actor->user.track_vel) >> 8; } - nx = 0; - ny = 0; if (actor->user.Flags & (SPR_CLIMBING)) { @@ -3490,17 +3488,14 @@ int ActorFollowTrack(DSWActor* actor, short locktics) else { // calculate a new x and y - nx = MulScale(actor->spr.xvel, bcos(actor->int_ang()), 14); - ny = MulScale(actor->spr.xvel, bsin(actor->int_ang()), 14); + vec.XY() = actor->spr.angle.ToVector() * actor->spr.xvel * inttoworld; } - nz = 0; - if (actor->spr.zvel) - nz = actor->spr.zvel * locktics; + vec.Z = actor->spr.zvel * locktics * zinttoworld; } - actor->user.coll = move_sprite(actor, nx, ny, nz, actor->user.int_ceiling_dist(), actor->user.int_floor_dist(), 0, locktics); + actor->user.coll = move_sprite(actor, vec, actor->user.ceiling_dist, actor->user.floor_dist, 0, locktics); if (actor->user.coll.type != kHitNone)