From 65da74538c8f03cb82199d03999b6d0b69a756a0 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 1 Nov 2021 14:36:46 +0100 Subject: [PATCH] - ActorFollowTrack. --- source/games/sw/src/bunny.cpp | 2 +- source/games/sw/src/coolg.cpp | 2 +- source/games/sw/src/coolie.cpp | 2 +- source/games/sw/src/eel.cpp | 2 +- source/games/sw/src/girlninj.cpp | 2 +- source/games/sw/src/goro.cpp | 2 +- source/games/sw/src/hornet.cpp | 2 +- source/games/sw/src/lava.cpp | 2 +- source/games/sw/src/misc.h | 2 +- source/games/sw/src/ninja.cpp | 2 +- source/games/sw/src/ripper.cpp | 2 +- source/games/sw/src/ripper2.cpp | 2 +- source/games/sw/src/serp.cpp | 2 +- source/games/sw/src/skel.cpp | 2 +- source/games/sw/src/sumo.cpp | 2 +- source/games/sw/src/track.cpp | 18 ++++++++---------- source/games/sw/src/zilla.cpp | 2 +- source/games/sw/src/zombie.cpp | 2 +- 18 files changed, 25 insertions(+), 27 deletions(-) diff --git a/source/games/sw/src/bunny.cpp b/source/games/sw/src/bunny.cpp index 47c96427a..605a53ee1 100644 --- a/source/games/sw/src/bunny.cpp +++ b/source/games/sw/src/bunny.cpp @@ -1331,7 +1331,7 @@ int DoBunnyMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/coolg.cpp b/source/games/sw/src/coolg.cpp index 3f12360dc..492d3c80e 100644 --- a/source/games/sw/src/coolg.cpp +++ b/source/games/sw/src/coolg.cpp @@ -884,7 +884,7 @@ int DoCoolgMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else { (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/coolie.cpp b/source/games/sw/src/coolie.cpp index b0d126928..2987f06f4 100644 --- a/source/games/sw/src/coolie.cpp +++ b/source/games/sw/src/coolie.cpp @@ -616,7 +616,7 @@ int DoCoolieMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/eel.cpp b/source/games/sw/src/eel.cpp index 824270118..350e348ee 100644 --- a/source/games/sw/src/eel.cpp +++ b/source/games/sw/src/eel.cpp @@ -578,7 +578,7 @@ int DoEelMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/girlninj.cpp b/source/games/sw/src/girlninj.cpp index a4c641758..a77f97e87 100644 --- a/source/games/sw/src/girlninj.cpp +++ b/source/games/sw/src/girlninj.cpp @@ -767,7 +767,7 @@ int DoGirlNinjaMove(DSWActor* actor) // !AIC - do track or call current action function - such as DoActorMoveCloser() if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else { (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/goro.cpp b/source/games/sw/src/goro.cpp index 9dcf929bf..936d23da3 100644 --- a/source/games/sw/src/goro.cpp +++ b/source/games/sw/src/goro.cpp @@ -544,7 +544,7 @@ int DoGoroMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/hornet.cpp b/source/games/sw/src/hornet.cpp index d3a205f32..cd3e11a54 100644 --- a/source/games/sw/src/hornet.cpp +++ b/source/games/sw/src/hornet.cpp @@ -611,7 +611,7 @@ int DoHornetMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/lava.cpp b/source/games/sw/src/lava.cpp index f756ed63f..43ca05092 100644 --- a/source/games/sw/src/lava.cpp +++ b/source/games/sw/src/lava.cpp @@ -505,7 +505,7 @@ int DoLavaMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/misc.h b/source/games/sw/src/misc.h index fdbb1880f..6738e196d 100644 --- a/source/games/sw/src/misc.h +++ b/source/games/sw/src/misc.h @@ -49,7 +49,7 @@ int SpawnVis(short Parent, short sectnum, int x, int y, int z, int amt); enum TriggerType { TRIGGER_TYPE_REMOTE_SO }; -int ActorFollowTrack(short SpriteNum, short locktics); +int ActorFollowTrack(DSWActor*, short locktics); void ActorLeaveTrack(short SpriteNum); void RefreshPoints(SECTOR_OBJECTp sop, int nx, int ny, bool dynamic); void TrackSetup(void); diff --git a/source/games/sw/src/ninja.cpp b/source/games/sw/src/ninja.cpp index 1db688378..d5924222e 100644 --- a/source/games/sw/src/ninja.cpp +++ b/source/games/sw/src/ninja.cpp @@ -2039,7 +2039,7 @@ DoNinjaMove(DSWActor* actor) // !AIC - do track or call current action function - such as DoActorMoveCloser() if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else { (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/ripper.cpp b/source/games/sw/src/ripper.cpp index 910b56077..7d2a691eb 100644 --- a/source/games/sw/src/ripper.cpp +++ b/source/games/sw/src/ripper.cpp @@ -1322,7 +1322,7 @@ DoRipperMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/ripper2.cpp b/source/games/sw/src/ripper2.cpp index ecf5c1014..6ccba8246 100644 --- a/source/games/sw/src/ripper2.cpp +++ b/source/games/sw/src/ripper2.cpp @@ -1339,7 +1339,7 @@ DoRipper2Move(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/serp.cpp b/source/games/sw/src/serp.cpp index cef2042b7..9eb021008 100644 --- a/source/games/sw/src/serp.cpp +++ b/source/games/sw/src/serp.cpp @@ -778,7 +778,7 @@ int DoSerpMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/skel.cpp b/source/games/sw/src/skel.cpp index 53288d6e4..b1ae1006e 100644 --- a/source/games/sw/src/skel.cpp +++ b/source/games/sw/src/skel.cpp @@ -628,7 +628,7 @@ int DoSkelMove(DSWActor* actor) DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/sumo.cpp b/source/games/sw/src/sumo.cpp index bdc8435c1..4e953e428 100644 --- a/source/games/sw/src/sumo.cpp +++ b/source/games/sw/src/sumo.cpp @@ -702,7 +702,7 @@ int DoSumoMove(DSWActor* actor) //DoActorSlide(actor); if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index f7433ecfd..7770fee9b 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -3631,12 +3631,10 @@ present time. */ -int -ActorFollowTrack(short SpriteNum, short locktics) +int ActorFollowTrack(DSWActor* actor, short locktics) { - auto actor = &swActors[SpriteNum]; - USERp u = User[SpriteNum].Data(); - SPRITEp sp = User[SpriteNum]->SpriteP; + USERp u = actor->u(); + SPRITEp sp = &actor->s(); PLAYERp pp; int move_actor(short SpriteNum, int xchange, int ychange, int zchange); @@ -3695,11 +3693,11 @@ ActorFollowTrack(short SpriteNum, short locktics) if ((dist = Distance(sp->x, sp->y, tpoint->x, tpoint->y)) < 200) // 64 { - if (!ActorTrackDecide(tpoint, SpriteNum)) + if (!ActorTrackDecide(tpoint, actor->GetSpriteIndex())) return true; // get the next point - NextActorTrackPoint(SpriteNum); + NextActorTrackPoint(actor->GetSpriteIndex()); tpoint = Track[u->track].TrackPoint + u->point; if (!(TEST(u->Flags, SPR_CLIMBING | SPR_DONT_UPDATE_ANG))) @@ -3763,7 +3761,7 @@ ActorFollowTrack(short SpriteNum, short locktics) sp->ang = getangle(tpoint->x - sp->x, tpoint->y - sp->y); - ActorLeaveTrack(SpriteNum); + ActorLeaveTrack(actor->GetSpriteIndex()); RESET(sp->cstat, CSTAT_SPRITE_YCENTER); sp->z += u->sy; @@ -3788,13 +3786,13 @@ ActorFollowTrack(short SpriteNum, short locktics) nz = sp->zvel * locktics; } - SetCollision(u, move_sprite(SpriteNum, nx, ny, nz, u->ceiling_dist, u->floor_dist, 0, locktics)); + SetCollision(u, move_sprite(actor->GetSpriteIndex(), nx, ny, nz, u->ceiling_dist, u->floor_dist, 0, locktics)); if (u->ret) { if (!TEST(u->Flags, SPR_JUMPING|SPR_FALLING)) - ActorLeaveTrack(SpriteNum); + ActorLeaveTrack(actor->GetSpriteIndex()); } diff --git a/source/games/sw/src/zilla.cpp b/source/games/sw/src/zilla.cpp index b15cc00e1..9f4f8fcbf 100644 --- a/source/games/sw/src/zilla.cpp +++ b/source/games/sw/src/zilla.cpp @@ -738,7 +738,7 @@ int DoZillaMove(DSWActor* actor) if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else (*u->ActorActionFunc)(actor); diff --git a/source/games/sw/src/zombie.cpp b/source/games/sw/src/zombie.cpp index a9f2bb50e..b69173f5a 100644 --- a/source/games/sw/src/zombie.cpp +++ b/source/games/sw/src/zombie.cpp @@ -917,7 +917,7 @@ DoZombieMove(DSWActor* actor) // Do track or call current action function - such as DoActorMoveCloser() if (u->track >= 0) - ActorFollowTrack(SpriteNum, ACTORMOVETICS); + ActorFollowTrack(actor, ACTORMOVETICS); else { (*u->ActorActionFunc)(actor);