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

This commit is contained in:
Mitchell Richters 2023-09-30 20:44:31 +10:00
parent 6d6872fea7
commit 61bc8c23cf
19 changed files with 81 additions and 77 deletions

View file

@ -53,7 +53,7 @@ static DExhumedActor* BuildBubble(const DVector3& pos, sectortype* pSector, cons
nSize -= 4;
// Was inita global previously.
const auto nAngle = PlayerList[nPlayer].pActor->spr.Angles.Yaw;
const auto nAngle = PlayerList[nPlayer].GetActor()->spr.Angles.Yaw;
const auto pActor = insertActor(pSector, 402);
pActor->spr.pos = pos;

View file

@ -234,7 +234,7 @@ struct GameInterface : public ::GameInterface
bool DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, const DAngle cang, const DVector2& xydim, const double czoom, double const interpfrac) override;
DAngle playerPitchMin() override { return DAngle::fromDeg(49.5); }
DAngle playerPitchMax() override { return DAngle::fromDeg(-49.5); }
DCoreActor* getConsoleActor() override { return PlayerList[nLocalPlayer].pActor; }
DCoreActor* getConsoleActor() override { return PlayerList[nLocalPlayer].GetActor(); }
void ToggleThirdPerson() override;
void processSprites(tspriteArray& tsprites, const DVector3& view, DAngle viewang, double interpfrac) override;
int GetCurrentSkill() override;

View file

@ -69,7 +69,7 @@ void ThrowGrenade(int nPlayer, double dz, double push1)
return;
DExhumedActor* pActor = PlayerList[nPlayer].pPlayerGrenade;
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
DAngle nAngle = pPlayerActor->spr.Angles.Yaw;
@ -123,7 +123,7 @@ void BuildGrenade(int nPlayer)
{
auto pActor = insertActor(PlayerList[nPlayer].pPlayerViewSect, 201);
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
pActor->spr.pos = pPlayerActor->spr.pos.plusZ(-15);
pActor->spr.shade = -64;
@ -199,7 +199,7 @@ void ExplodeGrenade(DExhumedActor* pActor)
if (pActor->nTurn < 0)
{
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
auto nAngle = pPlayerActor->spr.Angles.Yaw;
DVector2 vect = nAngle.ToVector() * 32;

View file

@ -287,7 +287,7 @@ void ResetSwordSeqs()
Collision CheckCloseRange(int nPlayer, DVector3& pos, sectortype* *ppSector)
{
auto pActor = PlayerList[nPlayer].pActor;
auto pActor = PlayerList[nPlayer].GetActor();
HitInfo hit{};
hitscan(pos, *ppSector, DVector3(pActor->spr.Angles.Yaw.ToVector() * 1024, 0 ), hit, CLIPMASK1);
@ -357,7 +357,7 @@ void MoveWeapons(int nPlayer)
if (!pPlayer->bIsFiring || (nSectFlag & kSectUnderwater))
pPlayer->nTemperature = 0;
auto pPlayerActor = pPlayer->pActor;
auto pPlayerActor = pPlayer->GetActor();
int nWeapon = pPlayer->nCurrentWeapon;
if (nWeapon < -1)
@ -413,7 +413,7 @@ void MoveWeapons(int nPlayer)
if (!WeaponCanFire(nPlayer))
{
if (!dword_96E22) {
D3PlayFX(StaticSound[4], pPlayer->pActor);
D3PlayFX(StaticSound[4], pPlayer->GetActor());
}
}
else
@ -904,7 +904,7 @@ loc_flag:
void DrawWeapons(Player* const pPlayer, double interpfrac)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const int nWeapon = pPlayer->nCurrentWeapon;
if (bCamera || nWeapon < -1)

View file

@ -772,9 +772,9 @@ void ExamineSprites(TArray<DExhumedActor*>& actors)
if (nNetPlayerCount)
{
auto pActor = insertActor(PlayerList[nLocalPlayer].pActor->sector(), 0);
auto pActor = insertActor(PlayerList[nLocalPlayer].GetActor()->sector(), 0);
pActor->spr.pos = PlayerList[nLocalPlayer].pActor->spr.pos;
pActor->spr.pos = PlayerList[nLocalPlayer].GetActor()->spr.pos;
pActor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
nNetStartSprite[nNetStartSprites] = pActor;
nNetStartSprites++;

View file

@ -204,7 +204,7 @@ static bool UseEye(int nPlayer)
if (PlayerList[nPlayer].nInvisible >= 0)
PlayerList[nPlayer].nInvisible = 900;
auto pActor = PlayerList[nPlayer].pActor;
auto pActor = PlayerList[nPlayer].GetActor();
pActor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
@ -233,7 +233,7 @@ static bool UseMask(int nPlayer)
if (nPlayer == nLocalPlayer)
{
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].pActor);
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].GetActor());
}
return true;
}
@ -269,7 +269,7 @@ bool UseHeart(int nPlayer)
if (nPlayer == nLocalPlayer)
{
ItemFlash();
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].pActor);
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].GetActor());
}
return true;
}
@ -290,7 +290,7 @@ bool UseScarab(int nPlayer)
if (nPlayer == nLocalPlayer)
{
ItemFlash();
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].pActor);
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].GetActor());
}
return true;
}
@ -303,7 +303,7 @@ static bool UseHand(int nPlayer)
if (nPlayer == nLocalPlayer)
{
ItemFlash();
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].pActor);
D3PlayFX(StaticSound[kSound31], PlayerList[nPlayer].GetActor());
}
return true;
}

