- eel.cpp.

This commit is contained in:
Christoph Oelckers 2021-10-31 23:05:31 +01:00
parent e192f4d40f
commit 0f60e3b4ec
2 changed files with 16 additions and 24 deletions

View file

@ -357,11 +357,10 @@ ACTOR_ACTION_SET EelActionSet =
int DoEelMatchPlayerZ(DSWActor* actor); int DoEelMatchPlayerZ(DSWActor* actor);
void void EelCommon(DSWActor* actor)
EelCommon(short SpriteNum)
{ {
SPRITEp sp = &sprite[SpriteNum]; SPRITEp sp = &actor->s();
USERp u = User[SpriteNum].Data(); USERp u = actor->u();
sp->clipdist = (100) >> 2; sp->clipdist = (100) >> 2;
u->floor_dist = Z(16); u->floor_dist = Z(16);
@ -375,22 +374,20 @@ EelCommon(short SpriteNum)
u->Radius = 400; u->Radius = 400;
} }
int int SetupEel(DSWActor* actor)
SetupEel(short SpriteNum)
{ {
auto actor = &swActors[SpriteNum]; SPRITEp sp = &actor->s();
SPRITEp sp = &sprite[SpriteNum];
USERp u; USERp u;
ANIMATOR DoActorDecide; ANIMATOR DoActorDecide;
if (TEST(sp->cstat, CSTAT_SPRITE_RESTORE)) if (TEST(sp->cstat, CSTAT_SPRITE_RESTORE))
{ {
u = User[SpriteNum].Data(); u = actor->u();
ASSERT(u); ASSERT(u);
} }
else else
{ {
u = SpawnUser(SpriteNum,EEL_RUN_R0,s_EelRun[0]); u = SpawnUser(actor,EEL_RUN_R0,s_EelRun[0]);
u->Health = 40; u->Health = 40;
} }
@ -404,7 +401,7 @@ SetupEel(short SpriteNum)
SET(u->Flags, SPR_NO_SCAREDZ|SPR_XFLIP_TOGGLE); SET(u->Flags, SPR_NO_SCAREDZ|SPR_XFLIP_TOGGLE);
EelCommon(SpriteNum); EelCommon(actor);
RESET(u->Flags, SPR_SHADOW); // Turn off shadows RESET(u->Flags, SPR_SHADOW); // Turn off shadows
u->zclip = Z(8); u->zclip = Z(8);
@ -416,7 +413,6 @@ SetupEel(short SpriteNum)
int NullEel(DSWActor* actor) int NullEel(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum;
if (TEST(u->Flags,SPR_SLIDING)) if (TEST(u->Flags,SPR_SLIDING))
DoActorSlide(actor); DoActorSlide(actor);
@ -431,7 +427,6 @@ int NullEel(DSWActor* actor)
int DoEelMatchPlayerZ(DSWActor* actor) int DoEelMatchPlayerZ(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum;
SPRITEp sp = &actor->s(); SPRITEp sp = &actor->s();
SPRITEp tsp = &u->targetActor->s(); SPRITEp tsp = &u->targetActor->s();
int zdiff,zdist; int zdiff,zdist;
@ -469,7 +464,7 @@ int DoEelMatchPlayerZ(DSWActor* actor)
u->sz -= 160 * ACTORMOVETICS; u->sz -= 160 * ACTORMOVETICS;
} }
#define EEL_BOB_AMT (Z(4)) const int EEL_BOB_AMT = (Z(4));
// save off lo and hi z // save off lo and hi z
loz = u->loz; loz = u->loz;
@ -529,12 +524,10 @@ int DoEelMatchPlayerZ(DSWActor* actor)
return 0; return 0;
} }
int int DoEelDeath(DSWActor* actor)
DoEelDeath(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum; SPRITEp sp = &actor->s();
SPRITEp sp = &sprite[SpriteNum];
int nx, ny; int nx, ny;
if (TEST(u->Flags, SPR_FALLING)) if (TEST(u->Flags, SPR_FALLING))
{ {
@ -554,7 +547,7 @@ DoEelDeath(DSWActor* actor)
nx = MulScale(sp->xvel, bcos(sp->ang), 14); nx = MulScale(sp->xvel, bcos(sp->ang), 14);
ny = MulScale(sp->xvel, bsin(sp->ang), 14); ny = MulScale(sp->xvel, bsin(sp->ang), 14);
SetCollision(u, move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS)); SetCollision(u, move_sprite(actor->GetSpriteIndex(), nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_MISSILE, ACTORMOVETICS));
DoFindGroundPoint(actor); DoFindGroundPoint(actor);
// on the ground // on the ground
@ -575,18 +568,17 @@ DoEelDeath(DSWActor* actor)
int DoEelMove(DSWActor* actor) int DoEelMove(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum;
ASSERT(u->Rot != nullptr); ASSERT(u->Rot != nullptr);
if (SpriteOverlap(SpriteNum, u->targetActor->GetSpriteIndex())) if (SpriteOverlap(actor->GetSpriteIndex(), u->targetActor->GetSpriteIndex()))
NewStateGroup(actor, u->ActorActionSet->CloseAttack[0]); NewStateGroup(actor, u->ActorActionSet->CloseAttack[0]);
if (TEST(u->Flags,SPR_SLIDING)) if (TEST(u->Flags,SPR_SLIDING))
DoActorSlide(actor); DoActorSlide(actor);
if (u->track >= 0) if (u->track >= 0)
ActorFollowTrack(SpriteNum, ACTORMOVETICS); ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS);
else else
(*u->ActorActionFunc)(actor); (*u->ActorActionFunc)(actor);

View file

@ -57,7 +57,7 @@ int SetupCoolie(DSWActor*);
int SetupNinja(short); int SetupNinja(short);
int SetupGoro(short); int SetupGoro(short);
int SetupCoolg(DSWActor*); int SetupCoolg(DSWActor*);
int SetupEel(short); int SetupEel(DSWActor*);
int SetupSumo(short); int SetupSumo(short);
int SetupZilla(short); int SetupZilla(short);
int SetupToiletGirl(short); int SetupToiletGirl(short);
@ -1253,7 +1253,7 @@ ActorSpawn(SPRITEp sp)
} }
PicAnimOff(sp->picnum); PicAnimOff(sp->picnum);
SetupEel(SpriteNum); SetupEel(actor);
break; break;
} }