diff --git a/source/games/sw/src/eel.cpp b/source/games/sw/src/eel.cpp index d1bb7548b..7bd8cdc8e 100644 --- a/source/games/sw/src/eel.cpp +++ b/source/games/sw/src/eel.cpp @@ -425,7 +425,6 @@ int NullEel(DSWActor* actor) int DoEelMatchPlayerZ(DSWActor* actor) { USER* u = actor->u(); - SPRITEp tsp = &u->targetActor->s(); int zdiff,zdist; int loz,hiz; int dist,a,b,c; @@ -448,7 +447,7 @@ int DoEelMatchPlayerZ(DSWActor* actor) // actor does a sine wave about u->sz - this is the z mid point - zdiff = (GetSpriteZOfBottom(tsp) - Z(8)) - u->sz; + zdiff = (ActorZOfBottom(u->targetActor) - Z(8)) - u->sz; // check z diff of the player and the sprite zdist = Z(20 + RandomRange(64)); // put a random amount diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index be033173c..39d36c0c6 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -266,11 +266,6 @@ inline int GetSpriteZOfBottom(const spritetypebase* sp) } // mid and upper/lower sprite calculations -inline int GetSpriteZOfMiddle(const spritetypebase* sp) -{ - return (GetSpriteZOfTop(sp) + GetSpriteZOfBottom(sp)) >> 1; -} - constexpr int Z(int value) { return value << 8; @@ -2181,7 +2176,6 @@ inline int ActorZOfMiddle(DSWActor* actor) return (ActorZOfTop(actor) + ActorZOfBottom(actor)) >> 1; } - inline int ActorSizeZ(DSWActor* actor) { return (tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 2; @@ -2208,11 +2202,6 @@ inline int ActorSizeToBottom(DSWActor* a) return ((ActorSizeZ(a)) - (tileTopOffset(a->spr.picnum) << 8)) >> 1; } -inline int ActorMid(DSWActor* actor) -{ - return GetSpriteZOfMiddle(&actor->s()); -} - inline int ActorSizeX(DSWActor* sp) { return MulScale(tileWidth(sp->spr.picnum), sp->spr.xrepeat, 6); diff --git a/source/games/sw/src/hornet.cpp b/source/games/sw/src/hornet.cpp index f904290de..b043d12af 100644 --- a/source/games/sw/src/hornet.cpp +++ b/source/games/sw/src/hornet.cpp @@ -347,7 +347,6 @@ enum { HORNET_BOB_AMT = (Z(16)) }; int DoHornetMatchPlayerZ(DSWActor* actor) { USERp u = actor->u(); - SPRITEp tsp = &u->targetActor->s(); int zdiff,zdist; int loz,hiz; @@ -355,7 +354,7 @@ int DoHornetMatchPlayerZ(DSWActor* actor) // actor does a sine wave about u->sz - this is the z mid point - zdiff = (GetSpriteZOfMiddle(tsp)) - u->sz; + zdiff = (ActorZOfMiddle(u->targetActor)) - u->sz; // check z diff of the player and the sprite zdist = Z(20 + RandomRange(200)); // put a random amount diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index 5dfa2d81b..a95e61a3e 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -2011,15 +2011,14 @@ int DoCarryFlag(DSWActor* actor) SPRITEp fp = &fown->s(); USERp fu = fown->u(); + DSWActor* attached = u->attachActor; // if no Owner then die - if (u->attachActor != nullptr) + if (attached != nullptr) { - SPRITEp ap = &u->attachActor->s(); - - vec3_t pos = { ap->pos.X, ap->pos.Y, GetSpriteZOfMiddle(ap) }; + vec3_t pos = { attached->spr.pos.X, attached->spr.pos.Y, ActorZOfMiddle(attached) }; SetActorZ(actor, &pos); - actor->spr.ang = NORM_ANGLE(ap->ang + 1536); + actor->spr.ang = NORM_ANGLE(attached->spr.ang + 1536); } // not activated yet @@ -2160,8 +2159,8 @@ int DoCarryFlagNoDet(DSWActor* actor) { USER* u = actor->u(); - SPRITEp ap = &u->attachActor->s(); - USERp au = u->attachActor->u(); + DSWActor* attached = u->attachActor; + USERp au = attached->u(); DSWActor* fown = u->flagOwnerActor; if (!fown) return 0; SPRITEp fp = &fown->s(); @@ -2172,12 +2171,12 @@ int DoCarryFlagNoDet(DSWActor* actor) fu->WaitTics = 30 * 120; // Keep setting respawn tics so it won't respawn // if no Owner then die - if (ap != nullptr) + if (attached != nullptr) { - vec3_t pos = { ap->pos.X, ap->pos.Y, GetSpriteZOfMiddle(ap) }; + vec3_t pos = { attached->spr.pos.X, attached->spr.pos.Y, ActorZOfMiddle(attached) }; SetActorZ(actor, &pos); - actor->spr.ang = NORM_ANGLE(ap->ang + 1536); - actor->spr.pos.Z = ap->pos.Z - DIV2(GetSpriteSizeZ(ap)); + actor->spr.ang = NORM_ANGLE(attached->spr.ang + 1536); + actor->spr.pos.Z = attached->spr.pos.Z - (ActorSizeZ(attached) >> 1); } if (!au || au->Health <= 0) diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index 63d3caef1..fa97a9d20 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -3581,7 +3581,7 @@ int ActorCoughItem(DSWActor* actor) actorNew->spr.extra = 0; actorNew->spr.pos.X = sp->pos.X; actorNew->spr.pos.Y = sp->pos.Y; - actorNew->spr.pos.Z = GetSpriteZOfMiddle(sp); + actorNew->spr.pos.Z = ActorZOfMiddle(actor); actorNew->spr.ang = 0; actorNew->spr.extra = 0; @@ -3622,7 +3622,7 @@ int ActorCoughItem(DSWActor* actor) actorNew->spr.extra = 0; actorNew->spr.pos.X = sp->pos.X; actorNew->spr.pos.Y = sp->pos.Y; - actorNew->spr.pos.Z = GetSpriteZOfMiddle(sp); + actorNew->spr.pos.Z = ActorZOfMiddle(actor); actorNew->spr.ang = 0; actorNew->spr.extra = 0; @@ -3650,7 +3650,7 @@ int ActorCoughItem(DSWActor* actor) actorNew->spr.extra = 0; actorNew->spr.pos.X = sp->pos.X; actorNew->spr.pos.Y = sp->pos.Y; - actorNew->spr.pos.Z = GetSpriteZOfMiddle(sp); + actorNew->spr.pos.Z = ActorZOfMiddle(actor); actorNew->spr.ang = 0; actorNew->spr.extra = 0; @@ -3681,7 +3681,7 @@ int ActorCoughItem(DSWActor* actor) actorNew->spr.extra = 0; actorNew->spr.pos.X = sp->pos.X; actorNew->spr.pos.Y = sp->pos.Y; - actorNew->spr.pos.Z = GetSpriteZOfMiddle(sp); + actorNew->spr.pos.Z = ActorZOfMiddle(actor); actorNew->spr.ang = 0; actorNew->spr.extra = 0; @@ -3743,7 +3743,7 @@ int ActorCoughItem(DSWActor* actor) actorNew->spr.extra = 0; actorNew->spr.pos.X = sp->pos.X; actorNew->spr.pos.Y = sp->pos.Y; - actorNew->spr.pos.Z = GetSpriteZOfMiddle(sp); + actorNew->spr.pos.Z = ActorZOfMiddle(actor); actorNew->spr.ang = 0; actorNew->spr.extra = 0; @@ -5988,7 +5988,7 @@ KeyMain: RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); SET(actorNew->spr.cstat, CSTAT_SPRITE_ALIGNMENT_WALL); SetAttach(pp->Actor(), actorNew); - nu->sz = GetSpriteZOfMiddle(&pp->Actor()->s()); // Set mid way up who it hit + nu->sz = ActorZOfMiddle(pp->Actor()); // Set mid way up who it hit nu->spal = actorNew->spr.pal = sp->pal; // Set the palette of the flag SetOwner(pp->Actor(), actorNew); // Player now owns the flag diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index f7639957f..e75ee800b 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -11539,7 +11539,6 @@ int DoRing(DSWActor* actor) auto own = GetOwner(actor); if (!own) return 0; // this would crash. PLAYERp pp = own->user.PlayerP;; - SPRITEp so = &own->s(); int cz,fz; if (TEST(u->Flags, SPR_UNDERWATER)) @@ -11554,12 +11553,12 @@ int DoRing(DSWActor* actor) } // move the center with the player - actor->spr.pos.X = so->pos.X; - actor->spr.pos.Y = so->pos.Y; + actor->spr.pos.X = own->spr.pos.X; + actor->spr.pos.Y = own->spr.pos.Y; if (pp) actor->spr.pos.Z = pp->pos.Z + Z(20); else - actor->spr.pos.Z = GetSpriteZOfMiddle(so) + Z(30); + actor->spr.pos.Z = ActorZOfMiddle(own) + Z(30); // go out until its time to come back in if (u->Counter2 == false) @@ -12492,7 +12491,7 @@ int InitFistAttack(PLAYERp pp) { if (SpriteOverlapZ(pp->Actor(), itActor, Z(20)) || face == 190) { - if (FAFcansee(itActor->spr.pos.X, itActor->spr.pos.Y, ActorZOfMiddle(itActor), itActor->spr.sector(), psp->pos.X, psp->pos.Y, GetSpriteZOfMiddle(psp), psp->sector())) + if (FAFcansee(itActor->spr.pos.X, itActor->spr.pos.Y, ActorZOfMiddle(itActor), itActor->spr.sector(), psp->pos.X, psp->pos.Y, ActorZOfMiddle(plActor), psp->sector())) DoDamage(itActor, plActor); if (face == 190) { @@ -12775,21 +12774,19 @@ int InitSumoStompAttack(DSWActor* actor) SWStatIterator it(StatDamageList[stat]); while (auto itActor = it.Next()) { - tsp = &itActor->s(); - if (itActor != u->targetActor) break; - if (!TEST(tsp->extra, SPRX_PLAYER_OR_ENEMY)) + if (!TEST(itActor->spr.extra, SPRX_PLAYER_OR_ENEMY)) continue; - dist = Distance(actor->spr.pos.X, actor->spr.pos.Y, tsp->pos.X, tsp->pos.Y); + dist = Distance(actor->spr.pos.X, actor->spr.pos.Y, itActor->spr.pos.X, itActor->spr.pos.Y); reach = 16384; if (dist < CloseRangeDist(itActor, actor, reach)) { - if (FAFcansee(tsp->pos.X,tsp->pos.Y,GetSpriteZOfMiddle(tsp),tsp->sector(),actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector())) + if (FAFcansee(itActor->spr.pos.X, itActor->spr.pos.Y, ActorZOfMiddle(itActor), itActor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector())) DoDamage(itActor, actor); } }