- SW: Wrap access to player's actor pointer.

This commit is contained in:
Mitchell Richters 2023-09-30 20:51:34 +10:00
parent 61bc8c23cf
commit a20e2b64f9
25 changed files with 532 additions and 527 deletions

View file

@ -250,7 +250,7 @@ int DoActorPickClosePlayer(DSWActor* actor)
goto TARGETACTOR; goto TARGETACTOR;
// Set initial target to Player 0 // Set initial target to Player 0
actor->user.targetActor = Player->actor; actor->user.targetActor = Player->GetActor();
if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER)) if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER))
{ {
@ -258,10 +258,10 @@ int DoActorPickClosePlayer(DSWActor* actor)
{ {
pp = &Player[pnum]; pp = &Player[pnum];
if (GetOwner(actor) == pp->actor) if (GetOwner(actor) == pp->GetActor())
continue; continue;
actor->user.targetActor = pp->actor; actor->user.targetActor = pp->GetActor();
break; break;
} }
} }
@ -275,7 +275,7 @@ int DoActorPickClosePlayer(DSWActor* actor)
// Zombies don't target their masters! // Zombies don't target their masters!
if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER)) if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER))
{ {
if (GetOwner(actor) == pp->actor) if (GetOwner(actor) == pp->GetActor())
continue; continue;
if (!PlayerTakeDamage(pp, actor)) if (!PlayerTakeDamage(pp, actor))
@ -286,12 +286,12 @@ int DoActorPickClosePlayer(DSWActor* actor)
// continue; // continue;
} }
dist = (actor->spr.pos - pp->actor->getPosWithOffsetZ()).Length(); dist = (actor->spr.pos - pp->GetActor()->getPosWithOffsetZ()).Length();
if (dist < near_dist) if (dist < near_dist)
{ {
near_dist = 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! // Zombies don't target their masters!
if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER)) if (actor->user.Flags2 & (SPR2_DONT_TARGET_OWNER))
{ {
if (GetOwner(actor) == pp->actor) if (GetOwner(actor) == pp->GetActor())
continue; continue;
if (!PlayerTakeDamage(pp, actor)) if (!PlayerTakeDamage(pp, actor))
continue; 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())) if (dist < near_dist && FAFcansee(ActorVectOfTop(actor), actor->sector(), ActorUpperVect(plActor), plActor->sector()))
{ {
near_dist = dist; near_dist = dist;
actor->user.targetActor = pp->actor; actor->user.targetActor = pp->GetActor();
found = true; found = true;
} }
} }
@ -368,9 +368,9 @@ DSWActor* GetPlayerSpriteNum(DSWActor* actor)
{ {
pp = &Player[pnum]; pp = &Player[pnum];
if (pp->actor == actor->user.targetActor) if (pp->GetActor() == actor->user.targetActor)
{ {
return pp->actor; return pp->GetActor();
} }
} }
return nullptr; return nullptr;

View file

@ -1015,7 +1015,7 @@ int DoBunnyQuickJump(DSWActor* actor)
if (pp == Player+myconnectindex) if (pp == Player+myconnectindex)
{ {
choose_snd = StdRandomRange(2<<8)>>8; 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); PlayerSound(fagsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
} }
} }
@ -1030,7 +1030,7 @@ int DoBunnyQuickJump(DSWActor* actor)
if (pp == Player+myconnectindex) if (pp == Player+myconnectindex)
{ {
choose_snd = StdRandomRange(3<<8)>>8; 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); PlayerSound(straightsnds[choose_snd], v3df_doppler | v3df_follow | v3df_dontpan, pp);
} }
} }

View file

@ -278,7 +278,7 @@ static void WeaponCheat(int player)
p->WpnRocketHeat = 5; p->WpnRocketHeat = 5;
p->WpnRocketNuke = 1; 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; break;
case GIVE_HEALTH: 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")); PutStringInfo(&Player[player], GStrings("TXTS_ADDEDHEALTH"));
} }
break; break;
@ -362,12 +362,12 @@ static void cmd_Give(int player, uint8_t** stream, bool skip)
p->WpnAmmo[i] = DamageData[i].max_ammo; p->WpnAmmo[i] = DamageData[i].max_ammo;
} }
PlayerUpdateWeapon(p, p->actor->user.WeaponNum); PlayerUpdateWeapon(p, p->GetActor()->user.WeaponNum);
break; break;
} }
case GIVE_ARMOR: 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; Player[player].Armor = 100;
PutStringInfo(&Player[player], GStrings("TXTB_FULLARM")); PutStringInfo(&Player[player], GStrings("TXTB_FULLARM"));

View file

