- second batch of weapon.cpp floatification

This commit is contained in:
Christoph Oelckers 2022-09-08 17:15:13 +02:00
parent 8cd65bf5d9
commit 5f5b7d90f1

View file

@ -7428,7 +7428,9 @@ int DoExpDamageTest(DSWActor* actor)
} }
else else
{ {
if ((unsigned)FindDistance3D(itActor->int_pos().X - actor->int_pos().X, itActor->int_pos().Y - actor->int_pos().Y, itActor->int_pos().Z - actor->int_pos().Z) > actor->user.Radius + itActor->user.Radius)
double d = (itActor->spr.pos - actor->spr.pos).Length();
if (d > actor->user.fRadius() + itActor->user.fRadius())
continue; continue;
// added hitscan block because mines no long clip against actors/players // added hitscan block because mines no long clip against actors/players
@ -8773,8 +8775,6 @@ bool OwnerIsPlayer(DSWActor* actor)
int DoMineRangeTest(DSWActor* actor, int range) int DoMineRangeTest(DSWActor* actor, int range)
{ {
unsigned stat; unsigned stat;
int tx, ty;
int tmin;
bool ownerisplayer = false; bool ownerisplayer = false;
ownerisplayer = OwnerIsPlayer(actor); ownerisplayer = OwnerIsPlayer(actor);
@ -10370,7 +10370,7 @@ void SpawnNuclearSecondaryExp(DSWActor* actor, short ang)
expActor->user.coll = move_missile(expActor, DVector3(expActor->user.change.XY(), 0), expActor->user.coll = move_missile(expActor, DVector3(expActor->user.change.XY(), 0),
expActor->user.ceiling_dist,expActor->user.floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); expActor->user.ceiling_dist,expActor->user.floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS);
if (FindDistance3D(expActor->int_pos() - actor->int_pos()) < 1024) if ((expActor->spr.pos - actor->spr.pos).Length() < 64)
{ {
KillActor(expActor); KillActor(expActor);
return; return;
@ -10666,7 +10666,7 @@ void SpawnGrenadeSecondaryExp(DSWActor* actor, int ang)
expActor->user.coll = move_missile(expActor, DVector3(expActor->user.change.XY(), 0), expActor->user.coll = move_missile(expActor, DVector3(expActor->user.change.XY(), 0),
expActor->user.ceiling_dist,expActor->user.floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS); expActor->user.ceiling_dist,expActor->user.floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS);
if (FindDistance3D(expActor->int_pos() - actor->int_pos()) < 1024) if ((expActor->spr.pos - actor->spr.pos).Length() < 64)
{ {
KillActor(expActor); KillActor(expActor);
return; return;
@ -11735,7 +11735,7 @@ int DoSerpRing(DSWActor* actor)
return 0; return 0;
} }
double zz = actor->int_pos().Z + actor->vel.Z; double zz = actor->spr.pos.Z + actor->vel.Z;
if (zz > own->spr.pos.Z - actor->user.pos.Z) if (zz > own->spr.pos.Z - actor->user.pos.Z)
zz = own->spr.pos.Z - actor->user.pos.Z; zz = own->spr.pos.Z - actor->user.pos.Z;
@ -12897,8 +12897,6 @@ int WeaponAutoAim(DSWActor* actor, DSWActor* mislActor, short ang, bool test)
int WeaponAutoAimZvel(DSWActor* actor, DSWActor* missileActor, int *zvel, short ang, bool test) int WeaponAutoAimZvel(DSWActor* actor, DSWActor* missileActor, int *zvel, short ang, bool test)
{ {
int dist;
if (actor->hasU() && actor->user.PlayerP) if (actor->hasU() && actor->user.PlayerP)
{ {
if (!Autoaim(actor->user.PlayerP->pnum)) if (!Autoaim(actor->user.PlayerP->pnum))
@ -12915,7 +12913,7 @@ int WeaponAutoAimZvel(DSWActor* actor, DSWActor* missileActor, int *zvel, short
hitActor->user.Flags |= (SPR_ATTACKED); hitActor->user.Flags |= (SPR_ATTACKED);
missileActor->spr.angle = VecToAngle(hitActor->spr.pos.XY() - missileActor->spr.pos.XY()); missileActor->spr.angle = VecToAngle(hitActor->spr.pos.XY() - missileActor->spr.pos.XY());
dist = FindDistance2D(missileActor->int_pos().vec2 - hitActor->int_pos().vec2); double dist = (missileActor->spr.pos.XY() - hitActor->spr.pos.XY()).Length();
if (dist != 0) if (dist != 0)
{ {
@ -12934,7 +12932,7 @@ int WeaponAutoAimZvel(DSWActor* actor, DSWActor* missileActor, int *zvel, short
else else
zh = tos + (siz * 0.25); zh = tos + (siz * 0.25);
*zvel = int((missileActor->int_xvel() * (zh - missileActor->spr.pos.Z)) / dist * (zworldtoint)); *zvel = int((missileActor->vel.X * (zh - missileActor->spr.pos.Z)) / dist * zworldtoint);
} }
return 0; return 0;
} }
@ -12999,7 +12997,6 @@ DSWActor* AimHitscanToTarget(DSWActor* actor, double *z, DAngle *ang, double z_r
DSWActor* WeaponAutoAimHitscan(DSWActor* actor, int *z, short *ang, bool test) DSWActor* WeaponAutoAimHitscan(DSWActor* actor, int *z, short *ang, bool test)
{ {
int dist;
int zh; int zh;
int xvect; int xvect;
int yvect; int yvect;
@ -13019,10 +13016,10 @@ DSWActor* WeaponAutoAimHitscan(DSWActor* actor, int *z, short *ang, bool test)
picked->user.Flags |= (SPR_TARGETED); picked->user.Flags |= (SPR_TARGETED);
picked->user.Flags |= (SPR_ATTACKED); picked->user.Flags |= (SPR_ATTACKED);
*ang = NORM_ANGLE(getangle(picked->int_pos().X - actor->int_pos().X, picked->int_pos().Y - actor->int_pos().Y)); *ang = NORM_ANGLE(getangle(picked->spr.pos.XY() - actor->spr.pos.XY()));
// find the distance to the target // find the distance to the target
dist = ksqrt(SQ(actor->int_pos().X - picked->int_pos().X) + SQ(actor->int_pos().Y - picked->int_pos().Y)); double dist = (actor->spr.pos.XY() - picked->spr.pos.XY()).Length();
if (dist != 0) if (dist != 0)
{ {
@ -13031,9 +13028,9 @@ DSWActor* WeaponAutoAimHitscan(DSWActor* actor, int *z, short *ang, bool test)
xvect = bcos(*ang); xvect = bcos(*ang);
yvect = bsin(*ang); yvect = bsin(*ang);
if (picked->int_pos().X - actor->int_pos().X != 0) if (picked->spr.pos.X - actor->spr.pos.X != 0)
*z = Scale(xvect,zh - *z,picked->int_pos().X - actor->int_pos().X); *z = Scale(xvect,zh - *z,picked->int_pos().X - actor->int_pos().X);
else if (picked->int_pos().Y - actor->int_pos().Y != 0) else if (picked->spr.pos.Y - actor->spr.pos.Y != 0)
*z = Scale(yvect,zh - *z,picked->int_pos().Y - actor->int_pos().Y); *z = Scale(yvect,zh - *z,picked->int_pos().Y - actor->int_pos().Y);
else else
*z = 0; *z = 0;
@ -14272,7 +14269,8 @@ int InitRipperSlash(DSWActor* actor)
if (itActor == actor) if (itActor == actor)
break; break;
if ((unsigned)FindDistance3D(actor->int_pos() - itActor->int_pos()) > itActor->user.Radius + actor->user.Radius) double d = (actor->spr.pos - itActor->spr.pos).Length();
if (d > itActor->user.fRadius() * 2)
continue; continue;
DISTANCE(itActor->spr.pos, actor->spr.pos, dist, a, b, c); DISTANCE(itActor->spr.pos, actor->spr.pos, dist, a, b, c);
@ -14380,7 +14378,6 @@ int DoBladeDamage(DSWActor* actor)
{ {
int i; int i;
unsigned stat; unsigned stat;
int dist, a, b, c;
for (stat = 0; stat < SIZ(StatDamageList); stat++) for (stat = 0; stat < SIZ(StatDamageList); stat++)
{ {
@ -14393,14 +14390,9 @@ int DoBladeDamage(DSWActor* actor)
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY)) if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
continue; continue;
DISTANCE(itActor->spr.pos, actor->spr.pos, dist, a, b, c); double d = (actor->spr.pos - itActor->spr.pos).Length();
if (dist > 2000) if (d > 125)
continue;
dist = FindDistance3D(actor->int_pos() - itActor->int_pos());
if (dist > 2000)
continue; continue;
if (WallSpriteInsideSprite(actor, itActor)) if (WallSpriteInsideSprite(actor, itActor))
@ -14423,7 +14415,6 @@ int DoStaticFlamesDamage(DSWActor* actor)
{ {
int i; int i;
unsigned stat; unsigned stat;
int dist, a, b, c;
for (stat = 0; stat < SIZ(StatDamageList); stat++) for (stat = 0; stat < SIZ(StatDamageList); stat++)
{ {
@ -14436,14 +14427,9 @@ int DoStaticFlamesDamage(DSWActor* actor)
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY)) if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
continue; continue;
DISTANCE(itActor->spr.pos, actor->spr.pos, dist, a, b, c); double d = (actor->spr.pos - itActor->spr.pos).Length();
if (dist > 2000) if (d > 125)
continue;
dist = FindDistance3D(actor->int_pos() - itActor->int_pos());
if (dist > 2000)
continue; continue;
if (SpriteOverlap(actor, itActor)) // If sprites are overlapping, cansee will fail! if (SpriteOverlap(actor, itActor)) // If sprites are overlapping, cansee will fail!