From a20e2b64f937e6d45cb683bd83d60619f04050b9 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Sat, 30 Sep 2023 20:51:34 +1000 Subject: [PATCH] - SW: Wrap access to player's actor pointer. --- source/games/sw/src/ai.cpp | 24 +- source/games/sw/src/bunny.cpp | 4 +- source/games/sw/src/cheats.cpp | 10 +- source/games/sw/src/draw.cpp | 36 +-- source/games/sw/src/game.h | 11 +- source/games/sw/src/hornet.cpp | 2 +- source/games/sw/src/input.cpp | 2 +- source/games/sw/src/inv.cpp | 6 +- source/games/sw/src/jsector.cpp | 6 +- source/games/sw/src/jweapon.cpp | 24 +- source/games/sw/src/mclip.cpp | 18 +- source/games/sw/src/network.cpp | 4 +- source/games/sw/src/ninja.cpp | 18 +- source/games/sw/src/panel.cpp | 38 +-- source/games/sw/src/player.cpp | 494 ++++++++++++++++---------------- source/games/sw/src/quake.cpp | 6 +- source/games/sw/src/sector.cpp | 30 +- source/games/sw/src/sounds.cpp | 22 +- source/games/sw/src/sprite.cpp | 22 +- source/games/sw/src/sumo.cpp | 2 +- source/games/sw/src/track.cpp | 22 +- source/games/sw/src/vis.cpp | 2 +- source/games/sw/src/weapon.cpp | 252 ++++++++-------- source/games/sw/src/weapon.h | 2 +- source/games/sw/src/zombie.cpp | 2 +- 25 files changed, 532 insertions(+), 527 deletions(-) diff --git a/source/games/sw/src/ai.cpp b/source/games/sw/src/ai.cpp index 18ff5b254..34a4a50d4 100644 --- a/source/games/sw/src/ai.cpp +++ b/source/games/sw/src/ai.cpp @@ -250,7 +250,7 @@ int DoActorPickClosePlayer(DSWActor* actor) goto TARGETACTOR; // Set initial target to Player 0 - actor->user.targetActor = Player->actor; + actor->user.targetActor = Player->GetActor(); if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER)) { @@ -258,10 +258,10 @@ int DoActorPickClosePlayer(DSWActor* actor) { pp = &Player[pnum]; - if (GetOwner(actor) == pp->actor) + if (GetOwner(actor) == pp->GetActor()) continue; - actor->user.targetActor = pp->actor; + actor->user.targetActor = pp->GetActor(); break; } } @@ -275,7 +275,7 @@ int DoActorPickClosePlayer(DSWActor* actor) // Zombies don't target their masters! if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER)) { - if (GetOwner(actor) == pp->actor) + if (GetOwner(actor) == pp->GetActor()) continue; if (!PlayerTakeDamage(pp, actor)) @@ -286,12 +286,12 @@ int DoActorPickClosePlayer(DSWActor* actor) // continue; } - dist = (actor->spr.pos - pp->actor->getPosWithOffsetZ()).Length(); + dist = (actor->spr.pos - pp->GetActor()->getPosWithOffsetZ()).Length(); if (dist < near_dist) { near_dist = dist; - actor->user.targetActor = pp->actor; + actor->user.targetActor = pp->GetActor(); } } @@ -305,21 +305,21 @@ int DoActorPickClosePlayer(DSWActor* actor) // Zombies don't target their masters! if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER)) { - if (GetOwner(actor) == pp->actor) + if (GetOwner(actor) == pp->GetActor()) continue; if (!PlayerTakeDamage(pp, actor)) continue; } - dist = (actor->spr.pos - pp->actor->getPosWithOffsetZ()).Length(); + dist = (actor->spr.pos - pp->GetActor()->getPosWithOffsetZ()).Length(); - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (dist < near_dist && FAFcansee(ActorVectOfTop(actor), actor->sector(), ActorUpperVect(plActor), plActor->sector())) { near_dist = dist; - actor->user.targetActor = pp->actor; + actor->user.targetActor = pp->GetActor(); found = true; } } @@ -368,9 +368,9 @@ DSWActor* GetPlayerSpriteNum(DSWActor* actor) { pp = &Player[pnum]; - if (pp->actor == actor->user.targetActor) + if (pp->GetActor() == actor->user.targetActor) { - return pp->actor; + return pp->GetActor(); } } return nullptr; diff --git a/source/games/sw/src/bunny.cpp b/source/games/sw/src/bunny.cpp index 046a9433b..977db27bd 100644 --- a/source/games/sw/src/bunny.cpp +++ b/source/games/sw/src/bunny.cpp @@ -1015,7 +1015,7 @@ int DoBunnyQuickJump(DSWActor* actor) if (pp == Player+myconnectindex) { choose_snd = StdRandomRange(2<<8)>>8; - if (FAFcansee(ActorVectOfTop(actor),actor->sector(),pp->actor->getPosWithOffsetZ(), pp->cursector) && Facing(actor, actor->user.targetActor)) + if (FAFcansee(ActorVectOfTop(actor),actor->sector(),pp->GetActor()->getPosWithOffsetZ(), pp->cursector) && Facing(actor, actor->user.targetActor)) PlayerSound(fagsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp); } } @@ -1030,7 +1030,7 @@ int DoBunnyQuickJump(DSWActor* actor) if (pp == Player+myconnectindex) { choose_snd = StdRandomRange(3<<8)>>8; - if (FAFcansee(ActorVectOfTop(actor), actor->sector(), pp->actor->getPosWithOffsetZ(), pp->cursector) && Facing(actor, actor->user.targetActor)) + if (FAFcansee(ActorVectOfTop(actor), actor->sector(), pp->GetActor()->getPosWithOffsetZ(), pp->cursector) && Facing(actor, actor->user.targetActor)) PlayerSound(straightsnds[choose_snd], v3df_doppler | v3df_follow | v3df_dontpan, pp); } } diff --git a/source/games/sw/src/cheats.cpp b/source/games/sw/src/cheats.cpp index d3c987635..e4a0c5ac0 100644 --- a/source/games/sw/src/cheats.cpp +++ b/source/games/sw/src/cheats.cpp @@ -278,7 +278,7 @@ static void WeaponCheat(int player) p->WpnRocketHeat = 5; p->WpnRocketNuke = 1; - PlayerUpdateWeapon(p, p->actor->user.WeaponNum); + PlayerUpdateWeapon(p, p->GetActor()->user.WeaponNum); } //--------------------------------------------------------------------------- @@ -338,9 +338,9 @@ static void cmd_Give(int player, uint8_t** stream, bool skip) break; case GIVE_HEALTH: - if (Player[player].actor->user.Health < Player[player].MaxHealth) + if (Player[player].GetActor()->user.Health < Player[player].MaxHealth) { - Player[player].actor->user.Health += 25; + Player[player].GetActor()->user.Health += 25; PutStringInfo(&Player[player], GStrings("TXTS_ADDEDHEALTH")); } break; @@ -362,12 +362,12 @@ static void cmd_Give(int player, uint8_t** stream, bool skip) p->WpnAmmo[i] = DamageData[i].max_ammo; } - PlayerUpdateWeapon(p, p->actor->user.WeaponNum); + PlayerUpdateWeapon(p, p->GetActor()->user.WeaponNum); break; } case GIVE_ARMOR: - if (Player[player].actor->user.Health < Player[player].MaxHealth) + if (Player[player].GetActor()->user.Health < Player[player].MaxHealth) { Player[player].Armor = 100; PutStringInfo(&Player[player], GStrings("TXTB_FULLARM")); diff --git a/source/games/sw/src/draw.cpp b/source/games/sw/src/draw.cpp index 9ba6f26f3..278cde417 100644 --- a/source/games/sw/src/draw.cpp +++ b/source/games/sw/src/draw.cpp @@ -775,7 +775,7 @@ static void analyzesprites(tspriteArray& tsprites, const DVector3& viewpos, doub ShadeSprite(tsp); // sw if its your playersprite - if (Player[screenpeek].actor == tActor) + if (Player[screenpeek].GetActor() == tActor) { pp = Player + screenpeek; if (display_mirror || (pp->Flags & (PF_VIEW_FROM_OUTSIDE|PF_VIEW_FROM_CAMERA))) @@ -792,9 +792,9 @@ static void analyzesprites(tspriteArray& tsprites, const DVector3& viewpos, doub pos.Z -= PLAYER_HEIGHTF - 17.; } - if ((pp->Flags & PF_DEAD) && pos.Z > pp->actor->user.loz - pp->actor->user.floor_dist) + if ((pp->Flags & PF_DEAD) && pos.Z > pp->GetActor()->user.loz - pp->GetActor()->user.floor_dist) { - pos.Z = pp->actor->user.loz - pp->actor->user.floor_dist; + pos.Z = pp->GetActor()->user.loz - pp->GetActor()->user.floor_dist; } else if (pp->Flags & (PF_SWIMMING|PF_DIVING)) { @@ -815,8 +815,8 @@ static void analyzesprites(tspriteArray& tsprites, const DVector3& viewpos, doub else // Otherwise just interpolate the player sprite { pp = tActor->user.PlayerP; - tsp->pos = pp->actor->getRenderPos(interpfrac); - tsp->Angles.Yaw = pp->actor->interpolatedyaw(interpfrac); + tsp->pos = pp->GetActor()->getRenderPos(interpfrac); + tsp->Angles.Yaw = pp->GetActor()->interpolatedyaw(interpfrac); } } @@ -880,7 +880,7 @@ static void analyzesprites(tspriteArray& tsprites, const DVector3& viewpos, doub { if ((tActor->user.Flags2 & SPR2_VIS_SHADING)) { - if (Player[screenpeek].actor != tActor) + if (Player[screenpeek].GetActor() != tActor) { if (!(tActor->user.PlayerP->Flags & PF_VIEW_FROM_OUTSIDE)) { @@ -972,7 +972,7 @@ void PrintSpriteInfo(PLAYER* pp) //if (SpriteInfo && !LocationInfo) { - auto actor = DoPickTarget(pp->actor, DAngle22_5/4, 2); + auto actor = DoPickTarget(pp->GetActor(), DAngle22_5/4, 2); actor->spr.hitag = 9997; // Special tag to make the actor glow red for one frame @@ -1013,7 +1013,7 @@ void PrintSpriteInfo(PLAYER* pp) static void DrawCrosshair(PLAYER* pp, const double interpfrac) { auto offsets = pp->Angles.getCrosshairOffsets(interpfrac); - ::DrawCrosshair(pp->actor->user.Health, offsets.first.X, offsets.first.Y + ((pp->Flags & PF_VIEW_FROM_OUTSIDE) ? 5 : 0), 2, offsets.second, shadeToLight(10)); + ::DrawCrosshair(pp->GetActor()->user.Health, offsets.first.X, offsets.first.Y + ((pp->Flags & PF_VIEW_FROM_OUTSIDE) ? 5 : 0), 2, offsets.second, shadeToLight(10)); } //--------------------------------------------------------------------------- @@ -1231,7 +1231,7 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly) pp->Angles.updateCameraAngles(interpfrac); // Get initial player position, interpolating if required. - DVector3 tpos = camerapp->actor->getRenderPos(interpfrac); + DVector3 tpos = camerapp->GetActor()->getRenderPos(interpfrac); DVector2 ampos = tpos.XY(); DRotator tangles = camerapp->Angles.getRenderAngles(interpfrac); sectortype* tsect = camerapp->cursector; @@ -1242,14 +1242,14 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly) { if (pp->sop_control && (!cl_sointerpolation || (CommEnabled && !pp->sop_remote))) { - tpos = pp->actor->getPosWithOffsetZ(); - tangles.Yaw = pp->actor->spr.Angles.Yaw; + tpos = pp->GetActor()->getPosWithOffsetZ(); + tangles.Yaw = pp->GetActor()->spr.Angles.Yaw; } tsect = pp->cursector; updatesectorz(tpos, &tsect); } - pp->si = tpos.plusZ(-pp->actor->getOffsetZ()); + pp->si = tpos.plusZ(-pp->GetActor()->getOffsetZ()); QuakeViewChange(camerapp, tpos, tangles.Yaw); int vis = g_visibility; @@ -1266,10 +1266,10 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly) { tpos.Z -= 33; - if (!calcChaseCamPos(tpos, pp->actor, &tsect, tangles, interpfrac, 128.)) + if (!calcChaseCamPos(tpos, pp->GetActor(), &tsect, tangles, interpfrac, 128.)) { tpos.Z += 33; - calcChaseCamPos(tpos, pp->actor, &tsect, tangles, interpfrac, 128.); + calcChaseCamPos(tpos, pp->GetActor(), &tsect, tangles, interpfrac, 128.); } } @@ -1294,7 +1294,7 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly) UpdatePanel(interpfrac); UpdateWallPortalState(); - render_drawrooms(pp->actor, tpos, tsect, tangles, interpfrac); + render_drawrooms(pp->GetActor(), tpos, tsect, tangles, interpfrac); RestorePortalState(); if (sceneonly) @@ -1399,7 +1399,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, if (actor->spr.cstat2 & CSTAT2_SPRITE_MAPPED) { // 1=white / 31=black / 44=green / 56=pink / 128=yellow / 210=blue / 248=orange / 255=purple - PalEntry col = (actor->spr.cstat & CSTAT_SPRITE_BLOCK) > 0 ? GPalette.BaseColors[248] : actor == Player[screenpeek].actor ? GPalette.BaseColors[31] : GPalette.BaseColors[56]; + PalEntry col = (actor->spr.cstat & CSTAT_SPRITE_BLOCK) > 0 ? GPalette.BaseColors[248] : actor == Player[screenpeek].GetActor() ? GPalette.BaseColors[31] : GPalette.BaseColors[56]; auto statnum = actor->spr.statnum; auto sprxy = ((statnum >= 1) && (statnum <= 8) && (statnum != 2) ? actor->interpolatedpos(interpfrac) : actor->spr.pos).XY() - cpos; @@ -1425,7 +1425,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, if (p == screenpeek) { auto pp = &Player[p]; - auto actor = pp->actor; + auto actor = pp->GetActor(); if (actor->vel.X > 1) pspr_ndx[myconnectindex] = ((PlayClock >> 4) & 3); sprisplayer = true; @@ -1437,7 +1437,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, int spnum = -1; if (sprisplayer) { - if (gNet.MultiGameType != MULTI_GAME_COMMBAT || actor == Player[screenpeek].actor) + if (gNet.MultiGameType != MULTI_GAME_COMMBAT || actor == Player[screenpeek].GetActor()) spnum = 1196 + pspr_ndx[myconnectindex]; } else spnum = actor->spr.picnum; diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 78adfa092..9f454a4ab 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -1850,9 +1850,14 @@ struct PLAYER uint8_t WpnReloadState; + inline DSWActor* GetActor() + { + return actor; + } + void posZset(const double val) { - actor->spr.pos.Z = val - actor->viewzoffset; + GetActor()->spr.pos.Z = val - GetActor()->viewzoffset; } }; @@ -1887,7 +1892,7 @@ struct GameInterface : public ::GameInterface void NextLevel(MapRecord *map, int skill) override; void NewGame(MapRecord *map, int skill, bool) override; bool DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, const DAngle cang, const DVector2& xydim, const double czoom, double const interpfrac) override; - DCoreActor* getConsoleActor() override { return Player[myconnectindex].actor; } + DCoreActor* getConsoleActor() override { return Player[myconnectindex].GetActor(); } void ToggleThirdPerson() override; void SwitchCoopView() override; void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double smoothRatio) override; @@ -1920,7 +1925,7 @@ inline bool SectorIsUnderwaterArea(sectortype* sect) inline bool PlayerFacingRange(PLAYER* pp, DSWActor* a, DAngle range) { - return absangle((a->spr.pos.XY() - pp->actor->spr.pos.XY()).Angle(), pp->actor->spr.Angles.Yaw) < range; + return absangle((a->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).Angle(), pp->GetActor()->spr.Angles.Yaw) < range; } inline bool FacingRange(DSWActor* a1, DSWActor* a2, DAngle range) diff --git a/source/games/sw/src/hornet.cpp b/source/games/sw/src/hornet.cpp index 536442b78..00f2ffaef 100644 --- a/source/games/sw/src/hornet.cpp +++ b/source/games/sw/src/hornet.cpp @@ -563,7 +563,7 @@ int DoCheckSwarm(DSWActor* actor) if (actor->user.targetActor->user.PlayerP) { pp = actor->user.targetActor->user.PlayerP; - pdist = (actor->spr.pos.XY() - pp->actor->spr.pos.XY()).LengthSquared(); + pdist = (actor->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).LengthSquared(); } else return 0; diff --git a/source/games/sw/src/input.cpp b/source/games/sw/src/input.cpp index fd2948d38..87fe00c24 100644 --- a/source/games/sw/src/input.cpp +++ b/source/games/sw/src/input.cpp @@ -72,7 +72,7 @@ enum void processWeapon(PLAYER* const pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (plActor == nullptr) return; int i; diff --git a/source/games/sw/src/inv.cpp b/source/games/sw/src/inv.cpp index 5eca6e97c..961f9ee92 100644 --- a/source/games/sw/src/inv.cpp +++ b/source/games/sw/src/inv.cpp @@ -159,7 +159,7 @@ void UseInventoryMedkit(PLAYER* pp) if (!pp->InventoryAmount[inv]) return; - diff = 100 - pp->actor->user.Health; + diff = 100 - pp->GetActor()->user.Health; if (diff <= 0) return; @@ -296,7 +296,7 @@ void UseInventoryRepairKit(PLAYER* pp) void UseInventoryCloak(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (pp->InventoryActive[pp->InventoryNum]) { @@ -321,7 +321,7 @@ void UseInventoryCloak(PLAYER* pp) void StopInventoryCloak(PLAYER* pp, short InventoryNum) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->InventoryActive[InventoryNum] = false; diff --git a/source/games/sw/src/jsector.cpp b/source/games/sw/src/jsector.cpp index ad2b1f5ea..8bb21c87c 100644 --- a/source/games/sw/src/jsector.cpp +++ b/source/games/sw/src/jsector.cpp @@ -385,7 +385,7 @@ void JS_ProcessEchoSpot() while (auto actor = it.Next()) { double maxdist = SP_TAG4(actor) * maptoworld; - auto v = actor->spr.pos.XY() - pp->actor->spr.pos.XY(); + auto v = actor->spr.pos.XY() - pp->GetActor()->spr.pos.XY(); double dist = abs(v.X) + abs(v.Y); if (dist <= maxdist) // tag4 = ang @@ -548,7 +548,7 @@ void JS_DrawCameras(PLAYER* pp, const DVector3& campos, double smoothratio) // If player is dead still then update at MoveSkip4 // rate. - if (pp->actor->spr.pos == pp->actor->opos) + if (pp->GetActor()->spr.pos == pp->GetActor()->opos) DoCam = true; @@ -561,7 +561,7 @@ void JS_DrawCameras(PLAYER* pp, const DVector3& campos, double smoothratio) if (TEST_BOOL11(camactor) && numplayers > 1) { - drawroomstotile(cp->actor->getPosWithOffsetZ(), cp->actor->spr.Angles.Yaw, cp->actor->spr.Angles.Pitch, cp->cursector, mirror[cnt].campic, smoothratio); + drawroomstotile(cp->GetActor()->getPosWithOffsetZ(), cp->GetActor()->spr.Angles.Yaw, cp->GetActor()->spr.Angles.Pitch, cp->cursector, mirror[cnt].campic, smoothratio); } else { diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index 60af03597..f9d4cbc00 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -1233,7 +1233,7 @@ int DoRadiationCloud(DSWActor* actor) ////////////////////////////////////////////// int PlayerInitChemBomb(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); PlaySound(DIGI_THROW, pp, v3df_dontpan | v3df_doppler); @@ -1241,11 +1241,11 @@ int PlayerInitChemBomb(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, CHEMBOMB, s_ChemBomb, pp->cursector, pos, pp->actor->spr.Angles.Yaw, CHEMBOMB_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, CHEMBOMB, s_ChemBomb, pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, CHEMBOMB_VELOCITY); // don't throw it as far if crawling if (pp->Flags & (PF_CRAWLING)) @@ -1255,7 +1255,7 @@ int PlayerInitChemBomb(PLAYER* pp) actorNew->user.Flags |= (SPR_XFLIP_TOGGLE); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->spr.shade = -15; actorNew->user.WeaponNum = plActor->user.WeaponNum; @@ -1403,7 +1403,7 @@ int PlayerInitFlashBomb(PLAYER* pp) unsigned int stat; short damage; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); PlaySound(DIGI_GASPOP, pp, v3df_dontpan | v3df_doppler); @@ -1415,7 +1415,7 @@ int PlayerInitFlashBomb(PLAYER* pp) SWStatIterator it(StatDamageList[stat]); while (auto itActor = it.Next()) { - if (itActor == pp->actor) + if (itActor == pp->GetActor()) break; double dist = (itActor->spr.pos.XY() - actor->spr.pos.XY()).Length(); @@ -1428,7 +1428,7 @@ int PlayerInitFlashBomb(PLAYER* pp) if (!FAFcansee(itActor->spr.pos, itActor->sector(), actor->spr.pos.plusZ(-ActorSizeZ(actor)), actor->sector())) continue; - damage = GetDamage(itActor, pp->actor, DMG_FLASHBOMB); + damage = GetDamage(itActor, pp->GetActor(), DMG_FLASHBOMB); if (itActor->user.sop_parent) { @@ -1607,16 +1607,16 @@ void SpawnFlashBombOnActor(DSWActor* actor) int PlayerInitCaltrops(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); PlaySound(DIGI_THROW, pp, v3df_dontpan | v3df_doppler); if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); - auto actorNew = SpawnActor(STAT_DEAD_ACTOR, CALTROPS, s_Caltrops, pp->cursector, pos, pp->actor->spr.Angles.Yaw, (CHEMBOMB_VELOCITY + RandomRangeF(CHEMBOMB_VELOCITY)) / 2); + auto actorNew = SpawnActor(STAT_DEAD_ACTOR, CALTROPS, s_Caltrops, pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, (CHEMBOMB_VELOCITY + RandomRangeF(CHEMBOMB_VELOCITY)) / 2); // don't throw it as far if crawling if (pp->Flags & (PF_CRAWLING)) @@ -1626,7 +1626,7 @@ int PlayerInitCaltrops(PLAYER* pp) actorNew->user.Flags |= (SPR_XFLIP_TOGGLE); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(1, 1); actorNew->spr.shade = -15; actorNew->user.WeaponNum = plActor->user.WeaponNum; @@ -2182,7 +2182,7 @@ int SpawnShell(DSWActor* actor, int ShellNum) if (actor->user.PlayerP) { - setFreeAimVelocity(actorNew->vel.X, actorNew->vel.Z, actor->user.PlayerP->actor->spr.Angles.Pitch, HORIZ_MULTF * (1. / 3.)); + setFreeAimVelocity(actorNew->vel.X, actorNew->vel.Z, actor->user.PlayerP->GetActor()->spr.Angles.Pitch, HORIZ_MULTF * (1. / 3.)); } switch (actorNew->user.ID) diff --git a/source/games/sw/src/mclip.cpp b/source/games/sw/src/mclip.cpp index 91f1a5f69..d152134e7 100644 --- a/source/games/sw/src/mclip.cpp +++ b/source/games/sw/src/mclip.cpp @@ -59,8 +59,8 @@ Collision MultiClipMove(PLAYER* pp, double zz, double floordist) { // move the box to position instead of using offset- this prevents small rounding errors // allowing you to move through wall - DAngle ang = (pp->actor->spr.Angles.Yaw + sop->clipbox_ang[i]); - DVector3 spos(pp->actor->getPosWithOffsetZ(), zz); + DAngle ang = (pp->GetActor()->spr.Angles.Yaw + sop->clipbox_ang[i]); + DVector3 spos(pp->GetActor()->getPosWithOffsetZ(), zz); DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i]; Collision coll; @@ -73,7 +73,7 @@ Collision MultiClipMove(PLAYER* pp, double zz, double floordist) min_dist = 0; min_ndx = i; // ox is where it should be - opos[i].XY() = pp->actor->getPosWithOffsetZ() + ang.ToVector() * sop->clipbox_vdist[i]; + opos[i].XY() = pp->GetActor()->getPosWithOffsetZ() + ang.ToVector() * sop->clipbox_vdist[i]; // spos.x is where it hit pos[i].XY() = spos.XY(); @@ -111,7 +111,7 @@ Collision MultiClipMove(PLAYER* pp, double zz, double floordist) } // put posx and y off from offset - pp->actor->spr.pos.XY() += pos[min_ndx].XY() - opos[min_ndx].XY(); + pp->GetActor()->spr.pos.XY() += pos[min_ndx].XY() - opos[min_ndx].XY(); return min_ret; } @@ -133,7 +133,7 @@ int MultiClipTurn(PLAYER* pp, DAngle new_ang, double zz, double floordist) { DAngle ang = new_ang + sop->clipbox_ang[i]; - DVector3 spos(pp->actor->getPosWithOffsetZ(), zz); + DVector3 spos(pp->GetActor()->getPosWithOffsetZ(), zz); DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i]; Collision coll; @@ -207,7 +207,7 @@ int RectClipMove(PLAYER* pp, DVector2* qpos) //Given the 4 points: x[4], y[4] if (testquadinsect(&point_num, xy, pp->cursector)) { - pp->actor->spr.pos.XY() += pvect; + pp->GetActor()->spr.pos.XY() += pvect; return true; } @@ -223,7 +223,7 @@ int RectClipMove(PLAYER* pp, DVector2* qpos) } if (testquadinsect(&point_num, xy, pp->cursector)) { - pp->actor->spr.pos.XY() += { -pvect.X * 0.5, pvect.X * 0.5 }; + pp->GetActor()->spr.pos.XY() += { -pvect.X * 0.5, pvect.X * 0.5 }; } return false; @@ -238,7 +238,7 @@ int RectClipMove(PLAYER* pp, DVector2* qpos) } if (testquadinsect(&point_num, xy, pp->cursector)) { - pp->actor->spr.pos.XY() += { pvect.X * 0.5, -pvect.X * 0.5 }; + pp->GetActor()->spr.pos.XY() += { pvect.X * 0.5, -pvect.X * 0.5 }; } return false; @@ -264,7 +264,7 @@ short RectClipTurn(PLAYER* pp, DAngle new_angl, DVector2* qpos, DVector2* opos) rot_angl = new_angl + sop->spin_ang - sop->ang_orig; for (i = 0; i < 4; i++) { - xy[i] = rotatepoint(pp->actor->spr.pos.XY(), opos[i], rot_angl); + xy[i] = rotatepoint(pp->GetActor()->spr.pos.XY(), opos[i], rot_angl); // cannot use sop->xmid and ymid because the SO is off the map at this point } diff --git a/source/games/sw/src/network.cpp b/source/games/sw/src/network.cpp index e0ab416ff..a8e7db448 100644 --- a/source/games/sw/src/network.cpp +++ b/source/games/sw/src/network.cpp @@ -66,11 +66,11 @@ void InitNetPlayerOptions(void) // myconnectindex palette pp->TeamColor = gs.NetColor; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); if (actor) { actor->spr.pal = PALETTE_PLAYER0 + pp->TeamColor; - pp->actor->user.spal = actor->spr.pal; + pp->GetActor()->user.spal = actor->spr.pal; } } diff --git a/source/games/sw/src/ninja.cpp b/source/games/sw/src/ninja.cpp index 01d9c72f6..18cd71d47 100644 --- a/source/games/sw/src/ninja.cpp +++ b/source/games/sw/src/ninja.cpp @@ -2122,7 +2122,7 @@ void InitAllPlayerSprites(const DVector3& spawnpos, const DAngle startang) void PlayerLevelReset(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); if (gNet.MultiGameType == MULTI_GAME_COMMBAT) { @@ -2165,7 +2165,7 @@ void PlayerLevelReset(PLAYER* pp) void PlayerDeathReset(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); if (pp->Flags & (PF_DIVING)) DoPlayerStopDiveNoWarp(pp); @@ -2243,9 +2243,9 @@ void PlayerPanelSetup(void) { auto pp = Player + pnum; - ASSERT(pp->actor->hasU()); + ASSERT(pp->GetActor()->hasU()); - PlayerUpdateWeapon(pp, pp->actor->user.WeaponNum); + PlayerUpdateWeapon(pp, pp->GetActor()->user.WeaponNum); } } @@ -2257,7 +2257,7 @@ void PlayerPanelSetup(void) void PlayerGameReset(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); COVER_SetReverb(0); // Turn off any echoing that may have been going before pp->Reverb = 0; @@ -2341,7 +2341,7 @@ void InitPlayerSprite(PLAYER* pp, const DVector3& spawnpos, const DAngle startan pp->actor = actor; pp->pnum = pnum; - pp->Angles.initialize(pp->actor); + pp->Angles.initialize(pp->GetActor()); actor->spr.cstat |= (CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); actor->spr.extra |= (SPRX_PLAYER_OR_ENEMY); @@ -2368,7 +2368,7 @@ void InitPlayerSprite(PLAYER* pp, const DVector3& spawnpos, const DAngle startan actor->spr.pal = PALETTE_PLAYER0 + pp->pnum; actor->user.spal = actor->spr.pal; - pp->actor->setStateGroup(NAME_Run); + pp->GetActor()->setStateGroup(NAME_Run); pp->PlayerUnderActor = nullptr; @@ -2406,12 +2406,12 @@ void InitPlayerSprite(PLAYER* pp, const DVector3& spawnpos, const DAngle startan void SpawnPlayerUnderSprite(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); int pnum = int(pp - Player); pp->PlayerUnderActor = SpawnActor(STAT_PLAYER_UNDER0 + pnum, - NINJA_RUN_R0, nullptr, pp->cursector, pp->actor->getPosWithOffsetZ(), pp->actor->spr.Angles.Yaw); + NINJA_RUN_R0, nullptr, pp->cursector, pp->GetActor()->getPosWithOffsetZ(), pp->GetActor()->spr.Angles.Yaw); DSWActor* actor = pp->PlayerUnderActor; diff --git a/source/games/sw/src/panel.cpp b/source/games/sw/src/panel.cpp index 52a47f5a0..a02840236 100644 --- a/source/games/sw/src/panel.cpp +++ b/source/games/sw/src/panel.cpp @@ -259,7 +259,7 @@ void ArmorCalc(int damage_amt, int *armor_damage, int *player_damage) void PlayerUpdateHealth(PLAYER* pp, short value) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); short x,y; if (Prediction) @@ -413,7 +413,7 @@ void PlayerUpdateAmmo(PLAYER* pp, short UpdateWeaponNum, short value) void PlayerUpdateWeapon(PLAYER* pp, short WeaponNum) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); // weapon Change if (Prediction) @@ -447,7 +447,7 @@ void PlayerUpdateKills(PLAYER* pp, short value) opp = Player + pnum; // for everyone on the same team - if (opp != pp && opp->actor->user.spal == pp->actor->user.spal) + if (opp != pp && opp->GetActor()->user.spal == pp->GetActor()->user.spal) { Level.addFrags(pnum, value); } @@ -489,7 +489,7 @@ void PlayerUpdateArmor(PLAYER* pp, short value) int WeaponOperate(PLAYER* pp) { short weapon; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); InventoryKeys(pp); @@ -716,7 +716,7 @@ bool WeaponOK(PLAYER* pp) static const uint8_t wpn_order[] = {2,3,4,5,6,7,8,9,1,0}; unsigned wpn_ndx=0; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (!plActor || !plActor->hasU()) return(false); @@ -2590,7 +2590,7 @@ void pUziFire(PANEL_SPRITE* psp) } else { - SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32); if (!WeaponOK(psp->PlayerP)) return; @@ -2705,14 +2705,14 @@ void SpawnUziShell(PANEL_SPRITE* psp) // LEFT side pp->UziShellLeftAlt = !pp->UziShellLeftAlt; if (pp->UziShellLeftAlt) - SpawnShell(pp->actor,-3); + SpawnShell(pp->GetActor(),-3); } else { // RIGHT side pp->UziShellRightAlt = !pp->UziShellRightAlt; if (pp->UziShellRightAlt) - SpawnShell(pp->actor,-2); + SpawnShell(pp->GetActor(),-2); } } @@ -2774,7 +2774,7 @@ PANEL_STATE ps_ShotgunShell[] = void SpawnShotgunShell(PANEL_SPRITE* psp) { PLAYER* pp = psp->PlayerP; - SpawnShell(pp->actor,-4); + SpawnShell(pp->GetActor(),-4); } void pShotgunShell(PANEL_SPRITE* psp) @@ -3320,7 +3320,7 @@ void pShotgunAction(PANEL_SPRITE* psp) void pShotgunFire(PANEL_SPRITE* psp) { - SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32); InitShotgun(psp->PlayerP); //SpawnShotgunShell(psp); } @@ -3752,7 +3752,7 @@ void pRailAction(PANEL_SPRITE* psp) void pRailFire(PANEL_SPRITE* psp) { - SpawnVis(psp->PlayerP->actor, nullptr, {}, 16); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 16); InitRail(psp->PlayerP); } @@ -3771,7 +3771,7 @@ void pRailRetract(PANEL_SPRITE* psp) { psp->PlayerP->Flags &= ~(PF_WEAPON_RETRACT); psp->PlayerP->Wpn[psp->WeaponType] = nullptr; - DeleteNoSoundOwner(psp->PlayerP->actor); + DeleteNoSoundOwner(psp->PlayerP->GetActor()); pKillSprite(psp); } } @@ -4203,15 +4203,15 @@ void pHotheadAttack(PANEL_SPRITE* psp) switch (psp->PlayerP->WpnFlameType) { case 0: - SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32); InitFireball(psp->PlayerP); break; case 1: - SpawnVis(psp->PlayerP->actor, nullptr, {}, 20); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 20); InitSpellRing(psp->PlayerP); break; case 2: - SpawnVis(psp->PlayerP->actor, nullptr, {}, 16); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 16); InitSpellNapalm(psp->PlayerP); break; } @@ -4294,7 +4294,7 @@ void SpawnOnFire(PLAYER* pp) void pOnFire(PANEL_SPRITE* psp) { - DSWActor* plActor = psp->PlayerP->actor; + DSWActor* plActor = psp->PlayerP->GetActor(); // Kill immediately - in case of death/water if (plActor->user.flameActor == nullptr && plActor->user.Flags2 & SPR2_FLAMEDIE) @@ -4827,7 +4827,7 @@ void pMicroAction(PANEL_SPRITE* psp) void pMicroFire(PANEL_SPRITE* psp) { - SpawnVis(psp->PlayerP->actor, nullptr, {}, 20); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 20); switch (psp->PlayerP->WpnRocketType) { case 0: @@ -5770,7 +5770,7 @@ void pGrenadeAction(PANEL_SPRITE* psp) void pGrenadeFire(PANEL_SPRITE* psp) { - SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); + SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32); InitGrenade(psp->PlayerP); } @@ -7365,7 +7365,7 @@ void pWeaponBob(PANEL_SPRITE* psp, short condition) bool DrawBeforeView = false; void pDisplaySprites(PLAYER* pp, double interpfrac) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); PANEL_SPRITE* next=nullptr; short shade, picnum, overlay_shade = 0; double x, y; diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index 924472b76..1c1a31d47 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -956,10 +956,10 @@ void DoPlayerSpriteThrow(PLAYER* pp) { if (!(pp->Flags & (PF_DIVING|PF_FLYING|PF_CRAWLING))) { - if (pp->CurWpn == pp->Wpn[WPN_SWORD] && pp->actor->user.__legacyState.Rot != sg_PlayerNinjaSword) - NewStateGroup(pp->actor, sg_PlayerNinjaSword); + if (pp->CurWpn == pp->Wpn[WPN_SWORD] && pp->GetActor()->user.__legacyState.Rot != sg_PlayerNinjaSword) + NewStateGroup(pp->GetActor(), sg_PlayerNinjaSword); else - NewStateGroup(pp->actor, sg_PlayerNinjaPunch); + NewStateGroup(pp->GetActor(), sg_PlayerNinjaPunch); } } @@ -980,13 +980,13 @@ int DoPlayerSpriteReset(DSWActor* actor) // need to figure out what frames to put sprite into if (pp->DoPlayerAction == DoPlayerCrawl) - pp->actor->setStateGroup(NAME_Crawl); + pp->GetActor()->setStateGroup(NAME_Crawl); else { if (pp->Flags & (PF_PLAYER_MOVED)) - pp->actor->setStateGroup(NAME_Run); + pp->GetActor()->setStateGroup(NAME_Run); else - pp->actor->setStateGroup(NAME_Stand); + pp->GetActor()->setStateGroup(NAME_Stand); } return 0; @@ -1109,7 +1109,7 @@ DSWActor* DoPickTarget(DSWActor* actor, DAngle max_delta_ang, int skip_targets) double ezhl = ActorZOfBottom(itActor) - (ActorSizeZ(itActor) * 0.25); if (actor->hasU() && actor->user.PlayerP) - apos.Z = actor->user.PlayerP->actor->getOffsetZ(); + apos.Z = actor->user.PlayerP->GetActor()->getOffsetZ(); else apos.Z = ActorZOfTop(actor) + (ActorSizeZ(actor) * 0.25); @@ -1183,7 +1183,7 @@ void DoPlayerResetMovement(PLAYER* pp) void DoPlayerTeleportPause(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); // set this so we don't get stuck in teleporting loop pp->lastcursector = pp->cursector; @@ -1206,11 +1206,11 @@ void DoPlayerTeleportPause(PLAYER* pp) void DoPlayerTeleportToSprite(PLAYER* pp, DVector3& pos, DAngle ang) { - pp->actor->spr.Angles.Yaw = ang; - pp->actor->spr.pos = pos; - pp->actor->backuploc(); + pp->GetActor()->spr.Angles.Yaw = ang; + pp->GetActor()->spr.pos = pos; + pp->GetActor()->backuploc(); - updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); + updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); pp->Flags2 |= (PF2_TELEPORTED); } @@ -1222,9 +1222,9 @@ void DoPlayerTeleportToSprite(PLAYER* pp, DVector3& pos, DAngle ang) void DoPlayerTeleportToOffset(PLAYER* pp) { - pp->actor->backupvec2(); + pp->GetActor()->backupvec2(); - updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); + updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); pp->Flags2 |= (PF2_TELEPORTED); } @@ -1282,7 +1282,7 @@ void DoSpawnTeleporterEffectPlace(DSWActor* actor) void DoPlayerWarpTeleporter(PLAYER* pp) { - auto ppActor = pp->actor; + auto ppActor = pp->GetActor(); short pnum; DSWActor* act_warp; @@ -1332,9 +1332,9 @@ void DoPlayerWarpTeleporter(PLAYER* pp) // if someone already standing there if (npp->cursector == pp->cursector) { - PlayerUpdateHealth(npp, -npp->actor->user.Health); // Make sure he dies! + PlayerUpdateHealth(npp, -npp->GetActor()->user.Health); // Make sure he dies! // telefraged by teleporting player - PlayerCheckDeath(npp, pp->actor); + PlayerCheckDeath(npp, pp->GetActor()); } } } @@ -1366,7 +1366,7 @@ void DoPlayerSetWadeDepth(PLAYER* pp) if ((sectp->extra & SECTFX_SINK)) { // make sure your even in the water - if (pp->actor->getOffsetZ() + PLAYER_HEIGHTF > pp->lo_sectp->floorz - FixedToInt(pp->lo_sectp->depth_fixed)) + if (pp->GetActor()->getOffsetZ() + PLAYER_HEIGHTF > pp->lo_sectp->floorz - FixedToInt(pp->lo_sectp->depth_fixed)) pp->WadeDepth = FixedToInt(pp->lo_sectp->depth_fixed); } } @@ -1380,20 +1380,20 @@ void DoPlayerSetWadeDepth(PLAYER* pp) void DoPlayerViewOffset(PLAYER* pp) { - pp->actor->viewzoffset -= (pp->actor->viewzoffset + pp->height) * 0.375; + pp->GetActor()->viewzoffset -= (pp->GetActor()->viewzoffset + pp->height) * 0.375; } void DoPlayerHeight(PLAYER* pp) { DoPlayerViewOffset(pp); - pp->actor->spr.pos.Z -= (pp->actor->spr.pos.Z - pp->loz) * 0.375; + pp->GetActor()->spr.pos.Z -= (pp->GetActor()->spr.pos.Z - pp->loz) * 0.375; } void DoPlayerJumpHeight(PLAYER* pp) { if (pp->lo_sectp && (pp->lo_sectp->extra & SECTFX_DYNAMIC_AREA)) { - if (pp->actor->getOffsetZ() + PLAYER_HEIGHTF > pp->loz) + if (pp->GetActor()->getOffsetZ() + PLAYER_HEIGHTF > pp->loz) { pp->posZset(pp->loz - PLAYER_HEIGHTF); DoPlayerBeginRun(pp); @@ -1414,7 +1414,7 @@ void UpdatePlayerSpriteAngle(PLAYER* pp) if (!Prediction && plActor) { plActor->backupang(); - plActor->spr.Angles.Yaw = pp->actor->spr.Angles.Yaw; + plActor->spr.Angles.Yaw = pp->GetActor()->spr.Angles.Yaw; } } @@ -1442,10 +1442,10 @@ void DoPlayerTurnVehicle(PLAYER* pp, double zz, double floordist) if (pp->input.avel != 0) { - auto sum = pp->actor->spr.Angles.Yaw + DAngle::fromDeg(pp->input.avel); + auto sum = pp->GetActor()->spr.Angles.Yaw + DAngle::fromDeg(pp->input.avel); if (MultiClipTurn(pp, sum, zz, floordist)) { - pp->actor->spr.Angles.Yaw = sum; + pp->GetActor()->spr.Angles.Yaw = sum; } } } @@ -1475,10 +1475,10 @@ void DoPlayerTurnVehicleRect(PLAYER* pp, DVector2* pos, DVector2* opos) if (avel != 0) { - auto sum = pp->actor->spr.Angles.Yaw + DAngle::fromDeg(avel); + auto sum = pp->GetActor()->spr.Angles.Yaw + DAngle::fromDeg(avel); if (RectClipTurn(pp, sum, pos, opos)) { - pp->actor->spr.Angles.Yaw = sum; + pp->GetActor()->spr.Angles.Yaw = sum; } } } @@ -1508,7 +1508,7 @@ void DoPlayerTurnTurret(PLAYER* pp) if (fabs(pp->input.avel) >= FLT_EPSILON) { - new_ang = pp->actor->spr.Angles.Yaw + DAngle::fromDeg(pp->input.avel); + new_ang = pp->GetActor()->spr.Angles.Yaw + DAngle::fromDeg(pp->input.avel); if (sop->limit_ang_center >= nullAngle) { @@ -1523,10 +1523,10 @@ void DoPlayerTurnTurret(PLAYER* pp) } } - pp->actor->spr.Angles.Yaw = new_ang; + pp->GetActor()->spr.Angles.Yaw = new_ang; } - OperateSectorObject(pp->sop, pp->actor->spr.Angles.Yaw, pp->sop->pmid); + OperateSectorObject(pp->sop, pp->GetActor()->spr.Angles.Yaw, pp->sop->pmid); } //--------------------------------------------------------------------------- @@ -1572,7 +1572,7 @@ void DoPlayerBob(PLAYER* pp) { double amt; - double dist = (pp->actor->spr.pos.XY() - pp->actor->opos.XY()).Length(); + double dist = (pp->GetActor()->spr.pos.XY() - pp->GetActor()->opos.XY()).Length(); if (dist > 32) dist = 0; @@ -1658,7 +1658,7 @@ void DoPlayerSpriteBob(PLAYER* pp, double player_height, double bobamt, short bo void UpdatePlayerUnderSprite(PLAYER* pp) { - DSWActor* act_over = pp->actor; + DSWActor* act_over = pp->GetActor(); double water_level_z, zdiff; bool above_water, in_dive_area; @@ -1730,7 +1730,7 @@ void UpdatePlayerSprite(PLAYER* pp) pp->height = (pp->DoPlayerAction == DoPlayerCrawl) ? PLAYER_CRAWL_HEIGHTF : (pp->DoPlayerAction == DoPlayerDive) ? PLAYER_DIVE_HEIGHTF : PLAYER_HEIGHTF; } - ChangeActorSect(pp->actor, pp->cursector); + ChangeActorSect(pp->GetActor(), pp->cursector); UpdatePlayerUnderSprite(pp); } @@ -1745,7 +1745,7 @@ void DoPlayerZrange(PLAYER* pp) { Collision ceilhit, florhit; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); if (!actor) return; // Don't let you fall if you're just slightly over a cliff @@ -1754,7 +1754,7 @@ void DoPlayerZrange(PLAYER* pp) auto bakcstat = actor->spr.cstat; actor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK); - FAFgetzrange(pp->actor->getPosWithOffsetZ().plusZ(8), pp->cursector, &pp->hiz, &ceilhit, &pp->loz, &florhit, actor->clipdist - GETZRANGE_CLIP_ADJ, CLIPMASK_PLAYER); + FAFgetzrange(pp->GetActor()->getPosWithOffsetZ().plusZ(8), pp->cursector, &pp->hiz, &ceilhit, &pp->loz, &florhit, actor->clipdist - GETZRANGE_CLIP_ADJ, CLIPMASK_PLAYER); actor->spr.cstat = bakcstat; Collision ceilColl(ceilhit); @@ -1803,7 +1803,7 @@ void DoPlayerZrange(PLAYER* pp) void DoPlayerSlide(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); int push_ret; @@ -1818,7 +1818,7 @@ void DoPlayerSlide(PLAYER* pp) if (abs(pp->slide_vect.X) < 0.05 && abs(pp->slide_vect.Y) < 0.05) pp->slide_vect.Zero(); - push_ret = pushmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); + push_ret = pushmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); if (push_ret < 0) { if (!(pp->Flags & PF_DEAD)) @@ -1832,10 +1832,10 @@ void DoPlayerSlide(PLAYER* pp) return; } Collision coll; - clipmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, pp->slide_vect, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER, coll); + clipmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, pp->slide_vect, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER, coll); PlayerCheckValidMove(pp); - push_ret = pushmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); + push_ret = pushmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); if (push_ret < 0) { if (!(pp->Flags & PF_DEAD)) @@ -1860,7 +1860,7 @@ void PlayerCheckValidMove(PLAYER* pp) { if (!pp->insector()) { - pp->actor->restorepos(); + pp->GetActor()->restorepos(); pp->cursector = pp->lastcursector; } } @@ -1887,12 +1887,12 @@ void PlayerSectorBound(PLAYER* pp, double amt) // called from DoPlayerMove() but can be called // from anywhere it is needed - calcSlope(pp->cursector, pp->actor->getPosWithOffsetZ(), &cz, &fz); + calcSlope(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), &cz, &fz); - if (pp->actor->getOffsetZ() > fz - amt) + if (pp->GetActor()->getOffsetZ() > fz - amt) pp->posZset(fz - amt); - if (pp->actor->getOffsetZ() < cz + amt) + if (pp->GetActor()->getOffsetZ() < cz + amt) pp->posZset(cz + amt); } @@ -1905,7 +1905,7 @@ void PlayerSectorBound(PLAYER* pp, double amt) void DoPlayerMove(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); int friction; int push_ret = 0; @@ -1980,13 +1980,13 @@ void DoPlayerMove(PLAYER* pp) actor->backupvec2(); } actor->spr.pos.XY() += pp->vect; - updatesector(pp->actor->getPosWithOffsetZ(), §); + updatesector(pp->GetActor()->getPosWithOffsetZ(), §); if (sect != nullptr) pp->cursector = sect; } else { - push_ret = pushmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist - 16., CLIPMASK_PLAYER); + push_ret = pushmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist - 16., CLIPMASK_PLAYER); if (push_ret < 0) { @@ -2002,19 +2002,19 @@ void DoPlayerMove(PLAYER* pp) if (interpolate_ride) { - pp->actor->backupvec2(); + pp->GetActor()->backupvec2(); } auto save_cstat = actor->spr.cstat; actor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK); Collision coll; - updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); - clipmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, pp->vect, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER, coll); + updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); + clipmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, pp->vect, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER, coll); actor->spr.cstat = save_cstat; PlayerCheckValidMove(pp); - push_ret = pushmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist - 16., CLIPMASK_PLAYER); + push_ret = pushmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist - 16., CLIPMASK_PLAYER); if (push_ret < 0) { @@ -2031,8 +2031,8 @@ void DoPlayerMove(PLAYER* pp) if (interpolate_ride) { - pp->actor->backupz(); - pp->actor->backupang(); + pp->GetActor()->backupz(); + pp->GetActor()->backupang(); } // check for warp - probably can remove from CeilingHit @@ -2057,18 +2057,18 @@ void DoPlayerMove(PLAYER* pp) { if (pp->Flags & (PF_FLYING|PF_JUMPING|PF_FALLING)) { - if (pp->actor->getOffsetZ() > pp->loz) + if (pp->GetActor()->getOffsetZ() > pp->loz) pp->posZset(pp->loz - PLAYER_HEIGHTF); - if (pp->actor->getOffsetZ() < pp->hiz) + if (pp->GetActor()->getOffsetZ() < pp->hiz) pp->posZset(pp->hiz + PLAYER_HEIGHTF); } else if (pp->Flags & (PF_SWIMMING|PF_DIVING)) { - if (pp->actor->getOffsetZ() > pp->loz) + if (pp->GetActor()->getOffsetZ() > pp->loz) pp->posZset(pp->loz - PLAYER_DIVE_HEIGHTF); - if (pp->actor->getOffsetZ() < pp->hiz) + if (pp->GetActor()->getOffsetZ() < pp->hiz) pp->posZset(pp->hiz + PLAYER_DIVE_HEIGHTF); } } @@ -2089,21 +2089,21 @@ void DoPlayerSectorUpdatePreMove(PLAYER* pp) if ((pp->cursector->extra & SECTFX_DYNAMIC_AREA)) { - updatesectorz(pp->actor->getPosWithOffsetZ(), §); + updatesectorz(pp->GetActor()->getPosWithOffsetZ(), §); if (sect == nullptr) { sect = pp->cursector; - updatesector(pp->actor->getPosWithOffsetZ(), §); + updatesector(pp->GetActor()->getPosWithOffsetZ(), §); } ASSERT(sect); } else if (FAF_ConnectArea(sect)) { - updatesectorz(pp->actor->getPosWithOffsetZ(), §); + updatesectorz(pp->GetActor()->getPosWithOffsetZ(), §); if (sect == nullptr) { sect = pp->cursector; - updatesector(pp->actor->getPosWithOffsetZ(), §); + updatesector(pp->GetActor()->getPosWithOffsetZ(), §); } ASSERT(sect); } @@ -2125,7 +2125,7 @@ void DoPlayerSectorUpdatePostMove(PLAYER* pp) // need to do updatesectorz if in connect area if (sect != nullptr && FAF_ConnectArea(sect)) { - updatesectorz(pp->actor->getPosWithOffsetZ(), &pp->cursector); + updatesectorz(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); // can mess up if below if (!pp->insector()) @@ -2133,15 +2133,15 @@ void DoPlayerSectorUpdatePostMove(PLAYER* pp) pp->setcursector(sect); // adjust the posz to be in a sector - calcSlope(pp->cursector, pp->actor->getPosWithOffsetZ(), &cz, &fz); - if (pp->actor->getOffsetZ() > fz) + calcSlope(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), &cz, &fz); + if (pp->GetActor()->getOffsetZ() > fz) pp->posZset(fz); - if (pp->actor->getOffsetZ() < cz) + if (pp->GetActor()->getOffsetZ() < cz) pp->posZset(cz); // try again - updatesectorz(pp->actor->getPosWithOffsetZ(), &pp->cursector); + updatesectorz(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); } } else @@ -2205,7 +2205,7 @@ void DoTankTreads(PLAYER* pp) return; double vel = pp->vect.Length() * 64; - double dot = pp->vect.dot(pp->actor->spr.Angles.Yaw.ToVector()); + double dot = pp->vect.dot(pp->GetActor()->spr.Angles.Yaw.ToVector()); if (dot < 0) reverse = true; @@ -2403,9 +2403,9 @@ void DriveCrush(PLAYER* pp, DVector2* quad) continue; damage = -(actor->user.Health + 100); - PlayerDamageSlide(actor->user.PlayerP, damage, pp->actor->spr.Angles.Yaw); + PlayerDamageSlide(actor->user.PlayerP, damage, pp->GetActor()->spr.Angles.Yaw); PlayerUpdateHealth(actor->user.PlayerP, damage); - PlayerCheckDeath(actor->user.PlayerP, pp->actor); + PlayerCheckDeath(actor->user.PlayerP, pp->GetActor()); } } @@ -2444,7 +2444,7 @@ void DoPlayerMoveVehicle(PLAYER* pp) { DSWActor* actor = pp->sop->sp_child; if (!actor) return; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); int wallcount; int count=0; @@ -2495,7 +2495,7 @@ void DoPlayerMoveVehicle(PLAYER* pp) pp->vect.X = pp->vect.Y = 0; pp->lastcursector = pp->cursector; - double zz = pp->actor->getOffsetZ() + 10; + double zz = pp->GetActor()->getOffsetZ() + 10; DVector2 pos[4], opos[4]; @@ -2520,7 +2520,7 @@ void DoPlayerMoveVehicle(PLAYER* pp) } auto save_sect = pp->cursector; - OperateSectorObject(pp->sop, pp->actor->spr.Angles.Yaw, { MAXSO, MAXSO }); + OperateSectorObject(pp->sop, pp->GetActor()->spr.Angles.Yaw, { MAXSO, MAXSO }); pp->setcursector(pp->sop->op_main_sector); // for speed double floordist = abs(zz - pp->sop->floor_loz); @@ -2548,7 +2548,7 @@ void DoPlayerMoveVehicle(PLAYER* pp) DVector3 hitpos((pos[0] + pos[1]) * 0.5, pp->cursector->floorz - 10); hitscan(hitpos, pp->cursector, - DVector3(pp->actor->spr.Angles.Yaw.ToVector() * 16, 0), + DVector3(pp->GetActor()->spr.Angles.Yaw.ToVector() * 16, 0), hit, CLIPMASK_PLAYER); if ((hit.hitpos.XY() - hitpos.XY()).LengthSquared() < 50 * 50) @@ -2585,7 +2585,7 @@ void DoPlayerMoveVehicle(PLAYER* pp) if (pp->sop->clipdist) { Collision coll; - clipmove(pp->actor->spr.pos.XY(), zz, &pp->cursector, pp->vect, pp->sop->clipdist, 4., floordist, CLIPMASK_PLAYER, actor->user.coll); + clipmove(pp->GetActor()->spr.pos.XY(), zz, &pp->cursector, pp->vect, pp->sop->clipdist, 4., floordist, CLIPMASK_PLAYER, actor->user.coll); } else { @@ -2614,7 +2614,7 @@ void DoPlayerMoveVehicle(PLAYER* pp) } } - OperateSectorObject(pp->sop, pp->actor->spr.Angles.Yaw, pp->actor->spr.pos.XY()); + OperateSectorObject(pp->sop, pp->GetActor()->spr.Angles.Yaw, pp->GetActor()->spr.pos.XY()); pp->cursector = save_sect; // for speed DoPlayerSlopeTilting(pp); @@ -2659,7 +2659,7 @@ void DoPlayerMoveTurret(PLAYER* pp) void DoPlayerBeginJump(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->Flags |= (PF_JUMPING); pp->Flags &= ~(PF_FALLING); @@ -2694,7 +2694,7 @@ void DoPlayerBeginJump(PLAYER* pp) void DoPlayerBeginForceJump(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->Flags |= (PF_JUMPING); pp->Flags &= ~(PF_FALLING|PF_CRAWLING|PF_CLIMBING); @@ -2721,12 +2721,12 @@ void DoPlayerBeginForceJump(PLAYER* pp) bool PlayerCeilingHit(PLAYER* pp, double zlimit) { - return (pp->actor->getOffsetZ() < zlimit); + return (pp->GetActor()->getOffsetZ() < zlimit); } bool PlayerFloorHit(PLAYER* pp, double zlimit) { - return (pp->actor->getOffsetZ() > zlimit); + return (pp->GetActor()->getOffsetZ() > zlimit); } //--------------------------------------------------------------------------- @@ -2768,7 +2768,7 @@ void DoPlayerJump(PLAYER* pp) } // adjust height by jump speed - pp->actor->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; + pp->GetActor()->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; // if player gets to close the ceiling while jumping if (PlayerCeilingHit(pp, pp->hiz + 4)) @@ -2842,7 +2842,7 @@ void DoPlayerForceJump(PLAYER* pp) } // adjust height by jump speed - pp->actor->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; + pp->GetActor()->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; // if player gets to close the ceiling while jumping if (PlayerCeilingHit(pp, pp->hiz + 4)) @@ -2871,7 +2871,7 @@ void DoPlayerForceJump(PLAYER* pp) void DoPlayerBeginFall(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->Flags |= (PF_FALLING); pp->Flags &= ~(PF_JUMPING); @@ -2900,7 +2900,7 @@ void StackedWaterSplash(PLAYER* pp) { auto sect = pp->cursector; - updatesectorz(ActorVectOfBottom(pp->actor), §); + updatesectorz(ActorVectOfBottom(pp->GetActor()), §); if (SectorIsUnderwaterArea(sect)) { @@ -2941,7 +2941,7 @@ void DoPlayerFall(PLAYER* pp) pp->jump_speed = 4100; // adjust player height by jump speed - pp->actor->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; + pp->GetActor()->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; if (pp->jump_speed > 2000) { @@ -3007,7 +3007,7 @@ void DoPlayerFall(PLAYER* pp) // this was causing the z to snap immediately // changed it so it stays gradual - pp->actor->spr.pos.Z += recoil_amnt; + pp->GetActor()->spr.pos.Z += recoil_amnt; DoPlayerHeight(pp); } @@ -3024,7 +3024,7 @@ void DoPlayerFall(PLAYER* pp) } else if (pp->jump_speed >= 4000) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); PlayerUpdateHealth(pp, -plActor->user.Health); // Make sure he dies! plActor->user.Health = 0; } @@ -3078,7 +3078,7 @@ void DoPlayerFall(PLAYER* pp) void DoPlayerBeginClimb(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); pp->Flags &= ~(PF_JUMPING|PF_FALLING); pp->Flags &= ~(PF_CRAWLING); @@ -3088,7 +3088,7 @@ void DoPlayerBeginClimb(PLAYER* pp) pp->Flags |= (PF_CLIMBING|PF_WEAPON_DOWN); actor->spr.cstat |= (CSTAT_SPRITE_YCENTER); - NewStateGroup(pp->actor, sg_PlayerNinjaClimb); + NewStateGroup(pp->GetActor(), sg_PlayerNinjaClimb); } //--------------------------------------------------------------------------- @@ -3099,7 +3099,7 @@ void DoPlayerBeginClimb(PLAYER* pp) void DoPlayerClimb(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); int i; bool LadderUpdate = false; @@ -3113,7 +3113,7 @@ void DoPlayerClimb(PLAYER* pp) pp->vect.X = pp->vect.Y = 0; double climbVel = pp->vect.Length(); - double dot = pp->vect.dot(pp->actor->spr.Angles.Yaw.ToVector()); + double dot = pp->vect.dot(pp->GetActor()->spr.Angles.Yaw.ToVector()); if (dot < 0) climbVel = -climbVel; @@ -3180,7 +3180,7 @@ void DoPlayerClimb(PLAYER* pp) { // put player at the hiz pp->posZset(pp->hiz); - NewStateGroup(pp->actor, sg_PlayerNinjaClimb); + NewStateGroup(pp->GetActor(), sg_PlayerNinjaClimb); } // if player gets to close the ceiling while climbing @@ -3188,13 +3188,13 @@ void DoPlayerClimb(PLAYER* pp) { // put player at the ceiling pp->posZset(pp->LadderSector->ceilingz + 4); - NewStateGroup(pp->actor, sg_PlayerNinjaClimb); + NewStateGroup(pp->GetActor(), sg_PlayerNinjaClimb); } // if floor is ABOVE you && your head goes above it, do a jump up to // terrace - if (pp->actor->getOffsetZ() < pp->LadderSector->floorz - 6) + if (pp->GetActor()->getOffsetZ() < pp->LadderSector->floorz - 6) { pp->jump_speed = PLAYER_CLIMB_JUMP_AMT; pp->Flags &= ~(PF_CLIMBING|PF_WEAPON_DOWN); @@ -3227,23 +3227,23 @@ void DoPlayerClimb(PLAYER* pp) } else { - NewStateGroup(pp->actor, sg_PlayerNinjaClimb); + NewStateGroup(pp->GetActor(), sg_PlayerNinjaClimb); } // setsprite to players location - ChangeActorSect(pp->actor, pp->cursector); + ChangeActorSect(pp->GetActor(), pp->cursector); DoPlayerSlopeTilting(pp); pp->Angles.doPitchInput(&pp->input); if (FAF_ConnectArea(pp->cursector)) { - updatesectorz(pp->actor->getPosWithOffsetZ(), &pp->cursector); + updatesectorz(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); LadderUpdate = true; } - const auto oldpos = pp->actor->spr.pos; - if (WarpPlane(pp->actor->spr.pos, &pp->cursector, pp->actor->getOffsetZ())) + const auto oldpos = pp->GetActor()->spr.pos; + if (WarpPlane(pp->GetActor()->spr.pos, &pp->cursector, pp->GetActor()->getOffsetZ())) { PlayerWarpUpdatePos(pp, oldpos); LadderUpdate = true; @@ -3255,11 +3255,11 @@ void DoPlayerClimb(PLAYER* pp) HitInfo near; // constantly look for new ladder sector because of warping at any time - neartag(pp->actor->getPosWithOffsetZ(), pp->cursector, pp->actor->spr.Angles.Yaw, near, 50., NT_Lotag | NT_Hitag | NT_NoSpriteCheck); + neartag(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, pp->GetActor()->spr.Angles.Yaw, near, 50., NT_Lotag | NT_Hitag | NT_NoSpriteCheck); if (near.hitWall) { - auto lActor = FindNearSprite(pp->actor, STAT_CLIMB_MARKER); + auto lActor = FindNearSprite(pp->GetActor(), STAT_CLIMB_MARKER); if (!lActor) return; // determine where the player is supposed to be in relation to the ladder @@ -3274,7 +3274,7 @@ void DoPlayerClimb(PLAYER* pp) pp->LadderPosition = lActor->spr.pos.XY() + nvec; - pp->actor->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180; + pp->GetActor()->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180; } } } @@ -3295,16 +3295,16 @@ int DoPlayerWadeSuperJump(PLAYER* pp) //for (i = 0; i < SIZ(angs); i++) { - FAFhitscan(DVector3(pp->actor->spr.pos.XY(), zh), pp->cursector, DVector3(pp->actor->spr.Angles.Yaw.ToVector() * 1024, 0), hit, CLIPMASK_MISSILE); + FAFhitscan(DVector3(pp->GetActor()->spr.pos.XY(), zh), pp->cursector, DVector3(pp->GetActor()->spr.Angles.Yaw.ToVector() * 1024, 0), hit, CLIPMASK_MISSILE); if (hit.hitWall != nullptr && hit.hitSector != nullptr) { hit.hitSector = hit.hitWall->nextSector(); - if (hit.hitSector != nullptr && abs(hit.hitSector->floorz - pp->actor->getOffsetZ()) < 50) + if (hit.hitSector != nullptr && abs(hit.hitSector->floorz - pp->GetActor()->getOffsetZ()) < 50) { - double dist = (pp->actor->spr.pos.XY() - hit.hitpos.XY()).Length(); - double comp = (pp->actor->clipdist + 16); + double dist = (pp->GetActor()->spr.pos.XY() - hit.hitpos.XY()).Length(); + double comp = (pp->GetActor()->clipdist + 16); if (dist < comp) return true; } @@ -3341,7 +3341,7 @@ bool PlayerFlyKey(void) void DoPlayerBeginCrawl(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->Flags &= ~(PF_FALLING | PF_JUMPING); pp->Flags |= (PF_CRAWLING); @@ -3365,7 +3365,7 @@ void DoPlayerBeginCrawl(PLAYER* pp) bool PlayerFallTest(PLAYER* pp, double player_height) { // If the floor is far below you, fall hard instead of adjusting height - if (abs(pp->actor->getOffsetZ() - pp->loz) > player_height + PLAYER_FALL_HEIGHTF) + if (abs(pp->GetActor()->getOffsetZ() - pp->loz) > player_height + PLAYER_FALL_HEIGHTF) { // if on a STEEP slope sector and you have not moved off of the sector if (pp->lo_sectp && @@ -3394,7 +3394,7 @@ const int PLAYER_STANDING_ROOM = 68; void DoPlayerCrawl(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (SectorIsUnderwaterArea(pp->cursector)) { @@ -3478,7 +3478,7 @@ void DoPlayerBeginFly(PLAYER* pp) pp->pbob_amt = 0; pp->bob_ndx = 1024; - NewStateGroup(pp->actor, sg_PlayerNinjaFly); + NewStateGroup(pp->GetActor(), sg_PlayerNinjaFly); } //--------------------------------------------------------------------------- @@ -3492,7 +3492,7 @@ void PlayerWarpUpdatePos(PLAYER* pp, const DVector3& oldpos) if (Prediction) return; - pp->actor->opos += pp->actor->spr.pos - oldpos; + pp->GetActor()->opos += pp->GetActor()->spr.pos - oldpos; DoPlayerZrange(pp); UpdatePlayerSprite(pp); } @@ -3514,7 +3514,7 @@ void DoPlayerFly(PLAYER* pp) const auto kbdDir = !!(pp->input.actions & SB_CROUCH) - !!(pp->input.actions & SB_JUMP); const double velZ = clamp(PLAYER_FLY_INC * kbdDir - PLAYER_FLY_INC * pp->input.uvel, -PLAYER_FLY_INC, PLAYER_FLY_INC); pp->z_speed = clamp(pp->z_speed + velZ, -PLAYER_FLY_MAX_SPEED, PLAYER_FLY_MAX_SPEED) * FixedToFloat(58000); - pp->actor->spr.pos.Z += pp->z_speed; + pp->GetActor()->spr.pos.Z += pp->z_speed; // Make the min distance from the ceiling/floor match bobbing amount // so the player never goes into the ceiling/floor @@ -3600,9 +3600,9 @@ bool PlayerOnLadder(PLAYER* pp) if (Prediction) return false; - neartag(pp->actor->getPosWithOffsetZ(), pp->cursector, pp->actor->spr.Angles.Yaw, near, 64. + 48., NT_Lotag | NT_Hitag); + neartag(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, pp->GetActor()->spr.Angles.Yaw, near, 64. + 48., NT_Lotag | NT_Hitag); - double dir = pp->vect.dot(pp->actor->spr.Angles.Yaw.ToVector()); + double dir = pp->vect.dot(pp->GetActor()->spr.Angles.Yaw.ToVector()); if (dir < 0) return false; @@ -3612,12 +3612,12 @@ bool PlayerOnLadder(PLAYER* pp) for (i = 0; i < SIZ(angles); i++) { - neartag(pp->actor->getPosWithOffsetZ(), pp->cursector, pp->actor->spr.Angles.Yaw + angles[i], near, 37.5, NT_Lotag | NT_Hitag | NT_NoSpriteCheck); + neartag(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, pp->GetActor()->spr.Angles.Yaw + angles[i], near, 37.5, NT_Lotag | NT_Hitag | NT_NoSpriteCheck); if (near.hitWall == nullptr || near.hitpos.X < 6.25 || near.hitWall->lotag != TAG_WALL_CLIMB) return false; - FAFhitscan(pp->actor->getPosWithOffsetZ(), pp->cursector, DVector3((pp->actor->spr.Angles.Yaw + angles[i]).ToVector() * 1024, 0), hit, CLIPMASK_MISSILE); + FAFhitscan(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, DVector3((pp->GetActor()->spr.Angles.Yaw + angles[i]).ToVector() * 1024, 0), hit, CLIPMASK_MISSILE); if (hit.actor() != nullptr) { @@ -3639,7 +3639,7 @@ bool PlayerOnLadder(PLAYER* pp) } - auto lActor = FindNearSprite(pp->actor, STAT_CLIMB_MARKER); + auto lActor = FindNearSprite(pp->GetActor(), STAT_CLIMB_MARKER); if (!lActor) return false; @@ -3654,7 +3654,7 @@ bool PlayerOnLadder(PLAYER* pp) // the sprite pp->LadderPosition = lActor->spr.pos + npos; - pp->actor->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180; + pp->GetActor()->spr.Angles.Yaw = lActor->spr.Angles.Yaw + DAngle180; return true; } @@ -3718,11 +3718,11 @@ int PlayerCanDive(PLAYER* pp) { if (PlayerInDiveArea(pp)) { - pp->actor->spr.pos.Z += velZ; + pp->GetActor()->spr.pos.Z += velZ; pp->z_speed = velZ; pp->jump_speed = 0; - if (pp->actor->getOffsetZ() > pp->loz - pp->WadeDepth - 2) + if (pp->GetActor()->getOffsetZ() > pp->loz - pp->WadeDepth - 2) { DoPlayerBeginDive(pp); } @@ -3752,7 +3752,7 @@ int PlayerCanDiveNoWarp(PLAYER* pp) { auto sect = pp->cursector; - updatesectorz(ActorVectOfBottom(pp->actor), §); + updatesectorz(ActorVectOfBottom(pp->GetActor()), §); if (SectorIsUnderwaterArea(sect)) { @@ -3952,7 +3952,7 @@ int GetOverlapSector2(const DVector2& pos, sectortype** over, sectortype** under void DoPlayerWarpToUnderwater(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); auto sectu = pp->cursector; DSWActor* under_act = nullptr, * over_act = nullptr; @@ -3994,15 +3994,15 @@ void DoPlayerWarpToUnderwater(PLAYER* pp) PRODUCTION_ASSERT(Found == true); // get the offset from the sprite - plActor->user.pos.XY() = over_act->spr.pos.XY() - pp->actor->spr.pos.XY(); + plActor->user.pos.XY() = over_act->spr.pos.XY() - pp->GetActor()->spr.pos.XY(); // update to the new x y position - pp->actor->spr.pos.XY() = under_act->spr.pos.XY() - plActor->user.pos.XY(); + pp->GetActor()->spr.pos.XY() = under_act->spr.pos.XY() - plActor->user.pos.XY(); auto over = over_act->sector(); auto under = under_act->sector(); - if (GetOverlapSector(pp->actor->getPosWithOffsetZ(), &over, &under) == 2) + if (GetOverlapSector(pp->GetActor()->getPosWithOffsetZ(), &over, &under) == 2) { pp->setcursector(under); } @@ -4025,7 +4025,7 @@ void DoPlayerWarpToUnderwater(PLAYER* pp) void DoPlayerWarpToSurface(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); auto sectu = pp->cursector; DSWActor* under_act = nullptr, * over_act = nullptr; @@ -4066,15 +4066,15 @@ void DoPlayerWarpToSurface(PLAYER* pp) PRODUCTION_ASSERT(Found == true); // get the offset from the under sprite - plActor->user.pos.XY() = under_act->spr.pos.XY() - pp->actor->spr.pos.XY(); + plActor->user.pos.XY() = under_act->spr.pos.XY() - pp->GetActor()->spr.pos.XY(); // update to the new x y position - pp->actor->spr.pos.XY() = over_act->spr.pos.XY() - plActor->user.pos.XY(); + pp->GetActor()->spr.pos.XY() = over_act->spr.pos.XY() - plActor->user.pos.XY(); auto over = over_act->sector(); auto under = under_act->sector(); - if (GetOverlapSector(pp->actor->getPosWithOffsetZ(), &over, &under)) + if (GetOverlapSector(pp->GetActor()->getPosWithOffsetZ(), &over, &under)) { pp->setcursector(over); } @@ -4127,7 +4127,7 @@ void DoPlayerDivePalette(PLAYER* pp) void DoPlayerBeginDive(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -4144,7 +4144,7 @@ void DoPlayerBeginDive(PLAYER* pp) pp->Reverb = 140; } - SpawnSplash(pp->actor); + SpawnSplash(pp->GetActor()); DoPlayerWarpToUnderwater(pp); OperateTripTrigger(pp); @@ -4179,7 +4179,7 @@ void DoPlayerBeginDive(PLAYER* pp) void DoPlayerBeginDiveNoWarp(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -4244,7 +4244,7 @@ void DoPlayerStopDiveNoWarp(PLAYER* pp) pp->Flags &= ~(PF_DIVING|PF_DIVING_IN_LAVA); DoPlayerDivePalette(pp); DoPlayerNightVisionPalette(pp); - pp->actor->spr.cstat &= ~(CSTAT_SPRITE_YCENTER); + pp->GetActor()->spr.cstat &= ~(CSTAT_SPRITE_YCENTER); if (pp == Player + screenpeek) { COVER_SetReverb(0); @@ -4262,7 +4262,7 @@ void DoPlayerStopDiveNoWarp(PLAYER* pp) void DoPlayerStopDive(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); if (Prediction) return; @@ -4346,7 +4346,7 @@ void DoPlayerDiveMeter(PLAYER* pp) void DoPlayerDive(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); auto sectu = pp->cursector; // whenever your view is not in a water area @@ -4400,12 +4400,12 @@ void DoPlayerDive(PLAYER* pp) if (pp->z_speed < 0 && FAF_ConnectArea(pp->cursector)) { - if (pp->actor->getOffsetZ() < pp->cursector->ceilingz + 10) + if (pp->GetActor()->getOffsetZ() < pp->cursector->ceilingz + 10) { auto sect = pp->cursector; // check for sector above to see if it is an underwater sector also - updatesectorz(DVector3(pp->actor->getPosWithOffsetZ(), pp->cursector->ceilingz - 8), §); + updatesectorz(DVector3(pp->GetActor()->getPosWithOffsetZ(), pp->cursector->ceilingz - 8), §); if (!SectorIsUnderwaterArea(sect)) { @@ -4426,7 +4426,7 @@ void DoPlayerDive(PLAYER* pp) if (sectu && (sectu->number == 0 || (sectu->flags & SECTFU_CANT_SURFACE))) { // for room over room water the hiz will be the top rooms ceiling - if (pp->actor->getOffsetZ() < pp->hiz + pp->p_ceiling_dist) + if (pp->GetActor()->getOffsetZ() < pp->hiz + pp->p_ceiling_dist) { pp->posZset(pp->hiz + pp->p_ceiling_dist); } @@ -4437,7 +4437,7 @@ void DoPlayerDive(PLAYER* pp) // !JIM! FRANK - I added !pp->hiActor so that you don't warp to surface when // there is a sprite above you since getzrange returns a hiz < ceiling height // if you are clipping into a sprite and not the ceiling. - if (pp->actor->getOffsetZ() < pp->hiz + 4 && !pp->highActor) + if (pp->GetActor()->getOffsetZ() < pp->hiz + 4 && !pp->highActor) { DoPlayerStopDive(pp); return; @@ -4445,7 +4445,7 @@ void DoPlayerDive(PLAYER* pp) } // Only get so close to the floor - if (pp->actor->getOffsetZ() >= pp->loz - PLAYER_DIVE_HEIGHTF) + if (pp->GetActor()->getOffsetZ() >= pp->loz - PLAYER_DIVE_HEIGHTF) { pp->posZset(pp->loz - PLAYER_DIVE_HEIGHTF); } @@ -4472,13 +4472,13 @@ void DoPlayerDive(PLAYER* pp) } // Reverse bobbing when getting close to the floor - if (pp->actor->getOffsetZ() + pp->pbob_amt >= pp->loz - PLAYER_DIVE_HEIGHTF) + if (pp->GetActor()->getOffsetZ() + pp->pbob_amt >= pp->loz - PLAYER_DIVE_HEIGHTF) { pp->bob_ndx = NORM_ANGLE(pp->bob_ndx + ((1024 + 512) - pp->bob_ndx) * 2); DoPlayerSpriteBob(pp, PLAYER_DIVE_HEIGHTF, PLAYER_DIVE_BOB_AMT, 3); } // Reverse bobbing when getting close to the ceiling - if (pp->actor->getOffsetZ() + pp->pbob_amt < pp->hiz + pp->p_ceiling_dist) + if (pp->GetActor()->getOffsetZ() + pp->pbob_amt < pp->hiz + pp->p_ceiling_dist) { pp->bob_ndx = NORM_ANGLE(pp->bob_ndx + ((512) - pp->bob_ndx) * 2); DoPlayerSpriteBob(pp, PLAYER_DIVE_HEIGHTF, PLAYER_DIVE_BOB_AMT, 3); @@ -4494,7 +4494,7 @@ void DoPlayerDive(PLAYER* pp) (PLAYER_MOVING(pp) && (RANDOM_P2(1024<<5)>>5) < 64)) { PlaySound(DIGI_BUBBLES, pp, v3df_none); - auto bubble = SpawnBubble(pp->actor); + auto bubble = SpawnBubble(pp->GetActor()); if (bubble != nullptr) { // back it up a bit to get it out of your face @@ -4516,7 +4516,7 @@ void DoPlayerDive(PLAYER* pp) int DoPlayerTestPlaxDeath(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); // landed on a paralax floor if (pp->lo_sectp && (pp->lo_sectp->floorstat & CSTAT_SECTOR_SKY)) @@ -4546,12 +4546,12 @@ void DoPlayerCurrent(PLAYER* pp) auto vect = sectu->angle.ToVector() / 256. * sectu->speed * synctics; // 16384 >> 4 - Beware of clipmove's odd format for vect! - push_ret = pushmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, pp->actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); + push_ret = pushmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, pp->GetActor()->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); if (push_ret < 0) { if (!(pp->Flags & PF_DEAD)) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); PlayerUpdateHealth(pp, -plActor->user.Health); // Make sure he dies! PlayerCheckDeath(pp, nullptr); @@ -4562,15 +4562,15 @@ void DoPlayerCurrent(PLAYER* pp) return; } Collision coll; - clipmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, vect, pp->actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER, coll); + clipmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, vect, pp->GetActor()->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER, coll); PlayerCheckValidMove(pp); - pushmove(pp->actor->spr.pos.XY(), pp->actor->getOffsetZ(), &pp->cursector, pp->actor->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); + pushmove(pp->GetActor()->spr.pos.XY(), pp->GetActor()->getOffsetZ(), &pp->cursector, pp->GetActor()->clipdist, pp->p_ceiling_dist, pp->p_floor_dist, CLIPMASK_PLAYER); if (push_ret < 0) { if (!(pp->Flags & PF_DEAD)) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); PlayerUpdateHealth(pp, -plActor->user.Health); // Make sure he dies! PlayerCheckDeath(pp, nullptr); @@ -4590,7 +4590,7 @@ void DoPlayerCurrent(PLAYER* pp) void DoPlayerFireOutWater(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -4612,7 +4612,7 @@ void DoPlayerFireOutWater(PLAYER* pp) void DoPlayerFireOutDeath(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -4632,7 +4632,7 @@ void DoPlayerFireOutDeath(PLAYER* pp) void DoPlayerBeginWade(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); // landed on a paralax floor? if (DoPlayerTestPlaxDeath(pp)) @@ -4649,7 +4649,7 @@ void DoPlayerBeginWade(PLAYER* pp) DoPlayerFireOutWater(pp); if (pp->jump_speed > 100) - SpawnSplash(pp->actor); + SpawnSplash(pp->GetActor()); // fix it so that you won't go under water unless you hit the water at a // certain speed @@ -4670,7 +4670,7 @@ void DoPlayerBeginWade(PLAYER* pp) void DoPlayerWade(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); DoPlayerFireOutWater(pp); @@ -4761,7 +4761,7 @@ void DoPlayerWade(PLAYER* pp) } // If the floor is far below you, fall hard instead of adjusting height - if (abs(pp->actor->getOffsetZ() - pp->loz) > PLAYER_HEIGHTF + PLAYER_FALL_HEIGHTF) + if (abs(pp->GetActor()->getOffsetZ() - pp->loz) > PLAYER_HEIGHTF + PLAYER_FALL_HEIGHTF) { pp->jump_speed = 256; DoPlayerBeginFall(pp); @@ -4778,7 +4778,7 @@ void DoPlayerWade(PLAYER* pp) } // If the floor is far below you, fall hard instead of adjusting height - if (abs(pp->actor->getOffsetZ() - pp->loz) > PLAYER_HEIGHTF + PLAYER_FALL_HEIGHTF) + if (abs(pp->GetActor()->getOffsetZ() - pp->loz) > PLAYER_HEIGHTF + PLAYER_FALL_HEIGHTF) { pp->jump_speed = Z(1); DoPlayerBeginFall(pp); @@ -4815,7 +4815,7 @@ void DoPlayerWade(PLAYER* pp) void DoPlayerBeginOperateVehicle(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->p_floor_dist = PLAYER_RUN_FLOOR_DIST; pp->p_ceiling_dist = PLAYER_RUN_CEILING_DIST; @@ -4840,7 +4840,7 @@ void DoPlayerBeginOperateVehicle(PLAYER* pp) void DoPlayerBeginOperateTurret(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); pp->p_floor_dist = PLAYER_RUN_FLOOR_DIST; pp->p_ceiling_dist = PLAYER_RUN_CEILING_DIST; @@ -4957,12 +4957,12 @@ void DoPlayerBeginOperate(PLAYER* pp) } pp->sop = pp->sop_control = sop; - sop->controller = pp->actor; + sop->controller = pp->GetActor(); - pp->actor->PrevAngles.Yaw = pp->actor->spr.Angles.Yaw = sop->ang; - pp->actor->spr.pos.XY() = sop->pmid.XY(); - updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); - calcSlope(pp->cursector, pp->actor->getPosWithOffsetZ(), &cz, &fz); + pp->GetActor()->PrevAngles.Yaw = pp->GetActor()->spr.Angles.Yaw = sop->ang; + pp->GetActor()->spr.pos.XY() = sop->pmid.XY(); + updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); + calcSlope(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), &cz, &fz); pp->posZset(fz - PLAYER_HEIGHTF); pp->Flags &= ~(PF_CRAWLING|PF_JUMPING|PF_FALLING); @@ -5028,7 +5028,7 @@ void DoPlayerBeginRemoteOperate(PLAYER* pp, SECTOR_OBJECT* sop) int i; pp->sop_remote = pp->sop = pp->sop_control = sop; - sop->controller = pp->actor; + sop->controller = pp->GetActor(); // won't operate - broken if (sop->max_damage != -9999 && sop->max_damage <= 0) @@ -5049,10 +5049,10 @@ void DoPlayerBeginRemoteOperate(PLAYER* pp, SECTOR_OBJECT* sop) auto save_sect = pp->cursector; - pp->actor->PrevAngles.Yaw = pp->actor->spr.Angles.Yaw = sop->ang; - pp->actor->spr.pos.XY() = sop->pmid.XY(); - updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); - calcSlope(pp->cursector, pp->actor->getPosWithOffsetZ(), &cz, &fz); + pp->GetActor()->PrevAngles.Yaw = pp->GetActor()->spr.Angles.Yaw = sop->ang; + pp->GetActor()->spr.pos.XY() = sop->pmid.XY(); + updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); + calcSlope(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), &cz, &fz); pp->posZset(fz - PLAYER_HEIGHTF); pp->Flags &= ~(PF_CRAWLING|PF_JUMPING|PF_FALLING); @@ -5111,7 +5111,7 @@ void PlayerToRemote(PLAYER* pp) pp->remote.cursectp = pp->cursector; pp->remote.lastcursectp = pp->lastcursector; - pp->remote.pos = pp->actor->getPosWithOffsetZ(); + pp->remote.pos = pp->GetActor()->getPosWithOffsetZ(); pp->remote.vect = pp->vect; pp->remote.ovect = pp->ovect; @@ -5123,7 +5123,7 @@ void RemoteToPlayer(PLAYER* pp) pp->setcursector(pp->remote.cursectp); pp->lastcursector = pp->remote.lastcursectp; - pp->actor->spr.pos = pp->remote.pos.plusZ(-pp->actor->viewzoffset); + pp->GetActor()->spr.pos = pp->remote.pos.plusZ(-pp->GetActor()->viewzoffset); pp->vect = pp->remote.vect; pp->ovect = pp->remote.ovect; @@ -5136,7 +5136,7 @@ void PlayerRemoteReset(PLAYER* pp, sectortype* sect) pp->lastcursector = pp->cursector; auto rsp = pp->remoteActor; - pp->actor->spr.pos.XY() = rsp->spr.pos.XY(); + pp->GetActor()->spr.pos.XY() = rsp->spr.pos.XY(); pp->posZset(sect->floorz - PLAYER_HEIGHTF); pp->vect.Zero(); @@ -5170,7 +5170,7 @@ void DoPlayerStopOperate(PLAYER* pp) if (pp->sop_remote) { DSWActor* rsp = pp->remoteActor; - pp->actor->PrevAngles.Yaw = pp->actor->spr.Angles.Yaw = rsp && TEST_BOOL1(rsp) ? rsp->spr.Angles.Yaw : (pp->sop_remote->pmid.XY() - pp->actor->spr.pos.XY()).Angle(); + pp->GetActor()->PrevAngles.Yaw = pp->GetActor()->spr.Angles.Yaw = rsp && TEST_BOOL1(rsp) ? rsp->spr.Angles.Yaw : (pp->sop_remote->pmid.XY() - pp->GetActor()->spr.pos.XY()).Angle(); } if (pp->sop_control) @@ -5296,7 +5296,7 @@ void DoPlayerDeathJump(PLAYER* pp) } // adjust height by jump speed - pp->actor->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; + pp->GetActor()->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; // if player gets to close the ceiling while jumping //if (pp->posz < pp->hiz + Z(4)) @@ -5333,7 +5333,7 @@ void DoPlayerDeathFall(PLAYER* pp) pp->jump_speed += PLAYER_DEATH_GRAV; // adjust player height by jump speed - pp->actor->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; + pp->GetActor()->spr.pos.Z += pp->jump_speed * JUMP_FACTOR; if (pp->lo_sectp && (pp->lo_sectp->extra & SECTFX_SINK)) { @@ -5345,7 +5345,7 @@ void DoPlayerDeathFall(PLAYER* pp) if (PlayerFloorHit(pp, loz - PLAYER_DEATH_HEIGHTF)) { if (loz != pp->loz) - SpawnSplash(pp->actor); + SpawnSplash(pp->GetActor()); if (RandomRange(1000) > 500) PlaySound(DIGI_BODYFALL1, pp, v3df_dontpan); @@ -5387,7 +5387,7 @@ char *KilledPlayerMessage(PLAYER* pp, PLAYER* killer) const char *p1 = pp->PlayerName; const char *p2 = killer->PlayerName; - if (pp->HitBy == killer->actor) + if (pp->HitBy == killer->GetActor()) { sprintf(ds,"%s was killed by %s.",p1,p2); return ds; @@ -5509,7 +5509,7 @@ void DoPlayerBeginDie(PLAYER* pp) short bak; int choosesnd = 0; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); static void (*PlayerDeathFunc[MAX_PLAYER_DEATHS]) (PLAYER*) = { @@ -5545,7 +5545,7 @@ void DoPlayerBeginDie(PLAYER* pp) pp->Flags &= ~(PF_JUMPING|PF_FALLING|PF_DIVING|PF_FLYING|PF_CLIMBING|PF_CRAWLING); - ActorCoughItem(pp->actor); + ActorCoughItem(pp->GetActor()); if (numplayers > 1) { @@ -5569,7 +5569,7 @@ void DoPlayerBeginDie(PLAYER* pp) if (gNet.TeamPlay) { // playing team play - if (pp->actor->user.spal == killer->user.spal) + if (pp->GetActor()->user.spal == killer->user.spal) { // Killed your team member PlayerUpdateKills(pp, -1); @@ -5627,9 +5627,9 @@ void DoPlayerBeginDie(PLAYER* pp) pp->Flags |= (PF_JUMPING); plActor->user.ID = NINJA_DEAD; pp->jump_speed = -200; - NewStateGroup(pp->actor, sg_PlayerDeath); - DoFindGround(pp->actor); - DoBeginJump(pp->actor); + NewStateGroup(pp->GetActor(), sg_PlayerDeath); + DoFindGround(pp->GetActor()); + DoBeginJump(pp->GetActor()); plActor->user.jump_speed = -300; break; } @@ -5641,15 +5641,15 @@ void DoPlayerBeginDie(PLAYER* pp) pp->Flags |= (PF_JUMPING); plActor->user.ID = NINJA_DEAD; pp->jump_speed = -300; - NewStateGroup(pp->actor, sg_PlayerDeath); + NewStateGroup(pp->GetActor(), sg_PlayerDeath); //pp->ceiling_dist = Z(0); //pp->floor_dist = Z(0); plActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); plActor->user.ceiling_dist = (10); plActor->user.floor_dist = (0); - DoFindGround(pp->actor); - DoBeginJump(pp->actor); + DoFindGround(pp->GetActor()); + DoBeginJump(pp->GetActor()); plActor->user.jump_speed = -400; break; case PLAYER_DEATH_CRUMBLE: @@ -5659,13 +5659,13 @@ void DoPlayerBeginDie(PLAYER* pp) pp->Flags |= (PF_DEAD_HEAD | PF_JUMPING); pp->jump_speed = -300; plActor->user.slide_vel = 0; - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); plActor->spr.cstat |= (CSTAT_SPRITE_YCENTER); - NewStateGroup(pp->actor, sg_PlayerHeadFly); + NewStateGroup(pp->GetActor(), sg_PlayerHeadFly); plActor->user.ID = NINJA_Head_R0; plActor->spr.scale = DVector2(0.75, 0.75); // Blood fountains - InitBloodSpray(pp->actor,true,105); + InitBloodSpray(pp->GetActor(),true,105); break; case PLAYER_DEATH_EXPLODE: @@ -5673,15 +5673,15 @@ void DoPlayerBeginDie(PLAYER* pp) pp->Flags |= (PF_DEAD_HEAD | PF_JUMPING); pp->jump_speed = -650; - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); plActor->spr.cstat |= (CSTAT_SPRITE_YCENTER); - NewStateGroup(pp->actor, sg_PlayerHeadFly); + NewStateGroup(pp->GetActor(), sg_PlayerHeadFly); plActor->user.ID = NINJA_Head_R0; plActor->spr.scale = DVector2(0.75, 0.75); // Blood fountains - InitBloodSpray(pp->actor,true,-1); - InitBloodSpray(pp->actor,true,-1); - InitBloodSpray(pp->actor,true,-1); + InitBloodSpray(pp->GetActor(),true,-1); + InitBloodSpray(pp->GetActor(),true,-1); + InitBloodSpray(pp->GetActor(),true,-1); break; case PLAYER_DEATH_SQUISH: @@ -5690,13 +5690,13 @@ void DoPlayerBeginDie(PLAYER* pp) pp->Flags |= (PF_DEAD_HEAD | PF_JUMPING); pp->jump_speed = 200; plActor->user.slide_vel = 50; - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); plActor->spr.cstat |= (CSTAT_SPRITE_YCENTER); - NewStateGroup(pp->actor, sg_PlayerHeadFly); + NewStateGroup(pp->GetActor(), sg_PlayerHeadFly); plActor->user.ID = NINJA_Head_R0; plActor->spr.scale = DVector2(0.75, 0.75); // Blood fountains - InitBloodSpray(pp->actor,true,105); + InitBloodSpray(pp->GetActor(),true,105); break; } @@ -5715,7 +5715,7 @@ void DoPlayerBeginDie(PLAYER* pp) static inline void DoPlayerDeathHoriz(PLAYER* pp, const DAngle target, const double speed) { - auto& pitch = pp->actor->spr.Angles.Pitch; + auto& pitch = pp->GetActor()->spr.Angles.Pitch; auto pspeed = DAngle::fromDeg(speed); if (pitch < target) @@ -5737,10 +5737,10 @@ static inline void DoPlayerDeathHoriz(PLAYER* pp, const DAngle target, const dou void DoPlayerDeathZrange(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); // make sure we don't land on a regular sprite - DoFindGround(pp->actor); + DoFindGround(pp->GetActor()); // update player values with results from DoFindGround pp->loz = plActor->user.loz; @@ -5765,10 +5765,10 @@ void DoPlayerDeathHurl(PLAYER* pp) pp->Flags |= (PF_HEAD_CONTROL); - NewStateGroup(pp->actor, sg_PlayerHeadHurl); + NewStateGroup(pp->GetActor(), sg_PlayerHeadHurl); if (MoveSkip4 == 0) { - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); if (RandomRange(1000) > 400) PlayerSound(DIGI_DHVOMIT, v3df_dontpan|v3df_follow,pp); } @@ -5778,7 +5778,7 @@ void DoPlayerDeathHurl(PLAYER* pp) } if (!(pp->Flags & (PF_JUMPING|PF_FALLING))) - NewStateGroup(pp->actor, sg_PlayerHead); + NewStateGroup(pp->GetActor(), sg_PlayerHead); } @@ -5797,7 +5797,7 @@ void DoPlayerDeathFollowKiller(PLAYER* pp) // allow turning if (pp->Flags & (PF_DEAD_HEAD|PF_HEAD_CONTROL)) { - pp->actor->spr.Angles.Yaw += DAngle::fromDeg(pp->input.avel); + pp->GetActor()->spr.Angles.Yaw += DAngle::fromDeg(pp->input.avel); UpdatePlayerSpriteAngle(pp); } @@ -5805,9 +5805,9 @@ void DoPlayerDeathFollowKiller(PLAYER* pp) DSWActor* killer = pp->KillerActor; if (killer) { - if (FAFcansee(ActorVectOfTop(killer), killer->sector(), pp->actor->getPosWithOffsetZ(), pp->cursector)) + if (FAFcansee(ActorVectOfTop(killer), killer->sector(), pp->GetActor()->getPosWithOffsetZ(), pp->cursector)) { - pp->actor->spr.Angles.Yaw += deltaangle(pp->actor->spr.Angles.Yaw, (killer->spr.pos.XY() - pp->actor->spr.pos.XY()).Angle()) * (1. / 16.); + pp->GetActor()->spr.Angles.Yaw += deltaangle(pp->GetActor()->spr.Angles.Yaw, (killer->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).Angle()) * (1. / 16.); } } } @@ -5820,7 +5820,7 @@ void DoPlayerDeathFollowKiller(PLAYER* pp) void DoPlayerDeathCheckKeys(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (pp->input.actions & SB_OPEN) { @@ -5829,7 +5829,7 @@ void DoPlayerDeathCheckKeys(PLAYER* pp) if (PlayerFloorHit(pp, pp->loz - PLAYER_HEIGHTF)) { if (pp->DeathType == PLAYER_DEATH_FLIP || pp->DeathType == PLAYER_DEATH_RIPPER) - QueueLoWangs(pp->actor); + QueueLoWangs(pp->GetActor()); } else { @@ -5908,7 +5908,7 @@ void DoPlayerHeadDebris(PLAYER* pp) void DoPlayerDeathCheckKick(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); unsigned stat; for (stat = 0; stat < SIZ(StatDamageList); stat++) @@ -5916,7 +5916,7 @@ void DoPlayerDeathCheckKick(PLAYER* pp) SWStatIterator it(StatDamageList[stat]); while (auto itActor = it.Next()) { - if (itActor == pp->actor) + if (itActor == pp->GetActor()) break; // don't set off mine @@ -5935,9 +5935,9 @@ void DoPlayerDeathCheckKick(PLAYER* pp) plActor->user.slide_vel = itActor->vel.X * 2; plActor->user.Flags &= ~(SPR_BOUNCE); pp->jump_speed = -500; - NewStateGroup(pp->actor, sg_PlayerHeadFly); + NewStateGroup(pp->GetActor(), sg_PlayerHeadFly); pp->Flags |= (PF_JUMPING); - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); } } } @@ -5951,9 +5951,9 @@ void DoPlayerDeathCheckKick(PLAYER* pp) plActor->user.slide_vel = 62.5; plActor->user.Flags &= ~(SPR_BOUNCE); pp->jump_speed = -100; - NewStateGroup(pp->actor, sg_PlayerHeadFly); + NewStateGroup(pp->GetActor(), sg_PlayerHeadFly); pp->Flags |= (PF_JUMPING); - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); } } @@ -5966,11 +5966,11 @@ void DoPlayerDeathCheckKick(PLAYER* pp) void DoPlayerDeathMoveHead(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); auto davec = plActor->user.slide_ang.ToVector() * plActor->user.slide_vel; - plActor->user.coll = move_sprite(pp->actor, DVector3(davec, 0), 16, 16, 1, synctics); + plActor->user.coll = move_sprite(pp->GetActor(), DVector3(davec, 0), 16, 16, 1, synctics); { switch (plActor->user.coll.type) { @@ -5986,7 +5986,7 @@ void DoPlayerDeathMoveHead(PLAYER* pp) DAngle dang = deltaangle(wall_ang, plActor->user.slide_ang); plActor->user.slide_ang = wall_ang + DAngle180 - dang; - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); break; } case kHitWall: @@ -5995,29 +5995,29 @@ void DoPlayerDeathMoveHead(PLAYER* pp) DAngle dang = deltaangle(wall_ang, plActor->user.slide_ang); plActor->user.slide_ang = wall_ang + DAngle180 - dang; - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); break; } } } - pp->actor->spr.pos.XY() = plActor->spr.pos.XY(); + pp->GetActor()->spr.pos.XY() = plActor->spr.pos.XY(); pp->setcursector(plActor->sector()); // try to stay in valid area - death sometimes throws you out of the map auto sect = pp->cursector; - updatesector(pp->actor->getPosWithOffsetZ(), §); + updatesector(pp->GetActor()->getPosWithOffsetZ(), §); if (sect == nullptr) { pp->cursector = pp->lv_sector; - ChangeActorSect(pp->actor, pp->lv_sector); - pp->actor->spr.pos.XY() = pp->lv.XY(); - plActor->spr.pos.XY() = pp->actor->spr.pos.XY(); + ChangeActorSect(pp->GetActor(), pp->lv_sector); + pp->GetActor()->spr.pos.XY() = pp->lv.XY(); + plActor->spr.pos.XY() = pp->GetActor()->spr.pos.XY(); } else { pp->lv_sector = sect; - pp->lv.XY() = pp->actor->spr.pos.XY(); + pp->lv.XY() = pp->GetActor()->spr.pos.XY(); } } @@ -6066,7 +6066,7 @@ void DoPlayerDeathFlip(PLAYER* pp) void DoPlayerDeathDrown(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); if (Prediction) return; @@ -6086,7 +6086,7 @@ void DoPlayerDeathDrown(PLAYER* pp) actor->spr.pos.Z += 2; // Stick like glue when you hit the ground - if (pp->actor->getOffsetZ() > pp->loz - PLAYER_DEATH_HEIGHTF) + if (pp->GetActor()->getOffsetZ() > pp->loz - PLAYER_DEATH_HEIGHTF) { pp->posZset(pp->loz - PLAYER_DEATH_HEIGHTF); pp->Flags &= ~(PF_FALLING); @@ -6107,7 +6107,7 @@ void DoPlayerDeathDrown(PLAYER* pp) void DoPlayerDeathBounce(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -6115,7 +6115,7 @@ void DoPlayerDeathBounce(PLAYER* pp) if (pp->lo_sectp && (pp->lo_sectp->extra & SECTFX_SINK)) { plActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); - NewStateGroup(pp->actor, sg_PlayerHead); + NewStateGroup(pp->GetActor(), sg_PlayerHead); plActor->user.slide_vel = 0; plActor->user.Flags |= (SPR_BOUNCE); @@ -6128,7 +6128,7 @@ void DoPlayerDeathBounce(PLAYER* pp) plActor->user.slide_vel *= 0.25; plActor->user.slide_ang = RandomAngle(11.25) - DAngle22_5 / 4; pp->Flags |= (PF_JUMPING); - SpawnShrap(pp->actor, nullptr); + SpawnShrap(pp->GetActor(), nullptr); } //--------------------------------------------------------------------------- @@ -6139,7 +6139,7 @@ void DoPlayerDeathBounce(PLAYER* pp) void DoPlayerDeathCrumble(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -6169,7 +6169,7 @@ void DoPlayerDeathCrumble(PLAYER* pp) } plActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); - NewStateGroup(pp->actor, sg_PlayerHead); + NewStateGroup(pp->GetActor(), sg_PlayerHead); } else { @@ -6196,7 +6196,7 @@ void DoPlayerDeathCrumble(PLAYER* pp) void DoPlayerDeathExplode(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (Prediction) return; @@ -6226,7 +6226,7 @@ void DoPlayerDeathExplode(PLAYER* pp) } plActor->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); - NewStateGroup(pp->actor, sg_PlayerHead); + NewStateGroup(pp->GetActor(), sg_PlayerHead); } else { @@ -6254,7 +6254,7 @@ void DoPlayerDeathExplode(PLAYER* pp) void DoPlayerBeginRun(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); // Crawl if in small aread automatically if (DoPlayerTestCrawl(pp)) @@ -6294,7 +6294,7 @@ void DoPlayerBeginRun(PLAYER* pp) void DoPlayerRun(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); if (SectorIsUnderwaterArea(pp->cursector)) { @@ -6355,7 +6355,7 @@ void DoPlayerRun(PLAYER* pp) } else if ((pp->cursector->extra & SECTFX_TRIGGER)) { - auto sActor = FindNearSprite(pp->actor, STAT_TRIGGER); + auto sActor = FindNearSprite(pp->GetActor(), STAT_TRIGGER); if (sActor && SP_TAG5(sActor) == TRIGGER_TYPE_REMOTE_SO) { pp->remoteActor = sActor; @@ -6515,7 +6515,7 @@ void MoveSkipSavePos(void) pp = Player + pnum; pp->Angles.resetCameraAngles(); - pp->actor->backuploc(); + pp->GetActor()->backuploc(); pp->obob_z = pp->bob_z; pp->opbob_amt = pp->pbob_amt; } @@ -6648,7 +6648,7 @@ void PlayerGlobal(PLAYER* pp) { if (!(pp->Flags & PF_DEAD)) { - PlayerUpdateHealth(pp, -pp->actor->user.Health); // Make sure he dies! + PlayerUpdateHealth(pp, -pp->GetActor()->user.Health); // Make sure he dies! PlayerCheckDeath(pp, nullptr); if (pp->Flags & (PF_DEAD)) @@ -6797,7 +6797,7 @@ void domovethings(const ticcmd_t* playercmds) // auto tracking mode for single player multi-game if (numplayers <= 1 && PlayerTrackingMode && pnum == screenpeek && screenpeek != myconnectindex) { - Player[screenpeek].actor->spr.Angles.Yaw = (Player[myconnectindex].actor->spr.pos.XY() - Player[screenpeek].actor->spr.pos.XY()).Angle(); + Player[screenpeek].GetActor()->spr.Angles.Yaw = (Player[myconnectindex].GetActor()->spr.pos.XY() - Player[screenpeek].GetActor()->spr.pos.XY()).Angle(); } if (!(pp->Flags & PF_DEAD)) @@ -6817,7 +6817,7 @@ void domovethings(const ticcmd_t* playercmds) // convert fvel/svel into a vector before performing actions. const auto fvel = pp->input.fvel + pp->input.uvel * (pp->DoPlayerAction == DoPlayerClimb); const auto svel = pp->input.svel; - const auto velvect = DVector2(fvel, svel).Rotated(pp->actor->spr.Angles.Yaw); + const auto velvect = DVector2(fvel, svel).Rotated(pp->GetActor()->spr.Angles.Yaw); pp->input.fvel = (float)velvect.X; pp->input.svel = (float)velvect.Y; @@ -6827,7 +6827,7 @@ void domovethings(const ticcmd_t* playercmds) pSpriteControl(pp); - PlayerStateControl(pp->actor); + PlayerStateControl(pp->GetActor()); DoPlayerSectorUpdatePostMove(pp); PlayerGlobal(pp); @@ -6944,7 +6944,7 @@ int SearchSpawnPosition(PLAYER* pp) if (opp != pp) // don't test for yourself { - if ((spawn_sprite->spr.pos.XY() - opp->actor->spr.pos.XY()).Length() < 62.25) + if ((spawn_sprite->spr.pos.XY() - opp->GetActor()->spr.pos.XY()).Length() < 62.25) { blocked = true; break; @@ -7029,12 +7029,12 @@ void PlayerSpawnPosition(PLAYER* pp) pp->setcursector(spawn_sprite->sector()); - if (pp->actor) + if (pp->GetActor()) { - pp->actor->spr.Angles.Yaw = spawn_sprite->spr.Angles.Yaw; - pp->actor->spr.pos = spawn_sprite->spr.pos; - pp->actor->viewzoffset = spawn_sprite->viewzoffset; - pp->actor->backuploc(); + pp->GetActor()->spr.Angles.Yaw = spawn_sprite->spr.Angles.Yaw; + pp->GetActor()->spr.pos = spawn_sprite->spr.pos; + pp->GetActor()->viewzoffset = spawn_sprite->viewzoffset; + pp->GetActor()->backuploc(); } } @@ -7344,25 +7344,25 @@ DEFINE_FIELD_X(SWPlayer, PLAYER, WpnReloadState) DEFINE_ACTION_FUNCTION(_SWPlayer, WeaponNum) { PARAM_SELF_STRUCT_PROLOGUE(PLAYER); - ACTION_RETURN_INT(self->actor->user.WeaponNum); + ACTION_RETURN_INT(self->GetActor()->user.WeaponNum); } DEFINE_ACTION_FUNCTION(_SWPlayer, Health) { PARAM_SELF_STRUCT_PROLOGUE(PLAYER); - ACTION_RETURN_INT(self->actor->user.Health); + ACTION_RETURN_INT(self->GetActor()->user.Health); } DEFINE_ACTION_FUNCTION(_SWPlayer, MaxUserHealth) { PARAM_SELF_STRUCT_PROLOGUE(PLAYER); - ACTION_RETURN_INT(self->actor->user.MaxHealth); + ACTION_RETURN_INT(self->GetActor()->user.MaxHealth); } DEFINE_ACTION_FUNCTION(_SWPlayer, GetBuildAngle) { PARAM_SELF_STRUCT_PROLOGUE(PLAYER); - ACTION_RETURN_INT(self->actor->spr.Angles.Yaw.Buildang()); + ACTION_RETURN_INT(self->GetActor()->spr.Angles.Yaw.Buildang()); } DEFINE_ACTION_FUNCTION(_SW, WeaponMaxAmmo) diff --git a/source/games/sw/src/quake.cpp b/source/games/sw/src/quake.cpp index 1e6711518..0094d5976 100644 --- a/source/games/sw/src/quake.cpp +++ b/source/games/sw/src/quake.cpp @@ -195,7 +195,7 @@ void QuakeViewChange(PLAYER* pp, DVector3& tpos, DAngle& tang) SWStatIterator it(STAT_QUAKE_ON); while ((actor = it.Next())) { - auto dist = (pp->actor->getPosWithOffsetZ() - actor->spr.pos).Length(); + auto dist = (pp->GetActor()->getPosWithOffsetZ() - actor->spr.pos).Length(); // shake whole level if (QUAKE_TestDontTaper(actor)) @@ -277,7 +277,7 @@ void SpawnQuake(sectortype* sect, const DVector3& pos, int tics, int amt, int ra bool SetQuake(PLAYER* pp, short tics, short amt) { - SpawnQuake(pp->cursector, pp->actor->getPosWithOffsetZ(), tics, amt, 30000); + SpawnQuake(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), tics, amt, 30000); return false; } @@ -295,7 +295,7 @@ int SetGunQuake(DSWActor* actor) int SetPlayerQuake(PLAYER* pp) { - SpawnQuake(pp->cursector, pp->actor->getPosWithOffsetZ(), 40, 8, 40000); + SpawnQuake(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), 40, 8, 40000); return 0; } diff --git a/source/games/sw/src/sector.cpp b/source/games/sw/src/sector.cpp index 245428aff..0c8c248c6 100644 --- a/source/games/sw/src/sector.cpp +++ b/source/games/sw/src/sector.cpp @@ -1518,7 +1518,7 @@ int OperateSprite(DSWActor* actor, short player_is_operating) { pp = GlobPlayerP; - if (!FAFcansee(pp->actor->getPosWithOffsetZ(), pp->cursector, actor->spr.pos.plusZ(ActorSizeZ(actor) * -0.5), actor->sector())) + if (!FAFcansee(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, actor->spr.pos.plusZ(ActorSizeZ(actor) * -0.5), actor->sector())) return false; } @@ -1996,9 +1996,9 @@ void OperateTripTrigger(PLAYER* pp) { if (actor->user.Flags & (SPR_WAIT_FOR_TRIGGER)) { - if ((actor->spr.pos.XY() - pp->actor->spr.pos.XY()).Length() < dist) + if ((actor->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).Length() < dist) { - actor->user.targetActor = pp->actor; + actor->user.targetActor = pp->GetActor(); actor->user.Flags &= ~(SPR_WAIT_FOR_TRIGGER); } } @@ -2076,7 +2076,7 @@ void OperateContinuousTrigger(PLAYER* pp) short PlayerTakeSectorDamage(PLAYER* pp) { auto sectu = pp->cursector; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); // the calling routine must make sure sectu exists if ((actor->user.DamageTics -= synctics) < 0) @@ -2109,7 +2109,7 @@ bool NearThings(PLAYER* pp) return false; } - neartag(pp->actor->getPosWithOffsetZ(), pp->cursector, pp->actor->spr.Angles.Yaw, near, 64., NT_Lotag | NT_Hitag); + neartag(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, pp->GetActor()->spr.Angles.Yaw, near, 64., NT_Lotag | NT_Hitag); // hit a sprite? Check to see if it has sound info in it! @@ -2142,12 +2142,12 @@ bool NearThings(PLAYER* pp) { HitInfo hit{}; - FAFhitscan(pp->actor->getPosWithOffsetZ().plusZ(-30), pp->cursector, DVector3(pp->actor->spr.Angles.Yaw.ToVector() * 1024, 0), hit, CLIPMASK_MISSILE); + FAFhitscan(pp->GetActor()->getPosWithOffsetZ().plusZ(-30), pp->cursector, DVector3(pp->GetActor()->spr.Angles.Yaw.ToVector() * 1024, 0), hit, CLIPMASK_MISSILE); if (hit.hitSector == nullptr) return false; - if ((hit.hitpos.XY() - pp->actor->spr.pos.XY()).Length() > 93.75) + if ((hit.hitpos.XY() - pp->GetActor()->spr.pos.XY()).Length() > 93.75) return false; // hit a sprite? @@ -2190,7 +2190,7 @@ void NearTagList(NEAR_TAG_INFO* ntip, PLAYER* pp, double z, double dist, int typ HitInfo near; - neartag(DVector3(pp->actor->spr.pos.XY(), z), pp->cursector, pp->actor->spr.Angles.Yaw, near, dist, type); + neartag(DVector3(pp->GetActor()->spr.pos.XY(), z), pp->cursector, pp->GetActor()->spr.Angles.Yaw, near, dist, type); if (near.hitSector != nullptr) { @@ -2315,7 +2315,7 @@ int DoPlayerGrabStar(PLAYER* pp) auto actor = StarQueue[i]; if (actor != nullptr) { - if ((actor->spr.pos - pp->actor->getPosWithOffsetZ()).plusZ(12).Length() < 31.25) + if ((actor->spr.pos - pp->GetActor()->getPosWithOffsetZ()).plusZ(12).Length() < 31.25) { break; } @@ -2349,7 +2349,7 @@ void PlayerOperateEnv(PLAYER* pp) { bool found; - if (Prediction || !pp->actor) + if (Prediction || !pp->GetActor()) return; // @@ -2373,7 +2373,7 @@ void PlayerOperateEnv(PLAYER* pp) NearThings(pp); // Check for player sound specified in a level sprite } - BuildNearTagList(nti, sizeof(nti), pp, pp->actor->getOffsetZ(), 128, NT_Lotag | NT_Hitag, 8); + BuildNearTagList(nti, sizeof(nti), pp, pp->GetActor()->getOffsetZ(), 128, NT_Lotag | NT_Hitag, 8); found = false; @@ -2394,7 +2394,7 @@ void PlayerOperateEnv(PLAYER* pp) if (!found) { double z[3]; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); z[0] = plActor->spr.pos.Z - ActorSizeZ(plActor) - 10; z[1] = plActor->spr.pos.Z; @@ -2484,14 +2484,14 @@ void PlayerOperateEnv(PLAYER* pp) { PlayerTakeSectorDamage(pp); } - else if ((ActorZOfBottom(pp->actor) >= sectp->floorz) && !(pp->Flags & PF_DIVING)) + else if ((ActorZOfBottom(pp->GetActor()) >= sectp->floorz) && !(pp->Flags & PF_DIVING)) { PlayerTakeSectorDamage(pp); } } else { - pp->actor->user.DamageTics = 0; + pp->GetActor()->user.DamageTics = 0; } @@ -2904,7 +2904,7 @@ void DoSector(void) } else { - double dist = (pp->actor->spr.pos.XY() - sop->pmid.XY()).Length(); + double dist = (pp->GetActor()->spr.pos.XY() - sop->pmid.XY()).Length(); if (dist < min_dist) min_dist = dist; } diff --git a/source/games/sw/src/sounds.cpp b/source/games/sw/src/sounds.cpp index ddb1ba28b..12d61c9d8 100644 --- a/source/games/sw/src/sounds.cpp +++ b/source/games/sw/src/sounds.cpp @@ -108,7 +108,7 @@ short SoundDist(const DVector3& pos, double basedist) double sqrdist; extern short screenpeek; - double distance = (Player[screenpeek].actor->getPosWithOffsetZ() - pos).Length() * 16; + double distance = (Player[screenpeek].GetActor()->getPosWithOffsetZ() - pos).Length() * 16; if (basedist < 0) // if basedist is negative { @@ -325,7 +325,7 @@ static void UpdateAmbients() if (sdist < 255 && sfx->ResourceId == DIGI_WHIPME) { PLAYER* pp = Player + screenpeek; - if (!FAFcansee(spot->spr.pos, spot->sector(), pp->actor->getPosWithOffsetZ(), pp->cursector)) + if (!FAFcansee(spot->spr.pos, spot->sector(), pp->GetActor()->getPosWithOffsetZ(), pp->cursector)) { sdist = 255; } @@ -426,7 +426,7 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3], if (pos != nullptr) { PLAYER* pp = Player + screenpeek; - FVector3 campos = GetSoundPos(pp->actor ? pp->actor->getPosWithOffsetZ() : DVector3()); + FVector3 campos = GetSoundPos(pp->GetActor() ? pp->GetActor()->getPosWithOffsetZ() : DVector3()); DVector3 vPos = {}; bool pancheck = false; @@ -446,10 +446,10 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3], } else { - auto act = ((PLAYER*)source)->actor; + auto act = ((PLAYER*)source)->GetActor(); if (act) vPos = act->getPosWithOffsetZ(); - else if (pp->actor) - vPos = pp->actor->getPosWithOffsetZ(); + else if (pp->GetActor()) + vPos = pp->GetActor()->getPosWithOffsetZ(); } pancheck = true; FVector3 npos = GetSoundPos(vPos); @@ -479,7 +479,7 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3], // Can the ambient sound see the player? If not, tone it down some. if ((chanflags & CHANF_LOOP)) { - if (!FAFcansee(vPos, spot->sector(), pp->actor->getPosWithOffsetZ(), pp->cursector)) + if (!FAFcansee(vPos, spot->sector(), pp->GetActor()->getPosWithOffsetZ(), pp->cursector)) { auto distvec = npos - campos; npos = campos + distvec * 1.75f; // Play more quietly @@ -523,13 +523,13 @@ void GameInterface::UpdateSounds(void) if (rsp && TEST_BOOL1(rsp)) tang = rsp->spr.Angles.Yaw; else - tang = (pp->sop_remote->pmid.XY() - pp->actor->spr.pos.XY()).Angle(); + tang = (pp->sop_remote->pmid.XY() - pp->GetActor()->spr.pos.XY()).Angle(); } - else tang = pp->actor ? pp->actor->spr.Angles.Yaw : nullAngle; + else tang = pp->GetActor() ? pp->GetActor()->spr.Angles.Yaw : nullAngle; listener.angle = float(-tang.Radians()); listener.velocity.Zero(); - listener.position = GetSoundPos(pp->actor ? pp->actor->getPosWithOffsetZ() : DVector3()); + listener.position = GetSoundPos(pp->GetActor() ? pp->GetActor()->getPosWithOffsetZ() : DVector3()); listener.underwater = false; // This should probably use a real environment instead of the pitch hacking in S_PlaySound3D. // listenactor->waterlevel == 3; @@ -573,7 +573,7 @@ int _PlaySound(const FSoundID sndid, DSWActor* actor, PLAYER* pp, const DVector3 } else if (pp && !ppos) { - pos = pp->actor->getPosWithOffsetZ(); + pos = pp->GetActor()->getPosWithOffsetZ(); pp = nullptr; sourcetype = SOURCE_Unattached; } diff --git a/source/games/sw/src/sprite.cpp b/source/games/sw/src/sprite.cpp index 2226dfc93..71a4228ec 100644 --- a/source/games/sw/src/sprite.cpp +++ b/source/games/sw/src/sprite.cpp @@ -774,7 +774,7 @@ void SpawnUser(DSWActor* actor, short id, STATE* state) actor->user.WpnGoalActor = nullptr; actor->user.attachActor = nullptr; actor->user.track = -1; - actor->user.targetActor = Player[0].actor; + actor->user.targetActor = Player[0].GetActor(); actor->user.Radius = 220; actor->user.Sibling = -1; actor->user.WaitTics = 0; @@ -4999,26 +4999,26 @@ int DoGet(DSWActor* actor) TRAVERSE_CONNECT(pnum) { pp = &Player[pnum]; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); int weaponswitch = WeaponSwitch(pnum); if (pp->Flags & (PF_DEAD)) continue; - double dist = (pp->actor->spr.pos.XY() - actor->spr.pos).Length(); + double dist = (pp->GetActor()->spr.pos.XY() - actor->spr.pos).Length(); if ((unsigned)dist > (plActor->user.fRadius() + actor->user.fRadius())) { continue; } - if (!SpriteOverlap(actor, pp->actor)) + if (!SpriteOverlap(actor, pp->GetActor())) { continue; } auto cstat_bak = actor->spr.cstat; actor->spr.cstat |= (CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); - can_see = FAFcansee(actor->spr.pos, actor->sector(), pp->actor->getPosWithOffsetZ(), pp->cursector); + can_see = FAFcansee(actor->spr.pos, actor->sector(), pp->GetActor()->getPosWithOffsetZ(), pp->cursector); actor->spr.cstat = cstat_bak; if (!can_see) @@ -5800,7 +5800,7 @@ KeyMain: case ICON_FLAG: { - if (actor->spr.pal == pp->actor->spr.pal) break; // Can't pick up your own flag! + if (actor->spr.pal == pp->GetActor()->spr.pal) break; // Can't pick up your own flag! PlaySound(DIGI_ITEM, actor, v3df_dontpan); @@ -5816,11 +5816,11 @@ KeyMain: actorNew->user.Counter = 0; actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); actorNew->spr.cstat |= (CSTAT_SPRITE_ALIGNMENT_WALL); - SetAttach(pp->actor, actorNew); - actorNew->user.pos.Z = ActorZOfMiddle(pp->actor); // Set mid way up who it hit + SetAttach(pp->GetActor(), actorNew); + actorNew->user.pos.Z = ActorZOfMiddle(pp->GetActor()); // Set mid way up who it hit actorNew->user.spal = actorNew->spr.pal = actor->spr.pal; // Set the palette of the flag - SetOwner(pp->actor, actorNew); // Player now owns the flag + SetOwner(pp->GetActor(), actorNew); // Player now owns the flag actorNew->user.flagOwnerActor = actor; // Tell carried flag who owns it KillGet(actor); // Set up for flag respawning break; @@ -5867,7 +5867,7 @@ void ProcessActiveVars(DSWActor* actor) void AdjustActiveRange(PLAYER* pp, DSWActor* actor, double dist) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); // do no FAFcansee before it is time if (actor->user.wait_active_check < ACTIVE_CHECK_TIME) @@ -6050,7 +6050,7 @@ void SpriteControl(void) pp = &Player[pnum]; // Only update the ones closest - double dist = (pp->actor->spr.pos.XY() - actor->spr.pos.XY()).Length(); + double dist = (pp->GetActor()->spr.pos.XY() - actor->spr.pos.XY()).Length(); AdjustActiveRange(pp, actor, dist); diff --git a/source/games/sw/src/sumo.cpp b/source/games/sw/src/sumo.cpp index 9d67d5512..6034a9292 100644 --- a/source/games/sw/src/sumo.cpp +++ b/source/games/sw/src/sumo.cpp @@ -738,7 +738,7 @@ void BossHealthMeter(void) DSWActor* actor = BossSpriteNum[i]; if (actor != nullptr && !bosswasseen[i]) { - if (cansee(ActorVectOfTop(actor), actor->sector(), pp->actor->getPosWithOffsetZ().plusZ(-40), pp->cursector)) + if (cansee(ActorVectOfTop(actor), actor->sector(), pp->GetActor()->getPosWithOffsetZ().plusZ(-40), pp->cursector)) { if (i == 0 && !bosswasseen[0]) { diff --git a/source/games/sw/src/track.cpp b/source/games/sw/src/track.cpp index 890a379f3..b3e9497a4 100644 --- a/source/games/sw/src/track.cpp +++ b/source/games/sw/src/track.cpp @@ -1469,14 +1469,14 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, const DVector2& move) { pp->Flags |= (PF_PLAYER_RIDING); - pp->RevolveAng = pp->actor->spr.Angles.Yaw; - pp->Revolve.XY() = pp->actor->spr.pos.XY(); + pp->RevolveAng = pp->GetActor()->spr.Angles.Yaw; + pp->Revolve.XY() = pp->GetActor()->spr.pos.XY(); // set the delta angle to 0 when moving pp->RevolveDeltaAng = nullAngle; } - pp->actor->spr.pos.XY() += move; + pp->GetActor()->spr.pos.XY() += move; if ((sop->flags & SOBJ_DONT_ROTATE)) { @@ -1491,8 +1491,8 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, const DVector2& move) // save the current information so when Player stops // moving then you // know where he was last - pp->RevolveAng = pp->actor->spr.Angles.Yaw; - pp->Revolve.XY() = pp->actor->spr.pos.XY(); + pp->RevolveAng = pp->GetActor()->spr.Angles.Yaw; + pp->Revolve.XY() = pp->GetActor()->spr.pos.XY(); // set the delta angle to 0 when moving pp->RevolveDeltaAng = nullAngle; @@ -1505,20 +1505,20 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, const DVector2& move) pp->Revolve += move; // Last known angle is now adjusted by the delta angle - pp->RevolveAng = deltaangle(pp->RevolveDeltaAng, pp->actor->spr.Angles.Yaw); + pp->RevolveAng = deltaangle(pp->RevolveDeltaAng, pp->GetActor()->spr.Angles.Yaw); } // increment Players delta angle pp->RevolveDeltaAng += GlobSpeedSO; - pp->actor->spr.pos.XY() = rotatepoint(sop->pmid.XY(), pp->Revolve.XY(), pp->RevolveDeltaAng); + pp->GetActor()->spr.pos.XY() = rotatepoint(sop->pmid.XY(), pp->Revolve.XY(), pp->RevolveDeltaAng); // THIS WAS CAUSING PROLEMS!!!! // Sectors are still being manipulated so you can end up in a void (-1) sector // New angle is formed by taking last known angle and // adjusting by the delta angle - pp->actor->spr.Angles.Yaw = (pp->RevolveAng + pp->RevolveDeltaAng).Normalized360(); + pp->GetActor()->spr.Angles.Yaw = (pp->RevolveAng + pp->RevolveDeltaAng).Normalized360(); UpdatePlayerSprite(pp); } @@ -1724,7 +1724,7 @@ PlayerPart: // prevents you from falling into map HOLEs created by moving // Sectors and sprites around. //if (!SO_EMPTY(sop)) - updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); + updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector); // in case you are in a whirlpool // move perfectly with the ride in the z direction @@ -3335,9 +3335,9 @@ int ActorFollowTrack(DSWActor* actor, short locktics) { pp = &Player[pnum]; - if ((actor->spr.pos.XY() - pp->actor->spr.pos.XY()).Length() < actor->user.Dist) + if ((actor->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).Length() < actor->user.Dist) { - actor->user.targetActor = pp->actor; + actor->user.targetActor = pp->GetActor(); actor->user.Flags &= ~(SPR_WAIT_FOR_PLAYER); return true; } diff --git a/source/games/sw/src/vis.cpp b/source/games/sw/src/vis.cpp index 49396084a..c64a30608 100644 --- a/source/games/sw/src/vis.cpp +++ b/source/games/sw/src/vis.cpp @@ -106,7 +106,7 @@ void VisViewChange(PLAYER* pp, int *vis) } // save off the brightest vis that you can see - if (FAFcansee(pp->actor->getPosWithOffsetZ(), pp->cursector, pos, sectp)) + if (FAFcansee(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, pos, sectp)) { if (VIS_VisCur(actor) < BrightestVis) BrightestVis = VIS_VisCur(actor); diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index 592e11b0a..196680190 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -5198,7 +5198,7 @@ int GetDamage(DSWActor* actor, DSWActor* weapActor, int DamageNdx) int PlayerCheckDeath(PLAYER* pp, DSWActor* weapActor) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); // Store off what player was struck by pp->HitBy = weapActor; @@ -5268,7 +5268,7 @@ bool PlayerTakeDamage(PLAYER* pp, DSWActor* weapActor) if (weapActor == nullptr) return true; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); auto weapOwner = GetOwner(weapActor); @@ -5278,7 +5278,7 @@ bool PlayerTakeDamage(PLAYER* pp, DSWActor* weapActor) if (weapActor->user.ID == ZOMBIE_RUN_R0) { // if weapons Owner the player - if (weapOwner == pp->actor) + if (weapOwner == pp->GetActor()) return false; } @@ -11247,7 +11247,7 @@ int DoRing(DSWActor* actor) double z; // move the center with the player if (pp) - z = pp->actor->getOffsetZ() + 20; + z = pp->GetActor()->getOffsetZ() + 20; else z = ActorZOfMiddle(own) + 30; @@ -11331,7 +11331,7 @@ void InitSpellRing(PLAYER* pp) DAngle ang_diff = DAngle360 / max_missiles; - DAngle ang_start = pp->actor->spr.Angles.Yaw - DAngle180; + DAngle ang_start = pp->GetActor()->spr.Angles.Yaw - DAngle180; if (!SW_SHAREWARE) PlaySound(DIGI_RFWIZ, pp, v3df_none); @@ -11341,11 +11341,11 @@ void InitSpellRing(PLAYER* pp) for (missiles = 0, ang = ang_start; missiles < max_missiles; ang += ang_diff, missiles++) { - auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, FIREBALL1, s_Ring, pp->cursector, pp->actor->getPosWithOffsetZ(), ang, 0); + auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, FIREBALL1, s_Ring, pp->cursector, pp->GetActor()->getPosWithOffsetZ(), ang, 0); actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->vel.X = 31.25; - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->vel.Z = 0; @@ -11359,7 +11359,7 @@ void InitSpellRing(PLAYER* pp) // put it out there actorNew->spr.pos += actorNew->spr.Angles.Yaw.ToVector() * actorNew->user.Dist; - actorNew->spr.pos.Z += pp->actor->getOffsetZ() + 20 - (actorNew->user.Dist * pp->Angles.getPitchWithView().Tan() * 2.); // horizon math sucks... + actorNew->spr.pos.Z += pp->GetActor()->getOffsetZ() + 20 - (actorNew->user.Dist * pp->Angles.getPitchWithView().Tan() * 2.); // horizon math sucks... actorNew->spr.Angles.Yaw += DAngle90; @@ -11692,7 +11692,7 @@ int InitSerpRing(DSWActor* actor) void InitSpellNapalm(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); unsigned i; short ammo; @@ -11718,7 +11718,7 @@ void InitSpellNapalm(PLAYER* pp) for (i = 0; i < SIZ(mp); i++) { auto actor = SpawnActor(STAT_MISSILE, FIREBALL1, s_Napalm, pp->cursector, - pp->actor->getPosWithOffsetZ().plusZ(12), pp->actor->spr.Angles.Yaw, NAPALM_VELOCITY*2); + pp->GetActor()->getPosWithOffsetZ().plusZ(12), pp->GetActor()->spr.Angles.Yaw, NAPALM_VELOCITY*2); actor->spr.hitag = LUMINOUS; //Always full brightness @@ -11727,7 +11727,7 @@ void InitSpellNapalm(PLAYER* pp) PlaySound(DIGI_NAPWIZ, actor, v3df_follow); } - SetOwner(pp->actor, actor); + SetOwner(pp->GetActor(), actor); actor->spr.shade = -40; actor->spr.scale = DVector2(0.5, 0.5); actor->clipdist = 0; @@ -11853,11 +11853,11 @@ int InitSpellMirv(PLAYER* pp) if (!pp->insector()) return 0; - auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Mirv, pp->cursector, pp->actor->getPosWithOffsetZ().plusZ(12), pp->actor->spr.Angles.Yaw, MIRV_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Mirv, pp->cursector, pp->GetActor()->getPosWithOffsetZ().plusZ(12), pp->GetActor()->spr.Angles.Yaw, MIRV_VELOCITY); PlaySound(DIGI_MIRVWIZ, actorNew, v3df_follow); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(1.125, 1.125); actorNew->clipdist = 2; @@ -11869,7 +11869,7 @@ int InitSpellMirv(PLAYER* pp) actorNew->user.ceiling_dist = (16); actorNew->user.Dist = 12.5; - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); auto oclipdist = plActor->clipdist; plActor->clipdist = 0; @@ -11927,7 +11927,7 @@ int InitEnemyMirv(DSWActor* actor) int InitSwordAttack(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); unsigned stat; DAngle face; @@ -11945,7 +11945,7 @@ int InitSwordAttack(PLAYER* pp) for (size_t i = 0; i < countof(dangs); i++) { if (RandomRange(1000) < 500) continue; // Don't spawn bubbles every time - bubble = SpawnBubble(pp->actor); + bubble = SpawnBubble(pp->GetActor()); if (bubble != nullptr) { bubble->spr.Angles.Yaw = plActor->spr.Angles.Yaw; @@ -11975,16 +11975,16 @@ int InitSwordAttack(PLAYER* pp) if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY)) continue; - double dist = (pp->actor->spr.pos.XY() - itActor->spr.pos.XY()).Length(); + double dist = (pp->GetActor()->spr.pos.XY() - itActor->spr.pos.XY()).Length(); face = mapangle(200); if (dist < CloseRangeDist(itActor, plActor, 62.5) && PlayerFacingRange(pp, itActor, face)) { - if (SpriteOverlapZ(pp->actor, itActor, 20)) + if (SpriteOverlapZ(pp->GetActor(), itActor, 20)) { if (FAFcansee(ActorVectOfMiddle(itActor), itActor->sector(), ActorVectOfMiddle(plActor), plActor->sector())) - DoDamage(itActor, pp->actor); + DoDamage(itActor, pp->GetActor()); } } } @@ -11995,14 +11995,14 @@ int InitSwordAttack(PLAYER* pp) HitInfo hit{}; double dax = 1024., daz = 0; - DAngle daang = pp->actor->spr.Angles.Yaw; + DAngle daang = pp->GetActor()->spr.Angles.Yaw; setFreeAimVelocity(dax, daz, pp->Angles.getPitchWithView(), 1000. - (RandomRangeF(24000 / 256.) - 12000 / 256.)); - FAFhitscan(pp->actor->getPosWithOffsetZ(), pp->cursector, DVector3(pp->actor->spr.Angles.Yaw.ToVector() * dax, daz), hit, CLIPMASK_MISSILE); + FAFhitscan(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, DVector3(pp->GetActor()->spr.Angles.Yaw.ToVector() * dax, daz), hit, CLIPMASK_MISSILE); if (hit.hitSector == nullptr) return 0; - if ((pp->actor->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75) + if ((pp->GetActor()->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75) { if (hit.actor() != nullptr) @@ -12073,7 +12073,7 @@ int InitSwordAttack(PLAYER* pp) if (hit.hitWall->lotag == TAG_WALL_BREAK) { - HitBreakWall(hit.hitWall, hit.hitpos, pp->actor->spr.Angles.Yaw, plActor->user.ID); + HitBreakWall(hit.hitWall, hit.hitpos, pp->GetActor()->spr.Angles.Yaw, plActor->user.ID); } // hit non breakable wall - do sound and puff else @@ -12095,7 +12095,7 @@ int InitSwordAttack(PLAYER* pp) int InitFistAttack(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); unsigned stat; double reach; DAngle face; @@ -12113,7 +12113,7 @@ int InitFistAttack(PLAYER* pp) for (size_t i = 0; i < countof(dangs); i++) { - bubble = SpawnBubble(pp->actor); + bubble = SpawnBubble(pp->GetActor()); if (bubble != nullptr) { bubble->spr.Angles.Yaw = plActor->spr.Angles.Yaw; @@ -12140,7 +12140,7 @@ int InitFistAttack(PLAYER* pp) if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY)) continue; - double dist = (pp->actor->spr.pos.XY() - itActor->spr.pos.XY()).Length(); + double dist = (pp->GetActor()->spr.pos.XY() - itActor->spr.pos.XY()).Length(); bool iactive = pp->InventoryActive[2]; if (iactive) // Shadow Bombs give you demon fist { @@ -12155,7 +12155,7 @@ int InitFistAttack(PLAYER* pp) if (dist < CloseRangeDist(itActor, plActor, reach) && PlayerFacingRange(pp, itActor, face)) { - if (SpriteOverlapZ(pp->actor, itActor, 20) || iactive) + if (SpriteOverlapZ(pp->GetActor(), itActor, 20) || iactive) { if (FAFcansee(ActorVectOfMiddle(itActor), itActor->sector(), ActorVectOfMiddle(plActor), plActor->sector())) DoDamage(itActor, plActor); @@ -12173,14 +12173,14 @@ int InitFistAttack(PLAYER* pp) { HitInfo hit{}; double dax = 1024., daz = 0; - auto daang = pp->actor->spr.Angles.Yaw; + auto daang = pp->GetActor()->spr.Angles.Yaw; setFreeAimVelocity(dax, daz, pp->Angles.getPitchWithView(), 1000. - (RandomRangeF(24000 / 256.) - 12000 / 256.)); - FAFhitscan(pp->actor->getPosWithOffsetZ(), pp->cursector, DVector3(pp->actor->spr.Angles.Yaw.ToVector() * dax, daz), hit, CLIPMASK_MISSILE); + FAFhitscan(pp->GetActor()->getPosWithOffsetZ(), pp->cursector, DVector3(pp->GetActor()->spr.Angles.Yaw.ToVector() * dax, daz), hit, CLIPMASK_MISSILE); if (hit.hitSector == nullptr) return 0; - if ((pp->actor->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75) + if ((pp->GetActor()->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75) { if (hit.actor() != nullptr) @@ -12264,7 +12264,7 @@ int InitFistAttack(PLAYER* pp) if (hit.hitWall->lotag == TAG_WALL_BREAK) { - HitBreakWall(hit.hitWall, hit.hitpos, pp->actor->spr.Angles.Yaw, plActor->user.ID); + HitBreakWall(hit.hitWall, hit.hitpos, pp->GetActor()->spr.Angles.Yaw, plActor->user.ID); } // hit non breakable wall - do sound and puff else @@ -12709,7 +12709,7 @@ void WeaponHitscanShootFeet(DSWActor* actor, DSWActor* hitActor, double *zvect) int InitStar(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); static DAngle dang[] = { mapangle(-12), mapangle(12) }; const double STAR_REPEAT = 0.40625; @@ -12722,14 +12722,14 @@ int InitStar(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, STAR1, s_Star, pp->cursector, pos, pp->actor->spr.Angles.Yaw, STAR_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, STAR1, s_Star, pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, STAR_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(STAR_REPEAT, STAR_REPEAT); actorNew->spr.shade = -25; actorNew->clipdist = 2; @@ -12755,7 +12755,7 @@ int InitStar(PLAYER* pp) return 0; } - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5/4, false) != -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5/4, false) != -1) { zvel = actorNew->vel.Z; } @@ -12813,7 +12813,7 @@ int InitStar(PLAYER* pp) void InitHeartAttack(PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); short i = 0; static const MISSILE_PLACEMENT mp[] = @@ -12827,11 +12827,11 @@ void InitHeartAttack(PLAYER* pp) return; auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, BLOOD_WORM, s_BloodWorm, pp->cursector, - pp->actor->getPosWithOffsetZ().plusZ(12), pp->actor->spr.Angles.Yaw, BLOOD_WORM_VELOCITY*2); + pp->GetActor()->getPosWithOffsetZ().plusZ(12), pp->GetActor()->spr.Angles.Yaw, BLOOD_WORM_VELOCITY*2); actorNew->spr.hitag = LUMINOUS; //Always full brightness - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.shade = -10; actorNew->spr.scale = DVector2(0.8125, 0.8125); actorNew->clipdist = 0; @@ -12867,7 +12867,7 @@ void InitHeartAttack(PLAYER* pp) int ContinueHitscan(PLAYER* pp, sectortype* sect, const DVector3& start, DAngle ang, const DVector3& vect) { HitInfo hit{}; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); FAFhitscan(start, sect, vect, hit, CLIPMASK_MISSILE); @@ -12926,7 +12926,7 @@ int ContinueHitscan(PLAYER* pp, sectortype* sect, const DVector3& start, DAngle return 0; } - if (BulletHitSprite(pp->actor, hit.actor(), hit.hitpos, 0)) + if (BulletHitSprite(pp->GetActor(), hit.actor(), hit.hitpos, 0)) return 0; // hit a switch? @@ -12950,7 +12950,7 @@ int ContinueHitscan(PLAYER* pp, sectortype* sect, const DVector3& start, DAngle int InitShotgun(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); HitInfo hit{}; short cstat = 0; @@ -12970,15 +12970,15 @@ int InitShotgun(PLAYER* pp) } } - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z); double dax = 1024.; double daz = pos.Z; DAngle daang = DAngle22_5 * 0.5; - if (WeaponAutoAimHitscan(pp->actor, &daz, &daang, false) == nullptr) + if (WeaponAutoAimHitscan(pp->GetActor(), &daz, &daang, false) == nullptr) { setFreeAimVelocity(dax, daz, pp->Angles.getPitchWithView(), 1000.); - daang = pp->actor->spr.Angles.Yaw; + daang = pp->GetActor()->spr.Angles.Yaw; } double ndaz; @@ -13090,7 +13090,7 @@ int InitShotgun(PLAYER* pp) continue; } - if (BulletHitSprite(pp->actor, hitActor, hit.hitpos, SHOTGUN_SMOKE)) + if (BulletHitSprite(pp->GetActor(), hitActor, hit.hitpos, SHOTGUN_SMOKE)) continue; // hit a switch? @@ -13116,7 +13116,7 @@ int InitShotgun(PLAYER* pp) int InitLaser(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); DoPlayerBeginRecoil(pp, RAIL_RECOIL_AMT); PlayerUpdateAmmo(pp, actor->user.WeaponNum, -1); @@ -13125,15 +13125,15 @@ int InitLaser(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, s_Laser, pp->cursector, pos, pp->actor->spr.Angles.Yaw, 18.75); + auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, s_Laser, pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, 18.75); actorNew->spr.hitag = LUMINOUS; //Always full brightness - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.8125, 0.8125); actorNew->spr.shade = -15; actorNew->clipdist = 4; @@ -13189,7 +13189,7 @@ int InitLaser(PLAYER* pp) actor->clipdist = oclipdist; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) == -1) { actorNew->spr.Angles.Yaw -= mapangle(5); } @@ -13206,7 +13206,7 @@ int InitLaser(PLAYER* pp) int InitRail(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); double zvel; if (SW_SHAREWARE) return false; // JBF: verify @@ -13223,15 +13223,15 @@ int InitRail(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 11); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 11); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R1, &s_Rail[0][0], pp->cursector, pos, pp->actor->spr.Angles.Yaw, 75); + auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R1, &s_Rail[0][0], pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, 75); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.8125, 0.8125); actorNew->spr.shade = -15; setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 17) * 0.5); @@ -13269,7 +13269,7 @@ int InitRail(PLAYER* pp) actor->clipdist = oclipdist; actorNew->vel.Z = zvel * 0.5; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) == -1) { actorNew->spr.Angles.Yaw -= mapangle(4); } @@ -13363,7 +13363,7 @@ int InitZillaRail(DSWActor* actor) int InitRocket(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); double zvel; DoPlayerBeginRecoil(pp, ROCKET_RECOIL_AMT); @@ -13388,14 +13388,14 @@ int InitRocket(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], pp->cursector, pos, pp->actor->spr.Angles.Yaw, ROCKET_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, ROCKET_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(1.40626, 1.40625); actorNew->spr.shade = -15; setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 35) * 0.5); @@ -13452,7 +13452,7 @@ int InitRocket(PLAYER* pp) actor->clipdist = oclipdist; actorNew->vel.Z = zvel * 0.5; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) == -1) { actorNew->spr.Angles.Yaw -= mapangle(5); } @@ -13473,7 +13473,7 @@ int InitRocket(PLAYER* pp) int InitBunnyRocket(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); double zvel; DoPlayerBeginRecoil(pp, ROCKET_RECOIL_AMT); @@ -13495,14 +13495,14 @@ int InitBunnyRocket(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R4, &s_BunnyRocket[0][0], pp->cursector, pos, pp->actor->spr.Angles.Yaw, ROCKET_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R4, &s_BunnyRocket[0][0], pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, ROCKET_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(1, 1); actorNew->spr.shade = -15; setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 35) * 0.5); @@ -13556,7 +13556,7 @@ int InitBunnyRocket(PLAYER* pp) actor->clipdist = oclipdist; actorNew->vel.Z = zvel * 0.5; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) == -1) { actorNew->spr.Angles.Yaw -= mapangle(5); } @@ -13578,7 +13578,7 @@ int InitBunnyRocket(PLAYER* pp) int InitNuke(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); double zvel; if (pp->WpnRocketNuke > 0) @@ -13597,14 +13597,14 @@ int InitNuke(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], pp->cursector, pos, pp->actor->spr.Angles.Yaw, 700/16.); + auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, 700/16.); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(2, 2); actorNew->spr.shade = -15; setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 36) * 0.5); @@ -13649,7 +13649,7 @@ int InitNuke(PLAYER* pp) actor->clipdist = oclipdist; actorNew->vel.Z = zvel * 0.5; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) == -1) { actorNew->spr.Angles.Yaw -= mapangle(5); } @@ -13659,7 +13659,7 @@ int InitNuke(PLAYER* pp) UpdateChangeXY(actorNew); actorNew->user.change.Z = zvel; - PlayerDamageSlide(pp, -40, pp->actor->spr.Angles.Yaw + DAngle180); // Recoil slide + PlayerDamageSlide(pp, -40, pp->GetActor()->spr.Angles.Yaw + DAngle180); // Recoil slide return 0; } @@ -13745,7 +13745,7 @@ int InitEnemyNuke(DSWActor* actor) int InitMicro(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); short i; DAngle angle; TARGET_SORT* ts = TargetSort; @@ -13754,7 +13754,7 @@ int InitMicro(PLAYER* pp) const int MAX_MICRO = 1; - DoPickTarget(pp->actor, DAngle45, false); + DoPickTarget(pp->GetActor(), DAngle45, false); if (TargetSortCount > MAX_MICRO) TargetSortCount = MAX_MICRO; @@ -13771,24 +13771,24 @@ int InitMicro(PLAYER* pp) { picked = ts->actor; - angle = (picked->spr.pos.XY() - pp->actor->spr.pos.XY()).Angle(); + angle = (picked->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).Angle(); ts++; } else { picked = nullptr; - angle = pp->actor->spr.Angles.Yaw; + angle = pp->GetActor()->spr.Angles.Yaw; } - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 4 + RandomRange(20)); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 4 + RandomRange(20)); // Spawn a shot // Inserting and setting up variables auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Micro[0][0], pp->cursector, pos, angle, vel); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.375, 0.375); actorNew->spr.shade = -15; actorNew->vel.Z = zvel; @@ -14438,7 +14438,7 @@ int InitEnemyRail(DSWActor* actor) TRAVERSE_CONNECT(pnum) { pp = &Player[pnum]; - if (actor->user.targetActor == pp->actor) + if (actor->user.targetActor == pp->GetActor()) return 0; } } @@ -14964,7 +14964,7 @@ int InitTracerUzi(PLAYER* pp) if (!pp->insector()) return 0; - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); static const short lat_dist[] = {800,-800}; @@ -14973,10 +14973,10 @@ int InitTracerUzi(PLAYER* pp) // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, 0, s_Tracer, pp->cursector, pp->actor->getPosWithOffsetZ().plusZ(nz), pp->actor->spr.Angles.Yaw, TRACER_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, 0, s_Tracer, pp->cursector, pp->GetActor()->getPosWithOffsetZ().plusZ(nz), pp->GetActor()->spr.Angles.Yaw, TRACER_VELOCITY); actorNew->spr.hitag = LUMINOUS; //Always full brightness - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.15625, 0.15625); actorNew->spr.shade = -40; actorNew->vel.Z = 0; @@ -14989,7 +14989,7 @@ int InitTracerUzi(PLAYER* pp) actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_INVISIBLE); - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); auto oclipdist = plActor->clipdist; plActor->clipdist = 0; @@ -15011,7 +15011,7 @@ int InitTracerUzi(PLAYER* pp) plActor->clipdist = oclipdist; - WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false); + WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false); // a bit of randomness actorNew->spr.Angles.Yaw += mapangle(RandomRange(30) - 15); @@ -15224,7 +15224,7 @@ bool HitscanSpriteAdjust(DSWActor* actor, walltype* hit_wall) int InitUzi(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); HitInfo hit{}; ESpriteFlags cstat = 0; uint8_t pal = 0; @@ -15260,24 +15260,24 @@ int InitUzi(PLAYER* pp) if (RANDOM_P2(1024) < 400) InitTracerUzi(pp); - double nz = (pp->actor->getOffsetZ() + pp->bob_z); + double nz = (pp->GetActor()->getOffsetZ() + pp->bob_z); double dax = 1024.; double daz = nz; DAngle daang = DAngle22_5 / 4; - if (WeaponAutoAimHitscan(pp->actor, &daz, &daang, false) != nullptr) + if (WeaponAutoAimHitscan(pp->GetActor(), &daz, &daang, false) != nullptr) { daang += mapangle(RandomRange(24) - 12); daz += RandomRangeF(10000/256.) - 5000/256.; } else { - daang = pp->actor->spr.Angles.Yaw + mapangle(RandomRange(24) - 12); + daang = pp->GetActor()->spr.Angles.Yaw + mapangle(RandomRange(24) - 12); setFreeAimVelocity(dax, daz, pp->Angles.getPitchWithView(), 1000. - (RandomRangeF(24000/256.) - 12000/256.)); } DVector3 vect(daang.ToVector() * dax, daz); - FAFhitscan(DVector3(pp->actor->spr.pos.XY(), nz), pp->cursector, vect, hit, CLIPMASK_MISSILE); + FAFhitscan(DVector3(pp->GetActor()->spr.pos.XY(), nz), pp->cursector, vect, hit, CLIPMASK_MISSILE); if (hit.hitSector == nullptr) { @@ -15374,7 +15374,7 @@ int InitUzi(PLAYER* pp) return 0; } - if (BulletHitSprite(pp->actor, hitActor, hit.hitpos, 0)) + if (BulletHitSprite(pp->GetActor(), hitActor, hit.hitpos, 0)) return 0; // hit a switch? @@ -15388,7 +15388,7 @@ int InitUzi(PLAYER* pp) auto actorNew = SpawnActor(STAT_MISSILE, UZI_SMOKE, s_UziSmoke, hit.hitSector, hit.hitpos, daang, 0); actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(UZI_SMOKE_REPEAT, UZI_SMOKE_REPEAT); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.cstat |= (cstat | CSTAT_SPRITE_YCENTER); actorNew->clipdist = 0.5; @@ -15399,7 +15399,7 @@ int InitUzi(PLAYER* pp) actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(UZI_SPARK_REPEAT, UZI_SPARK_REPEAT); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->user.spal = actorNew->spr.pal = pal; actorNew->spr.cstat |= (cstat | CSTAT_SPRITE_YCENTER); actorNew->clipdist = 0.5; @@ -15430,7 +15430,7 @@ int InitTankShell(DSWActor* actor, PLAYER* pp) auto actorNew = SpawnActor(STAT_MISSILE, 0, s_TankShell, actor->sector(), actor->spr.pos, actor->spr.Angles.Yaw, TANK_SHELL_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.125, 0.125); actorNew->spr.shade = -40; actorNew->vel.Z = 0; @@ -15468,7 +15468,7 @@ int InitTankShell(DSWActor* actor, PLAYER* pp) int InitTurretMicro(DSWActor* actor, PLAYER* pp) { - DSWActor* plActor = pp->actor; + DSWActor* plActor = pp->GetActor(); TARGET_SORT* ts = TargetSort; DSWActor* picked = nullptr; DAngle angle; @@ -15568,7 +15568,7 @@ int InitTurretRocket(DSWActor* actor, PLAYER* pp) auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Rocket[0][0], actor->sector(), actor->spr.pos, actor->spr.Angles.Yaw, ROCKET_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.625, 0.625); actorNew->spr.shade = -40; actorNew->vel.Z = 0; @@ -15607,7 +15607,7 @@ int InitTurretFireball(DSWActor* actor, PLAYER* pp) auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL, s_Fireball, actor->sector(), actor->spr.pos, actor->spr.Angles.Yaw, FIREBALL_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.625, 0.625); actorNew->spr.shade = -40; actorNew->vel.Z = 0; @@ -15654,7 +15654,7 @@ int InitTurretRail(DSWActor* actor, PLAYER* pp) auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R1, &s_Rail[0][0], pp->cursector, actor->spr.pos, actor->spr.Angles.Yaw, 75); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.8125, 0.8125); actorNew->spr.shade = -15; setFreeAimVelocity(actorNew->vel.X, actorNew->vel.Z, pp->Angles.getPitchWithView(), HORIZ_MULTF); @@ -15671,7 +15671,7 @@ int InitTurretRail(DSWActor* actor, PLAYER* pp) actorNew->clipdist = 4; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) == -1) { actorNew->norm_ang(); } @@ -15699,7 +15699,7 @@ int InitTurretLaser(DSWActor* actor, PLAYER* pp) auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, s_Laser, pp->cursector, actor->spr.pos, actor->spr.Angles.Yaw, 18.75); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.8125, 0.8125); actorNew->spr.shade = -15; @@ -15743,7 +15743,7 @@ int InitSobjMachineGun(DSWActor* actor, PLAYER* pp) double daz = npos.Z; if (RANDOM_P2(1024) < 200) - InitTracerTurret(actor, pp->actor, pp->Angles.getPitchWithView()); + InitTracerTurret(actor, pp->GetActor(), pp->Angles.getPitchWithView()); DAngle daang = DAngle22_5 / 2; if (WeaponAutoAimHitscan(actor, &daz, &daang, false) != nullptr) @@ -15804,7 +15804,7 @@ int InitSobjMachineGun(DSWActor* actor, PLAYER* pp) return 0; } - if (BulletHitSprite(pp->actor, hit.actor(), hit.hitpos, 0)) + if (BulletHitSprite(pp->GetActor(), hit.actor(), hit.hitpos, 0)) return 0; // hit a switch? @@ -15857,7 +15857,7 @@ int InitSobjGun(PLAYER* pp) case 32: case 0: SpawnVis(actor, nullptr, {}, 8); - SpawnBigGunFlames(actor, pp->actor, pp->sop, false); + SpawnBigGunFlames(actor, pp->GetActor(), pp->sop, false); SetGunQuake(actor); InitTankShell(actor, pp); if (!SP_TAG5(actor)) @@ -15867,7 +15867,7 @@ int InitSobjGun(PLAYER* pp) break; case 1: SpawnVis(actor, nullptr, {}, 32); - SpawnBigGunFlames(actor, pp->actor, pp->sop, true); + SpawnBigGunFlames(actor, pp->GetActor(), pp->sop, true); InitSobjMachineGun(actor, pp); if (!SP_TAG5(actor)) pp->FirePause = 10; @@ -15937,7 +15937,7 @@ DSWActor* SpawnBoatSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wall, auto actorNew = SpawnActor(STAT_MISSILE, UZI_SMOKE, s_UziSmoke, hit_sect, hitpos, hit_ang, 0); actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(UZI_SMOKE_REPEAT + 0.1875, UZI_SMOKE_REPEAT + 0.1875); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); actorNew->spr.hitag = LUMINOUS; //Always full brightness @@ -15952,7 +15952,7 @@ DSWActor* SpawnBoatSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wall, actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(UZI_SPARK_REPEAT + 0.15626, UZI_SPARK_REPEAT + 0.15625); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->user.spal = actorNew->spr.pal = PALETTE_DEFAULT; actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); @@ -15974,12 +15974,12 @@ DSWActor* SpawnBoatSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wall, int SpawnSwordSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wall, const DVector3& hitpos, DAngle hit_ang) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); auto actorNew = SpawnActor(STAT_MISSILE, UZI_SMOKE, s_UziSmoke, hit_sect, hitpos, hit_ang, 0); actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(0.3125, 0.3125); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); actorNew->spr.hitag = LUMINOUS; //Always full brightness @@ -15994,7 +15994,7 @@ int SpawnSwordSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wall, const actorNew = SpawnActor(STAT_MISSILE, UZI_SPARK, s_UziSpark, hit_sect, hitpos, hit_ang, 0); actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(0.3125, 0.3125); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->user.spal = actorNew->spr.pal = PALETTE_DEFAULT; actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); if (actor->user.WeaponNum == WPN_FIST) @@ -16058,7 +16058,7 @@ DSWActor* SpawnShotgunSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wal actorNew->spr.shade = -40; actorNew->spr.scale = DVector2(UZI_SPARK_REPEAT, UZI_SPARK_REPEAT); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->user.spal = actorNew->spr.pal = PALETTE_DEFAULT; actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); @@ -16068,7 +16068,7 @@ DSWActor* SpawnShotgunSparks(PLAYER* pp, sectortype* hit_sect, walltype* hit_wal actorNew = SpawnActor(STAT_MISSILE, SHOTGUN_SMOKE, s_ShotgunSmoke, hit_sect, hitpos, hit_ang, 0); actorNew->spr.scale = DVector2(SHOTGUN_SMOKE_REPEAT, SHOTGUN_SMOKE_REPEAT); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); actorNew->spr.hitag = LUMINOUS; //Always full brightness @@ -16393,7 +16393,7 @@ int InitEnemyUzi(DSWActor* actor) int InitGrenade(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); double zvel; bool auto_aim = false; @@ -16409,12 +16409,12 @@ int InitGrenade(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, GRENADE, &s_Grenade[0][0], pp->cursector, pos, pp->actor->spr.Angles.Yaw, GRENADE_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, GRENADE, &s_Grenade[0][0], pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, GRENADE_VELOCITY); // don't throw it as far if crawling if (pp->Flags & (PF_CRAWLING)) @@ -16426,7 +16426,7 @@ int InitGrenade(PLAYER* pp) NewStateGroup(actorNew, &sg_Grenade[0]); actorNew->user.Flags |= (SPR_XFLIP_TOGGLE); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->spr.shade = -15; //actorNew->clipdist = 5; @@ -16459,7 +16459,7 @@ int InitGrenade(PLAYER* pp) actor->clipdist = oclipdist; zvel = actorNew->vel.Z; - if (WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false) >= 0) + if (WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false) >= 0) { auto_aim = true; } @@ -16538,7 +16538,7 @@ int InitSpriteGrenade(DSWActor* actor) int InitMine(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); PlayerUpdateAmmo(pp, actor->user.WeaponNum, -1); @@ -16547,14 +16547,14 @@ int InitMine(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 8); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 8); // Spawn a shot // Inserting and setting up variables - auto actorNew = SpawnActor(STAT_MISSILE, MINE, s_Mine, pp->cursector, pos, pp->actor->spr.Angles.Yaw, MINE_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, MINE, s_Mine, pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, MINE_VELOCITY); - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->spr.shade = -15; actorNew->clipdist = 8; @@ -16575,7 +16575,7 @@ int InitMine(PLAYER* pp) UpdateChange(actorNew, 0.5); - double dot = pp->vect.dot(pp->actor->spr.Angles.Yaw.ToVector()); + double dot = pp->vect.dot(pp->GetActor()->spr.Angles.Yaw.ToVector()); // don't adjust for strafing // not really sure what to do here as the original formula was very likely to overflow, creating a Q0.32 value. @@ -16666,7 +16666,7 @@ int HelpMissileLateral(DSWActor* actor, int dist) int InitFireball(PLAYER* pp) { - DSWActor* actor = pp->actor; + DSWActor* actor = pp->GetActor(); PlayerUpdateAmmo(pp, WPN_HOTHEAD, -1); @@ -16678,15 +16678,15 @@ int InitFireball(PLAYER* pp) if (!pp->insector()) return 0; - auto pos = pp->actor->getPosWithOffsetZ().plusZ(pp->bob_z + 15); + auto pos = pp->GetActor()->getPosWithOffsetZ().plusZ(pp->bob_z + 15); - auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Fireball, pp->cursector, pos, pp->actor->spr.Angles.Yaw, FIREBALL_VELOCITY); + auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL1, s_Fireball, pp->cursector, pos, pp->GetActor()->spr.Angles.Yaw, FIREBALL_VELOCITY); actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->spr.scale = DVector2(0.625, 0.625); actorNew->spr.shade = -40; actorNew->clipdist = 2; - SetOwner(pp->actor, actorNew); + SetOwner(pp->GetActor(), actorNew); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->user.Radius = 100; @@ -16717,7 +16717,7 @@ int InitFireball(PLAYER* pp) actor->clipdist = oclipdist; actorNew->vel.Z = 0.5; - if (WeaponAutoAimZvel(pp->actor, actorNew, &zvel, DAngle22_5 / 4, false) == -1) + if (WeaponAutoAimZvel(pp->GetActor(), actorNew, &zvel, DAngle22_5 / 4, false) == -1) { actorNew->spr.Angles.Yaw -= mapangle(9); } @@ -17979,7 +17979,7 @@ int DoFloorBlood(DSWActor* actor) { pp = &Player[pnum]; - double dist = (actor->spr.pos.XY() - pp->actor->spr.pos.XY()).Length(); + double dist = (actor->spr.pos.XY() - pp->GetActor()->spr.pos.XY()).Length(); if (dist < FEET_IN_BLOOD_DIST) { diff --git a/source/games/sw/src/weapon.h b/source/games/sw/src/weapon.h index 4ee4593a8..8122ac449 100644 --- a/source/games/sw/src/weapon.h +++ b/source/games/sw/src/weapon.h @@ -40,7 +40,7 @@ inline DAngle AngToSprite(DSWActor* actor, DSWActor* other) inline DAngle AngToPlayer(PLAYER* player, DSWActor* other) { - return (player->actor->getPosWithOffsetZ() - other->spr.pos).Angle(); + return (player->GetActor()->getPosWithOffsetZ() - other->spr.pos).Angle(); } diff --git a/source/games/sw/src/zombie.cpp b/source/games/sw/src/zombie.cpp index 0750f36bf..5ba159543 100644 --- a/source/games/sw/src/zombie.cpp +++ b/source/games/sw/src/zombie.cpp @@ -778,7 +778,7 @@ void SpawnZombie(PLAYER* pp, DSWActor* weaponActor) if (ownerActor == nullptr) return; - auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursector, pp->actor->getPosWithOffsetZ(), pp->actor->spr.Angles.Yaw, 0); + auto actorNew = SpawnActor(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursector, pp->GetActor()->getPosWithOffsetZ(), pp->GetActor()->spr.Angles.Yaw, 0); SetOwner(actorNew, ownerActor); actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal; actorNew->spr.Angles.Yaw = RandomAngle();