diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index f2cb3cc0e..04cafc257 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -3676,7 +3676,7 @@ static int actDamageThing(DBloodActor* source, DBloodActor* actor, int damage, D case kThingZombieHead: if (damageType == 3 && pSourcePlayer && PlayClock > pSourcePlayer->laughCount && Chance(0x4000)) { - sfxPlay3DSound(pSourcePlayer->actor, gPlayerGibThingComments[Random(10)], 0, 2); + sfxPlay3DSound(pSourcePlayer->GetActor(), gPlayerGibThingComments[Random(10)], 0, 2); pSourcePlayer->laughCount = PlayClock + 3600; } break; @@ -5803,7 +5803,7 @@ static void actCheckExplosion() for (int p = connecthead; p >= 0; p = connectpoint2[p]) { - auto dv = apos - gPlayer[p].actor->spr.pos; + auto dv = apos - gPlayer[p].GetActor()->spr.pos; int nDist = int(dv.LengthSquared() + 0x40000); int t = DivScale(actor->xspr.data2, nDist, 16); @@ -6005,7 +6005,7 @@ static void actCheckDudes() } else if (gGameOptions.nGameType == 0) { - if (pPlayer->actor->xspr.health > 0 && pPlayer->restTime >= 1200 && Chance(0x200)) + if (pPlayer->GetActor()->xspr.health > 0 && pPlayer->restTime >= 1200 && Chance(0x200)) { pPlayer->restTime = -1; sfxPlay3DSound(actor, 3100 + Random(11), 0, 2); diff --git a/source/games/blood/src/ai.cpp b/source/games/blood/src/ai.cpp index 90888ff8e..f99cea5b0 100644 --- a/source/games/blood/src/ai.cpp +++ b/source/games/blood/src/ai.cpp @@ -1492,11 +1492,11 @@ void aiThinkTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (actor->GetOwner() == pPlayer->actor || pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (actor->GetOwner() == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvec = ppos.XY() - actor->spr.pos.XY(); - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvec.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) @@ -1508,7 +1508,7 @@ void aiThinkTarget(DBloodActor* actor) DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvec.Angle()); if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); return; } @@ -1537,11 +1537,11 @@ void aiLookForTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (actor->GetOwner() == pPlayer->actor || pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (actor->GetOwner() == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvec = ppos.XY() - actor->spr.pos.XY(); - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvec.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) @@ -1552,7 +1552,7 @@ void aiLookForTarget(DBloodActor* actor) DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvec.Angle()); if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); return; } diff --git a/source/games/blood/src/aibat.cpp b/source/games/blood/src/aibat.cpp index b1579d9a6..00d5b116c 100644 --- a/source/games/blood/src/aibat.cpp +++ b/source/games/blood/src/aibat.cpp @@ -95,11 +95,11 @@ static void batThinkTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvec = ppos.XY() - actor->spr.pos.XY(); - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvec.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) @@ -110,7 +110,7 @@ static void batThinkTarget(DBloodActor* actor) DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvec.Angle()); if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); } else if (nDist < pDudeInfo->HearDist()) diff --git a/source/games/blood/src/aiboneel.cpp b/source/games/blood/src/aiboneel.cpp index 05bd6b720..28971bdb6 100644 --- a/source/games/blood/src/aiboneel.cpp +++ b/source/games/blood/src/aiboneel.cpp @@ -107,11 +107,11 @@ static void eelThinkTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvect = ppos.XY() - actor->spr.pos; - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvect.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) continue; @@ -122,7 +122,7 @@ static void eelThinkTarget(DBloodActor* actor) if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { pDudeExtraE->thinkTime = 0; - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); } else if (nDist < pDudeInfo->HearDist()) diff --git a/source/games/blood/src/aicerber.cpp b/source/games/blood/src/aicerber.cpp index 7c23b8b3d..f099f3e92 100644 --- a/source/games/blood/src/aicerber.cpp +++ b/source/games/blood/src/aicerber.cpp @@ -238,11 +238,11 @@ static void cerberusThinkTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvect = ppos.XY() - actor->spr.pos; - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvect.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) continue; @@ -253,7 +253,7 @@ static void cerberusThinkTarget(DBloodActor* actor) if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { pDudeExtraE->thinkTime = 0; - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); } else if (nDist < pDudeInfo->HearDist()) diff --git a/source/games/blood/src/aigarg.cpp b/source/games/blood/src/aigarg.cpp index af45755f8..27a89604a 100644 --- a/source/games/blood/src/aigarg.cpp +++ b/source/games/blood/src/aigarg.cpp @@ -194,11 +194,11 @@ static void gargThinkTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvect = ppos.XY() - actor->spr.pos; - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvect.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) continue; @@ -209,7 +209,7 @@ static void gargThinkTarget(DBloodActor* actor) if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { pDudeExtraE->thinkTime = 0; - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); } else if (nDist < pDudeInfo->HearDist()) diff --git a/source/games/blood/src/aighost.cpp b/source/games/blood/src/aighost.cpp index 326be2be8..120980ee1 100644 --- a/source/games/blood/src/aighost.cpp +++ b/source/games/blood/src/aighost.cpp @@ -175,11 +175,11 @@ static void ghostThinkTarget(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvect = ppos.XY() - actor->spr.pos; - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvect.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) continue; @@ -190,7 +190,7 @@ static void ghostThinkTarget(DBloodActor* actor) if (nDist < pDudeInfo->SeeDist() && nDeltaAngle <= pDudeInfo->Periphery()) { pDudeExtraE->thinkTime = 0; - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); return; } diff --git a/source/games/blood/src/aitchern.cpp b/source/games/blood/src/aitchern.cpp index 8cf17729e..24f284ae0 100644 --- a/source/games/blood/src/aitchern.cpp +++ b/source/games/blood/src/aitchern.cpp @@ -199,11 +199,11 @@ static void sub_725A4(DBloodActor* actor) for (int p = connecthead; p >= 0; p = connectpoint2[p]) { PLAYER* pPlayer = &gPlayer[p]; - if (pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvect = ppos.XY() - actor->spr.pos; - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); DAngle nAngle = dvect.Angle(); double nDist = dvect.Length(); @@ -216,7 +216,7 @@ static void sub_725A4(DBloodActor* actor) if (nDist < pDudeInfo->SeeDist() && abs(nDeltaAngle) <= pDudeInfo->Periphery()) { pDudeExtraE->thinkTime = 0; - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); } else if (nDist < pDudeInfo->HearDist()) diff --git a/source/games/blood/src/aizomba.cpp b/source/games/blood/src/aizomba.cpp index aa6d012ee..524645fe3 100644 --- a/source/games/blood/src/aizomba.cpp +++ b/source/games/blood/src/aizomba.cpp @@ -211,11 +211,11 @@ static void myThinkTarget(DBloodActor* actor) { PLAYER* pPlayer = &gPlayer[p]; auto owneractor = actor->GetOwner(); - if (owneractor == nullptr || owneractor == pPlayer->actor || pPlayer->actor->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) + if (owneractor == nullptr || owneractor == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0) continue; - auto ppos = pPlayer->actor->spr.pos; + auto ppos = pPlayer->GetActor()->spr.pos; auto dvect = ppos.XY() - actor->spr.pos; - auto pSector = pPlayer->actor->sector(); + auto pSector = pPlayer->GetActor()->sector(); double nDist = dvect.Length(); if (nDist > pDudeInfo->SeeDist() && nDist > pDudeInfo->HearDist()) continue; @@ -225,7 +225,7 @@ static void myThinkTarget(DBloodActor* actor) DAngle nDeltaAngle = absangle(actor->spr.Angles.Yaw, dvect.Angle()); if (nDist < pDudeInfo->SeeDist() && abs(nDeltaAngle) <= pDudeInfo->Periphery()) { - aiSetTarget(actor, pPlayer->actor); + aiSetTarget(actor, pPlayer->GetActor()); aiActivateDude(actor); } else if (nDist < pDudeInfo->HearDist()) diff --git a/source/games/blood/src/animatesprite.cpp b/source/games/blood/src/animatesprite.cpp index e8ce59fc6..be3ff2543 100644 --- a/source/games/blood/src/animatesprite.cpp +++ b/source/games/blood/src/animatesprite.cpp @@ -506,11 +506,11 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF if (cl_showweapon == 2 && r_voxels && nVoxel != -1) { auto gView = &gPlayer[gViewIndex]; - pNSprite->Angles.Yaw = gView->actor->spr.Angles.Yaw + DAngle90; // always face viewer + pNSprite->Angles.Yaw = gView->GetActor()->spr.Angles.Yaw + DAngle90; // always face viewer pNSprite->cstat &= ~CSTAT_SPRITE_YFLIP; if (pPlayer->curWeapon == kWeapLifeLeech) // position lifeleech behind player { - pNSprite->pos.XY() += gView->actor->spr.Angles.Yaw.ToVector() * 8; + pNSprite->pos.XY() += gView->GetActor()->spr.Angles.Yaw.ToVector() * 8; } if ((pPlayer->curWeapon == kWeapLifeLeech) || (pPlayer->curWeapon == kWeapVoodooDoll)) // make lifeleech/voodoo doll always face viewer like sprite pNSprite->Angles.Yaw += DAngle90; @@ -799,7 +799,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA, case kMissileFlareRegular: case kMissileFlareAlt: if (pTSprite->statnum == kStatFlare) { - if (owneractor->GetTarget() == pPlayer->actor) + if (owneractor->GetTarget() == pPlayer->GetActor()) { pTSprite->scale = DVector2(0, 0); break; @@ -867,7 +867,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA, if (pNTSprite) { POSTURE* pPosture = &thisPlayer->pPosture[thisPlayer->lifeMode][thisPlayer->posture]; pNTSprite->pos.XY() += pTSprite->Angles.Yaw.ToVector() * pPosture->xOffset; - pNTSprite->pos.Z = thisPlayer->actor->spr.pos.Z - pPosture->zOffset; + pNTSprite->pos.Z = thisPlayer->GetActor()->spr.pos.Z - pPosture->zOffset; } } @@ -891,7 +891,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA, } } - if (pTSprite->ownerActor != pPlayer->actor || gViewPos != viewFirstPerson) { + if (pTSprite->ownerActor != pPlayer->GetActor() || gViewPos != viewFirstPerson) { if (getflorzofslopeptr(pTSprite->sectp, pTSprite->pos) >= cPos.Z) { viewAddEffect(tsprites, nTSprite, kViewEffectShadow); diff --git a/source/games/blood/src/asound.cpp b/source/games/blood/src/asound.cpp index 4bfd3fd46..399173bc0 100644 --- a/source/games/blood/src/asound.cpp +++ b/source/games/blood/src/asound.cpp @@ -56,7 +56,7 @@ void ambProcess(PLAYER* pPlayer) { if (actor->xspr.state) { - int nDist = (int)(actor->spr.pos - pPlayer->actor->spr.pos).Length(); + int nDist = (int)(actor->spr.pos - pPlayer->GetActor()->spr.pos).Length(); int vs = min(MulScale(actor->xspr.data4, actor->xspr.busy, 16), 127); ambChannels[actor->spr.intowner].distance += ClipRange(scale(nDist, actor->xspr.data1, actor->xspr.data2, vs, 0), 0, vs); } diff --git a/source/games/blood/src/blood.cpp b/source/games/blood/src/blood.cpp index ccf358a17..fe6c2044a 100644 --- a/source/games/blood/src/blood.cpp +++ b/source/games/blood/src/blood.cpp @@ -340,8 +340,8 @@ void StartLevel(MapRecord* level, bool newgame) for (int i = connecthead; i >= 0; i = connectpoint2[i]) { PLAYER* pPlayer = &gPlayer[i]; - pPlayer->actor->xspr.health &= 0xf000; - pPlayer->actor->xspr.health |= gHealthTemp[i]; + pPlayer->GetActor()->xspr.health &= 0xf000; + pPlayer->GetActor()->xspr.health |= gHealthTemp[i]; pPlayer->weaponQav = gPlayerTemp[i].weaponQav; pPlayer->curWeapon = gPlayerTemp[i].curWeapon; pPlayer->weaponState = gPlayerTemp[i].weaponState; @@ -463,8 +463,8 @@ void GameInterface::Ticker(const ticcmd_t* playercmds) thinktime.Unclock(); // update console player's viewzoffset at the end of the tic. - pPlayer->actor->oviewzoffset = pPlayer->actor->viewzoffset; - pPlayer->actor->viewzoffset = pPlayer->zView - pPlayer->actor->spr.pos.Z; + pPlayer->GetActor()->oviewzoffset = pPlayer->GetActor()->viewzoffset; + pPlayer->GetActor()->viewzoffset = pPlayer->zView - pPlayer->GetActor()->spr.pos.Z; gFrameCount++; PlayClock += kTicsPerFrame; @@ -763,7 +763,7 @@ DEFINE_ACTION_FUNCTION(_Blood, GetViewPlayer) DEFINE_ACTION_FUNCTION(_BloodPlayer, GetHealth) { PARAM_SELF_STRUCT_PROLOGUE(PLAYER); - ACTION_RETURN_INT(self->actor->xspr.health); + ACTION_RETURN_INT(self->GetActor()->xspr.health); } DEFINE_ACTION_FUNCTION_NATIVE(_BloodPlayer, powerupCheck, powerupCheck) diff --git a/source/games/blood/src/blood.h b/source/games/blood/src/blood.h index cee2267a7..72fe92235 100644 --- a/source/games/blood/src/blood.h +++ b/source/games/blood/src/blood.h @@ -122,7 +122,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(54.575); } DAngle playerPitchMax() override { return DAngle::fromDeg(-43.15); } - DCoreActor* getConsoleActor() override { return gPlayer[myconnectindex].actor; } + DCoreActor* getConsoleActor() override { return gPlayer[myconnectindex].GetActor(); } void ToggleThirdPerson() override; void SwitchCoopView() override; void ToggleShowWeapon() override; diff --git a/source/games/blood/src/callback.cpp b/source/games/blood/src/callback.cpp index 4b56ed048..90d137479 100644 --- a/source/games/blood/src/callback.cpp +++ b/source/games/blood/src/callback.cpp @@ -436,7 +436,7 @@ void CounterCheck(DBloodActor*, sectortype* pSector) // 12 void FinishHim(DBloodActor* actor, sectortype*) // 13 { if (!actor) return; - if (actor->IsPlayerActor() && playerSeqPlaying(&gPlayer[actor->spr.type - kDudePlayer1], 16) && actor == gPlayer[myconnectindex].actor) + if (actor->IsPlayerActor() && playerSeqPlaying(&gPlayer[actor->spr.type - kDudePlayer1], 16) && actor == gPlayer[myconnectindex].GetActor()) sndStartSample(3313, -1, 1, 0); } diff --git a/source/games/blood/src/d_menu.cpp b/source/games/blood/src/d_menu.cpp index 434da92b3..a6fad80c9 100644 --- a/source/games/blood/src/d_menu.cpp +++ b/source/games/blood/src/d_menu.cpp @@ -156,7 +156,7 @@ void GameInterface::MenuClosed() bool GameInterface::CanSave() { - return gPlayer[myconnectindex].actor && gPlayer[myconnectindex].actor->xspr.health != 0; + return gPlayer[myconnectindex].GetActor() && gPlayer[myconnectindex].GetActor()->xspr.health != 0; } FSavegameInfo GameInterface::GetSaveSig() diff --git a/source/games/blood/src/endgame.cpp b/source/games/blood/src/endgame.cpp index 3207fa0b4..70554bca8 100644 --- a/source/games/blood/src/endgame.cpp +++ b/source/games/blood/src/endgame.cpp @@ -35,10 +35,10 @@ void GameInterface::LevelCompleted(MapRecord* map, int skill) // Save the player state before taking down anything. for (int i = connecthead; i >= 0; i = connectpoint2[i]) { - if (gPlayer[i].actor) + if (gPlayer[i].GetActor()) { memcpy(&gPlayerTemp[i], &gPlayer[i], sizeof(PLAYER)); - gHealthTemp[i] = gPlayer[i].actor->xspr.health; + gHealthTemp[i] = gPlayer[i].GetActor()->xspr.health; } } diff --git a/source/games/blood/src/eventq.cpp b/source/games/blood/src/eventq.cpp index 880a2c5ae..c2ce7dcbe 100644 --- a/source/games/blood/src/eventq.cpp +++ b/source/games/blood/src/eventq.cpp @@ -317,9 +317,9 @@ void evSend(EventObject& eob, int rxId, COMMAND_ID command, DBloodActor* initiat if ((pPlayer = getPlayerById((rxId - kChannelPlayer7) + kMaxPlayers)) != nullptr) { if (command == kCmdEventKillFull) - evKillActor(pPlayer->actor); + evKillActor(pPlayer->GetActor()); else - trMessageSprite(pPlayer->actor, event); + trMessageSprite(pPlayer->GetActor(), event); } } else if (rxId == kChannelAllPlayers) @@ -329,9 +329,9 @@ void evSend(EventObject& eob, int rxId, COMMAND_ID command, DBloodActor* initiat if ((pPlayer = getPlayerById(i)) != nullptr) { if (command == kCmdEventKillFull) - evKillActor(pPlayer->actor); + evKillActor(pPlayer->GetActor()); else - trMessageSprite(pPlayer->actor, event); + trMessageSprite(pPlayer->GetActor(), event); } } return; diff --git a/source/games/blood/src/hudsprites.cpp b/source/games/blood/src/hudsprites.cpp index ff7dc006e..8a75c29db 100644 --- a/source/games/blood/src/hudsprites.cpp +++ b/source/games/blood/src/hudsprites.cpp @@ -128,8 +128,8 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou } int nShade = pSector? pSector->floorshade : 0; int nPalette = 0; - if (pPlayer->actor->sector()->hasX()) { - sectortype* pViewSect = pPlayer->actor->sector(); + if (pPlayer->GetActor()->sector()->hasX()) { + sectortype* pViewSect = pPlayer->GetActor()->sector(); XSECTOR* pXSector = &pViewSect->xs(); if (pXSector->color) nPalette = pViewSect->floorpal; @@ -137,7 +137,7 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou #ifdef NOONE_EXTENSIONS if (pPlayer->sceneQav < 0) WeaponDraw(pPlayer, nShade, cXY.X, cXY.Y, nPalette, angle); - else if (pPlayer->actor->xspr.health > 0) playerQavSceneDraw(pPlayer, nShade, cXY.X, cXY.Y, nPalette, angle); + else if (pPlayer->GetActor()->xspr.health > 0) playerQavSceneDraw(pPlayer, nShade, cXY.X, cXY.Y, nPalette, angle); else { pPlayer->sceneQav = pPlayer->weaponQav = kQAVNone; pPlayer->qavTimer = pPlayer->weaponTimer = pPlayer->curWeapon = 0; @@ -146,9 +146,9 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou WeaponDraw(pPlayer, nShade, cX, cY, nPalette); #endif } - if (gViewPos == 0 && pPlayer->actor->xspr.burnTime > 60) + if (gViewPos == 0 && pPlayer->GetActor()->xspr.burnTime > 60) { - viewBurnTime(pPlayer->actor->xspr.burnTime); + viewBurnTime(pPlayer->GetActor()->xspr.burnTime); } if (packItemActive(pPlayer, 1)) { @@ -169,8 +169,8 @@ void hudDraw(PLAYER* pPlayer, sectortype* pSector, double bobx, double boby, dou } int zn = int(((pPlayer->zWeapon - pPlayer->zView - 12) * 2.) + 220); - PLAYER* pPSprite = &gPlayer[pPlayer->actor->spr.type - kDudePlayer1]; - if (pPlayer->actor->IsPlayerActor() && pPSprite->hand == 1) + PLAYER* pPSprite = &gPlayer[pPlayer->GetActor()->spr.type - kDudePlayer1]; + if (pPlayer->GetActor()->IsPlayerActor() && pPSprite->hand == 1) { gChoke.animateChoke(160, zn, interpfrac); } diff --git a/source/games/blood/src/messages.cpp b/source/games/blood/src/messages.cpp index 79309682f..41594c809 100644 --- a/source/games/blood/src/messages.cpp +++ b/source/games/blood/src/messages.cpp @@ -297,7 +297,7 @@ const char* GameInterface::GenericCheat(int player, int cheat) if (gGameOptions.nGameType != 0 || numplayers > 1) // sp only for now. return nullptr; - if (gamestate != GS_LEVEL || pPlayer->actor->xspr.health == 0) // must be alive and in a level to cheat. + if (gamestate != GS_LEVEL || pPlayer->GetActor()->xspr.health == 0) // must be alive and in a level to cheat. return nullptr; bPlayerCheated = true; @@ -322,27 +322,27 @@ const char* GameInterface::GenericCheat(int player, int cheat) SetToys(pPlayer, true); break; case kCheatKevorkian: - actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageBullet, 8000); + actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageBullet, 8000); return GStrings("TXTB_KEVORKIAN"); case kCheatMcGee: { - if (!pPlayer->actor->xspr.burnTime) - evPostActor(pPlayer->actor, 0, kCallbackFXFlameLick); - actBurnSprite(pPlayer->actor, pPlayer->actor, 2400); + if (!pPlayer->GetActor()->xspr.burnTime) + evPostActor(pPlayer->GetActor(), 0, kCallbackFXFlameLick); + actBurnSprite(pPlayer->GetActor(), pPlayer->GetActor(), 2400); return GStrings("TXTB_FIRED"); } case kCheatEdmark: - actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageExplode, 8000); + actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageExplode, 8000); return GStrings("TXTB_THEDAYS"); case kCheatKrueger: { - actHealDude(pPlayer->actor, 200, 200); + actHealDude(pPlayer->GetActor(), 200, 200); pPlayer->armor[1] = VanillaMode() ? 200 : 3200; - if (!pPlayer->actor->xspr.burnTime) - evPostActor(pPlayer->actor, 0, kCallbackFXFlameLick); - actBurnSprite(pPlayer->actor, pPlayer->actor, 2400); + if (!pPlayer->GetActor()->xspr.burnTime) + evPostActor(pPlayer->GetActor(), 0, kCallbackFXFlameLick); + actBurnSprite(pPlayer->GetActor(), pPlayer->GetActor(), 2400); return GStrings("TXTB_RETARD"); } case kCheatSterno: @@ -352,7 +352,7 @@ const char* GameInterface::GenericCheat(int player, int cheat) pPlayer->flickerEffect = 360; break; case kCheatSpork: - actHealDude(pPlayer->actor, 200, 200); + actHealDude(pPlayer->GetActor(), 200, 200); break; case kCheatClarice: for (int i = 0; i < 3; i++) @@ -401,7 +401,7 @@ const char* GameInterface::GenericCheat(int player, int cheat) SetWooMode(pPlayer, true); break; case kCheatCousteau: - actHealDude(pPlayer->actor, 200, 200); + actHealDude(pPlayer->GetActor(), 200, 200); pPlayer->packSlots[1].curAmount = 100; if (!VanillaMode()) pPlayer->pwUpTime[kPwUpDivingSuit] = gPowerUpInfo[kPwUpDivingSuit].bonusTime; @@ -416,7 +416,7 @@ const char* GameInterface::GenericCheat(int player, int cheat) SetKeys(pPlayer, false); SetWooMode(pPlayer, true); powerupActivate(pPlayer, kPwUpDeliriumShroom); - pPlayer->actor->xspr.health = 16; + pPlayer->GetActor()->xspr.health = 16; pPlayer->hasWeapon[kWeapPitchFork] = 1; pPlayer->curWeapon = kWeapNone; pPlayer->nextWeapon = kWeapPitchFork; @@ -534,7 +534,7 @@ static void cmd_Give(int player, uint8_t** stream, bool skip) int type = ReadByte(stream); if (skip) return; - if (numplayers != 1 || gamestate != GS_LEVEL || pPlayer->actor->xspr.health == 0) + if (numplayers != 1 || gamestate != GS_LEVEL || pPlayer->GetActor()->xspr.health == 0) { Printf("give: Cannot give while dead or not in a single-player game.\n"); return; @@ -552,7 +552,7 @@ static void cmd_Give(int player, uint8_t** stream, bool skip) break; case GIVE_HEALTH: - actHealDude(pPlayer->actor, 200, 200); + actHealDude(pPlayer->GetActor(), 200, 200); bPlayerCheated = true; break; diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index bfc513aae..8e495749f 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -1176,12 +1176,12 @@ void nnExtProcessSuperSprites() for (int a = connecthead; a >= 0; a = connectpoint2[a]) { PLAYER* pPlayer = &gPlayer[a]; - if (!pPlayer || !xsprIsFine(pPlayer->actor) || pPlayer->actor->xspr.health <= 0) + if (!pPlayer || !xsprIsFine(pPlayer->GetActor()) || pPlayer->GetActor()->xspr.health <= 0) continue; - if (pPlayer->actor->xspr.health > 0 && CheckProximity(gPlayer->actor, pos, pSect, okDist)) + if (pPlayer->GetActor()->xspr.health > 0 && CheckProximity(gPlayer->GetActor(), pos, pSect, okDist)) { - trTriggerSprite(pProx, kCmdSpriteProximity, pPlayer->actor); + trTriggerSprite(pProx, kCmdSpriteProximity, pPlayer->GetActor()); } } } @@ -1214,10 +1214,10 @@ void nnExtProcessSuperSprites() for (int a = connecthead; a >= 0; a = connectpoint2[a]) { PLAYER* pPlayer = &gPlayer[a]; - if (!pPlayer || !xsprIsFine(pPlayer->actor) || pPlayer->actor->xspr.health <= 0) + if (!pPlayer || !xsprIsFine(pPlayer->GetActor()) || pPlayer->GetActor()->xspr.health <= 0) continue; - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); GetActorExtents(plActor, &ztop2, &zbot2); if (cansee(pSight->spr.pos, pSightSect, DVector3(plActor->spr.pos.XY(), ztop2), plActor->sector())) { @@ -1232,7 +1232,7 @@ void nnExtProcessSuperSprites() if (!vector) pSight->spr.cstat |= CSTAT_SPRITE_BLOCK_HITSCAN; - HitScan(pPlayer->actor, pPlayer->zWeapon, pPlayer->aim, CLIPMASK0 | CLIPMASK1, 0); + HitScan(pPlayer->GetActor(), pPlayer->zWeapon, pPlayer->aim, CLIPMASK0 | CLIPMASK1, 0); if (!vector) pSight->spr.cstat &= ~CSTAT_SPRITE_BLOCK_HITSCAN; @@ -1304,15 +1304,15 @@ void nnExtProcessSuperSprites() for (int a = connecthead; a != -1; a = connectpoint2[a]) { pPlayer = &gPlayer[a]; - DBloodActor* pact = pPlayer->actor; + DBloodActor* pact = pPlayer->GetActor(); if (pact && pact->hit.hit.type == kHitSprite && pact->hit.hit.actor() == debrisactor) { double nSpeed = pact->vel.XY().Length(); nSpeed = max(nSpeed - nSpeed * FixedToFloat<6>(mass), FixedToFloat(0x9000 - (mass << 3))); // very messy math (TM)... - debrisactor->vel += pPlayer->actor->spr.Angles.Yaw.ToVector() * nSpeed; - debrisactor->hit.hit.setSprite(pPlayer->actor); + debrisactor->vel += pPlayer->GetActor()->spr.Angles.Yaw.ToVector() * nSpeed; + debrisactor->hit.hit.setSprite(pPlayer->GetActor()); } } } @@ -1998,7 +1998,7 @@ void trPlayerCtrlStopScene(PLAYER* pPlayer) pPlayer->sceneQav = -1; // restore weapon - if (pPlayer->actor->xspr.health > 0) + if (pPlayer->GetActor()->xspr.health > 0) { int oldWeapon = (initiator->hasX() && initiator->xspr.dropMsg != 0) ? initiator->xspr.dropMsg : 1; pPlayer->newWeapon = pPlayer->curWeapon = oldWeapon; @@ -2017,7 +2017,7 @@ void trPlayerCtrlStopScene(PLAYER* pPlayer) void trPlayerCtrlLink(DBloodActor* sourceactor, PLAYER* pPlayer, bool checkCondition) { // save player's sprite index to let the tracking condition know it after savegame loading... - auto actor = pPlayer->actor; + auto actor = pPlayer->GetActor(); sourceactor->prevmarker = actor; actor->xspr.txID = sourceactor->xspr.txID; @@ -2060,8 +2060,8 @@ void trPlayerCtrlLink(DBloodActor* sourceactor, PLAYER* pPlayer, bool checkCondi for (unsigned k = 0; k < pCond->objects.Size(); k++) { if (!pCond->objects[k].obj.isActor() || pCond->objects[k].obj.actor() != sourceactor) continue; - pCond->objects[k].obj = EventObject(pPlayer->actor); - pCond->objects[k].cmd = (uint8_t)pPlayer->actor->xspr.command; + pCond->objects[k].obj = EventObject(pPlayer->GetActor()); + pCond->objects[k].cmd = (uint8_t)pPlayer->GetActor()->xspr.command; break; } } @@ -2189,7 +2189,7 @@ void trPlayerCtrlSetLookAngle(int value, PLAYER* pPlayer) if (const double adjustment = clamp(value * 0.125 * (value > 0 ? lookStepUp : lookStepDown), downAngle, upAngle)) { setForcedSyncInput(pPlayer->nPlayer); - pPlayer->actor->spr.Angles.Pitch = maphoriz(-100. * tan(adjustment * pi::pi() * (1. / 1024.))); + pPlayer->GetActor()->spr.Angles.Pitch = maphoriz(-100. * tan(adjustment * pi::pi() * (1. / 1024.))); } } @@ -2908,7 +2908,7 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe pPlayer->nWaterPal = waterPal; pPlayer->posture = kPostureSwim; - pPlayer->actor->xspr.burnTime = 0; + pPlayer->GetActor()->xspr.burnTime = 0; } } @@ -3197,7 +3197,7 @@ void useTeleportTarget(DBloodActor* sourceactor, DBloodActor* actor) pPlayer->nWaterPal = waterPal; pPlayer->posture = kPostureSwim; - pPlayer->actor->xspr.burnTime = 0; + pPlayer->GetActor()->xspr.burnTime = 0; } } else @@ -4318,7 +4318,7 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH) auto objActor = eob.actor(); for (int i = 0; i < kMaxPlayers; i++) { - if (objActor != gPlayer[i].actor) continue; + if (objActor != gPlayer[i].GetActor()) continue; pPlayer = &gPlayer[i]; break; } @@ -4331,8 +4331,8 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH) switch (cond) { case 0: // check if this player is connected - if (!condCmp(pPlayer->nPlayer + 1, arg1, arg2, cmpOp) || pPlayer->actor == nullptr) return false; - else if (PUSH) condPush(aCond, pPlayer->actor); + if (!condCmp(pPlayer->nPlayer + 1, arg1, arg2, cmpOp) || pPlayer->GetActor() == nullptr) return false; + else if (PUSH) condPush(aCond, pPlayer->GetActor()); return (pPlayer->nPlayer >= 0); case 1: return condCmp((gGameOptions.nGameType != 3) ? 0 : pPlayer->teamId + 1, arg1, arg2, cmpOp); // compare team case 2: return (arg1 > 0 && arg1 < 8 && pPlayer->hasKey[arg1 - 1]); @@ -4374,8 +4374,8 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH) case 14: return condCmp(pPlayer->posture + 1, arg1, arg2, cmpOp); case 46: return condCmp(pPlayer->sceneQav, arg1, arg2, cmpOp); case 47: return (pPlayer->godMode || powerupCheck(pPlayer, kPwUpDeathMask)); - case 48: return isShrinked(pPlayer->actor); - case 49: return isGrown(pPlayer->actor); + case 48: return isShrinked(pPlayer->GetActor()); + case 49: return isGrown(pPlayer->GetActor()); } condError(aCond, "Unexpected condition #%d!", cond); @@ -5729,7 +5729,7 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event) { PLAYER* pPlayer = getPlayerById(actor->xspr.data1); if (pPlayer != NULL) - useSpriteDamager(actor, OBJ_SPRITE, 0, pPlayer->actor); + useSpriteDamager(actor, OBJ_SPRITE, 0, pPlayer->GetActor()); } if (actor->xspr.busyTime > 0) @@ -5748,7 +5748,7 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event) { PLAYER* pPlayer = getPlayerById(actor->xspr.data1); if (pPlayer != NULL && SetSpriteState(actor, actor->xspr.state ^ 1, initiator) == 1) - useTeleportTarget(actor, pPlayer->actor); + useTeleportTarget(actor, pPlayer->GetActor()); return true; } [[fallthrough]]; @@ -5999,12 +5999,12 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event) /// !!! COMMANDS OF THE CURRENT SPRITE, NOT OF THE EVENT !!! /// if ((cmd -= kCmdNumberic) < 0) return true; - else if (pPlayer->actor->xspr.health <= 0) + else if (pPlayer->GetActor()->xspr.health <= 0) { switch (cmd) { case 36: - actHealDude(pPlayer->actor, ((actor->xspr.data2 > 0) ? ClipHigh(actor->xspr.data2, 200) : getDudeInfo(pPlayer->actor->spr.type)->startHealth), 200); + actHealDude(pPlayer->GetActor(), ((actor->xspr.data2 > 0) ? ClipHigh(actor->xspr.data2, 200) : getDudeInfo(pPlayer->GetActor()->spr.type)->startHealth), 200); pPlayer->curWeapon = kWeapPitchFork; break; } @@ -6061,12 +6061,12 @@ bool modernTypeOperateSprite(DBloodActor* actor, EVENT& event) else if (actor->spr.flags & kModernTypeFlag1) { setForcedSyncInput(pPlayer->nPlayer); - pPlayer->actor->spr.Angles.Yaw = actor->spr.Angles.Yaw; + pPlayer->GetActor()->spr.Angles.Yaw = actor->spr.Angles.Yaw; } else if (valueIsBetween(actor->xspr.data2, -kAng360, kAng360)) { setForcedSyncInput(pPlayer->nPlayer); - pPlayer->actor->spr.Angles.Yaw = mapangle(actor->xspr.data2); + pPlayer->GetActor()->spr.Angles.Yaw = mapangle(actor->xspr.data2); } break; case 10: // 74 (de)activate powerup @@ -7276,7 +7276,7 @@ void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene) } } - nnExtTriggerObject(rxBucket[i], initiator->xspr.command, pPlayer->actor); + nnExtTriggerObject(rxBucket[i], initiator->xspr.command, pPlayer->GetActor()); } } @@ -7373,14 +7373,14 @@ void playerQavSceneReset(PLAYER* pPlayer) bool playerSizeShrink(PLAYER* pPlayer, int divider) { - pPlayer->actor->xspr.scale = 256 / divider; + pPlayer->GetActor()->xspr.scale = 256 / divider; playerSetRace(pPlayer, kModeHumanShrink); return true; } bool playerSizeGrow(PLAYER* pPlayer, int multiplier) { - pPlayer->actor->xspr.scale = 256 * multiplier; + pPlayer->GetActor()->xspr.scale = 256 * multiplier; playerSetRace(pPlayer, kModeHumanGrown); return true; } @@ -7388,7 +7388,7 @@ bool playerSizeGrow(PLAYER* pPlayer, int multiplier) bool playerSizeReset(PLAYER* pPlayer) { playerSetRace(pPlayer, kModeHuman); - pPlayer->actor->xspr.scale = 0; + pPlayer->GetActor()->xspr.scale = 0; return true; } @@ -7425,7 +7425,7 @@ PLAYER* getPlayerById(int id) { for (int i = connecthead; i >= 0; i = connectpoint2[i]) { - if (id == gPlayer[i].actor->spr.type) + if (id == gPlayer[i].GetActor()->spr.type) return &gPlayer[i]; } } @@ -8401,9 +8401,9 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) for (i = connecthead; i != -1; i = connectpoint2[i]) { pPlayer = &gPlayer[i]; - if (!xsprIsFine(pPlayer->actor)) continue; + if (!xsprIsFine(pPlayer->GetActor())) continue; - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); if (plActor->xspr.health <= 0) continue; @@ -8423,7 +8423,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) { double scratch; double eyeAboveZ = (pDudeInfo->eyeHeight * actor->spr.scale.Y); - if (nDistf < seeDistf / 8) GetActorExtents(pPlayer->actor, &pos.Z, &scratch); //use ztop of the target sprite + if (nDistf < seeDistf / 8) GetActorExtents(pPlayer->GetActor(), &pos.Z, &scratch); //use ztop of the target sprite if (!cansee(pos, plActor->sector(), actor->spr.pos - eyeAboveZ, actor->sector())) continue; } @@ -8431,11 +8431,11 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) continue; bool invisible = (powerupCheck(pPlayer, kPwUpShadowCloak) > 0); - if (spritesTouching(actor, pPlayer->actor) || spritesTouching(pPlayer->actor, actor)) + if (spritesTouching(actor, pPlayer->GetActor()) || spritesTouching(pPlayer->GetActor(), actor)) { DPrintf(DMSG_SPAMMY, "Patrol dude #%d spot the Player #%d via touch.", actor->GetIndex(), pPlayer->nPlayer + 1); if (invisible) pPlayer->pwUpTime[kPwUpShadowCloak] = 0; - newtarget = pPlayer->actor; + newtarget = pPlayer->GetActor(); break; } @@ -8453,7 +8453,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) sndv = emitterActor->spr.pos.XY(); // sound attached to the sprite - if (pPlayer->actor != emitterActor && emitterActor->GetOwner() != actor) + if (pPlayer->GetActor() != emitterActor && emitterActor->GetOwner() != actor) { if (!emitterActor->insector()) return false; @@ -8488,7 +8488,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) BloodSectIterator it(searchsect); while (auto act = it.Next()) { - if (act->GetOwner() == pPlayer->actor) + if (act->GetOwner() == pPlayer->GetActor()) { found = true; break; @@ -8552,7 +8552,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) if (hearDistf) { - DBloodActor* act = pPlayer->actor; + DBloodActor* act = pPlayer->GetActor(); itCanHear = (!deaf && (nDistf < hearDistf || hearChance > 0)); if (act && itCanHear && nDistf < feelDistf && (!act->vel.isZero())) hearChance += (int)max(((feelDistf - nDistf) + act->vel.Sum() * 64, 0.) / 256, 0.); @@ -8648,7 +8648,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) // trigger this region if target gonna be spot if (steal->xspr.txID && actor->xspr.data3 + hearChance + seeChance >= kMaxPatrolSpotValue) - trTriggerSprite(steal, kCmdToggle, pPlayer->actor); + trTriggerSprite(steal, kCmdToggle, pPlayer->GetActor()); // continue search another stealth regions to affect chances } @@ -8660,7 +8660,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) actor->xspr.data3 = ClipRange(actor->xspr.data3 + hearChance, -kMaxPatrolSpotValue, kMaxPatrolSpotValue); if (!stealth) { - newtarget = pPlayer->actor; + newtarget = pPlayer->GetActor(); break; } } @@ -8672,7 +8672,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) actor->xspr.data3 = ClipRange(actor->xspr.data3 + seeChance, -kMaxPatrolSpotValue, kMaxPatrolSpotValue); if (!stealth) { - newtarget = pPlayer->actor; + newtarget = pPlayer->GetActor(); break; } } @@ -8682,7 +8682,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor) if ((actor->xspr.data3 = ClipRange(actor->xspr.data3, 0, kMaxPatrolSpotValue)) == kMaxPatrolSpotValue) { - newtarget = pPlayer->actor; + newtarget = pPlayer->GetActor(); break; } @@ -9288,7 +9288,7 @@ void changeSpriteAngle(DBloodActor* pSpr, DAngle nAng) { PLAYER* pPlayer = getPlayerById(pSpr->spr.type); if (pPlayer) - pPlayer->actor->spr.Angles.Yaw = nAng; + pPlayer->GetActor()->spr.Angles.Yaw = nAng; else { pSpr->spr.Angles.Yaw = nAng; @@ -9325,8 +9325,8 @@ void killEffectGenCallbacks(DBloodActor* actor) case kChannelAllPlayers: // player sprites for (i = connecthead; i >= 0; i = connectpoint2[i]) { - if (gPlayer[i].actor != nullptr) - dokillEffectGenCallbacks(gPlayer[i].actor); + if (gPlayer[i].GetActor() != nullptr) + dokillEffectGenCallbacks(gPlayer[i].GetActor()); } break; case kChannelEventCauser: // worst case... @@ -9350,8 +9350,8 @@ void killEffectGenCallbacks(DBloodActor* actor) { // player sprites PLAYER* pPlayer = getPlayerById(actor->xspr.txID - kChannelPlayer0); - if (pPlayer && pPlayer->actor != nullptr) - dokillEffectGenCallbacks(pPlayer->actor); + if (pPlayer && pPlayer->GetActor() != nullptr) + dokillEffectGenCallbacks(pPlayer->GetActor()); } break; diff --git a/source/games/blood/src/player.cpp b/source/games/blood/src/player.cpp index eff2992fc..049ff587b 100644 --- a/source/games/blood/src/player.cpp +++ b/source/games/blood/src/player.cpp @@ -292,21 +292,21 @@ bool powerupActivate(PLAYER* pPlayer, int nPowerUp) break; case kItemShroomShrink: if (!gModernMap) break; - else if (isGrown(pPlayer->actor)) playerDeactivateShrooms(pPlayer); + else if (isGrown(pPlayer->GetActor())) playerDeactivateShrooms(pPlayer); else playerSizeShrink(pPlayer, 2); break; case kItemShroomGrow: if (!gModernMap) break; - else if (isShrinked(pPlayer->actor)) playerDeactivateShrooms(pPlayer); + else if (isShrinked(pPlayer->GetActor())) playerDeactivateShrooms(pPlayer); else { playerSizeGrow(pPlayer, 2); - if (powerupCheck(&gPlayer[pPlayer->actor->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) { + if (powerupCheck(&gPlayer[pPlayer->GetActor()->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) { powerupDeactivate(pPlayer, kPwUpShadowCloak); pPlayer->pwUpTime[kPwUpShadowCloak] = 0; } - if (ceilIsTooLow(pPlayer->actor)) - actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageExplode, 65535); + if (ceilIsTooLow(pPlayer->GetActor())) + actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageExplode, 65535); } break; #endif @@ -338,7 +338,7 @@ bool powerupActivate(PLAYER* pPlayer, int nPowerUp) WeaponRaise(pPlayer); break; } - sfxPlay3DSound(pPlayer->actor, 776, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 776, -1, 0); return 1; } @@ -359,8 +359,8 @@ void powerupDeactivate(PLAYER* pPlayer, int nPowerUp) case kItemShroomShrink: if (gModernMap) { playerSizeReset(pPlayer); - if (ceilIsTooLow(pPlayer->actor)) - actDamageSprite(pPlayer->actor, pPlayer->actor, kDamageExplode, 65535); + if (ceilIsTooLow(pPlayer->GetActor())) + actDamageSprite(pPlayer->GetActor(), pPlayer->GetActor(), kDamageExplode, 65535); } break; case kItemShroomGrow: @@ -573,11 +573,11 @@ void packUseItem(PLAYER* pPlayer, int nPack) { case 0: { - unsigned int health = pPlayer->actor->xspr.health >> 4; + unsigned int health = pPlayer->GetActor()->xspr.health >> 4; if (health < 100) { int heal = ClipHigh(100 - health, pPlayer->packSlots[0].curAmount); - actHealDude(pPlayer->actor, heal, 100); + actHealDude(pPlayer->GetActor(), heal, 100); pPlayer->packSlots[0].curAmount -= heal; } break; @@ -673,8 +673,8 @@ void packNextItem(PLAYER* pPlayer) bool playerSeqPlaying(PLAYER* pPlayer, int nSeq) { - int nCurSeq = seqGetID(pPlayer->actor); - if (pPlayer->pDudeInfo->seqStartID + nSeq == nCurSeq && seqGetStatus(pPlayer->actor) >= 0) + int nCurSeq = seqGetID(pPlayer->GetActor()); + if (pPlayer->pDudeInfo->seqStartID + nSeq == nCurSeq && seqGetStatus(pPlayer->GetActor()) >= 0) return 1; return 0; } @@ -693,7 +693,7 @@ void playerSetRace(PLAYER* pPlayer, int nLifeMode) pPlayer->lifeMode = nLifeMode; // By NoOne: don't forget to change clipdist for grow and shrink modes - pPlayer->actor->clipdist = pDudeInfo->fClipdist(); + pPlayer->GetActor()->clipdist = pDudeInfo->fClipdist(); for (int i = 0; i < 7; i++) pDudeInfo->damageVal[i] = MulScale(Handicap[gSkill], pDudeInfo->startDamage[i], 8); @@ -713,20 +713,20 @@ void playerSetGodMode(PLAYER* pPlayer, bool bGodMode) void playerResetInertia(PLAYER* pPlayer) { POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; - pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ; - pPlayer->zWeapon = pPlayer->actor->spr.pos.Z - pPosture->weaponAboveZ; - pPlayer->actor->oviewzoffset = pPlayer->actor->viewzoffset = pPlayer->zView - pPlayer->actor->spr.pos.Z; + pPlayer->zView = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ; + pPlayer->zWeapon = pPlayer->GetActor()->spr.pos.Z - pPosture->weaponAboveZ; + pPlayer->GetActor()->oviewzoffset = pPlayer->GetActor()->viewzoffset = pPlayer->zView - pPlayer->GetActor()->spr.pos.Z; viewBackupView(pPlayer->nPlayer); } void playerCorrectInertia(PLAYER* pPlayer, const DVector3& oldpos) { - auto zAdj = pPlayer->actor->spr.pos.Z - oldpos.Z; + auto zAdj = pPlayer->GetActor()->spr.pos.Z - oldpos.Z; pPlayer->zView += zAdj; pPlayer->zWeapon += zAdj; - pPlayer->actor->opos.XY() += pPlayer->actor->spr.pos.XY() - oldpos.XY(); + pPlayer->GetActor()->opos.XY() += pPlayer->GetActor()->spr.pos.XY() - oldpos.XY(); pPlayer->ozView += zAdj; - pPlayer->actor->opos.Z += zAdj; + pPlayer->GetActor()->opos.Z += zAdj; } void playerResetPowerUps(PLAYER* pPlayer) @@ -801,7 +801,7 @@ void playerStart(int nPlayer, int bNewLevel) auto actor = actSpawnSprite(pStartZone->sector, pStartZone->pos, 6, 1); assert(actor->hasX()); pPlayer->actor = actor; - pPlayer->Angles.initialize(pPlayer->actor); + pPlayer->Angles.initialize(pPlayer->GetActor()); DUDEINFO* pDudeInfo = &dudeInfo[kDudePlayer1 + nPlayer - kDudeBase]; pPlayer->pDudeInfo = pDudeInfo; playerSetRace(pPlayer, kModeHuman); @@ -819,9 +819,9 @@ void playerStart(int nPlayer, int bNewLevel) actor->spr.flags = 15; actor->xspr.burnTime = 0; actor->SetBurnSource(nullptr); - pPlayer->actor->xspr.health = pDudeInfo->startHealth << 4; - pPlayer->actor->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE; - pPlayer->actor->spr.Angles.Pitch = pPlayer->Angles.ViewAngles.Pitch = nullAngle; + pPlayer->GetActor()->xspr.health = pDudeInfo->startHealth << 4; + pPlayer->GetActor()->spr.cstat &= ~CSTAT_SPRITE_INVISIBLE; + pPlayer->GetActor()->spr.Angles.Pitch = pPlayer->Angles.ViewAngles.Pitch = nullAngle; pPlayer->slope = 0; pPlayer->fragger = nullptr; pPlayer->underwaterTime = 1200; @@ -908,7 +908,7 @@ void playerStart(int nPlayer, int bNewLevel) if (IsUnderwaterSector(actor->sector())) { pPlayer->posture = 1; - pPlayer->actor->xspr.medium = kMediumWater; + pPlayer->GetActor()->xspr.medium = kMediumWater; } } @@ -1011,7 +1011,7 @@ bool findDroppedLeech(PLAYER* a1, DBloodActor* a2) { if (a2 == actor) continue; - if (actor->spr.type == kThingDroppedLifeLeech && actor->GetOwner() == a1->actor) + if (actor->spr.type == kThingDroppedLifeLeech && actor->GetOwner() == a1->GetActor()) return 1; } return 0; @@ -1028,12 +1028,12 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor) char buffer[80]; int pickupSnd = 775; int nType = itemactor->spr.type - kItemBase; - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); switch (itemactor->spr.type) { case kItemShadowCloak: #ifdef NOONE_EXTENSIONS - if (isGrown(pPlayer->actor) || !powerupActivate(pPlayer, nType)) return false; + if (isGrown(pPlayer->GetActor()) || !powerupActivate(pPlayer, nType)) return false; #else if (!powerupActivate(pPlayer, nType)) return false; #endif @@ -1045,10 +1045,10 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor) if (gModernMap) { switch (itemactor->spr.type) { case kItemShroomShrink: - if (isShrinked(pPlayer->actor)) return false; + if (isShrinked(pPlayer->GetActor())) return false; break; case kItemShroomGrow: - if (isGrown(pPlayer->actor)) return false; + if (isGrown(pPlayer->GetActor())) return false; break; } @@ -1232,7 +1232,7 @@ bool PickupItem(PLAYER* pPlayer, DBloodActor* itemactor) addPower = itemactor->xspr.data1; #endif - if (!actHealDude(pPlayer->actor, addPower, gPowerUpInfo[nType].maxTime)) return 0; + if (!actHealDude(pPlayer->GetActor(), addPower, gPowerUpInfo[nType].maxTime)) return 0; return 1; } case kItemHealthDoctorBag: @@ -1270,7 +1270,7 @@ bool PickupAmmo(PLAYER* pPlayer, DBloodActor* ammoactor) pPlayer->ammoCount[nAmmoType] = ClipHigh(pPlayer->ammoCount[nAmmoType] + pAmmoItemData->count, gAmmoInfo[nAmmoType].max); if (pAmmoItemData->weaponType) pPlayer->hasWeapon[pAmmoItemData->weaponType] = 1; - sfxPlay3DSound(pPlayer->actor, 782, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 782, -1, 0); return 1; } @@ -1303,7 +1303,7 @@ bool PickupWeapon(PLAYER* pPlayer, DBloodActor* weaponactor) pPlayer->weaponState = 0; pPlayer->nextWeapon = nNewWeapon; } - sfxPlay3DSound(pPlayer->actor, 777, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 777, -1, 0); return 1; } @@ -1315,7 +1315,7 @@ bool PickupWeapon(PLAYER* pPlayer, DBloodActor* weaponactor) else pPlayer->ammoCount[nAmmoType] = ClipHigh(pPlayer->ammoCount[nAmmoType] + pWeaponItemData->count, gAmmoInfo[nAmmoType].max); - sfxPlay3DSound(pPlayer->actor, 777, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 777, -1, 0); return 1; } @@ -1378,7 +1378,7 @@ void PickUp(PLAYER* pPlayer, DBloodActor* actor) void CheckPickUp(PLAYER* pPlayer) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); auto ppos = plActor->spr.pos; auto pSector = plActor->sector(); BloodStatIterator it(kStatItem); @@ -1419,10 +1419,10 @@ void CheckPickUp(PLAYER* pPlayer) int ActionScan(PLAYER* pPlayer, HitInfo* out) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); *out = {}; auto pos = DVector3(plActor->spr.Angles.Yaw.ToVector(), pPlayer->slope); - int hit = HitScan(pPlayer->actor, pPlayer->zView, pos, 0x10000040, 128); + int hit = HitScan(pPlayer->GetActor(), pPlayer->zView, pos, 0x10000040, 128); double hitDist = (plActor->spr.pos.XY() - gHitInfo.hitpos.XY()).Length(); if (hitDist < 64) { @@ -1519,7 +1519,7 @@ void ProcessInput(PLAYER* pPlayer) Item_JumpBoots = 3 }; - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; InputPacket* pInput = &pPlayer->input; @@ -1541,11 +1541,11 @@ void ProcessInput(PLAYER* pPlayer) DBloodActor* fragger = pPlayer->fragger; if (fragger) { - pPlayer->actor->spr.Angles.Yaw = (fragger->spr.pos.XY() - actor->spr.pos.XY()).Angle(); + pPlayer->GetActor()->spr.Angles.Yaw = (fragger->spr.pos.XY() - actor->spr.pos.XY()).Angle(); } pPlayer->deathTime += 4; if (!bSeqStat) - pPlayer->actor->spr.Angles.Pitch = gi->playerPitchMax() * (1. - BobVal(min((pPlayer->deathTime << 3) + 512, 1536))) * 0.5; + pPlayer->GetActor()->spr.Angles.Pitch = gi->playerPitchMax() * (1. - BobVal(min((pPlayer->deathTime << 3) + 512, 1536))) * 0.5; if (pPlayer->curWeapon) pInput->setNewWeapon(pPlayer->curWeapon); if (pInput->actions & SB_OPEN) @@ -1553,14 +1553,14 @@ void ProcessInput(PLAYER* pPlayer) if (bSeqStat) { if (pPlayer->deathTime > 360) - seqSpawn(pPlayer->pDudeInfo->seqStartID + 14, pPlayer->actor, nPlayerSurviveClient); + seqSpawn(pPlayer->pDudeInfo->seqStartID + 14, pPlayer->GetActor(), nPlayerSurviveClient); } - else if (seqGetStatus(pPlayer->actor) < 0) + else if (seqGetStatus(pPlayer->GetActor()) < 0) { - if (pPlayer->actor) - pPlayer->actor->spr.type = kThingBloodChunks; - actPostSprite(pPlayer->actor, kStatThing); - seqSpawn(pPlayer->pDudeInfo->seqStartID + 15, pPlayer->actor, -1); + if (pPlayer->GetActor()) + pPlayer->GetActor()->spr.type = kThingBloodChunks; + actPostSprite(pPlayer->GetActor(), kStatThing); + seqSpawn(pPlayer->pDudeInfo->seqStartID + 15, pPlayer->GetActor(), -1); playerReset(pPlayer); if (gGameOptions.nGameType == 0 && numplayers == 1) { @@ -1694,24 +1694,24 @@ void ProcessInput(PLAYER* pPlayer) pPlayer->handTime = ClipLow(pPlayer->handTime - 4 * (6 - gGameOptions.nDifficulty), 0); if (pPlayer->handTime <= 0 && pPlayer->hand) { - DBloodActor* pactor = pPlayer->actor; - auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->actor->clipdist * 0.5); + DBloodActor* pactor = pPlayer->GetActor(); + auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->GetActor()->clipdist * 0.5); if (spawned) { spawned->spr.Angles.Yaw += DAngle180; - spawned->vel.XY() = pPlayer->actor->vel.XY() + (64. / 3.) * pPlayer->actor->spr.Angles.Yaw.ToVector(); - spawned->vel.Z = pPlayer->actor->vel.Z; + spawned->vel.XY() = pPlayer->GetActor()->vel.XY() + (64. / 3.) * pPlayer->GetActor()->spr.Angles.Yaw.ToVector(); + spawned->vel.Z = pPlayer->GetActor()->vel.Z; } pPlayer->hand = 0; } pInput->actions &= ~SB_OPEN; } - const int florhit = pPlayer->actor->hit.florhit.type; + const int florhit = pPlayer->GetActor()->hit.florhit.type; pPlayer->Angles.doViewPitch(actor->xspr.height < 16 && (florhit == kHitSector || florhit == 0)); pPlayer->Angles.doPitchInput(pInput); - pPlayer->slope = pPlayer->actor->spr.Angles.Pitch.Tan(); + pPlayer->slope = pPlayer->GetActor()->spr.Angles.Pitch.Tan(); if (pInput->actions & SB_INVPREV) { pInput->actions &= ~SB_INVPREV; @@ -1766,7 +1766,7 @@ void ProcessInput(PLAYER* pPlayer) void playerProcess(PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; powerupProcess(pPlayer); double top, bottom; @@ -1792,14 +1792,14 @@ void playerProcess(PLAYER* pPlayer) } ProcessInput(pPlayer); pPlayer->zViewVel = interpolatedvalue(pPlayer->zViewVel, actor->vel.Z, FixedToFloat(0x7000)); - double dz = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ - pPlayer->zView; + double dz = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ - pPlayer->zView; if (dz > 0) pPlayer->zViewVel += dz * FixedToFloat(0xa000); else pPlayer->zViewVel += dz * FixedToFloat(0x1800); pPlayer->zView += pPlayer->zViewVel; pPlayer->zWeaponVel = interpolatedvalue(pPlayer->zWeaponVel, actor->vel.Z, FixedToFloat(0x5000)); - dz = pPlayer->actor->spr.pos.Z - pPosture->weaponAboveZ - pPlayer->zWeapon; + dz = pPlayer->GetActor()->spr.pos.Z - pPosture->weaponAboveZ - pPlayer->zWeapon; if (dz > 0) pPlayer->zWeaponVel += dz * FixedToFloat(0x8000); else @@ -1846,7 +1846,7 @@ void playerProcess(PLAYER* pPlayer) pPlayer->painEffect = ClipLow(pPlayer->painEffect - 4, 0); pPlayer->blindEffect = ClipLow(pPlayer->blindEffect - 4, 0); pPlayer->pickupEffect = ClipLow(pPlayer->pickupEffect - 4, 0); - if (pPlayer->nPlayer == myconnectindex && pPlayer->actor->xspr.health == 0) + if (pPlayer->nPlayer == myconnectindex && pPlayer->GetActor()->xspr.health == 0) pPlayer->hand = 0; if (!actor->xspr.health) return; @@ -1894,12 +1894,12 @@ void playerProcess(PLAYER* pPlayer) DBloodActor* playerFireMissile(PLAYER* pPlayer, double xyoff, const DVector3& dv, int nType) { - return actFireMissile(pPlayer->actor, xyoff, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv, nType); + return actFireMissile(pPlayer->GetActor(), xyoff, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv, nType); } DBloodActor* playerFireThing(PLAYER* pPlayer, double xyoff, double zvel, int thingType, double nSpeed) { - return actFireThing(pPlayer->actor, xyoff, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->slope * 0.25 + zvel, thingType, nSpeed); + return actFireThing(pPlayer->GetActor(), xyoff, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->slope * 0.25 + zvel, thingType, nSpeed); } //--------------------------------------------------------------------------- @@ -1914,9 +1914,9 @@ void playerFrag(PLAYER* pKiller, PLAYER* pVictim) assert(pVictim != NULL); char buffer[128] = ""; - int nKiller = pKiller->actor->spr.type - kDudePlayer1; + int nKiller = pKiller->GetActor()->spr.type - kDudePlayer1; assert(nKiller >= 0 && nKiller < kMaxPlayers); - int nVictim = pVictim->actor->spr.type - kDudePlayer1; + int nVictim = pVictim->GetActor()->spr.type - kDudePlayer1; assert(nVictim >= 0 && nVictim < kMaxPlayers); if (nKiller == nVictim) { @@ -2034,7 +2034,7 @@ int playerDamageArmor(PLAYER* pPlayer, DAMAGE_TYPE nType, int nDamage) void flagDropped(PLAYER* pPlayer, int a2) { - DBloodActor* playeractor = pPlayer->actor; + DBloodActor* playeractor = pPlayer->GetActor(); DBloodActor* actor; char buffer[80]; switch (a2) @@ -2074,7 +2074,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage nDamage = playerDamageArmor(pPlayer, nDamageType, nDamage); pPlayer->painEffect = ClipHigh(pPlayer->painEffect + (nDamage >> 3), 600); - DBloodActor* pActor = pPlayer->actor; + DBloodActor* pActor = pPlayer->GetActor(); DUDEINFO* pDudeInfo = getDudeInfo(pActor->spr.type); int nDeathSeqID = -1; int nKneelingPlayer = -1; @@ -2087,12 +2087,12 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage { case kDamageSpirit: nDeathSeqID = 18; - sfxPlay3DSound(pPlayer->actor, 716, 0, 0); + sfxPlay3DSound(pPlayer->GetActor(), 716, 0, 0); break; case kDamageExplode: GibSprite(pActor, GIBTYPE_7, NULL, NULL); GibSprite(pActor, GIBTYPE_15, NULL, NULL); - pPlayer->actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE; + pPlayer->GetActor()->spr.cstat |= CSTAT_SPRITE_INVISIBLE; nDeathSeqID = 17; break; default: @@ -2131,10 +2131,10 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage nSound = pDamageInfo->Kills[Random(3)]; if (nDamageType == kDamageDrown && pActor->xspr.medium == kMediumWater && !pPlayer->hand) nSound = 714; - sfxPlay3DSound(pPlayer->actor, nSound, 0, 6); + sfxPlay3DSound(pPlayer->GetActor(), nSound, 0, 6); return nDamage; } - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); if (gGameOptions.nGameType == 3 && pPlayer->hasFlag) { if (pPlayer->hasFlag & 1) flagDropped(pPlayer, kItemFlagA); if (pPlayer->hasFlag & 2) flagDropped(pPlayer, kItemFlagB); @@ -2149,14 +2149,14 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage switch (nDamageType) { case kDamageExplode: - sfxPlay3DSound(pPlayer->actor, 717, 0, 0); + sfxPlay3DSound(pPlayer->GetActor(), 717, 0, 0); GibSprite(pActor, GIBTYPE_7, NULL, NULL); GibSprite(pActor, GIBTYPE_15, NULL, NULL); - pPlayer->actor->spr.cstat |= CSTAT_SPRITE_INVISIBLE; + pPlayer->GetActor()->spr.cstat |= CSTAT_SPRITE_INVISIBLE; nDeathSeqID = 2; break; case kDamageBurn: - sfxPlay3DSound(pPlayer->actor, 718, 0, 0); + sfxPlay3DSound(pPlayer->GetActor(), 718, 0, 0); nDeathSeqID = 3; break; case kDamageDrown: @@ -2166,16 +2166,16 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage if (nHealth < -20 && gGameOptions.nGameType >= 2 && Chance(0x4000)) { DAMAGEINFO* pDamageInfo = &damageInfo[nDamageType]; - sfxPlay3DSound(pPlayer->actor, pDamageInfo->at10[0], 0, 2); + sfxPlay3DSound(pPlayer->GetActor(), pDamageInfo->at10[0], 0, 2); nDeathSeqID = 16; nKneelingPlayer = nPlayerKneelClient; powerupActivate(pPlayer, kPwUpDeliriumShroom); pActor->SetTarget(source); - evPostActor(pPlayer->actor, 15, kCallbackFinishHim); + evPostActor(pPlayer->GetActor(), 15, kCallbackFinishHim); } else { - sfxPlay3DSound(pPlayer->actor, 716, 0, 0); + sfxPlay3DSound(pPlayer->GetActor(), 716, 0, 0); nDeathSeqID = 1; } break; @@ -2191,7 +2191,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage pActor->spr.flags |= 7; for (int p = connecthead; p >= 0; p = connectpoint2[p]) { - if (gPlayer[p].fragger == pPlayer->actor && gPlayer[p].deathTime > 0) + if (gPlayer[p].fragger == pPlayer->GetActor() && gPlayer[p].deathTime > 0) gPlayer[p].fragger = nullptr; } FragPlayer(pPlayer, source); @@ -2199,21 +2199,21 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage #ifdef NOONE_EXTENSIONS // allow drop items and keys in multiplayer - if (gModernMap && gGameOptions.nGameType != 0 && pPlayer->actor->xspr.health <= 0) { + if (gModernMap && gGameOptions.nGameType != 0 && pPlayer->GetActor()->xspr.health <= 0) { DBloodActor* pItem = nullptr; - if (pPlayer->actor->xspr.dropMsg && (pItem = actDropItem(pActor, pPlayer->actor->xspr.dropMsg)) != NULL) + if (pPlayer->GetActor()->xspr.dropMsg && (pItem = actDropItem(pActor, pPlayer->GetActor()->xspr.dropMsg)) != NULL) evPostActor(pItem, 500, kCallbackRemove); - if (pPlayer->actor->xspr.key) { + if (pPlayer->GetActor()->xspr.key) { int i; // if all players have this key, don't drop it for (i = connecthead; i >= 0; i = connectpoint2[i]) { - if (!gPlayer[i].hasKey[pPlayer->actor->xspr.key]) + if (!gPlayer[i].hasKey[pPlayer->GetActor()->xspr.key]) break; } - if (i == 0 && (pItem = actDropKey(pActor, (pPlayer->actor->xspr.key + kItemKeyBase) - 1)) != NULL) + if (i == 0 && (pItem = actDropKey(pActor, (pPlayer->GetActor()->xspr.key + kItemKeyBase) - 1)) != NULL) evPostActor(pItem, 500, kCallbackRemove); } @@ -2224,7 +2224,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER* pPlayer, DAMAGE_TYPE nDamage } assert(getSequence(pDudeInfo->seqStartID + nDeathSeqID) != NULL); - seqSpawn(pDudeInfo->seqStartID + nDeathSeqID, pPlayer->actor, nKneelingPlayer); + seqSpawn(pDudeInfo->seqStartID + nDeathSeqID, pPlayer->GetActor(), nKneelingPlayer); return nDamage; } @@ -2252,9 +2252,9 @@ int UseAmmo(PLAYER* pPlayer, int nAmmoType, int nDec) void voodooTarget(PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); double aimz = pPlayer->aim.Z; - double dz = pPlayer->zWeapon - pPlayer->actor->spr.pos.Z; + double dz = pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z; if (UseAmmo(pPlayer, 9, 0) < 8) { pPlayer->voodooTargets = 0; @@ -2296,14 +2296,14 @@ void playerLandingSound(PLAYER* pPlayer) 604, 603 }; - SPRITEHIT* pHit = &pPlayer->actor->hit; + SPRITEHIT* pHit = &pPlayer->GetActor()->hit; if (pHit->florhit.type != kHitNone) { if (!gGameOptions.bFriendlyFire && pHit->florhit.type == kHitSprite && IsTargetTeammate(pPlayer, pHit->florhit.actor())) return; int nSurf = tileGetSurfType(pHit->florhit); if (nSurf) - sfxPlay3DSound(pPlayer->actor, surfaceSound[nSurf], -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), surfaceSound[nSurf], -1, 0); } } @@ -2345,7 +2345,7 @@ void PlayerKneelsOver(int, DBloodActor* actor) { for (int p = connecthead; p >= 0; p = connectpoint2[p]) { - if (gPlayer[p].actor == actor) + if (gPlayer[p].GetActor() == actor) { PLAYER* pPlayer = &gPlayer[p]; playerDamageSprite(pPlayer->fragger, pPlayer, kDamageSpirit, 500 << 4); @@ -2539,7 +2539,7 @@ void SerializePlayers(FSerializer& arc) { for (int i = 0; i < gNetPlayers; i++) { - gPlayer[i].pDudeInfo = &dudeInfo[gPlayer[i].actor->spr.type - kDudeBase]; + gPlayer[i].pDudeInfo = &dudeInfo[gPlayer[i].GetActor()->spr.type - kDudeBase]; #ifdef NOONE_EXTENSIONS // load qav scene diff --git a/source/games/blood/src/player.h b/source/games/blood/src/player.h index 702ca9b30..1c8498298 100644 --- a/source/games/blood/src/player.h +++ b/source/games/blood/src/player.h @@ -174,6 +174,11 @@ struct PLAYER int player_par; int nWaterPal; POSTURE pPosture[kModeMax][kPostureMax]; + + inline DBloodActor* GetActor() + { + return actor; + } }; struct AMMOINFO diff --git a/source/games/blood/src/qav.cpp b/source/games/blood/src/qav.cpp index 9db8b230c..9113b88a0 100644 --- a/source/games/blood/src/qav.cpp +++ b/source/games/blood/src/qav.cpp @@ -229,7 +229,7 @@ void QAV::Draw(int ticks, int stat, int shade, int palnum, bool to3dview, double void QAV::Play(int start, int end, int nCallback, PLAYER* pData) { - auto pActor = pData ? pData->actor : nullptr; + auto pActor = pData ? pData->GetActor() : nullptr; assert(ticksPerFrame > 0); int frame; int ticks; diff --git a/source/games/blood/src/sfx.cpp b/source/games/blood/src/sfx.cpp index e2ddfd615..7d5c5df3c 100644 --- a/source/games/blood/src/sfx.cpp +++ b/source/games/blood/src/sfx.cpp @@ -66,7 +66,7 @@ void BloodSoundEngine::CalcPosVel(int type, const void* source, const float pt[3 PLAYER* pPlayer = &gPlayer[myconnectindex]; FVector3 camera; - if (pPlayer && pPlayer->actor) camera = GetSoundPos(pPlayer->actor->spr.pos); + if (pPlayer && pPlayer->GetActor()) camera = GetSoundPos(pPlayer->GetActor()->spr.pos); else camera = { 0, 0, 0 }; // don't crash if there is no player. if (vel) vel->Zero(); @@ -108,11 +108,11 @@ void GameInterface::UpdateSounds() PLAYER* pPlayer = &gPlayer[myconnectindex]; SoundListener listener; - if (pPlayer->actor) + if (pPlayer->GetActor()) { - listener.angle = float(-pPlayer->actor->spr.Angles.Yaw.Radians()); + listener.angle = float(-pPlayer->GetActor()->spr.Angles.Yaw.Radians()); listener.velocity.Zero(); - listener.position = GetSoundPos(pPlayer->actor->spr.pos); + listener.position = GetSoundPos(pPlayer->GetActor()->spr.pos); listener.valid = true; } else diff --git a/source/games/blood/src/triggers.cpp b/source/games/blood/src/triggers.cpp index 41f5d523f..ade014ab0 100644 --- a/source/games/blood/src/triggers.cpp +++ b/source/games/blood/src/triggers.cpp @@ -238,7 +238,7 @@ void LifeLeechOperate(DBloodActor* actor, EVENT event) if (nPlayer >= 0 && nPlayer < kMaxPlayers && playeringame[nPlayer]) { PLAYER* pPlayer = &gPlayer[nPlayer]; - if (pPlayer->actor->xspr.health > 0) + if (pPlayer->GetActor()->xspr.health > 0) { evKillActor(actor); pPlayer->ammoCount[8] = ClipHigh(pPlayer->ammoCount[8] + actor->xspr.data3, gAmmoInfo[8].max); @@ -511,7 +511,7 @@ void OperateSprite(DBloodActor* actor, EVENT event) SetSpriteState(actor, 1, initiator); for (int p = connecthead; p >= 0; p = connectpoint2[p]) { - auto vec = actor->spr.pos - gPlayer[p].actor->spr.pos; + auto vec = actor->spr.pos - gPlayer[p].GetActor()->spr.pos; int nDist = int(vec.LengthSquared()) + 0x40000; gPlayer[p].quakeEffect = DivScale(actor->xspr.data1, nDist, 16); } @@ -600,7 +600,7 @@ void OperateSprite(DBloodActor* actor, EVENT event) { PLAYER* pPlayer = &gPlayer[myconnectindex]; - if (pPlayer->actor->xspr.health <= 0) + if (pPlayer->GetActor()->xspr.health <= 0) break; pPlayer->restTime = 0; } @@ -960,7 +960,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec viewBackupSpriteLoc(ac); ac->spr.pos.XY() = spot + pt_w2 - pivot; ac->spr.Angles.Yaw += angleofs; - if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].actor->spr.Angles.Yaw += angleofs; + if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].GetActor()->spr.Angles.Yaw += angleofs; } else if (ac->spr.cstat & CSTAT_SPRITE_MOVE_REVERSE) { @@ -968,7 +968,7 @@ void TranslateSector(sectortype* pSector, double wave1, double wave2, const DVec viewBackupSpriteLoc(ac); ac->spr.pos.XY() = spot - pt_w2 + pivot; ac->spr.Angles.Yaw += angleofs; - if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].actor->spr.Angles.Yaw += angleofs; + if (!VanillaMode() && ac->IsPlayerActor()) gPlayer[ac->spr.type - kDudePlayer1].GetActor()->spr.Angles.Yaw += angleofs; } } } @@ -1620,7 +1620,7 @@ void OperateTeleport(sectortype* pSector) { playerResetInertia(pPlayer); pPlayer->zViewVel = pPlayer->zWeaponVel = 0; - pPlayer->actor->PrevAngles.Yaw = pPlayer->actor->spr.Angles.Yaw = actor->spr.Angles.Yaw; + pPlayer->GetActor()->PrevAngles.Yaw = pPlayer->GetActor()->spr.Angles.Yaw = actor->spr.Angles.Yaw; } } } diff --git a/source/games/blood/src/view.cpp b/source/games/blood/src/view.cpp index 9f23a160b..3a2d886eb 100644 --- a/source/games/blood/src/view.cpp +++ b/source/games/blood/src/view.cpp @@ -65,8 +65,8 @@ void viewBackupView(int nPlayer) pPlayer->obobWidth = pPlayer->bobWidth; pPlayer->oswayHeight = pPlayer->swayHeight; pPlayer->oswayWidth = pPlayer->swayWidth; - pPlayer->actor->backuploc(); - pPlayer->actor->interpolated = true; + pPlayer->GetActor()->backuploc(); + pPlayer->GetActor()->interpolated = true; } //--------------------------------------------------------------------------- @@ -105,7 +105,7 @@ void viewDrawAimedPlayerName(PLAYER* pPlayer) if (!cl_idplayers || (pPlayer->aim.XY().isZero())) return; - int hit = HitScan(pPlayer->actor, pPlayer->zView, pPlayer->aim, CLIPMASK0, 512); + int hit = HitScan(pPlayer->GetActor(), pPlayer->zView, pPlayer->aim, CLIPMASK0, 512); if (hit == 3) { auto actor = gHitInfo.actor(); @@ -412,7 +412,7 @@ static void DrawMap(PLAYER* pPlayer, const double interpfrac) setViewport(Hud_Stbar); tm = 1; } - DrawOverheadMap(pPlayer->actor->interpolatedpos(interpfrac).XY(), pPlayer->Angles.getRenderAngles(interpfrac).Yaw, interpfrac); + DrawOverheadMap(pPlayer->GetActor()->interpolatedpos(interpfrac).XY(), pPlayer->Angles.getRenderAngles(interpfrac).Yaw, interpfrac); if (tm) setViewport(hud_size); } @@ -427,7 +427,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DRotator& cAngles, sector { double bobWidth, bobHeight; - pSector = pPlayer->actor->sector(); + pSector = pPlayer->GetActor()->sector(); #if 0 if (numplayers > 1 && pPlayer == gMe && gPrediction && gMe->actor->xspr.health > 0) { @@ -457,7 +457,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DRotator& cAngles, sector else #endif { - cPos = pPlayer->actor->getRenderPos(interpfrac); + cPos = pPlayer->GetActor()->getRenderPos(interpfrac); cAngles = pPlayer->Angles.getRenderAngles(interpfrac); zDelta = interpolatedvalue(pPlayer->ozWeapon, pPlayer->zWeapon - pPlayer->zView - 12, interpfrac); bobWidth = interpolatedvalue(pPlayer->obobWidth, pPlayer->bobWidth, interpfrac); @@ -482,7 +482,7 @@ static void SetupView(PLAYER* pPlayer, DVector3& cPos, DRotator& cAngles, sector } else { - calcChaseCamPos(cPos, pPlayer->actor, &pSector, cAngles, interpfrac, 80.); + calcChaseCamPos(cPos, pPlayer->GetActor(), &pSector, cAngles, interpfrac, 80.); } if (pSector != nullptr) CheckLink(cPos, &pSector); @@ -590,8 +590,8 @@ void viewDrawScreen(bool sceneonly) else if (pPlayer->isUnderwater) { if (pPlayer->nWaterPal) basepal = pPlayer->nWaterPal; else { - if (pPlayer->actor->xspr.medium == kMediumWater) basepal = 1; - else if (pPlayer->actor->xspr.medium == kMediumGoo) basepal = 3; + if (pPlayer->GetActor()->xspr.medium == kMediumWater) basepal = 1; + else if (pPlayer->GetActor()->xspr.medium == kMediumGoo) basepal = 3; else basepal = 2; } } @@ -684,16 +684,16 @@ void viewDrawScreen(bool sceneonly) if (!sceneonly) hudDraw(pPlayer, pSector, shakeX, shakeY, zDelta, cAngles.Roll, basepal, interpfrac); DAngle deliriumPitchI = interpolatedvalue(maphoriz(deliriumPitchO), maphoriz(deliriumPitch), interpfrac); - auto bakCstat = pPlayer->actor->spr.cstat; - pPlayer->actor->spr.cstat |= (gViewPos == 0) ? CSTAT_SPRITE_INVISIBLE : CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP; + auto bakCstat = pPlayer->GetActor()->spr.cstat; + pPlayer->GetActor()->spr.cstat |= (gViewPos == 0) ? CSTAT_SPRITE_INVISIBLE : CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP; cAngles.Pitch -= deliriumPitchI; - render_drawrooms(pPlayer->actor, cPos, pSector, cAngles, interpfrac); - pPlayer->actor->spr.cstat = bakCstat; + render_drawrooms(pPlayer->GetActor(), cPos, pSector, cAngles, interpfrac); + pPlayer->GetActor()->spr.cstat = bakCstat; bDeliriumOld = bDelirium && gDeliriumBlur; if (sceneonly) return; auto offsets = pPlayer->Angles.getCrosshairOffsets(interpfrac); - DrawCrosshair(pPlayer->actor->xspr.health >> 4, offsets.first.X, offsets.first.Y, 2, offsets.second); + DrawCrosshair(pPlayer->GetActor()->xspr.health >> 4, offsets.first.X, offsets.first.Y, 2, offsets.second); #if 0 // This currently does not work. May have to be redone as a hardware effect. if (v4 && gNetPlayers > 1) { @@ -726,7 +726,7 @@ void viewDrawScreen(bool sceneonly) } UpdateDacs(0, true); // keep the view palette active only for the actual 3D view and its overlays. - MarkSectorSeen(pPlayer->actor->sector()); + MarkSectorSeen(pPlayer->GetActor()->sector()); if (automapMode != am_off) { @@ -778,7 +778,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos, { if (i == gViewIndex || gGameOptions.nGameType == 1) { - auto actor = gPlayer[i].actor; + auto actor = gPlayer[i].GetActor(); auto vect = OutAutomapVector(mxy - cpos, cangvect, czoom, xydim); DrawTexture(twod, TexMan.GetGameTexture(actor->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, diff --git a/source/games/blood/src/weapon.cpp b/source/games/blood/src/weapon.cpp index 8b6af79e3..b6c69ab22 100644 --- a/source/games/blood/src/weapon.cpp +++ b/source/games/blood/src/weapon.cpp @@ -216,7 +216,7 @@ static bool CheckWeaponAmmo(PLAYER* pPlayer, int weapon, int ammotype, int count return 1; if (weapon == kWeapRemote && pPlayer->weaponAmmo == 11 && pPlayer->weaponState == 11) return 1; - if (weapon == kWeapLifeLeech && pPlayer->actor->xspr.health > 0) + if (weapon == kWeapLifeLeech && pPlayer->GetActor()->xspr.health > 0) return 1; return pPlayer->ammoCount[ammotype] >= count; } @@ -235,7 +235,7 @@ static bool CheckAmmo(PLAYER* pPlayer, int ammotype, int count) return 1; if (pPlayer->curWeapon == kWeapRemote && pPlayer->weaponAmmo == 11 && pPlayer->weaponState == 11) return 1; - if (pPlayer->curWeapon == kWeapLifeLeech && pPlayer->actor->xspr.health >= unsigned(count << 4)) + if (pPlayer->curWeapon == kWeapLifeLeech && pPlayer->GetActor()->xspr.health >= unsigned(count << 4)) return 1; return pPlayer->ammoCount[ammotype] >= count; } @@ -264,18 +264,18 @@ static bool checkAmmo2(const PLAYER* pPlayer, int ammotype, int amount) void SpawnBulletEject(PLAYER* pPlayer, double dist, int rdist) { POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; - pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ; + pPlayer->zView = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ; double dz = pPlayer->zWeapon - (pPlayer->zWeapon - pPlayer->zView) * 0.5; - fxSpawnEjectingBrass(pPlayer->actor, dz, dist, rdist); + fxSpawnEjectingBrass(pPlayer->GetActor(), dz, dist, rdist); } void SpawnShellEject(PLAYER* pPlayer, double dist, int rdist) { POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture]; - pPlayer->zView = pPlayer->actor->spr.pos.Z - pPosture->eyeAboveZ; + pPlayer->zView = pPlayer->GetActor()->spr.pos.Z - pPosture->eyeAboveZ; double t = pPlayer->zWeapon - pPlayer->zView; double dz = pPlayer->zWeapon - t + (t * 0.25); - fxSpawnEjectingShell(pPlayer->actor, dz, dist, rdist); + fxSpawnEjectingShell(pPlayer->GetActor(), dz, dist, rdist); } //--------------------------------------------------------------------------- @@ -439,7 +439,7 @@ WEAPONTRACK gWeaponTrack[] = { void UpdateAimVector(PLAYER* pPlayer) { assert(pPlayer != NULL); - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); DVector3 pos(plActor->spr.pos.XY(), pPlayer->zWeapon); DVector3 Aim(plActor->spr.Angles.Yaw.ToVector(), pPlayer->slope); @@ -759,7 +759,7 @@ void WeaponLower(PLAYER* pPlayer) StartQAV(pPlayer, kQAVFORKDOWN); break; case kWeapSpraycan: - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); switch (prevState) { case 1: @@ -985,7 +985,7 @@ void WeaponUpdateState(PLAYER* pPlayer) pPlayer->weaponState = 1; StartQAV(pPlayer, kQAVCANDOWN); } - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); break; } break; @@ -1064,7 +1064,7 @@ void WeaponUpdateState(PLAYER* pPlayer) case 1: if (CheckAmmo(pPlayer, 2, 1)) { - sfxPlay3DSound(pPlayer->actor, 410, 3, 2); + sfxPlay3DSound(pPlayer->GetActor(), 410, 3, 2); StartQAV(pPlayer, kQAVSHOTL1, nClientEjectShell); if (gInfiniteAmmo || pPlayer->ammoCount[2] > 1) pPlayer->weaponState = 3; @@ -1109,7 +1109,7 @@ void WeaponUpdateState(PLAYER* pPlayer) SetQAV(pPlayer, kQAVFLARIDLE); break; case kWeapVoodooDoll: - if (pPlayer->actor->xspr.height < 256 && pPlayer->swayHeight != 0) + if (pPlayer->GetActor()->xspr.height < 256 && pPlayer->swayHeight != 0) StartQAV(pPlayer, kQAVVDIDLE2); else SetQAV(pPlayer, kQAVVDIDLE1); @@ -1164,12 +1164,12 @@ void WeaponUpdateState(PLAYER* pPlayer) void FirePitchfork(int, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); double r1 = Random2F(2000, 14); double r2 = Random2F(2000, 14); double r3 = Random2F(2000, 14); for (int i = 0; i < 4; i++) - actFireVector(actor, (2 * i - 3) * 2.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorTine); + actFireVector(actor, (2 * i - 3) * 2.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorTine); } //--------------------------------------------------------------------------- @@ -1183,9 +1183,9 @@ void FireSpray(int, PLAYER* pPlayer) playerFireMissile(pPlayer, 0, pPlayer->aim, kMissileFlameSpray); UseAmmo(pPlayer, 6, 4); if (CheckAmmo(pPlayer, 6, 1)) - sfxPlay3DSound(pPlayer->actor, 441, 1, 2); + sfxPlay3DSound(pPlayer->GetActor(), 441, 1, 2); else - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); } //--------------------------------------------------------------------------- @@ -1196,15 +1196,15 @@ void FireSpray(int, PLAYER* pPlayer) void ThrowCan(int, PLAYER* pPlayer) { - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); double nSpeed = getThrowPower(pPlayer); - sfxPlay3DSound(pPlayer->actor, 455, 1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0); auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedSpray, nSpeed); if (spawned) { sfxPlay3DSound(spawned, 441, 0, 0); spawned->spr.shade = -128; - evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor); + evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor()); spawned->xspr.Impact = 1; UseAmmo(pPlayer, 6, gAmmoItemData[0].count); pPlayer->throwPower = 0; @@ -1219,11 +1219,11 @@ void ThrowCan(int, PLAYER* pPlayer) void DropCan(int, PLAYER* pPlayer) { - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedSpray, 0); if (spawned) { - evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor); + evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 6, gAmmoItemData[0].count); } } @@ -1236,11 +1236,11 @@ void DropCan(int, PLAYER* pPlayer) void ExplodeCan(int, PLAYER* pPlayer) { - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedSpray, 0); if (spawned) { - evPostActor(spawned, 0, kCmdOn, pPlayer->actor); + evPostActor(spawned, 0, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 6, gAmmoItemData[0].count); StartQAV(pPlayer, kQAVCANBOOM); pPlayer->curWeapon = kWeapNone; @@ -1256,16 +1256,16 @@ void ExplodeCan(int, PLAYER* pPlayer) void ThrowBundle(int, PLAYER* pPlayer) { - sfxKill3DSound(pPlayer->actor, 16, -1); + sfxKill3DSound(pPlayer->GetActor(), 16, -1); double nSpeed = getThrowPower(pPlayer); - sfxPlay3DSound(pPlayer->actor, 455, 1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0); auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedTNTBundle, nSpeed); if (spawned) { if (pPlayer->fuseTime < 0) spawned->xspr.Impact = 1; else - evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor); + evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 5, 1); pPlayer->throwPower = 0; } @@ -1279,11 +1279,11 @@ void ThrowBundle(int, PLAYER* pPlayer) void DropBundle(int, PLAYER* pPlayer) { - sfxKill3DSound(pPlayer->actor, 16, -1); + sfxKill3DSound(pPlayer->GetActor(), 16, -1); auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedTNTBundle, 0); if (spawned) { - evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->actor); + evPostActor(spawned, pPlayer->fuseTime, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 5, 1); } } @@ -1296,11 +1296,11 @@ void DropBundle(int, PLAYER* pPlayer) void ExplodeBundle(int, PLAYER* pPlayer) { - sfxKill3DSound(pPlayer->actor, 16, -1); + sfxKill3DSound(pPlayer->GetActor(), 16, -1); auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedTNTBundle, 0); if (spawned) { - evPostActor(spawned, 0, kCmdOn, pPlayer->actor); + evPostActor(spawned, 0, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 5, 1); StartQAV(pPlayer, kQAVDYNEXPLO); pPlayer->curWeapon = kWeapNone; @@ -1317,11 +1317,11 @@ void ExplodeBundle(int, PLAYER* pPlayer) void ThrowProx(int, PLAYER* pPlayer) { double nSpeed = getThrowPower(pPlayer); - sfxPlay3DSound(pPlayer->actor, 455, 1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0); auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedProxBomb, nSpeed); if (spawned) { - evPostActor(spawned, 240, kCmdOn, pPlayer->actor); + evPostActor(spawned, 240, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 10, 1); pPlayer->throwPower = 0; } @@ -1338,7 +1338,7 @@ void DropProx(int, PLAYER* pPlayer) auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedProxBomb, 0); if (spawned) { - evPostActor(spawned, 240, kCmdOn, pPlayer->actor); + evPostActor(spawned, 240, kCmdOn, pPlayer->GetActor()); UseAmmo(pPlayer, 10, 1); } } @@ -1352,11 +1352,11 @@ void DropProx(int, PLAYER* pPlayer) void ThrowRemote(int, PLAYER* pPlayer) { double nSpeed = getThrowPower(pPlayer); - sfxPlay3DSound(pPlayer->actor, 455, 1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 455, 1, 0); auto spawned = playerFireThing(pPlayer, 0, -9460 / 65536., kThingArmedRemoteBomb, nSpeed); if (spawned) { - spawned->xspr.rxID = 90 + (pPlayer->actor->spr.type - kDudePlayer1); + spawned->xspr.rxID = 90 + (pPlayer->GetActor()->spr.type - kDudePlayer1); UseAmmo(pPlayer, 11, 1); pPlayer->throwPower = 0; } @@ -1373,14 +1373,14 @@ void DropRemote(int, PLAYER* pPlayer) auto spawned = playerFireThing(pPlayer, 0, 0, kThingArmedRemoteBomb, 0); if (spawned) { - spawned->xspr.rxID = 90 + (pPlayer->actor->spr.type - kDudePlayer1); + spawned->xspr.rxID = 90 + (pPlayer->GetActor()->spr.type - kDudePlayer1); UseAmmo(pPlayer, 11, 1); } } void FireRemote(int, PLAYER* pPlayer) { - evSendGame(90 + (pPlayer->actor->spr.type - kDudePlayer1), kCmdOn); + evSendGame(90 + (pPlayer->GetActor()->spr.type - kDudePlayer1), kCmdOn); } //--------------------------------------------------------------------------- @@ -1393,17 +1393,17 @@ enum { kMaxShotgunBarrels = 4 }; void FireShotgun(int nTrigger, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); assert(nTrigger > 0 && nTrigger <= kMaxShotgunBarrels); if (nTrigger == 1) { - sfxPlay3DSound(pPlayer->actor, 411, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 411, 2, 0); pPlayer->tiltEffect = 30; pPlayer->visibility = 20; } else { - sfxPlay3DSound(pPlayer->actor, 412, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 412, 2, 0); pPlayer->tiltEffect = 50; pPlayer->visibility = 40; } @@ -1426,7 +1426,7 @@ void FireShotgun(int nTrigger, PLAYER* pPlayer) r3 = Random3F(1500, 14); nType = kVectorShellAP; } - actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), nType); + actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), nType); } UseAmmo(pPlayer, pPlayer->weaponAmmo, nTrigger); pPlayer->flashEffect = 1; @@ -1446,8 +1446,8 @@ void EjectShell(int, PLAYER* pPlayer) void FireTommy(int nTrigger, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; - sfxPlay3DSound(pPlayer->actor, 431, -1, 0); + DBloodActor* actor = pPlayer->GetActor(); + sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0); switch (nTrigger) { case 1: @@ -1455,7 +1455,7 @@ void FireTommy(int nTrigger, PLAYER* pPlayer) double r1 = Random3F(400, 14); double r2 = Random3F(1200, 14); double r3 = Random3F(1200, 14); - actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular); + actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular); SpawnBulletEject(pPlayer, -15 / 16., -45); pPlayer->visibility = 20; break; @@ -1465,12 +1465,12 @@ void FireTommy(int nTrigger, PLAYER* pPlayer) double r1 = Random3F(400, 14); double r2 = Random3F(1200, 14); double r3 = Random3F(1200, 14); - actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular); + actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular); SpawnBulletEject(pPlayer, -140 / 16., -45); r1 = Random3(400); r2 = Random3(1200); r3 = Random3(1200); - actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular); + actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r3, r2, r1), kVectorTommyRegular); SpawnBulletEject(pPlayer, 140 / 16., 45); pPlayer->visibility = 30; break; @@ -1492,18 +1492,18 @@ static constexpr DAngle DAngle20 = DAngle::fromDeg(20); void FireSpread(int nTrigger, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); assert(nTrigger > 0 && nTrigger <= kMaxSpread); DVector3 aim = pPlayer->aim; DAngle angle = ((aim.XY()).Angle() + ((DAngle20 * (nTrigger - 1)) / kMaxSpread - DAngle10)); DVector3 dv = DVector3(angle.ToVector(), aim.Z); - sfxPlay3DSound(pPlayer->actor, 431, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0); double r1, r2, r3; r1 = Random3F(300, 14); r2 = Random3F(600, 14); r3 = Random3F(600, 14); - actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); + actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); int ri = Random2(90); r2 = Random2F(30, 4); SpawnBulletEject(pPlayer, r2, ri); @@ -1520,25 +1520,25 @@ void FireSpread(int nTrigger, PLAYER* pPlayer) void AltFireSpread(int nTrigger, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); assert(nTrigger > 0 && nTrigger <= kMaxSpread); DVector3 aim = pPlayer->aim; DAngle angle = ((aim.XY()).Angle() + ((DAngle20 * (nTrigger - 1)) / kMaxSpread - DAngle10)); DVector3 dv = DVector3(angle.ToVector(), aim.Z); - sfxPlay3DSound(pPlayer->actor, 431, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0); double r1, r2, r3; r1 = Random3F(300, 14); r2 = Random3F(600, 14); r3 = Random3F(600, 14); - actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); + actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); int ri = Random2(45); r2 = Random2F(120, 4); SpawnBulletEject(pPlayer, r2, ri); r1 = Random3F(300, 14); r2 = Random3F(600, 14); r3 = Random3F(600, 14); - actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); + actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); ri = Random2(-45); r2 = Random2F(-120, 4); SpawnBulletEject(pPlayer, r2, ri); @@ -1556,27 +1556,27 @@ void AltFireSpread(int nTrigger, PLAYER* pPlayer) void AltFireSpread2(int nTrigger, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); assert(nTrigger > 0 && nTrigger <= kMaxSpread); DVector3 aim = pPlayer->aim; DAngle angle = ((aim.XY()).Angle() + ((DAngle20 * (nTrigger - 1)) / kMaxSpread - DAngle10)); DVector3 dv = DVector3(angle.ToVector(), aim.Z); - sfxPlay3DSound(pPlayer->actor, 431, -1, 0); + sfxPlay3DSound(pPlayer->GetActor(), 431, -1, 0); if (powerupCheck(pPlayer, kPwUpTwoGuns) && checkAmmo2(pPlayer, 3, 2)) { double r1, r2, r3; r1 = Random3F(300, 14); r2 = Random3F(600, 14); r3 = Random3F(600, 14); - actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); + actFireVector(actor, -7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); int ri = Random2(45); r2 = Random2F(120, 4); SpawnBulletEject(pPlayer, r2, ri); r1 = Random3F(300, 14); r2 = Random3F(600, 14); r3 = Random3F(600, 14); - actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); + actFireVector(actor, 7.5, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); ri = Random2(-45); r2 = Random2F(-120, 4); SpawnBulletEject(pPlayer, r2, ri); @@ -1590,7 +1590,7 @@ void AltFireSpread2(int nTrigger, PLAYER* pPlayer) r1 = Random3F(300, 14); r2 = Random3F(600, 14); r3 = Random3F(600, 14); - actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); + actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, dv + DVector3(r3, r2, r1), kVectorTommyAP); int ri = Random2(90); r2 = Random2F(30, 4); SpawnBulletEject(pPlayer, r2, ri); @@ -1614,7 +1614,7 @@ void AltFireSpread2(int nTrigger, PLAYER* pPlayer) void FireFlare(int nTrigger, PLAYER* pPlayer) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); double offset = 0; switch (nTrigger) { @@ -1627,7 +1627,7 @@ void FireFlare(int nTrigger, PLAYER* pPlayer) } playerFireMissile(pPlayer, offset, pPlayer->aim, kMissileFlareRegular); UseAmmo(pPlayer, 1, 1); - sfxPlay3DSound(pPlayer->actor, 420, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 420, 2, 0); pPlayer->visibility = 30; pPlayer->flashEffect = 1; } @@ -1640,7 +1640,7 @@ void FireFlare(int nTrigger, PLAYER* pPlayer) void AltFireFlare(int nTrigger, PLAYER* pPlayer) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); double offset = 0; switch (nTrigger) { @@ -1653,7 +1653,7 @@ void AltFireFlare(int nTrigger, PLAYER* pPlayer) } playerFireMissile(pPlayer, offset, pPlayer->aim, kMissileFlareAlt); UseAmmo(pPlayer, 1, 8); - sfxPlay3DSound(pPlayer->actor, 420, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 420, 2, 0); pPlayer->visibility = 45; pPlayer->flashEffect = 1; } @@ -1667,8 +1667,8 @@ void AltFireFlare(int nTrigger, PLAYER* pPlayer) void FireVoodoo(int nTrigger, PLAYER* pPlayer) { nTrigger--; - DBloodActor* actor = pPlayer->actor; - auto plActor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); + auto plActor = pPlayer->GetActor(); if (nTrigger == 4) { actDamageSprite(actor, actor, kDamageBullet, 1 << 4); @@ -1730,7 +1730,7 @@ void FireVoodoo(int nTrigger, PLAYER* pPlayer) void AltFireVoodoo(int nTrigger, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); if (nTrigger == 2) { // by NoOne: trying to simulate v1.0x voodoo here. @@ -1745,7 +1745,7 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer) if (!targetactor) continue; if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, targetactor)) continue; - double nDist = (targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()).Length(); + double nDist = (targetactor->spr.pos.XY() - pPlayer->GetActor()->spr.pos.XY()).Length(); if (nDist > 0 && nDist < 3200) { int vc = pPlayer->ammoCount[9] >> 3; @@ -1783,7 +1783,7 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer) continue; if (v4 > 0) v4--; - double nDist = (targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()).Length(); + double nDist = (targetactor->spr.pos.XY() - pPlayer->GetActor()->spr.pos.XY()).Length(); if (nDist > 0 && nDist < 3200) { int vc = pPlayer->ammoCount[9] >> 3; @@ -1816,7 +1816,7 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer) void DropVoodoo(int, PLAYER* pPlayer) { - sfxPlay3DSound(pPlayer->actor, 455, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 455, 2, 0); auto spawned = playerFireThing(pPlayer, 0, -4730 / 65536., kThingVoodooHead, 12.8); if (spawned) { @@ -1864,7 +1864,7 @@ void FireTesla(int nTrigger, PLAYER* pPlayer) if (nTrigger > 0 && nTrigger <= 6) { nTrigger--; - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); TeslaMissile* pMissile = &teslaMissile[nTrigger]; if (!checkAmmo2(pPlayer, 7, pMissile->ammouse)) { @@ -1879,7 +1879,7 @@ void FireTesla(int nTrigger, PLAYER* pPlayer) } playerFireMissile(pPlayer, pMissile->offset, pPlayer->aim, pMissile->id); UseAmmo(pPlayer, pPlayer->weaponAmmo, pMissile->ammouse); - sfxPlay3DSound(pPlayer->actor, pMissile->sound, 1, 0); + sfxPlay3DSound(pPlayer->GetActor(), pMissile->sound, 1, 0); pPlayer->visibility = pMissile->light; pPlayer->flashEffect = pMissile->flash; } @@ -1893,10 +1893,10 @@ void FireTesla(int nTrigger, PLAYER* pPlayer) void AltFireTesla(int, PLAYER* pPlayer) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); playerFireMissile(pPlayer, 0., pPlayer->aim, kMissileTeslaAlt); UseAmmo(pPlayer, pPlayer->weaponAmmo, 35); - sfxPlay3DSound(pPlayer->actor, 471, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 471, 2, 0); pPlayer->visibility = 40; pPlayer->flashEffect = 1; } @@ -1909,7 +1909,7 @@ void AltFireTesla(int, PLAYER* pPlayer) void FireNapalm(int nTrigger, PLAYER* pPlayer) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); double offset = 0; switch (nTrigger) { @@ -1921,17 +1921,17 @@ void FireNapalm(int nTrigger, PLAYER* pPlayer) break; } playerFireMissile(pPlayer, offset, pPlayer->aim, kMissileFireballNapalm); - sfxPlay3DSound(pPlayer->actor, 480, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 480, 2, 0); UseAmmo(pPlayer, 4, 1); pPlayer->flashEffect = 1; } void FireNapalm2(int, PLAYER* pPlayer) { - auto plActor = pPlayer->actor; + auto plActor = pPlayer->GetActor(); playerFireMissile(pPlayer, -7.5, pPlayer->aim, kMissileFireballNapalm); playerFireMissile(pPlayer, 7.5, pPlayer->aim, kMissileFireballNapalm); - sfxPlay3DSound(pPlayer->actor, 480, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 480, 2, 0); UseAmmo(pPlayer, 4, 2); pPlayer->flashEffect = 1; } @@ -1950,7 +1950,7 @@ void AltFireNapalm(int, PLAYER* pPlayer) missile->xspr.data4 = ClipHigh(pPlayer->ammoCount[4], 12); UseAmmo(pPlayer, 4, missile->xspr.data4); seqSpawn(22, missile, -1); - actBurnSprite(pPlayer->actor, missile, 600); + actBurnSprite(pPlayer->GetActor(), missile, 600); evPostActor(missile, 0, kCallbackFXFlameLick); sfxPlay3DSound(missile, 480, 2, 0); pPlayer->visibility = 30; @@ -1971,7 +1971,7 @@ void FireLifeLeech(int nTrigger, PLAYER* pPlayer) double r1 = Random2F(2000, 14); double r2 = Random2F(2000, 14); double r3 = Random2F(1000, 14); - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); auto missileActor = playerFireMissile(pPlayer, 0, pPlayer->aim + DVector3(r1, r2, r3), 315); if (missileActor) { @@ -1993,8 +1993,8 @@ void FireLifeLeech(int nTrigger, PLAYER* pPlayer) void AltFireLifeLeech(int, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; - sfxPlay3DSound(pPlayer->actor, 455, 2, 0); + DBloodActor* actor = pPlayer->GetActor(); + sfxPlay3DSound(pPlayer->GetActor(), 455, 2, 0); auto missile = playerFireThing(pPlayer, 0, -4730 / 65536., kThingDroppedLifeLeech, 1.6); if (missile) { @@ -2007,7 +2007,7 @@ void AltFireLifeLeech(int, PLAYER* pPlayer) if (gGameOptions.nGameType <= 1) { int nAmmo = pPlayer->ammoCount[8]; - if (nAmmo < 25 && pPlayer->actor->xspr.health > unsigned((25 - nAmmo) << 4)) + if (nAmmo < 25 && pPlayer->GetActor()->xspr.health > unsigned((25 - nAmmo) << 4)) { actDamageSprite(actor, actor, kDamageSpirit, ((25 - nAmmo) << 4)); nAmmo = 25; @@ -2032,11 +2032,11 @@ void AltFireLifeLeech(int, PLAYER* pPlayer) void FireBeast(int, PLAYER* pPlayer) { - DBloodActor* actor = pPlayer->actor; + DBloodActor* actor = pPlayer->GetActor(); double r1 = Random2F(2000, 14); double r2 = Random2F(2000, 14); double r3 = Random2F(2000, 14); - actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->actor->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorBeastSlash); + actFireVector(actor, 0, pPlayer->zWeapon - pPlayer->GetActor()->spr.pos.Z, pPlayer->aim + DVector3(r1, r2, r3), kVectorBeastSlash); } //--------------------------------------------------------------------------- @@ -2375,7 +2375,7 @@ void WeaponProcess(PLAYER* pPlayer) { pPlayer->flashEffect = ClipLow(pPlayer->flashEffect - 1, 0); #ifdef NOONE_EXTENSIONS - if (gPlayerCtrl[pPlayer->nPlayer].qavScene.initiator != nullptr && pPlayer->actor->xspr.health > 0) { + if (gPlayerCtrl[pPlayer->nPlayer].qavScene.initiator != nullptr && pPlayer->GetActor()->xspr.health > 0) { playerQavSceneProcess(pPlayer, &gPlayerCtrl[pPlayer->nPlayer].qavScene); UpdateAimVector(pPlayer); return; @@ -2385,10 +2385,10 @@ void WeaponProcess(PLAYER* pPlayer) { int newweap = pPlayer->input.getNewWeapon(); if (newweap > 0 && newweap <= WeaponSel_MaxBlood) pPlayer->newWeapon = newweap; - if (pPlayer->actor->xspr.health == 0) + if (pPlayer->GetActor()->xspr.health == 0) { pPlayer->qavLoop = 0; - sfxKill3DSound(pPlayer->actor, 1, -1); + sfxKill3DSound(pPlayer->GetActor(), 1, -1); } if (pPlayer->isUnderwater && BannedUnderwater(pPlayer->curWeapon)) { @@ -2417,7 +2417,7 @@ void WeaponProcess(PLAYER* pPlayer) { bool bShoot2 = pPlayer->input.actions & SB_ALTFIRE; const int prevNewWeaponVal = pPlayer->input.getNewWeapon(); // used to fix scroll issue for banned weapons if ((bShoot || bShoot2 || prevNewWeaponVal) && pPlayer->weaponQav == qavGetCorrectID(kQAVVDIDLE2)) pPlayer->weaponTimer = 0; - if (pPlayer->qavLoop && pPlayer->actor->xspr.health > 0) + if (pPlayer->qavLoop && pPlayer->GetActor()->xspr.health > 0) { if (bShoot && CheckAmmo(pPlayer, pPlayer->weaponAmmo, 1)) { @@ -2458,7 +2458,7 @@ void WeaponProcess(PLAYER* pPlayer) { } if (pPlayer->weaponTimer > 0) return; - if (pPlayer->actor->xspr.health == 0 || pPlayer->curWeapon == kWeapNone) + if (pPlayer->GetActor()->xspr.health == 0 || pPlayer->curWeapon == kWeapNone) pPlayer->weaponQav = kQAVNone; switch (pPlayer->curWeapon) { @@ -2475,7 +2475,7 @@ void WeaponProcess(PLAYER* pPlayer) { { if (pPlayer->nextWeapon) { - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); pPlayer->weaponState = 0; pPlayer->newWeapon = pPlayer->nextWeapon; pPlayer->nextWeapon = kWeapNone; @@ -2561,7 +2561,7 @@ void WeaponProcess(PLAYER* pPlayer) { { if (pPlayer->nextWeapon) { - sfxKill3DSound(pPlayer->actor, -1, 441); + sfxKill3DSound(pPlayer->GetActor(), -1, 441); pPlayer->newWeapon = pPlayer->nextWeapon; pPlayer->nextWeapon = kWeapNone; } @@ -2643,7 +2643,7 @@ void WeaponProcess(PLAYER* pPlayer) { return; } } - if (pPlayer->actor->xspr.health == 0 || pPlayer->hasWeapon[pPlayer->newWeapon] == 0) + if (pPlayer->GetActor()->xspr.health == 0 || pPlayer->hasWeapon[pPlayer->newWeapon] == 0) { pPlayer->newWeapon = kWeapNone; return; @@ -2830,7 +2830,7 @@ void WeaponProcess(PLAYER* pPlayer) { StartQAV(pPlayer, kQAVNAPFIRE, nClientFireNapalm); return; case kWeapLifeLeech: - sfxPlay3DSound(pPlayer->actor, 494, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 494, 2, 0); StartQAV(pPlayer, kQAVSTAFIRE4, nClientFireLifeLeech); return; case kWeapBeast: @@ -2927,7 +2927,7 @@ void WeaponProcess(PLAYER* pPlayer) { StartQAV(pPlayer, kQAVTOMSPRED, nClientAltFireSpread2); return; case kWeapVoodooDoll: - sfxPlay3DSound(pPlayer->actor, 461, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 461, 2, 0); StartQAV(pPlayer, kQAVVDSPEL1, nClientAltFireVoodoo); return; #if 0 @@ -2979,9 +2979,9 @@ void WeaponProcess(PLAYER* pPlayer) { } return; case kWeapLifeLeech: - if (gGameOptions.nGameType <= 1 && !checkAmmo2(pPlayer, 8, 1) && pPlayer->actor->xspr.health < (25 << 4)) + if (gGameOptions.nGameType <= 1 && !checkAmmo2(pPlayer, 8, 1) && pPlayer->GetActor()->xspr.health < (25 << 4)) { - sfxPlay3DSound(pPlayer->actor, 494, 2, 0); + sfxPlay3DSound(pPlayer->GetActor(), 494, 2, 0); StartQAV(pPlayer, kQAVSTAFIRE4, nClientFireLifeLeech); } else