@ -775,7 +775,7 @@ static void analyzesprites(tspriteArray& tsprites, const DVector3& viewpos, doub
ShadeSprite(tsp); ShadeSprite(tsp);
// sw if its your playersprite // sw if its your playersprite
if (Player[screenpeek].actor == tActor) if (Player[screenpeek].GetActor() == tActor)
{ {
pp = Player + screenpeek; pp = Player + screenpeek;
if (display_mirror || (pp->Flags & (PF_VIEW_FROM_OUTSIDE|PF_VIEW_FROM_CAMERA))) 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.; 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)) 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 else // Otherwise just interpolate the player sprite
{ {
pp = tActor->user.PlayerP; pp = tActor->user.PlayerP;
tsp->pos = pp->actor->getRenderPos(interpfrac); tsp->pos = pp->GetActor()->getRenderPos(interpfrac);
tsp->Angles.Yaw = pp->actor->interpolatedyaw(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 ((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)) if (!(tActor->user.PlayerP->Flags & PF_VIEW_FROM_OUTSIDE))
{ {
@ -972,7 +972,7 @@ void PrintSpriteInfo(PLAYER* pp)
//if (SpriteInfo && !LocationInfo) //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 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) static void DrawCrosshair(PLAYER* pp, const double interpfrac)
{ {
auto offsets = pp->Angles.getCrosshairOffsets(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); pp->Angles.updateCameraAngles(interpfrac);
// Get initial player position, interpolating if required. // Get initial player position, interpolating if required.
DVector3 tpos = camerapp->actor->getRenderPos(interpfrac); DVector3 tpos = camerapp->GetActor()->getRenderPos(interpfrac);
DVector2 ampos = tpos.XY(); DVector2 ampos = tpos.XY();
DRotator tangles = camerapp->Angles.getRenderAngles(interpfrac); DRotator tangles = camerapp->Angles.getRenderAngles(interpfrac);
sectortype* tsect = camerapp->cursector; 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))) if (pp->sop_control && (!cl_sointerpolation || (CommEnabled && !pp->sop_remote)))
{ {
tpos = pp->actor->getPosWithOffsetZ(); tpos = pp->GetActor()->getPosWithOffsetZ();
tangles.Yaw = pp->actor->spr.Angles.Yaw; tangles.Yaw = pp->GetActor()->spr.Angles.Yaw;
} }
tsect = pp->cursector; tsect = pp->cursector;
updatesectorz(tpos, &tsect); updatesectorz(tpos, &tsect);
} }
pp->si = tpos.plusZ(-pp->actor->getOffsetZ()); pp->si = tpos.plusZ(-pp->GetActor()->getOffsetZ());
QuakeViewChange(camerapp, tpos, tangles.Yaw); QuakeViewChange(camerapp, tpos, tangles.Yaw);
int vis = g_visibility; int vis = g_visibility;
@ -1266,10 +1266,10 @@ void drawscreen(PLAYER* pp, double interpfrac, bool sceneonly)
{ {
tpos.Z -= 33; tpos.Z -= 33;
if (!calcChaseCamPos(tpos, pp->actor, &tsect, tangles, interpfrac, 128.)) if (!calcChaseCamPos(tpos, pp->GetActor(), &tsect, tangles, interpfrac, 128.))
{ {
tpos.Z += 33; 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); UpdatePanel(interpfrac);
UpdateWallPortalState(); UpdateWallPortalState();
render_drawrooms(pp->actor, tpos, tsect, tangles, interpfrac); render_drawrooms(pp->GetActor(), tpos, tsect, tangles, interpfrac);
RestorePortalState(); RestorePortalState();
if (sceneonly) if (sceneonly)
@ -1399,7 +1399,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos,
if (actor->spr.cstat2 & CSTAT2_SPRITE_MAPPED) if (actor->spr.cstat2 & CSTAT2_SPRITE_MAPPED)
{ {
// 1=white / 31=black / 44=green / 56=pink / 128=yellow / 210=blue / 248=orange / 255=purple // 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 statnum = actor->spr.statnum;
auto sprxy = ((statnum >= 1) && (statnum <= 8) && (statnum != 2) ? actor->interpolatedpos(interpfrac) : actor->spr.pos).XY() - cpos; 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) if (p == screenpeek)
{ {
auto pp = &Player[p]; auto pp = &Player[p];
auto actor = pp->actor; auto actor = pp->GetActor();
if (actor->vel.X > 1) pspr_ndx[myconnectindex] = ((PlayClock >> 4) & 3); if (actor->vel.X > 1) pspr_ndx[myconnectindex] = ((PlayClock >> 4) & 3);
sprisplayer = true; sprisplayer = true;
@ -1437,7 +1437,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos,
int spnum = -1; int spnum = -1;
if (sprisplayer) 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]; spnum = 1196 + pspr_ndx[myconnectindex];
} }
else spnum = actor->spr.picnum; else spnum = actor->spr.picnum;

View file

@ -1850,9 +1850,14 @@ struct PLAYER
uint8_t WpnReloadState; uint8_t WpnReloadState;
inline DSWActor* GetActor()
{
return actor;
}
void posZset(const double val) 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 NextLevel(MapRecord *map, int skill) override;
void NewGame(MapRecord *map, int skill, bool) 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; 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 ToggleThirdPerson() override;
void SwitchCoopView() override; void SwitchCoopView() override;
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double smoothRatio) 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) 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) inline bool FacingRange(DSWActor* a1, DSWActor* a2, DAngle range)

View file

@ -563,7 +563,7 @@ int DoCheckSwarm(DSWActor* actor)
if (actor->user.targetActor->user.PlayerP) if (actor->user.targetActor->user.PlayerP)
{ {
pp = 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 else
return 0; return 0;

View file

@ -72,7 +72,7 @@ enum
void processWeapon(PLAYER* const pp) void processWeapon(PLAYER* const pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
if (plActor == nullptr) return; if (plActor == nullptr) return;
int i; int i;

View file

@ -159,7 +159,7 @@ void UseInventoryMedkit(PLAYER* pp)
if (!pp->InventoryAmount[inv]) if (!pp->InventoryAmount[inv])
return; return;
diff = 100 - pp->actor->user.Health; diff = 100 - pp->GetActor()->user.Health;
if (diff <= 0) if (diff <= 0)
return; return;
@ -296,7 +296,7 @@ void UseInventoryRepairKit(PLAYER* pp)
void UseInventoryCloak(PLAYER* pp) void UseInventoryCloak(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
if (pp->InventoryActive[pp->InventoryNum]) if (pp->InventoryActive[pp->InventoryNum])
{ {
@ -321,7 +321,7 @@ void UseInventoryCloak(PLAYER* pp)
void StopInventoryCloak(PLAYER* pp, short InventoryNum) void StopInventoryCloak(PLAYER* pp, short InventoryNum)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
pp->InventoryActive[InventoryNum] = false; pp->InventoryActive[InventoryNum] = false;

View file

@ -385,7 +385,7 @@ void JS_ProcessEchoSpot()
while (auto actor = it.Next()) while (auto actor = it.Next())
{ {
double maxdist = SP_TAG4(actor) * maptoworld; 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); double dist = abs(v.X) + abs(v.Y);
if (dist <= maxdist) // tag4 = ang 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 // If player is dead still then update at MoveSkip4
// rate. // rate.
if (pp->actor->spr.pos == pp->actor->opos) if (pp->GetActor()->spr.pos == pp->GetActor()->opos)
DoCam = true; DoCam = true;
@ -561,7 +561,7 @@ void JS_DrawCameras(PLAYER* pp, const DVector3& campos, double smoothratio)
if (TEST_BOOL11(camactor) && numplayers > 1) 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 else
{ {

View file

@ -1233,7 +1233,7 @@ int DoRadiationCloud(DSWActor* actor)
////////////////////////////////////////////// //////////////////////////////////////////////
int PlayerInitChemBomb(PLAYER* pp) int PlayerInitChemBomb(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
PlaySound(DIGI_THROW, pp, v3df_dontpan | v3df_doppler); PlaySound(DIGI_THROW, pp, v3df_dontpan | v3df_doppler);
@ -1241,11 +1241,11 @@ int PlayerInitChemBomb(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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 // don't throw it as far if crawling
if (pp->Flags & (PF_CRAWLING)) if (pp->Flags & (PF_CRAWLING))
@ -1255,7 +1255,7 @@ int PlayerInitChemBomb(PLAYER* pp)
actorNew->user.Flags |= (SPR_XFLIP_TOGGLE); actorNew->user.Flags |= (SPR_XFLIP_TOGGLE);
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->spr.scale = DVector2(0.5, 0.5);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
actorNew->user.WeaponNum = plActor->user.WeaponNum; actorNew->user.WeaponNum = plActor->user.WeaponNum;
@ -1403,7 +1403,7 @@ int PlayerInitFlashBomb(PLAYER* pp)
unsigned int stat; unsigned int stat;
short damage; short damage;
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
PlaySound(DIGI_GASPOP, pp, v3df_dontpan | v3df_doppler); PlaySound(DIGI_GASPOP, pp, v3df_dontpan | v3df_doppler);
@ -1415,7 +1415,7 @@ int PlayerInitFlashBomb(PLAYER* pp)
SWStatIterator it(StatDamageList[stat]); SWStatIterator it(StatDamageList[stat]);
while (auto itActor = it.Next()) while (auto itActor = it.Next())
{ {
if (itActor == pp->actor) if (itActor == pp->GetActor())
break; break;
double dist = (itActor->spr.pos.XY() - actor->spr.pos.XY()).Length(); 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())) if (!FAFcansee(itActor->spr.pos, itActor->sector(), actor->spr.pos.plusZ(-ActorSizeZ(actor)), actor->sector()))
continue; continue;
damage = GetDamage(itActor, pp->actor, DMG_FLASHBOMB); damage = GetDamage(itActor, pp->GetActor(), DMG_FLASHBOMB);
if (itActor->user.sop_parent) if (itActor->user.sop_parent)
{ {
@ -1607,16 +1607,16 @@ void SpawnFlashBombOnActor(DSWActor* actor)
int PlayerInitCaltrops(PLAYER* pp) int PlayerInitCaltrops(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
PlaySound(DIGI_THROW, pp, v3df_dontpan | v3df_doppler); PlaySound(DIGI_THROW, pp, v3df_dontpan | v3df_doppler);
if (!pp->insector()) if (!pp->insector())
return 0; 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 // don't throw it as far if crawling
if (pp->Flags & (PF_CRAWLING)) if (pp->Flags & (PF_CRAWLING))
@ -1626,7 +1626,7 @@ int PlayerInitCaltrops(PLAYER* pp)
actorNew->user.Flags |= (SPR_XFLIP_TOGGLE); actorNew->user.Flags |= (SPR_XFLIP_TOGGLE);
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.scale = DVector2(1, 1); actorNew->spr.scale = DVector2(1, 1);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
actorNew->user.WeaponNum = plActor->user.WeaponNum; actorNew->user.WeaponNum = plActor->user.WeaponNum;
@ -2182,7 +2182,7 @@ int SpawnShell(DSWActor* actor, int ShellNum)
if (actor->user.PlayerP) 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) switch (actorNew->user.ID)

View file

@ -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 // move the box to position instead of using offset- this prevents small rounding errors
// allowing you to move through wall // allowing you to move through wall
DAngle ang = (pp->actor->spr.Angles.Yaw + sop->clipbox_ang[i]); DAngle ang = (pp->GetActor()->spr.Angles.Yaw + sop->clipbox_ang[i]);
DVector3 spos(pp->actor->getPosWithOffsetZ(), zz); DVector3 spos(pp->GetActor()->getPosWithOffsetZ(), zz);
DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i]; DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i];
Collision coll; Collision coll;
@ -73,7 +73,7 @@ Collision MultiClipMove(PLAYER* pp, double zz, double floordist)
min_dist = 0; min_dist = 0;
min_ndx = i; min_ndx = i;
// ox is where it should be // 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 // spos.x is where it hit
pos[i].XY() = spos.XY(); pos[i].XY() = spos.XY();
@ -111,7 +111,7 @@ Collision MultiClipMove(PLAYER* pp, double zz, double floordist)
} }
// put posx and y off from offset // 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; 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]; 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]; DVector2 vect = ang.ToVector() * sop->clipbox_vdist[i];
Collision coll; Collision coll;
@ -207,7 +207,7 @@ int RectClipMove(PLAYER* pp, DVector2* qpos)
//Given the 4 points: x[4], y[4] //Given the 4 points: x[4], y[4]
if (testquadinsect(&point_num, xy, pp->cursector)) if (testquadinsect(&point_num, xy, pp->cursector))
{ {
pp->actor->spr.pos.XY() += pvect; pp->GetActor()->spr.pos.XY() += pvect;
return true; return true;
} }
@ -223,7 +223,7 @@ int RectClipMove(PLAYER* pp, DVector2* qpos)
} }
if (testquadinsect(&point_num, xy, pp->cursector)) 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; return false;
@ -238,7 +238,7 @@ int RectClipMove(PLAYER* pp, DVector2* qpos)
} }
if (testquadinsect(&point_num, xy, pp->cursector)) 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; 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; rot_angl = new_angl + sop->spin_ang - sop->ang_orig;
for (i = 0; i < 4; i++) 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 // cannot use sop->xmid and ymid because the SO is off the map at this point
} }

View file

@ -66,11 +66,11 @@ void InitNetPlayerOptions(void)
// myconnectindex palette // myconnectindex palette
pp->TeamColor = gs.NetColor; pp->TeamColor = gs.NetColor;
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
if (actor) if (actor)
{ {
actor->spr.pal = PALETTE_PLAYER0 + pp->TeamColor; actor->spr.pal = PALETTE_PLAYER0 + pp->TeamColor;
pp->actor->user.spal = actor->spr.pal; pp->GetActor()->user.spal = actor->spr.pal;
} }
} }

View file

@ -2122,7 +2122,7 @@ void InitAllPlayerSprites(const DVector3& spawnpos, const DAngle startang)
void PlayerLevelReset(PLAYER* pp) void PlayerLevelReset(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
if (gNet.MultiGameType == MULTI_GAME_COMMBAT) if (gNet.MultiGameType == MULTI_GAME_COMMBAT)
{ {
@ -2165,7 +2165,7 @@ void PlayerLevelReset(PLAYER* pp)
void PlayerDeathReset(PLAYER* pp) void PlayerDeathReset(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
if (pp->Flags & (PF_DIVING)) if (pp->Flags & (PF_DIVING))
DoPlayerStopDiveNoWarp(pp); DoPlayerStopDiveNoWarp(pp);
@ -2243,9 +2243,9 @@ void PlayerPanelSetup(void)
{ {
auto pp = Player + pnum; 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) 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 COVER_SetReverb(0); // Turn off any echoing that may have been going before
pp->Reverb = 0; pp->Reverb = 0;
@ -2341,7 +2341,7 @@ void InitPlayerSprite(PLAYER* pp, const DVector3& spawnpos, const DAngle startan
pp->actor = actor; pp->actor = actor;
pp->pnum = pnum; 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.cstat |= (CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
actor->spr.extra |= (SPRX_PLAYER_OR_ENEMY); 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->spr.pal = PALETTE_PLAYER0 + pp->pnum;
actor->user.spal = actor->spr.pal; actor->user.spal = actor->spr.pal;
pp->actor->setStateGroup(NAME_Run); pp->GetActor()->setStateGroup(NAME_Run);
pp->PlayerUnderActor = nullptr; pp->PlayerUnderActor = nullptr;
@ -2406,12 +2406,12 @@ void InitPlayerSprite(PLAYER* pp, const DVector3& spawnpos, const DAngle startan
void SpawnPlayerUnderSprite(PLAYER* pp) void SpawnPlayerUnderSprite(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
int pnum = int(pp - Player); int pnum = int(pp - Player);
pp->PlayerUnderActor = SpawnActor(STAT_PLAYER_UNDER0 + pnum, 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; DSWActor* actor = pp->PlayerUnderActor;

View file

@ -259,7 +259,7 @@ void ArmorCalc(int damage_amt, int *armor_damage, int *player_damage)
void PlayerUpdateHealth(PLAYER* pp, short value) void PlayerUpdateHealth(PLAYER* pp, short value)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
short x,y; short x,y;
if (Prediction) if (Prediction)
@ -413,7 +413,7 @@ void PlayerUpdateAmmo(PLAYER* pp, short UpdateWeaponNum, short value)
void PlayerUpdateWeapon(PLAYER* pp, short WeaponNum) void PlayerUpdateWeapon(PLAYER* pp, short WeaponNum)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
// weapon Change // weapon Change
if (Prediction) if (Prediction)
@ -447,7 +447,7 @@ void PlayerUpdateKills(PLAYER* pp, short value)
opp = Player + pnum; opp = Player + pnum;
// for everyone on the same team // 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); Level.addFrags(pnum, value);
} }
@ -489,7 +489,7 @@ void PlayerUpdateArmor(PLAYER* pp, short value)
int WeaponOperate(PLAYER* pp) int WeaponOperate(PLAYER* pp)
{ {
short weapon; short weapon;
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
InventoryKeys(pp); 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}; static const uint8_t wpn_order[] = {2,3,4,5,6,7,8,9,1,0};
unsigned wpn_ndx=0; unsigned wpn_ndx=0;
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
if (!plActor || !plActor->hasU()) if (!plActor || !plActor->hasU())
return(false); return(false);
@ -2590,7 +2590,7 @@ void pUziFire(PANEL_SPRITE* psp)
} }
else else
{ {
SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32);
if (!WeaponOK(psp->PlayerP)) if (!WeaponOK(psp->PlayerP))
return; return;
@ -2705,14 +2705,14 @@ void SpawnUziShell(PANEL_SPRITE* psp)
// LEFT side // LEFT side
pp->UziShellLeftAlt = !pp->UziShellLeftAlt; pp->UziShellLeftAlt = !pp->UziShellLeftAlt;
if (pp->UziShellLeftAlt) if (pp->UziShellLeftAlt)
SpawnShell(pp->actor,-3); SpawnShell(pp->GetActor(),-3);
} }
else else
{ {
// RIGHT side // RIGHT side
pp->UziShellRightAlt = !pp->UziShellRightAlt; pp->UziShellRightAlt = !pp->UziShellRightAlt;
if (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) void SpawnShotgunShell(PANEL_SPRITE* psp)
{ {
PLAYER* pp = psp->PlayerP; PLAYER* pp = psp->PlayerP;
SpawnShell(pp->actor,-4); SpawnShell(pp->GetActor(),-4);
} }
void pShotgunShell(PANEL_SPRITE* psp) void pShotgunShell(PANEL_SPRITE* psp)
@ -3320,7 +3320,7 @@ void pShotgunAction(PANEL_SPRITE* psp)
void pShotgunFire(PANEL_SPRITE* psp) void pShotgunFire(PANEL_SPRITE* psp)
{ {
SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32);
InitShotgun(psp->PlayerP); InitShotgun(psp->PlayerP);
//SpawnShotgunShell(psp); //SpawnShotgunShell(psp);
} }
@ -3752,7 +3752,7 @@ void pRailAction(PANEL_SPRITE* psp)
void pRailFire(PANEL_SPRITE* psp) void pRailFire(PANEL_SPRITE* psp)
{ {
SpawnVis(psp->PlayerP->actor, nullptr, {}, 16); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 16);
InitRail(psp->PlayerP); InitRail(psp->PlayerP);
} }
@ -3771,7 +3771,7 @@ void pRailRetract(PANEL_SPRITE* psp)
{ {
psp->PlayerP->Flags &= ~(PF_WEAPON_RETRACT); psp->PlayerP->Flags &= ~(PF_WEAPON_RETRACT);
psp->PlayerP->Wpn[psp->WeaponType] = nullptr; psp->PlayerP->Wpn[psp->WeaponType] = nullptr;
DeleteNoSoundOwner(psp->PlayerP->actor); DeleteNoSoundOwner(psp->PlayerP->GetActor());
pKillSprite(psp); pKillSprite(psp);
} }
} }
@ -4203,15 +4203,15 @@ void pHotheadAttack(PANEL_SPRITE* psp)
switch (psp->PlayerP->WpnFlameType) switch (psp->PlayerP->WpnFlameType)
{ {
case 0: case 0:
SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32);
InitFireball(psp->PlayerP); InitFireball(psp->PlayerP);
break; break;
case 1: case 1:
SpawnVis(psp->PlayerP->actor, nullptr, {}, 20); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 20);
InitSpellRing(psp->PlayerP); InitSpellRing(psp->PlayerP);
break; break;
case 2: case 2:
SpawnVis(psp->PlayerP->actor, nullptr, {}, 16); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 16);
InitSpellNapalm(psp->PlayerP); InitSpellNapalm(psp->PlayerP);
break; break;
} }
@ -4294,7 +4294,7 @@ void SpawnOnFire(PLAYER* pp)
void pOnFire(PANEL_SPRITE* psp) void pOnFire(PANEL_SPRITE* psp)
{ {
DSWActor* plActor = psp->PlayerP->actor; DSWActor* plActor = psp->PlayerP->GetActor();
// Kill immediately - in case of death/water // Kill immediately - in case of death/water
if (plActor->user.flameActor == nullptr && plActor->user.Flags2 & SPR2_FLAMEDIE) if (plActor->user.flameActor == nullptr && plActor->user.Flags2 & SPR2_FLAMEDIE)
@ -4827,7 +4827,7 @@ void pMicroAction(PANEL_SPRITE* psp)
void pMicroFire(PANEL_SPRITE* psp) void pMicroFire(PANEL_SPRITE* psp)
{ {
SpawnVis(psp->PlayerP->actor, nullptr, {}, 20); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 20);
switch (psp->PlayerP->WpnRocketType) switch (psp->PlayerP->WpnRocketType)
{ {
case 0: case 0:
@ -5770,7 +5770,7 @@ void pGrenadeAction(PANEL_SPRITE* psp)
void pGrenadeFire(PANEL_SPRITE* psp) void pGrenadeFire(PANEL_SPRITE* psp)
{ {
SpawnVis(psp->PlayerP->actor, nullptr, {}, 32); SpawnVis(psp->PlayerP->GetActor(), nullptr, {}, 32);
InitGrenade(psp->PlayerP); InitGrenade(psp->PlayerP);
} }
@ -7365,7 +7365,7 @@ void pWeaponBob(PANEL_SPRITE* psp, short condition)
bool DrawBeforeView = false; bool DrawBeforeView = false;
void pDisplaySprites(PLAYER* pp, double interpfrac) void pDisplaySprites(PLAYER* pp, double interpfrac)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
PANEL_SPRITE* next=nullptr; PANEL_SPRITE* next=nullptr;
short shade, picnum, overlay_shade = 0; short shade, picnum, overlay_shade = 0;
double x, y; double x, y;

File diff suppressed because it is too large Load diff

View file

@ -195,7 +195,7 @@ void QuakeViewChange(PLAYER* pp, DVector3& tpos, DAngle& tang)
SWStatIterator it(STAT_QUAKE_ON); SWStatIterator it(STAT_QUAKE_ON);
while ((actor = it.Next())) 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 // shake whole level
if (QUAKE_TestDontTaper(actor)) 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) 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; return false;
} }
@ -295,7 +295,7 @@ int SetGunQuake(DSWActor* actor)
int SetPlayerQuake(PLAYER* pp) int SetPlayerQuake(PLAYER* pp)
{ {
SpawnQuake(pp->cursector, pp->actor->getPosWithOffsetZ(), 40, 8, 40000); SpawnQuake(pp->cursector, pp->GetActor()->getPosWithOffsetZ(), 40, 8, 40000);
return 0; return 0;
} }

View file

@ -1518,7 +1518,7 @@ int OperateSprite(DSWActor* actor, short player_is_operating)
{ {
pp = GlobPlayerP; 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; return false;
} }
@ -1996,9 +1996,9 @@ void OperateTripTrigger(PLAYER* pp)
{ {
if (actor->user.Flags & (SPR_WAIT_FOR_TRIGGER)) 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); actor->user.Flags &= ~(SPR_WAIT_FOR_TRIGGER);
} }
} }
@ -2076,7 +2076,7 @@ void OperateContinuousTrigger(PLAYER* pp)
short PlayerTakeSectorDamage(PLAYER* pp) short PlayerTakeSectorDamage(PLAYER* pp)
{ {
auto sectu = pp->cursector; auto sectu = pp->cursector;
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
// the calling routine must make sure sectu exists // the calling routine must make sure sectu exists
if ((actor->user.DamageTics -= synctics) < 0) if ((actor->user.DamageTics -= synctics) < 0)
@ -2109,7 +2109,7 @@ bool NearThings(PLAYER* pp)
return false; 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! // hit a sprite? Check to see if it has sound info in it!
@ -2142,12 +2142,12 @@ bool NearThings(PLAYER* pp)
{ {
HitInfo hit{}; 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) if (hit.hitSector == nullptr)
return false; 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; return false;
// hit a sprite? // hit a sprite?
@ -2190,7 +2190,7 @@ void NearTagList(NEAR_TAG_INFO* ntip, PLAYER* pp, double z, double dist, int typ
HitInfo near; 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) if (near.hitSector != nullptr)
{ {
@ -2315,7 +2315,7 @@ int DoPlayerGrabStar(PLAYER* pp)
auto actor = StarQueue[i]; auto actor = StarQueue[i];
if (actor != nullptr) 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; break;
} }
@ -2349,7 +2349,7 @@ void PlayerOperateEnv(PLAYER* pp)
{ {
bool found; bool found;
if (Prediction || !pp->actor) if (Prediction || !pp->GetActor())
return; return;
// //
@ -2373,7 +2373,7 @@ void PlayerOperateEnv(PLAYER* pp)
NearThings(pp); // Check for player sound specified in a level sprite 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; found = false;
@ -2394,7 +2394,7 @@ void PlayerOperateEnv(PLAYER* pp)
if (!found) if (!found)
{ {
double z[3]; double z[3];
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
z[0] = plActor->spr.pos.Z - ActorSizeZ(plActor) - 10; z[0] = plActor->spr.pos.Z - ActorSizeZ(plActor) - 10;
z[1] = plActor->spr.pos.Z; z[1] = plActor->spr.pos.Z;
@ -2484,14 +2484,14 @@ void PlayerOperateEnv(PLAYER* pp)
{ {
PlayerTakeSectorDamage(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); PlayerTakeSectorDamage(pp);
} }
} }
else else
{ {
pp->actor->user.DamageTics = 0; pp->GetActor()->user.DamageTics = 0;
} }
@ -2904,7 +2904,7 @@ void DoSector(void)
} }
else 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) if (dist < min_dist)
min_dist = dist; min_dist = dist;
} }

View file

@ -108,7 +108,7 @@ short SoundDist(const DVector3& pos, double basedist)
double sqrdist; double sqrdist;
extern short screenpeek; 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 if (basedist < 0) // if basedist is negative
{ {
@ -325,7 +325,7 @@ static void UpdateAmbients()
if (sdist < 255 && sfx->ResourceId == DIGI_WHIPME) if (sdist < 255 && sfx->ResourceId == DIGI_WHIPME)
{ {
PLAYER* pp = Player + screenpeek; 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; sdist = 255;
} }
@ -426,7 +426,7 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
if (pos != nullptr) if (pos != nullptr)
{ {
PLAYER* pp = Player + screenpeek; PLAYER* pp = Player + screenpeek;
FVector3 campos = GetSoundPos(pp->actor ? pp->actor->getPosWithOffsetZ() : DVector3()); FVector3 campos = GetSoundPos(pp->GetActor() ? pp->GetActor()->getPosWithOffsetZ() : DVector3());
DVector3 vPos = {}; DVector3 vPos = {};
bool pancheck = false; bool pancheck = false;
@ -446,10 +446,10 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
} }
else else
{ {
auto act = ((PLAYER*)source)->actor; auto act = ((PLAYER*)source)->GetActor();
if (act) vPos = act->getPosWithOffsetZ(); if (act) vPos = act->getPosWithOffsetZ();
else if (pp->actor) else if (pp->GetActor())
vPos = pp->actor->getPosWithOffsetZ(); vPos = pp->GetActor()->getPosWithOffsetZ();
} }
pancheck = true; pancheck = true;
FVector3 npos = GetSoundPos(vPos); 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. // Can the ambient sound see the player? If not, tone it down some.
if ((chanflags & CHANF_LOOP)) 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; auto distvec = npos - campos;
npos = campos + distvec * 1.75f; // Play more quietly npos = campos + distvec * 1.75f; // Play more quietly
@ -523,13 +523,13 @@ void GameInterface::UpdateSounds(void)
if (rsp && TEST_BOOL1(rsp)) if (rsp && TEST_BOOL1(rsp))
tang = rsp->spr.Angles.Yaw; tang = rsp->spr.Angles.Yaw;
else 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.angle = float(-tang.Radians());
listener.velocity.Zero(); listener.velocity.Zero();
listener.position = GetSoundPos(pp->actor ? pp->actor->getPosWithOffsetZ() : DVector3()); listener.position = GetSoundPos(pp->GetActor() ? pp->GetActor()->getPosWithOffsetZ() : DVector3());
listener.underwater = false; listener.underwater = false;
// This should probably use a real environment instead of the pitch hacking in S_PlaySound3D. // This should probably use a real environment instead of the pitch hacking in S_PlaySound3D.
// listenactor->waterlevel == 3; // listenactor->waterlevel == 3;
@ -573,7 +573,7 @@ int _PlaySound(const FSoundID sndid, DSWActor* actor, PLAYER* pp, const DVector3
} }
else if (pp && !ppos) else if (pp && !ppos)
{ {
pos = pp->actor->getPosWithOffsetZ(); pos = pp->GetActor()->getPosWithOffsetZ();
pp = nullptr; pp = nullptr;
sourcetype = SOURCE_Unattached; sourcetype = SOURCE_Unattached;
} }

View file

@ -774,7 +774,7 @@ void SpawnUser(DSWActor* actor, short id, STATE* state)
actor->user.WpnGoalActor = nullptr; actor->user.WpnGoalActor = nullptr;
actor->user.attachActor = nullptr; actor->user.attachActor = nullptr;
actor->user.track = -1; actor->user.track = -1;
actor->user.targetActor = Player[0].actor; actor->user.targetActor = Player[0].GetActor();
actor->user.Radius = 220; actor->user.Radius = 220;
actor->user.Sibling = -1; actor->user.Sibling = -1;
actor->user.WaitTics = 0; actor->user.WaitTics = 0;
@ -4999,26 +4999,26 @@ int DoGet(DSWActor* actor)
TRAVERSE_CONNECT(pnum) TRAVERSE_CONNECT(pnum)
{ {
pp = &Player[pnum]; pp = &Player[pnum];
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
int weaponswitch = WeaponSwitch(pnum); int weaponswitch = WeaponSwitch(pnum);
if (pp->Flags & (PF_DEAD)) if (pp->Flags & (PF_DEAD))
continue; 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())) if ((unsigned)dist > (plActor->user.fRadius() + actor->user.fRadius()))
{ {
continue; continue;
} }
if (!SpriteOverlap(actor, pp->actor)) if (!SpriteOverlap(actor, pp->GetActor()))
{ {
continue; continue;
} }
auto cstat_bak = actor->spr.cstat; auto cstat_bak = actor->spr.cstat;
actor->spr.cstat |= (CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); 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; actor->spr.cstat = cstat_bak;
if (!can_see) if (!can_see)
@ -5800,7 +5800,7 @@ KeyMain:
case ICON_FLAG: 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); PlaySound(DIGI_ITEM, actor, v3df_dontpan);
@ -5816,11 +5816,11 @@ KeyMain:
actorNew->user.Counter = 0; actorNew->user.Counter = 0;
actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN); actorNew->spr.cstat &= ~(CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
actorNew->spr.cstat |= (CSTAT_SPRITE_ALIGNMENT_WALL); actorNew->spr.cstat |= (CSTAT_SPRITE_ALIGNMENT_WALL);
SetAttach(pp->actor, actorNew); SetAttach(pp->GetActor(), actorNew);
actorNew->user.pos.Z = ActorZOfMiddle(pp->actor); // Set mid way up who it hit 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 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 actorNew->user.flagOwnerActor = actor; // Tell carried flag who owns it
KillGet(actor); // Set up for flag respawning KillGet(actor); // Set up for flag respawning
break; break;
@ -5867,7 +5867,7 @@ void ProcessActiveVars(DSWActor* actor)
void AdjustActiveRange(PLAYER* pp, DSWActor* actor, double dist) void AdjustActiveRange(PLAYER* pp, DSWActor* actor, double dist)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
// do no FAFcansee before it is time // do no FAFcansee before it is time
if (actor->user.wait_active_check < ACTIVE_CHECK_TIME) if (actor->user.wait_active_check < ACTIVE_CHECK_TIME)
@ -6050,7 +6050,7 @@ void SpriteControl(void)
pp = &Player[pnum]; pp = &Player[pnum];
// Only update the ones closest // 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); AdjustActiveRange(pp, actor, dist);

View file

@ -738,7 +738,7 @@ void BossHealthMeter(void)
DSWActor* actor = BossSpriteNum[i]; DSWActor* actor = BossSpriteNum[i];
if (actor != nullptr && !bosswasseen[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]) if (i == 0 && !bosswasseen[0])
{ {

View file

@ -1469,14 +1469,14 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, const DVector2& move)
{ {
pp->Flags |= (PF_PLAYER_RIDING); pp->Flags |= (PF_PLAYER_RIDING);
pp->RevolveAng = pp->actor->spr.Angles.Yaw; pp->RevolveAng = pp->GetActor()->spr.Angles.Yaw;
pp->Revolve.XY() = pp->actor->spr.pos.XY(); pp->Revolve.XY() = pp->GetActor()->spr.pos.XY();
// set the delta angle to 0 when moving // set the delta angle to 0 when moving
pp->RevolveDeltaAng = nullAngle; pp->RevolveDeltaAng = nullAngle;
} }
pp->actor->spr.pos.XY() += move; pp->GetActor()->spr.pos.XY() += move;
if ((sop->flags & SOBJ_DONT_ROTATE)) 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 // save the current information so when Player stops
// moving then you // moving then you
// know where he was last // know where he was last
pp->RevolveAng = pp->actor->spr.Angles.Yaw; pp->RevolveAng = pp->GetActor()->spr.Angles.Yaw;
pp->Revolve.XY() = pp->actor->spr.pos.XY(); pp->Revolve.XY() = pp->GetActor()->spr.pos.XY();
// set the delta angle to 0 when moving // set the delta angle to 0 when moving
pp->RevolveDeltaAng = nullAngle; pp->RevolveDeltaAng = nullAngle;
@ -1505,20 +1505,20 @@ void MovePlayer(PLAYER* pp, SECTOR_OBJECT* sop, const DVector2& move)
pp->Revolve += move; pp->Revolve += move;
// Last known angle is now adjusted by the delta angle // 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 // increment Players delta angle
pp->RevolveDeltaAng += GlobSpeedSO; 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!!!! // THIS WAS CAUSING PROLEMS!!!!
// Sectors are still being manipulated so you can end up in a void (-1) sector // 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 // New angle is formed by taking last known angle and
// adjusting by the delta angle // 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); UpdatePlayerSprite(pp);
} }
@ -1724,7 +1724,7 @@ PlayerPart:
// prevents you from falling into map HOLEs created by moving // prevents you from falling into map HOLEs created by moving
// Sectors and sprites around. // Sectors and sprites around.
//if (!SO_EMPTY(sop)) //if (!SO_EMPTY(sop))
updatesector(pp->actor->getPosWithOffsetZ(), &pp->cursector); updatesector(pp->GetActor()->getPosWithOffsetZ(), &pp->cursector);
// in case you are in a whirlpool // in case you are in a whirlpool
// move perfectly with the ride in the z direction // move perfectly with the ride in the z direction
@ -3335,9 +3335,9 @@ int ActorFollowTrack(DSWActor* actor, short locktics)
{ {
pp = &Player[pnum]; 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); actor->user.Flags &= ~(SPR_WAIT_FOR_PLAYER);
return true; return true;
} }

View file

@ -106,7 +106,7 @@ void VisViewChange(PLAYER* pp, int *vis)
} }
// save off the brightest vis that you can see // 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) if (VIS_VisCur(actor) < BrightestVis)
BrightestVis = VIS_VisCur(actor); BrightestVis = VIS_VisCur(actor);

