- FAFcansee refactoring, part 2.

This commit is contained in:
Christoph Oelckers 2022-08-21 17:21:31 +02:00
parent 5b7b8233e7
commit 7eb2dede6a
3 changed files with 19 additions and 14 deletions

View file

@ -2163,6 +2163,11 @@ inline double ActorZOfMiddle(DSWActor* actor)
return (int_ActorZOfTop(actor) + int_ActorZOfBottom(actor)) * zinttoworld * 0.5;
}
inline DVector3 ActorVectOfMiddle(DSWActor* actor)
{
return DVector3(actor->spr.pos.XY(), ActorZOfMiddle(actor));
}
inline int int_ActorSizeZ(DSWActor* actor)
{
return (tileHeight(actor->spr.picnum) * actor->spr.yrepeat) << 2;

View file

@ -146,7 +146,7 @@ int DoToiletGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,int_ActorZOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),ActorVectOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
if (actor->user.FlagOwner != 1)
{
@ -199,7 +199,7 @@ int NullToiletGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,actor->user.targetActor->int_pos().Z,actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),actor->user.targetActor->spr.pos, actor->user.targetActor->sector());
if (!(actor->user.Flags & SPR_CLIMBING))
KeepActorOnFloor(actor);
@ -366,7 +366,7 @@ int DoWashGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,int_ActorZOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),ActorVectOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
if (RandomRange(1000) > 980 && actor->user.ShellNum <= 0)
{
@ -428,7 +428,7 @@ int NullWashGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,actor->user.targetActor->int_pos().Z,actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),actor->user.targetActor->spr.pos, actor->user.targetActor->sector());
if (!(actor->user.Flags & SPR_CLIMBING))
KeepActorOnFloor(actor);
@ -1154,7 +1154,7 @@ int DoCarGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,int_ActorZOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),ActorVectOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
if (actor->user.FlagOwner == 1)
{
@ -1198,7 +1198,7 @@ int NullCarGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,actor->user.targetActor->int_pos().Z,actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),actor->user.targetActor->spr.pos, actor->user.targetActor->sector());
if (!(actor->user.Flags & SPR_CLIMBING))
KeepActorOnFloor(actor);
@ -1354,7 +1354,7 @@ int DoMechanicGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,int_ActorZOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),ActorVectOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
if (actor->user.FlagOwner == 1)
{
@ -1398,7 +1398,7 @@ int NullMechanicGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,actor->user.targetActor->int_pos().Z,actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),actor->user.targetActor->spr.pos, actor->user.targetActor->sector());
if (!(actor->user.Flags & SPR_CLIMBING))
KeepActorOnFloor(actor);
@ -1555,7 +1555,7 @@ int DoSailorGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,int_ActorZOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),ActorVectOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
if (actor->user.FlagOwner == 1)
{
@ -1604,7 +1604,7 @@ int NullSailorGirl(DSWActor* actor)
static short alreadythrew = 0;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,actor->user.targetActor->int_pos().Z,actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),actor->user.targetActor->spr.pos, actor->user.targetActor->sector());
if (!(actor->user.Flags & SPR_CLIMBING))
KeepActorOnFloor(actor);
@ -1748,7 +1748,7 @@ int DoPruneGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,int_ActorZOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),ActorVectOfMiddle(actor->user.targetActor),actor->user.targetActor->sector());
if (actor->user.FlagOwner == 1)
{
@ -1808,7 +1808,7 @@ int NullPruneGirl(DSWActor* actor)
bool ICanSee = false;
DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),actor->user.targetActor->int_pos().X,actor->user.targetActor->int_pos().Y,actor->user.targetActor->int_pos().Z,actor->user.targetActor->sector());
ICanSee = FAFcansee(ActorVectOfMiddle(actor),actor->sector(),actor->user.targetActor->spr.pos, actor->user.targetActor->sector());
if (!(actor->user.Flags & SPR_CLIMBING))
KeepActorOnFloor(actor);

View file

@ -7115,7 +7115,7 @@ int DoFlamesDamageTest(DSWActor* actor)
if (actor->user.Radius > 200) // Note: No weaps have bigger radius than 200 cept explosion stuff
{
if (FAFcansee(itActor->int_pos().X,itActor->int_pos().Y,int_ActorZOfMiddle(actor),itActor->sector(),actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector()))
if (FAFcansee(ActorVectOfMiddle(itActor),itActor->sector(),ActorVectOfMiddle(actor),actor->sector()))
{
DoDamage(itActor, actor);
}
@ -13913,7 +13913,7 @@ int DoStaticFlamesDamage(DSWActor* actor)
DoDamage(itActor, actor);
else if (actor->user.Radius > 200)
{
if (FAFcansee(actor->int_pos().X,actor->int_pos().Y,int_ActorZOfMiddle(actor),actor->sector(),itActor->int_pos().X,itActor->int_pos().Y,int_ActorZOfMiddle(itActor),itActor->sector()))
if (FAFcansee(ActorVectOfMiddle(actor), actor->sector(), ActorVectOfMiddle(itActor), itActor->sector()))
DoDamage(itActor, actor);
}
}