View file

@ -45,7 +45,7 @@ void GrabMap()
void UpdateMap()
{
const auto initsectp = PlayerList[nLocalPlayer].pActor->sector();
const auto initsectp = PlayerList[nLocalPlayer].GetActor()->sector();
if (initsectp->ceilingpal != 3 || (PlayerList[nLocalPlayer].nTorch != 0)) {
MarkSectorSeen(initsectp);
}
@ -73,7 +73,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos,
{
if (i == nLocalPlayer)// || gGameOptions.nGameType == 1)
{
auto pPlayerActor = PlayerList[i].pActor;
auto pPlayerActor = PlayerList[i].GetActor();
auto vect = OutAutomapVector(mxy - cpos, cangvect, czoom, xydim);
DrawTexture(twod, pPlayerActor->spr.spritetexture(), true, vect.X, vect.Y, DTA_ClipLeft, viewport3d.Left(), DTA_ClipTop, viewport3d.Top(), DTA_ScaleX, czoom * (2. / 3.), DTA_ScaleY, czoom * (2. / 3.), DTA_CenterOffset, true,

View file

@ -271,7 +271,7 @@ Collision movespritez(DExhumedActor* pActor, double z, double height, double cli
if (pSect2->Flag & kSectUnderwater)
{
if (pActor == PlayerList[nLocalPlayer].pActor) {
if (pActor == PlayerList[nLocalPlayer].GetActor()) {
D3PlayFX(StaticSound[kSound2], pActor);
}
@ -616,7 +616,7 @@ DExhumedActor* FindPlayer(DExhumedActor* pActor, int nDistance, bool dontengage)
if (i >= nTotalPlayers)
return nullptr;
pPlayerActor = PlayerList[i].pActor;
pPlayerActor = PlayerList[i].GetActor();
if ((pPlayerActor->spr.cstat & CSTAT_SPRITE_BLOCK_ALL) && (!(pPlayerActor->spr.cstat & CSTAT_SPRITE_INVISIBLE)))
{
@ -930,7 +930,7 @@ void SetQuake(DExhumedActor* pActor, int nVal)
{
for (int i = 0; i < nTotalPlayers; i++)
{
auto nSqrt = ((PlayerList[i].pActor->spr.pos.XY() - pActor->spr.pos.XY()) * (1. / 16.)).Length();
auto nSqrt = ((PlayerList[i].GetActor()->spr.pos.XY() - pActor->spr.pos.XY()) * (1. / 16.)).Length();
if (nSqrt)
{
@ -1015,7 +1015,7 @@ Collision AngleChase(DExhumedActor* pActor, DExhumedActor* pActor2, int threshol
DVector3 WheresMyMouth(int nPlayer, sectortype **sectnum)
{
auto pActor = PlayerList[nPlayer].pActor;
auto pActor = PlayerList[nPlayer].GetActor();
double height = GetActorHeight(pActor) * 0.5;
*sectnum = pActor->sector();

View file

@ -61,7 +61,7 @@ static int osdcmd_doors(CCmdFuncPtr parm)
static int osdcmd_spawn(CCmdFuncPtr parm)
{
auto pActor = PlayerList[nLocalPlayer].pActor;
auto pActor = PlayerList[nLocalPlayer].GetActor();
if (parm->numparms != 1) return CCMD_SHOWHELP;
if (!pActor) return CCMD_SHOWHELP;
auto c = parm->parms[0];

View file

@ -86,7 +86,7 @@ size_t MarkPlayers()
{
for (auto& p : PlayerList)
{
GC::Mark(p.pActor);
GC::Mark(p.actor);
GC::Mark(p.pDoppleSprite);
GC::Mark(p.pPlayerFloorSprite);
GC::Mark(p.pPlayerGrenade);
@ -123,7 +123,7 @@ void InitPlayer()
{
const auto pPlayer = &PlayerList[i];
pPlayer->pActor = nullptr;
pPlayer->actor = nullptr;
pPlayer->Angles = {};
pPlayer->pPlayerPushSect = nullptr;
pPlayer->pPlayerViewSect = nullptr;
@ -151,7 +151,7 @@ void InitPlayerInventory(int nPlayer)
pPlayer->nItem = -1;
pPlayer->nPlayerSwear = 4;
pPlayer->nLives = kDefaultLives;
pPlayer->pActor = nullptr;
pPlayer->actor = nullptr;
pPlayer->Angles = {};
pPlayer->nRun = -1;
pPlayer->nPistolClip = 6;
@ -190,7 +190,7 @@ int GetPlayerFromActor(DExhumedActor* pActor)
void RestartPlayer(int nPlayer)
{
const auto pPlayer = &PlayerList[nPlayer];
DExhumedActor* pPlayerActor = pPlayer->pActor;
DExhumedActor* pPlayerActor = pPlayer->GetActor();
DExhumedActor* pDopSprite = pPlayer->pDoppleSprite;
DExhumedActor* pFloorSprite = pPlayer->pPlayerFloorSprite;
@ -201,7 +201,7 @@ void RestartPlayer(int nPlayer)
ChangeActorStat(pPlayerActor, 0);
pPlayer->pActor = nullptr;
pPlayer->actor = nullptr;
pPlayer->Angles = {};
if (pFloorSprite)
@ -279,7 +279,7 @@ void RestartPlayer(int nPlayer)
pDopSprite->spr.lotag = runlist_HeadRun() + 1;
pDopSprite->spr.intowner = runlist_AddRunRec(pDopSprite->spr.lotag - 1, nPlayer, 0xA0000);
pPlayer->pActor = pPlayerActor;
pPlayer->actor = pPlayerActor;
pPlayer->pDoppleSprite = pDopSprite;
pPlayer->pPlayerFloorSprite = pFloorSprite;
pPlayer->pPlayerViewSect = pPlayer->sPlayerSave.pSector;
@ -361,7 +361,7 @@ int GrabPlayer()
void StartDeathSeq(int nPlayer, int nVal)
{
const auto pPlayer = &PlayerList[nPlayer];
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pPlayerSect = pPlayerActor->sector();
FreeRa(nPlayer);
@ -455,7 +455,7 @@ int AddAmmo(int nPlayer, int nWeapon, int nAmmoAmount)
void SetPlayerMummified(int nPlayer, int bIsMummified)
{
const auto pPlayer = &PlayerList[nPlayer];
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
pPlayerActor->vel.XY().Zero();
@ -482,7 +482,7 @@ void SetPlayerMummified(int nPlayer, int bIsMummified)
void ShootStaff(int nPlayer)
{
const auto pPlayer = &PlayerList[nPlayer];
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
pPlayerActor->nAction = 15;
pPlayerActor->nFrame = 0;
@ -531,7 +531,7 @@ void AIPlayer::Draw(RunListEvent* ev)
assert(nPlayer >= 0 && nPlayer < kMaxPlayers);
const auto pPlayer = &PlayerList[nPlayer];
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto playerSeq = &PlayerSeq[pPlayerActor->nAction];
seq_PlotSequence(ev->nParam, pPlayerActor->nSeqFile, playerSeq->nSeqId, pPlayerActor->nFrame, playerSeq->nFlags);
}
@ -552,7 +552,7 @@ void AIPlayer::RadialDamage(RunListEvent* ev)
if (pPlayer->nHealth <= 0)
return;
ev->nDamage = runlist_CheckRadialDamage(pPlayer->pActor);
ev->nDamage = runlist_CheckRadialDamage(pPlayer->GetActor());
Damage(ev);
}
@ -573,7 +573,7 @@ void AIPlayer::Damage(RunListEvent* ev)
if (!nDamage || !pPlayer->nHealth)
return;
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pDamageActor = (!ev->isRadialEvent()) ? ev->pOtherActor : ev->pRadialActor->pTarget.Get();
if (!pPlayer->invincibility)
@ -843,7 +843,7 @@ static void doPickupHealth(Player* pPlayer, DExhumedActor* pPickupActor, int nIt
void doPlayerItemPickups(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pPlayerSect = pPlayerActor->sector();
if (const auto pPickupActor = feebtag(pPlayerActor->spr.pos, pPlayerSect, pPlayer->nMagic, pPlayer->nHealth, 48))
@ -1043,7 +1043,7 @@ void doPlayerItemPickups(Player* const pPlayer)
void updatePlayerTarget(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pRa = &Ra[pPlayer->nPlayer];
const auto nAngVect = (-pPlayerActor->spr.Angles.Yaw).ToVector();
@ -1106,7 +1106,7 @@ void updatePlayerTarget(Player* const pPlayer)
static void updatePlayerVelocity(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
if (pPlayer->nHealth > 0)
{
@ -1236,7 +1236,7 @@ unsigned GameInterface::getCrouchState()
static void updatePlayerAction(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pInput = &pPlayer->input;
const auto kbdDir = !!(pInput->actions & SB_CROUCH) - !!(pInput->actions & SB_JUMP);
const double dist = pPlayer->bUnderwater ? 8 : 14;
@ -1355,7 +1355,7 @@ static void updatePlayerAction(Player* const pPlayer)
static void doPlayerCounters(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const bool bConsolePlayer = pPlayer->nPlayer == nLocalPlayer;
if (pPlayer->nTorch > 0)
@ -1436,7 +1436,7 @@ static void doPlayerCounters(Player* const pPlayer)
static void doPlayerUnderwater(Player* const pPlayer, const bool oUnderwater)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const bool bUnderwater = pPlayer->pPlayerViewSect->Flag & kSectUnderwater;
if (!pPlayer->invincibility)
@ -1530,7 +1530,7 @@ static void doPlayerRamses(Player* const pPlayer)
if (nTotalPlayers <= 1)
{
pPlayer->pActor->vel.Zero();
pPlayer->GetActor()->vel.Zero();
if (nFreeze < 1)
{
@ -1570,7 +1570,7 @@ static void doPlayerGravity(DExhumedActor* const pPlayerActor)
static void doPlayerCameraEffects(Player* const pPlayer, const double nDestVertPan)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto nUnderwater = !!(pPlayerActor->sector()->Flag & kSectUnderwater);
constexpr auto maxVel = 15.25;
@ -1617,7 +1617,7 @@ static void updatePlayerFloorActor(Player* const pPlayer)
if (nTotalPlayers <= 1 || !pFloorActor)
return;
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pPlayerSect = pPlayerActor->sector();
pFloorActor->spr.pos.XY() = pPlayerActor->spr.pos.XY();
pFloorActor->spr.pos.Z = pPlayerSect->floorz;
@ -1634,7 +1634,7 @@ static void updatePlayerFloorActor(Player* const pPlayer)
static void updatePlayerDoppleActor(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pPlayerSect = pPlayerActor->sector();
DExhumedActor* const pDopple = pPlayer->pDoppleSprite;
pDopple->spr.pos = pPlayerActor->spr.pos;
@ -1659,7 +1659,7 @@ static void updatePlayerDoppleActor(Player* const pPlayer)
static void updatePlayerViewSector(Player* const pPlayer, const Collision& nMove, const DVector3& spr_vel)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pPlayerSect = pPlayerActor->sector();
const auto bPlayerBelowCeil = (pPlayerActor->getOffsetZ() + pPlayer->nQuake) < pPlayerSect->ceilingz;
const auto pViewSect = bPlayerBelowCeil && pPlayerSect->pAbove ? pPlayerSect->pAbove : pPlayerSect;
@ -1698,7 +1698,7 @@ static void updatePlayerViewSector(Player* const pPlayer, const Collision& nMove
static void doPlayerFloorDamage(Player* const pPlayer, const double nStartVelZ)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
pPlayer->nThrust *= 0.5;
if (nStartVelZ < (6500 / 256.))
@ -1727,7 +1727,7 @@ static void doPlayerFloorDamage(Player* const pPlayer, const double nStartVelZ)
static void doPlayerMovingBlocks(Player* const pPlayer, const Collision& nMove, const DVector3& spr_vel, sectortype* const spr_sect)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
sectortype* sect;
DAngle nNormal = nullAngle;
@ -1788,7 +1788,7 @@ static bool doPlayerInput(Player* const pPlayer)
// update the player/actor's velocity before anything.
updatePlayerVelocity(pPlayer);
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto spr_vel = DVector3(pPlayerActor->vel.XY() * (pPlayer->bIsMummified ? 0.5 : 1.), pPlayerActor->vel.Z);
const auto spr_sect = pPlayerActor->sector();
@ -1877,7 +1877,7 @@ static bool doPlayerInput(Player* const pPlayer)
static void doPlayerRunlistSignals(Player* const pPlayer, sectortype* const pStartSect)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto pPlayerSect = pPlayerActor->sector();
if (pPlayer->bTouchFloor && pPlayerSect->lotag > 0)
@ -1916,7 +1916,7 @@ static void doPlayerRunlistSignals(Player* const pPlayer, sectortype* const pSta
static bool doPlayerDeathRestart(Player* const pPlayer)
{
if (!(pPlayer->input.actions & SB_OPEN) || pPlayer->pActor->nAction < 16)
if (!(pPlayer->input.actions & SB_OPEN) || pPlayer->GetActor()->nAction < 16)
return true;
pPlayer->input.actions &= ~SB_OPEN;
@ -1932,9 +1932,9 @@ static bool doPlayerDeathRestart(Player* const pPlayer)
if (pPlayer->nLives && nNetTime)
{
if (pPlayer->pActor->nAction != 20)
if (pPlayer->GetActor()->nAction != 20)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
pPlayerActor->spr.setspritetexture(getSequence("joe", 120)->getFirstFrameTexture());
pPlayerActor->spr.cstat = 0;
pPlayerActor->spr.pos.Z = pPlayerActor->sector()->floorz;
@ -1962,7 +1962,7 @@ static bool doPlayerDeathRestart(Player* const pPlayer)
static void doPlayerActionSequence(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto playerSeq = getSequence(pPlayerActor->nSeqFile, PlayerSeq[pPlayerActor->nAction].nSeqId);
const auto& seqFrame = playerSeq->frames[pPlayerActor->nFrame];
@ -2017,7 +2017,7 @@ static void doPlayerActionSequence(Player* const pPlayer)
static void doPlayerDeathPitch(Player* const pPlayer)
{
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
pPlayer->nThrust.Zero();
if (pPlayerActor->viewzoffset >= -11)
@ -2059,7 +2059,7 @@ void AIPlayer::Tick(RunListEvent* ev)
assert(nPlayer >= 0 && nPlayer < kMaxPlayers);
const auto pPlayer = &PlayerList[nPlayer];
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
pPlayerActor->spr.setspritetexture(getSequence(pPlayerActor->nSeqFile, PlayerSeq[nHeightTemplate[pPlayerActor->nAction]].nSeqId)->getFirstFrameTexture());
pPlayer->pDoppleSprite->spr.setspritetexture(pPlayerActor->spr.spritetexture());
@ -2109,7 +2109,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, Player& w, Player*
if (arc.BeginObject(keyname))
{
arc("health", w.nHealth)
("sprite", w.pActor)
("sprite", w.actor)
("mummy", w.bIsMummified)
("invincible", w.invincibility)
("air", w.nAir)
@ -2200,7 +2200,7 @@ DEFINE_FIELD_X(ExhumedPlayer, Player, nLives);
DEFINE_FIELD_X(ExhumedPlayer, Player, nDouble);
DEFINE_FIELD_X(ExhumedPlayer, Player, nInvisible);
DEFINE_FIELD_X(ExhumedPlayer, Player, nTorch);
DEFINE_FIELD_X(ExhumedPlayer, Player, pActor);
DEFINE_FIELD_X(ExhumedPlayer, Player, actor);
DEFINE_FIELD_X(ExhumedPlayer, Player, bIsMummified);
DEFINE_FIELD_X(ExhumedPlayer, Player, invincibility);
DEFINE_FIELD_X(ExhumedPlayer, Player, nAir);
@ -2244,7 +2244,7 @@ DEFINE_ACTION_FUNCTION(_ExhumedPlayer, IsUnderwater)
DEFINE_ACTION_FUNCTION(_ExhumedPlayer, GetAngle)
{
PARAM_SELF_STRUCT_PROLOGUE(Player);
ACTION_RETURN_INT(self->pActor->spr.Angles.Yaw.Buildang());
ACTION_RETURN_INT(self->GetActor()->spr.Angles.Yaw.Buildang());
}

View file

@ -49,7 +49,7 @@ struct PlayerSave
struct Player
{
DExhumedActor* pActor;
DExhumedActor* actor;
int16_t nHealth;
int16_t nLives;
int16_t nDouble;
@ -112,6 +112,10 @@ struct Player
TObjPtr<DExhumedActor*> pDoppleSprite;
TObjPtr<DExhumedActor*> pTarget;
inline DExhumedActor* GetActor()
{
return actor;
}
};
extern int PlayerCount;

View file

@ -108,7 +108,7 @@ void FreeRa(int nPlayer)
void BuildRa(int nPlayer)
{
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
auto pActor = insertActor(pPlayerActor->sector(), 203);
@ -189,7 +189,7 @@ void MoveRaToEnemy(int nPlayer)
}
pActor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
pTarget = PlayerList[nPlayer].pActor;
pTarget = PlayerList[nPlayer].GetActor();
}
pActor->spr.pos = pTarget->spr.pos.plusZ(-GetActorHeight(pTarget));
@ -297,7 +297,7 @@ void AIRa::Tick(RunListEvent* ev)
{
if (PlayerList[nPlayer].nAmmo[kWeaponRing] > 0)
{
runlist_DamageEnemy(Ra[nPlayer].pTarget, PlayerList[Ra[nPlayer].nPlayer].pActor, BulletInfo[kWeaponRing].nDamage);
runlist_DamageEnemy(Ra[nPlayer].pTarget, PlayerList[Ra[nPlayer].nPlayer].GetActor(), BulletInfo[kWeaponRing].nDamage);
AddAmmo(nPlayer, kWeaponRing, -WeaponInfo[kWeaponRing].d);
SetQuake(pActor, 100);
}

View file

@ -196,7 +196,7 @@ void DoSpiritHead()
auto Worktile = GetWritablePixels(aTexIds[kTexTileRamsesWorkTile]);
const auto pPlayer = &PlayerList[0];
const auto pPlayerActor = pPlayer->pActor;
const auto pPlayerActor = pPlayer->GetActor();
const auto nSpiritAngle = (pSpiritSprite->spr.pos.XY() - pPlayerActor->spr.pos.XY()).Angle();
pPlayerActor->spr.Angles.Yaw += deltaangle(pPlayerActor->spr.Angles.Yaw, nSpiritAngle) * 0.25;
pPlayerActor->spr.Angles.Pitch += deltaangle(pPlayerActor->spr.Angles.Pitch, currentLevel->ex_ramses_horiz) * 0.25;

View file

@ -1865,7 +1865,7 @@ void runlist_DamageEnemy(DExhumedActor* pActor, DExhumedActor* pActor2, int nDam
if (PlayerList[nPlayer].nTauntTimer <= 0)
{
// Do a taunt
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
auto pSector = pPlayerActor->sector();
if (!(pSector->Flag & kSectUnderwater))

View file

@ -508,7 +508,7 @@ void seq_PlotSequence(const int nSprite, const FName seqFile, const int16_t seqI
const auto pSector = pTSprite->sectp;
const double nFloorZ = pSector->floorz;
if (nFloorZ <= PlayerList[nLocalPlayer].pActor->viewzoffset + PlayerList[nLocalPlayer].pActor->spr.pos.Z)
if (nFloorZ <= PlayerList[nLocalPlayer].GetActor()->viewzoffset + PlayerList[nLocalPlayer].GetActor()->spr.pos.Z)
{
pTSprite->ownerActor = nullptr;
}
@ -552,7 +552,7 @@ DEFINE_FIELD_X(Seq, Seq, flags);
DEFINE_ACTION_FUNCTION(_SeqFrame, playSound)
{
PARAM_SELF_STRUCT_PROLOGUE(SeqFrame);
self->playSound(PlayerList[nLocalPlayer].pActor);
self->playSound(PlayerList[nLocalPlayer].GetActor());
return 0;
}

View file

@ -138,7 +138,7 @@ void ExplodeSnakeSprite(DExhumedActor* pActor, int nPlayer)
// take a copy of this, to revert after call to runlist_RadialDamageEnemy()
DExhumedActor* nOwner = pActor->pTarget;
pActor->pTarget = PlayerList[nPlayer].pActor;
pActor->pTarget = PlayerList[nPlayer].GetActor();
runlist_RadialDamageEnemy(pActor, nDamage, BulletInfo[kWeaponStaff].nRadius);
@ -161,7 +161,7 @@ void BuildSnake(int nPlayer, double zVal)
{
zVal -= 5;
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
auto pViewSect = PlayerList[nPlayer].pPlayerViewSect;
auto nPic = getSequence("snakbody", 0)->getFirstFrameTexture();
@ -277,7 +277,7 @@ void BuildSnake(int nPlayer, double zVal)
DExhumedActor* FindSnakeEnemy(int nSnake)
{
int nPlayer = SnakeList[nSnake].nSnakePlayer;
auto pPlayerActor = PlayerList[nPlayer].pActor;
auto pPlayerActor = PlayerList[nPlayer].GetActor();
DExhumedActor* pActor = SnakeList[nSnake].pSprites[0]; // CHECKME
if (!pActor) return nullptr;

View file

@ -418,7 +418,7 @@ void EXSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
Snake* pSnake = &SnakeList[nSnakeCam];
campos = pSnake->pSprites[0]->spr.pos;
}
else if (const auto pActor = PlayerList[nLocalPlayer].pActor)
else if (const auto pActor = PlayerList[nLocalPlayer].GetActor())
{
campos = pActor->spr.pos;
}
@ -485,7 +485,7 @@ void GameInterface::UpdateSounds()
if (nFreeze)
return;
const auto pActor = PlayerList[nLocalPlayer].pActor;
const auto pActor = PlayerList[nLocalPlayer].GetActor();
DVector3 pos;
DAngle ang;
@ -628,7 +628,7 @@ void PlayFX2(int nSound, DExhumedActor* pActor, int sectf, EChanFlags chanflags,
}
// Nuke: added nSprite >= 0 check
if (pActor != PlayerList[nLocalPlayer].pActor && pActor != nullptr && (pActor->spr.cstat & CSTAT_SPRITE_BLOCK_ALL))
if (pActor != PlayerList[nLocalPlayer].GetActor() && pActor != nullptr && (pActor->spr.cstat & CSTAT_SPRITE_BLOCK_ALL))
nCreepyTimer = kCreepyCount;
}
@ -669,7 +669,7 @@ void CheckAmbience(sectortype* sect)
{
if (sect == pSector2)
{
amb = GetSoundPos(PlayerList[0].pActor->spr.pos);
amb = GetSoundPos(PlayerList[0].GetActor()->spr.pos);
}
else
{
@ -716,7 +716,7 @@ void UpdateCreepySounds()
if (totalmoves & 2)
adder.Y = -adder.Y;
auto sp = PlayerList[nLocalPlayer].pActor->spr.pos + adder;
auto sp = PlayerList[nLocalPlayer].GetActor()->spr.pos + adder;
creepy = GetSoundPos(sp);
auto soundid = FSoundID::fromInt((seqFrameSound & 0x1ff) + 1);

View file

@ -556,7 +556,7 @@ void AISWPressSector::Use(RunListEvent* ev)
{
if (SwitchData[nSwitch].nKeyMask)
{
PlayFXAtXYZ(StaticSound[nSwitchSound], PlayerList[nPlayer].pActor->spr.pos, CHANF_LISTENERZ);
PlayFXAtXYZ(StaticSound[nSwitchSound], PlayerList[nPlayer].GetActor()->spr.pos, CHANF_LISTENERZ);
StatusMessage(300, GStrings("TXT_EX_NEEDKEY"));
}

View file

@ -73,7 +73,7 @@ void DrawView(double interpfrac, bool sceneonly)
DoInterpolations(interpfrac);
auto pPlayer = &PlayerList[nLocalPlayer];
auto pPlayerActor = pPlayer->pActor;
auto pPlayerActor = pPlayer->GetActor();
auto nPlayerOldCstat = pPlayerActor->spr.cstat;
auto pDop = pPlayer->pDoppleSprite;
auto nDoppleOldCstat = pDop->spr.cstat;