View file

@ -5198,7 +5198,7 @@ int GetDamage(DSWActor* actor, DSWActor* weapActor, int DamageNdx)
int PlayerCheckDeath(PLAYER* pp, DSWActor* weapActor) int PlayerCheckDeath(PLAYER* pp, DSWActor* weapActor)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
// Store off what player was struck by // Store off what player was struck by
pp->HitBy = weapActor; pp->HitBy = weapActor;
@ -5268,7 +5268,7 @@ bool PlayerTakeDamage(PLAYER* pp, DSWActor* weapActor)
if (weapActor == nullptr) if (weapActor == nullptr)
return true; return true;
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
auto weapOwner = GetOwner(weapActor); auto weapOwner = GetOwner(weapActor);
@ -5278,7 +5278,7 @@ bool PlayerTakeDamage(PLAYER* pp, DSWActor* weapActor)
if (weapActor->user.ID == ZOMBIE_RUN_R0) if (weapActor->user.ID == ZOMBIE_RUN_R0)
{ {
// if weapons Owner the player // if weapons Owner the player
if (weapOwner == pp->actor) if (weapOwner == pp->GetActor())
return false; return false;
} }
@ -11247,7 +11247,7 @@ int DoRing(DSWActor* actor)
double z; double z;
// move the center with the player // move the center with the player
if (pp) if (pp)
z = pp->actor->getOffsetZ() + 20; z = pp->GetActor()->getOffsetZ() + 20;
else else
z = ActorZOfMiddle(own) + 30; z = ActorZOfMiddle(own) + 30;
@ -11331,7 +11331,7 @@ void InitSpellRing(PLAYER* pp)
DAngle ang_diff = DAngle360 / max_missiles; 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) if (!SW_SHAREWARE)
PlaySound(DIGI_RFWIZ, pp, v3df_none); 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++) 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->spr.hitag = LUMINOUS; //Always full brightness
actorNew->vel.X = 31.25; actorNew->vel.X = 31.25;
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->spr.scale = DVector2(0.5, 0.5);
actorNew->vel.Z = 0; actorNew->vel.Z = 0;
@ -11359,7 +11359,7 @@ void InitSpellRing(PLAYER* pp)
// put it out there // put it out there
actorNew->spr.pos += actorNew->spr.Angles.Yaw.ToVector() * actorNew->user.Dist; 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; actorNew->spr.Angles.Yaw += DAngle90;
@ -11692,7 +11692,7 @@ int InitSerpRing(DSWActor* actor)
void InitSpellNapalm(PLAYER* pp) void InitSpellNapalm(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
unsigned i; unsigned i;
short ammo; short ammo;
@ -11718,7 +11718,7 @@ void InitSpellNapalm(PLAYER* pp)
for (i = 0; i < SIZ(mp); i++) for (i = 0; i < SIZ(mp); i++)
{ {
auto actor = SpawnActor(STAT_MISSILE, FIREBALL1, s_Napalm, pp->cursector, 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 actor->spr.hitag = LUMINOUS; //Always full brightness
@ -11727,7 +11727,7 @@ void InitSpellNapalm(PLAYER* pp)
PlaySound(DIGI_NAPWIZ, actor, v3df_follow); PlaySound(DIGI_NAPWIZ, actor, v3df_follow);
} }
SetOwner(pp->actor, actor); SetOwner(pp->GetActor(), actor);
actor->spr.shade = -40; actor->spr.shade = -40;
actor->spr.scale = DVector2(0.5, 0.5); actor->spr.scale = DVector2(0.5, 0.5);
actor->clipdist = 0; actor->clipdist = 0;
@ -11853,11 +11853,11 @@ int InitSpellMirv(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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); PlaySound(DIGI_MIRVWIZ, actorNew, v3df_follow);
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(1.125, 1.125); actorNew->spr.scale = DVector2(1.125, 1.125);
actorNew->clipdist = 2; actorNew->clipdist = 2;
@ -11869,7 +11869,7 @@ int InitSpellMirv(PLAYER* pp)
actorNew->user.ceiling_dist = (16); actorNew->user.ceiling_dist = (16);
actorNew->user.Dist = 12.5; actorNew->user.Dist = 12.5;
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
auto oclipdist = plActor->clipdist; auto oclipdist = plActor->clipdist;
plActor->clipdist = 0; plActor->clipdist = 0;
@ -11927,7 +11927,7 @@ int InitEnemyMirv(DSWActor* actor)
int InitSwordAttack(PLAYER* pp) int InitSwordAttack(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
unsigned stat; unsigned stat;
DAngle face; DAngle face;
@ -11945,7 +11945,7 @@ int InitSwordAttack(PLAYER* pp)
for (size_t i = 0; i < countof(dangs); i++) for (size_t i = 0; i < countof(dangs); i++)
{ {
if (RandomRange(1000) < 500) continue; // Don't spawn bubbles every time if (RandomRange(1000) < 500) continue; // Don't spawn bubbles every time
bubble = SpawnBubble(pp->actor); bubble = SpawnBubble(pp->GetActor());
if (bubble != nullptr) if (bubble != nullptr)
{ {
bubble->spr.Angles.Yaw = plActor->spr.Angles.Yaw; bubble->spr.Angles.Yaw = plActor->spr.Angles.Yaw;
@ -11975,16 +11975,16 @@ int InitSwordAttack(PLAYER* pp)
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY)) if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
continue; 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); face = mapangle(200);
if (dist < CloseRangeDist(itActor, plActor, 62.5) && PlayerFacingRange(pp, itActor, face)) 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())) 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{}; HitInfo hit{};
double dax = 1024., daz = 0; 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.)); 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) if (hit.hitSector == nullptr)
return 0; return 0;
if ((pp->actor->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75) if ((pp->GetActor()->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75)
{ {
if (hit.actor() != nullptr) if (hit.actor() != nullptr)
@ -12073,7 +12073,7 @@ int InitSwordAttack(PLAYER* pp)
if (hit.hitWall->lotag == TAG_WALL_BREAK) 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 // hit non breakable wall - do sound and puff
else else
@ -12095,7 +12095,7 @@ int InitSwordAttack(PLAYER* pp)
int InitFistAttack(PLAYER* pp) int InitFistAttack(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
unsigned stat; unsigned stat;
double reach; double reach;
DAngle face; DAngle face;
@ -12113,7 +12113,7 @@ int InitFistAttack(PLAYER* pp)
for (size_t i = 0; i < countof(dangs); i++) for (size_t i = 0; i < countof(dangs); i++)
{ {
bubble = SpawnBubble(pp->actor); bubble = SpawnBubble(pp->GetActor());
if (bubble != nullptr) if (bubble != nullptr)
{ {
bubble->spr.Angles.Yaw = plActor->spr.Angles.Yaw; bubble->spr.Angles.Yaw = plActor->spr.Angles.Yaw;
@ -12140,7 +12140,7 @@ int InitFistAttack(PLAYER* pp)
if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY)) if (!(itActor->spr.extra & SPRX_PLAYER_OR_ENEMY))
continue; 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]; bool iactive = pp->InventoryActive[2];
if (iactive) // Shadow Bombs give you demon fist 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 (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())) if (FAFcansee(ActorVectOfMiddle(itActor), itActor->sector(), ActorVectOfMiddle(plActor), plActor->sector()))
DoDamage(itActor, plActor); DoDamage(itActor, plActor);
@ -12173,14 +12173,14 @@ int InitFistAttack(PLAYER* pp)
{ {
HitInfo hit{}; HitInfo hit{};
double dax = 1024., daz = 0; 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.)); 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) if (hit.hitSector == nullptr)
return 0; return 0;
if ((pp->actor->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75) if ((pp->GetActor()->getPosWithOffsetZ() - hit.hitpos).Length() < 43.75)
{ {
if (hit.actor() != nullptr) if (hit.actor() != nullptr)
@ -12264,7 +12264,7 @@ int InitFistAttack(PLAYER* pp)
if (hit.hitWall->lotag == TAG_WALL_BREAK) 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 // hit non breakable wall - do sound and puff
else else
@ -12709,7 +12709,7 @@ void WeaponHitscanShootFeet(DSWActor* actor, DSWActor* hitActor, double *zvect)
int InitStar(PLAYER* pp) int InitStar(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
static DAngle dang[] = { mapangle(-12), mapangle(12) }; static DAngle dang[] = { mapangle(-12), mapangle(12) };
const double STAR_REPEAT = 0.40625; const double STAR_REPEAT = 0.40625;
@ -12722,14 +12722,14 @@ int InitStar(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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.scale = DVector2(STAR_REPEAT, STAR_REPEAT);
actorNew->spr.shade = -25; actorNew->spr.shade = -25;
actorNew->clipdist = 2; actorNew->clipdist = 2;
@ -12755,7 +12755,7 @@ int InitStar(PLAYER* pp)
return 0; 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; zvel = actorNew->vel.Z;
} }
@ -12813,7 +12813,7 @@ int InitStar(PLAYER* pp)
void InitHeartAttack(PLAYER* pp) void InitHeartAttack(PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
short i = 0; short i = 0;
static const MISSILE_PLACEMENT mp[] = static const MISSILE_PLACEMENT mp[] =
@ -12827,11 +12827,11 @@ void InitHeartAttack(PLAYER* pp)
return; return;
auto actorNew = SpawnActor(STAT_MISSILE_SKIP4, BLOOD_WORM, s_BloodWorm, pp->cursector, 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 actorNew->spr.hitag = LUMINOUS; //Always full brightness
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.shade = -10; actorNew->spr.shade = -10;
actorNew->spr.scale = DVector2(0.8125, 0.8125); actorNew->spr.scale = DVector2(0.8125, 0.8125);
actorNew->clipdist = 0; 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) int ContinueHitscan(PLAYER* pp, sectortype* sect, const DVector3& start, DAngle ang, const DVector3& vect)
{ {
HitInfo hit{}; HitInfo hit{};
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
FAFhitscan(start, sect, vect, hit, CLIPMASK_MISSILE); FAFhitscan(start, sect, vect, hit, CLIPMASK_MISSILE);
@ -12926,7 +12926,7 @@ int ContinueHitscan(PLAYER* pp, sectortype* sect, const DVector3& start, DAngle
return 0; return 0;
} }
if (BulletHitSprite(pp->actor, hit.actor(), hit.hitpos, 0)) if (BulletHitSprite(pp->GetActor(), hit.actor(), hit.hitpos, 0))
return 0; return 0;
// hit a switch? // hit a switch?
@ -12950,7 +12950,7 @@ int ContinueHitscan(PLAYER* pp, sectortype* sect, const DVector3& start, DAngle
int InitShotgun(PLAYER* pp) int InitShotgun(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
HitInfo hit{}; HitInfo hit{};
short cstat = 0; 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 dax = 1024.;
double daz = pos.Z; double daz = pos.Z;
DAngle daang = DAngle22_5 * 0.5; 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.); setFreeAimVelocity(dax, daz, pp->Angles.getPitchWithView(), 1000.);
daang = pp->actor->spr.Angles.Yaw; daang = pp->GetActor()->spr.Angles.Yaw;
} }
double ndaz; double ndaz;
@ -13090,7 +13090,7 @@ int InitShotgun(PLAYER* pp)
continue; continue;
} }
if (BulletHitSprite(pp->actor, hitActor, hit.hitpos, SHOTGUN_SMOKE)) if (BulletHitSprite(pp->GetActor(), hitActor, hit.hitpos, SHOTGUN_SMOKE))
continue; continue;
// hit a switch? // hit a switch?
@ -13116,7 +13116,7 @@ int InitShotgun(PLAYER* pp)
int InitLaser(PLAYER* pp) int InitLaser(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
DoPlayerBeginRecoil(pp, RAIL_RECOIL_AMT); DoPlayerBeginRecoil(pp, RAIL_RECOIL_AMT);
PlayerUpdateAmmo(pp, actor->user.WeaponNum, -1); PlayerUpdateAmmo(pp, actor->user.WeaponNum, -1);
@ -13125,15 +13125,15 @@ int InitLaser(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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 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.scale = DVector2(0.8125, 0.8125);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
actorNew->clipdist = 4; actorNew->clipdist = 4;
@ -13189,7 +13189,7 @@ int InitLaser(PLAYER* pp)
actor->clipdist = oclipdist; 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); actorNew->spr.Angles.Yaw -= mapangle(5);
} }
@ -13206,7 +13206,7 @@ int InitLaser(PLAYER* pp)
int InitRail(PLAYER* pp) int InitRail(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
double zvel; double zvel;
if (SW_SHAREWARE) return false; // JBF: verify if (SW_SHAREWARE) return false; // JBF: verify
@ -13223,15 +13223,15 @@ int InitRail(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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.scale = DVector2(0.8125, 0.8125);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 17) * 0.5); setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 17) * 0.5);
@ -13269,7 +13269,7 @@ int InitRail(PLAYER* pp)
actor->clipdist = oclipdist; actor->clipdist = oclipdist;
actorNew->vel.Z = zvel * 0.5; 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); actorNew->spr.Angles.Yaw -= mapangle(4);
} }
@ -13363,7 +13363,7 @@ int InitZillaRail(DSWActor* actor)
int InitRocket(PLAYER* pp) int InitRocket(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
double zvel; double zvel;
DoPlayerBeginRecoil(pp, ROCKET_RECOIL_AMT); DoPlayerBeginRecoil(pp, ROCKET_RECOIL_AMT);
@ -13388,14 +13388,14 @@ int InitRocket(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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.scale = DVector2(1.40626, 1.40625);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 35) * 0.5); setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 35) * 0.5);
@ -13452,7 +13452,7 @@ int InitRocket(PLAYER* pp)
actor->clipdist = oclipdist; actor->clipdist = oclipdist;
actorNew->vel.Z = zvel * 0.5; 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); actorNew->spr.Angles.Yaw -= mapangle(5);
} }
@ -13473,7 +13473,7 @@ int InitRocket(PLAYER* pp)
int InitBunnyRocket(PLAYER* pp) int InitBunnyRocket(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
double zvel; double zvel;
DoPlayerBeginRecoil(pp, ROCKET_RECOIL_AMT); DoPlayerBeginRecoil(pp, ROCKET_RECOIL_AMT);
@ -13495,14 +13495,14 @@ int InitBunnyRocket(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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.scale = DVector2(1, 1);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 35) * 0.5); setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 35) * 0.5);
@ -13556,7 +13556,7 @@ int InitBunnyRocket(PLAYER* pp)
actor->clipdist = oclipdist; actor->clipdist = oclipdist;
actorNew->vel.Z = zvel * 0.5; 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); actorNew->spr.Angles.Yaw -= mapangle(5);
} }
@ -13578,7 +13578,7 @@ int InitBunnyRocket(PLAYER* pp)
int InitNuke(PLAYER* pp) int InitNuke(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
double zvel; double zvel;
if (pp->WpnRocketNuke > 0) if (pp->WpnRocketNuke > 0)
@ -13597,14 +13597,14 @@ int InitNuke(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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.scale = DVector2(2, 2);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 36) * 0.5); setFreeAimVelocity(actorNew->vel.X, zvel, pp->Angles.getPitchWithView(), (HORIZ_MULT + 36) * 0.5);
@ -13649,7 +13649,7 @@ int InitNuke(PLAYER* pp)
actor->clipdist = oclipdist; actor->clipdist = oclipdist;
actorNew->vel.Z = zvel * 0.5; 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); actorNew->spr.Angles.Yaw -= mapangle(5);
} }
@ -13659,7 +13659,7 @@ int InitNuke(PLAYER* pp)
UpdateChangeXY(actorNew); UpdateChangeXY(actorNew);
actorNew->user.change.Z = zvel; 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; return 0;
} }
@ -13745,7 +13745,7 @@ int InitEnemyNuke(DSWActor* actor)
int InitMicro(PLAYER* pp) int InitMicro(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
short i; short i;
DAngle angle; DAngle angle;
TARGET_SORT* ts = TargetSort; TARGET_SORT* ts = TargetSort;
@ -13754,7 +13754,7 @@ int InitMicro(PLAYER* pp)
const int MAX_MICRO = 1; const int MAX_MICRO = 1;
DoPickTarget(pp->actor, DAngle45, false); DoPickTarget(pp->GetActor(), DAngle45, false);
if (TargetSortCount > MAX_MICRO) if (TargetSortCount > MAX_MICRO)
TargetSortCount = MAX_MICRO; TargetSortCount = MAX_MICRO;
@ -13771,24 +13771,24 @@ int InitMicro(PLAYER* pp)
{ {
picked = ts->actor; 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++; ts++;
} }
else else
{ {
picked = nullptr; 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 // Spawn a shot
// Inserting and setting up variables // Inserting and setting up variables
auto actorNew = SpawnActor(STAT_MISSILE, BOLT_THINMAN_R0, &s_Micro[0][0], pp->cursector, pos, angle, vel); 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.scale = DVector2(0.375, 0.375);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
actorNew->vel.Z = zvel; actorNew->vel.Z = zvel;
@ -14438,7 +14438,7 @@ int InitEnemyRail(DSWActor* actor)
TRAVERSE_CONNECT(pnum) TRAVERSE_CONNECT(pnum)
{ {
pp = &Player[pnum]; pp = &Player[pnum];
if (actor->user.targetActor == pp->actor) if (actor->user.targetActor == pp->GetActor())
return 0; return 0;
} }
} }
@ -14964,7 +14964,7 @@ int InitTracerUzi(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; return 0;
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
static const short lat_dist[] = {800,-800}; static const short lat_dist[] = {800,-800};
@ -14973,10 +14973,10 @@ int InitTracerUzi(PLAYER* pp)
// Spawn a shot // Spawn a shot
// Inserting and setting up variables // 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 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.scale = DVector2(0.15625, 0.15625);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->vel.Z = 0; actorNew->vel.Z = 0;
@ -14989,7 +14989,7 @@ int InitTracerUzi(PLAYER* pp)
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER);
actorNew->spr.cstat |= (CSTAT_SPRITE_INVISIBLE); actorNew->spr.cstat |= (CSTAT_SPRITE_INVISIBLE);
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
auto oclipdist = plActor->clipdist; auto oclipdist = plActor->clipdist;
plActor->clipdist = 0; plActor->clipdist = 0;
@ -15011,7 +15011,7 @@ int InitTracerUzi(PLAYER* pp)
plActor->clipdist = oclipdist; plActor->clipdist = oclipdist;
WeaponAutoAim(pp->actor, actorNew, DAngle22_5 / 4, false); WeaponAutoAim(pp->GetActor(), actorNew, DAngle22_5 / 4, false);
// a bit of randomness // a bit of randomness
actorNew->spr.Angles.Yaw += mapangle(RandomRange(30) - 15); actorNew->spr.Angles.Yaw += mapangle(RandomRange(30) - 15);
@ -15224,7 +15224,7 @@ bool HitscanSpriteAdjust(DSWActor* actor, walltype* hit_wall)
int InitUzi(PLAYER* pp) int InitUzi(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
HitInfo hit{}; HitInfo hit{};
ESpriteFlags cstat = 0; ESpriteFlags cstat = 0;
uint8_t pal = 0; uint8_t pal = 0;
@ -15260,24 +15260,24 @@ int InitUzi(PLAYER* pp)
if (RANDOM_P2(1024) < 400) if (RANDOM_P2(1024) < 400)
InitTracerUzi(pp); InitTracerUzi(pp);
double nz = (pp->actor->getOffsetZ() + pp->bob_z); double nz = (pp->GetActor()->getOffsetZ() + pp->bob_z);
double dax = 1024.; double dax = 1024.;
double daz = nz; double daz = nz;
DAngle daang = DAngle22_5 / 4; 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); daang += mapangle(RandomRange(24) - 12);
daz += RandomRangeF(10000/256.) - 5000/256.; daz += RandomRangeF(10000/256.) - 5000/256.;
} }
else 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.)); setFreeAimVelocity(dax, daz, pp->Angles.getPitchWithView(), 1000. - (RandomRangeF(24000/256.) - 12000/256.));
} }
DVector3 vect(daang.ToVector() * dax, daz); 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) if (hit.hitSector == nullptr)
{ {
@ -15374,7 +15374,7 @@ int InitUzi(PLAYER* pp)
return 0; return 0;
} }
if (BulletHitSprite(pp->actor, hitActor, hit.hitpos, 0)) if (BulletHitSprite(pp->GetActor(), hitActor, hit.hitpos, 0))
return 0; return 0;
// hit a switch? // 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); auto actorNew = SpawnActor(STAT_MISSILE, UZI_SMOKE, s_UziSmoke, hit.hitSector, hit.hitpos, daang, 0);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(UZI_SMOKE_REPEAT, UZI_SMOKE_REPEAT); 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->spr.cstat |= (cstat | CSTAT_SPRITE_YCENTER);
actorNew->clipdist = 0.5; actorNew->clipdist = 0.5;
@ -15399,7 +15399,7 @@ int InitUzi(PLAYER* pp)
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(UZI_SPARK_REPEAT, UZI_SPARK_REPEAT); 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->user.spal = actorNew->spr.pal = pal;
actorNew->spr.cstat |= (cstat | CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (cstat | CSTAT_SPRITE_YCENTER);
actorNew->clipdist = 0.5; 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); 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.scale = DVector2(0.125, 0.125);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->vel.Z = 0; actorNew->vel.Z = 0;
@ -15468,7 +15468,7 @@ int InitTankShell(DSWActor* actor, PLAYER* pp)
int InitTurretMicro(DSWActor* actor, PLAYER* pp) int InitTurretMicro(DSWActor* actor, PLAYER* pp)
{ {
DSWActor* plActor = pp->actor; DSWActor* plActor = pp->GetActor();
TARGET_SORT* ts = TargetSort; TARGET_SORT* ts = TargetSort;
DSWActor* picked = nullptr; DSWActor* picked = nullptr;
DAngle angle; 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); 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.scale = DVector2(0.625, 0.625);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->vel.Z = 0; 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); 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.scale = DVector2(0.625, 0.625);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->vel.Z = 0; 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); 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.scale = DVector2(0.8125, 0.8125);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
setFreeAimVelocity(actorNew->vel.X, actorNew->vel.Z, pp->Angles.getPitchWithView(), HORIZ_MULTF); 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; 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(); 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); 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.scale = DVector2(0.8125, 0.8125);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
@ -15743,7 +15743,7 @@ int InitSobjMachineGun(DSWActor* actor, PLAYER* pp)
double daz = npos.Z; double daz = npos.Z;
if (RANDOM_P2(1024) < 200) if (RANDOM_P2(1024) < 200)
InitTracerTurret(actor, pp->actor, pp->Angles.getPitchWithView()); InitTracerTurret(actor, pp->GetActor(), pp->Angles.getPitchWithView());
DAngle daang = DAngle22_5 / 2; DAngle daang = DAngle22_5 / 2;
if (WeaponAutoAimHitscan(actor, &daz, &daang, false) != nullptr) if (WeaponAutoAimHitscan(actor, &daz, &daang, false) != nullptr)
@ -15804,7 +15804,7 @@ int InitSobjMachineGun(DSWActor* actor, PLAYER* pp)
return 0; return 0;
} }
if (BulletHitSprite(pp->actor, hit.actor(), hit.hitpos, 0)) if (BulletHitSprite(pp->GetActor(), hit.actor(), hit.hitpos, 0))
return 0; return 0;
// hit a switch? // hit a switch?
@ -15857,7 +15857,7 @@ int InitSobjGun(PLAYER* pp)
case 32: case 32:
case 0: case 0:
SpawnVis(actor, nullptr, {}, 8); SpawnVis(actor, nullptr, {}, 8);
SpawnBigGunFlames(actor, pp->actor, pp->sop, false); SpawnBigGunFlames(actor, pp->GetActor(), pp->sop, false);
SetGunQuake(actor); SetGunQuake(actor);
InitTankShell(actor, pp); InitTankShell(actor, pp);
if (!SP_TAG5(actor)) if (!SP_TAG5(actor))
@ -15867,7 +15867,7 @@ int InitSobjGun(PLAYER* pp)
break; break;
case 1: case 1:
SpawnVis(actor, nullptr, {}, 32); SpawnVis(actor, nullptr, {}, 32);
SpawnBigGunFlames(actor, pp->actor, pp->sop, true); SpawnBigGunFlames(actor, pp->GetActor(), pp->sop, true);
InitSobjMachineGun(actor, pp); InitSobjMachineGun(actor, pp);
if (!SP_TAG5(actor)) if (!SP_TAG5(actor))
pp->FirePause = 10; 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); auto actorNew = SpawnActor(STAT_MISSILE, UZI_SMOKE, s_UziSmoke, hit_sect, hitpos, hit_ang, 0);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(UZI_SMOKE_REPEAT + 0.1875, UZI_SMOKE_REPEAT + 0.1875); 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.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER);
actorNew->spr.hitag = LUMINOUS; //Always full brightness 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.shade = -40;
actorNew->spr.scale = DVector2(UZI_SPARK_REPEAT + 0.15626, UZI_SPARK_REPEAT + 0.15625); 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->user.spal = actorNew->spr.pal = PALETTE_DEFAULT;
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); 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) 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); auto actorNew = SpawnActor(STAT_MISSILE, UZI_SMOKE, s_UziSmoke, hit_sect, hitpos, hit_ang, 0);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(0.3125, 0.3125); 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.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER);
actorNew->spr.hitag = LUMINOUS; //Always full brightness 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 = SpawnActor(STAT_MISSILE, UZI_SPARK, s_UziSpark, hit_sect, hitpos, hit_ang, 0);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.scale = DVector2(0.3125, 0.3125); 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->user.spal = actorNew->spr.pal = PALETTE_DEFAULT;
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER);
if (actor->user.WeaponNum == WPN_FIST) 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.shade = -40;
actorNew->spr.scale = DVector2(UZI_SPARK_REPEAT, UZI_SPARK_REPEAT); 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->user.spal = actorNew->spr.pal = PALETTE_DEFAULT;
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); 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 = SpawnActor(STAT_MISSILE, SHOTGUN_SMOKE, s_ShotgunSmoke, hit_sect, hitpos, hit_ang, 0);
actorNew->spr.scale = DVector2(SHOTGUN_SMOKE_REPEAT, SHOTGUN_SMOKE_REPEAT); 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.cstat |= (CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER);
actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->spr.hitag = LUMINOUS; //Always full brightness
@ -16393,7 +16393,7 @@ int InitEnemyUzi(DSWActor* actor)
int InitGrenade(PLAYER* pp) int InitGrenade(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
double zvel; double zvel;
bool auto_aim = false; bool auto_aim = false;
@ -16409,12 +16409,12 @@ int InitGrenade(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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 // don't throw it as far if crawling
if (pp->Flags & (PF_CRAWLING)) if (pp->Flags & (PF_CRAWLING))
@ -16426,7 +16426,7 @@ int InitGrenade(PLAYER* pp)
NewStateGroup(actorNew, &sg_Grenade[0]); NewStateGroup(actorNew, &sg_Grenade[0]);
actorNew->user.Flags |= (SPR_XFLIP_TOGGLE); actorNew->user.Flags |= (SPR_XFLIP_TOGGLE);
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.scale = DVector2(0.5, 0.5); actorNew->spr.scale = DVector2(0.5, 0.5);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
//actorNew->clipdist = 5; //actorNew->clipdist = 5;
@ -16459,7 +16459,7 @@ int InitGrenade(PLAYER* pp)
actor->clipdist = oclipdist; actor->clipdist = oclipdist;
zvel = actorNew->vel.Z; 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; auto_aim = true;
} }
@ -16538,7 +16538,7 @@ int InitSpriteGrenade(DSWActor* actor)
int InitMine(PLAYER* pp) int InitMine(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
PlayerUpdateAmmo(pp, actor->user.WeaponNum, -1); PlayerUpdateAmmo(pp, actor->user.WeaponNum, -1);
@ -16547,14 +16547,14 @@ int InitMine(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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 // Spawn a shot
// Inserting and setting up variables // 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.scale = DVector2(0.5, 0.5);
actorNew->spr.shade = -15; actorNew->spr.shade = -15;
actorNew->clipdist = 8; actorNew->clipdist = 8;
@ -16575,7 +16575,7 @@ int InitMine(PLAYER* pp)
UpdateChange(actorNew, 0.5); 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 // 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. // 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) int InitFireball(PLAYER* pp)
{ {
DSWActor* actor = pp->actor; DSWActor* actor = pp->GetActor();
PlayerUpdateAmmo(pp, WPN_HOTHEAD, -1); PlayerUpdateAmmo(pp, WPN_HOTHEAD, -1);
@ -16678,15 +16678,15 @@ int InitFireball(PLAYER* pp)
if (!pp->insector()) if (!pp->insector())
return 0; 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.hitag = LUMINOUS; //Always full brightness
actorNew->spr.scale = DVector2(0.625, 0.625); actorNew->spr.scale = DVector2(0.625, 0.625);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->clipdist = 2; actorNew->clipdist = 2;
SetOwner(pp->actor, actorNew); SetOwner(pp->GetActor(), actorNew);
actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER); actorNew->spr.cstat |= (CSTAT_SPRITE_YCENTER);
actorNew->user.Radius = 100; actorNew->user.Radius = 100;
@ -16717,7 +16717,7 @@ int InitFireball(PLAYER* pp)
actor->clipdist = oclipdist; actor->clipdist = oclipdist;
actorNew->vel.Z = 0.5; 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); actorNew->spr.Angles.Yaw -= mapangle(9);
} }
@ -17979,7 +17979,7 @@ int DoFloorBlood(DSWActor* actor)
{ {
pp = &Player[pnum]; 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) if (dist < FEET_IN_BLOOD_DIST)
{ {

View file

@ -40,7 +40,7 @@ inline DAngle AngToSprite(DSWActor* actor, DSWActor* other)
inline DAngle AngToPlayer(PLAYER* player, 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();
} }

View file

@ -778,7 +778,7 @@ void SpawnZombie(PLAYER* pp, DSWActor* weaponActor)
if (ownerActor == nullptr) if (ownerActor == nullptr)
return; 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); SetOwner(actorNew, ownerActor);
actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal; actorNew->spr.pal = actorNew->user.spal = ownerActor->user.spal;
actorNew->spr.Angles.Yaw = RandomAngle(); actorNew->spr.Angles.Yaw = RandomAngle();