- Blood: Rename gPlayer[] array to PlayerArray[] and wrap its access.

This commit is contained in:
Mitchell Richters 2023-10-02 13:27:16 +11:00
parent 49104f9b24
commit 0ed54ed719
37 changed files with 148 additions and 143 deletions

View file

@ -3053,7 +3053,7 @@ static void checkAddFrag(DBloodActor* killerActor, DBloodActor* actor)
{
if (killerActor->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[killerActor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(killerActor->spr.type - kDudePlayer1);
if (gGameOptions.nGameType == 1)
pPlayer->fragCount++;
}
@ -3068,7 +3068,7 @@ static void checkAddFrag(DBloodActor* killerActor, DBloodActor* actor)
case kDudeBurningInnocent:
break;
default:
BloodPlayer* pKillerPlayer = &gPlayer[killerActor->spr.type - kDudePlayer1];
BloodPlayer* pKillerPlayer = getPlayer(killerActor->spr.type - kDudePlayer1);
pKillerPlayer->fragCount++;
break;
}
@ -3381,8 +3381,8 @@ void actKillDude(DBloodActor* killerActor, DBloodActor* actor, DAMAGE_TYPE damag
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
if (gPlayer[p].fragger == actor && gPlayer[p].deathTime > 0)
gPlayer[p].fragger = nullptr;
if (getPlayer(p)->fragger == actor && getPlayer(p)->deathTime > 0)
getPlayer(p)->fragger = nullptr;
}
if (actor->spr.type != kDudeCultistBeast)
trTriggerSprite(actor, kCmdOff, killerActor);
@ -3616,7 +3616,7 @@ static int actDamageDude(DBloodActor* source, DBloodActor* actor, int damage, DA
}
else
{
BloodPlayer* pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
if (actor->xspr.health > 0 || playerSeqPlaying(pPlayer, 16))
damage = playerDamageSprite(source, pPlayer, damageType, damage);
@ -3740,7 +3740,7 @@ int actDamageSprite(DBloodActor* source, DBloodActor* actor, DAMAGE_TYPE damageT
if (source == nullptr) source = actor;
BloodPlayer* pSourcePlayer = nullptr;
if (source->IsPlayerActor()) pSourcePlayer = &gPlayer[source->spr.type - kDudePlayer1];
if (source->IsPlayerActor()) pSourcePlayer = getPlayer(source->spr.type - kDudePlayer1);
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pSourcePlayer, actor)) return 0;
switch (actor->spr.statnum)
@ -4173,7 +4173,7 @@ static void checkCeilHit(DBloodActor* actor)
}
}
#endif
if (!actor->IsPlayerActor() || gPlayer[actor->spr.type - kDudePlayer1].godMode == 0)
if (!actor->IsPlayerActor() || getPlayer(actor->spr.type - kDudePlayer1)->godMode == 0)
{
switch (actor2->spr.type)
{
@ -4192,7 +4192,7 @@ static void checkCeilHit(DBloodActor* actor)
actDamageSprite(actor2, actor, kDamageFall, dmg);
if (actor->hasX() && !actor->isActive()) aiActivateDude(actor);
}
else if (powerupCheck(&gPlayer[actor->spr.type - kDudePlayer1], kPwUpJumpBoots) > 0) actDamageSprite(actor2, actor, kDamageExplode, dmg);
else if (powerupCheck(getPlayer(actor->spr.type - kDudePlayer1), kPwUpJumpBoots) > 0) actDamageSprite(actor2, actor, kDamageExplode, dmg);
else actDamageSprite(actor2, actor, kDamageFall, dmg);
break;
#endif
@ -4335,7 +4335,7 @@ static void checkFloorHit(DBloodActor* actor)
#endif
BloodPlayer* pPlayer = nullptr;
if (actor->IsPlayerActor()) pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
if (actor->IsPlayerActor()) pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
switch (actor2->spr.type)
{
@ -4692,7 +4692,7 @@ static Collision MoveThing(DBloodActor* actor)
void MoveDude(DBloodActor* actor)
{
BloodPlayer* pPlayer = nullptr;
if (actor->IsPlayerActor()) pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
if (actor->IsPlayerActor()) pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
if (!(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax))
{
Printf(PRINT_HIGH, "%d: actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax", actor->spr.type);
@ -5543,8 +5543,8 @@ static void actCheckProximity()
auto Owner = actor->GetOwner();
if (!Owner->IsPlayerActor()) continue;
BloodPlayer* pPlayer = &gPlayer[Owner->spr.type - kDudePlayer1];
BloodPlayer* pPlayer2 = dudeactor->IsPlayerActor() ? &gPlayer[dudeactor->spr.type - kDudePlayer1] : nullptr;
BloodPlayer* pPlayer = getPlayer(Owner->spr.type - kDudePlayer1);
BloodPlayer* pPlayer2 = dudeactor->IsPlayerActor() ? getPlayer(dudeactor->spr.type - kDudePlayer1) : nullptr;
if (dudeactor == Owner || dudeactor->spr.type == kDudeZombieAxeBuried || dudeactor->spr.type == kDudeRat || dudeactor->spr.type == kDudeBat) continue;
if (gGameOptions.nGameType == 3 && pPlayer2 && pPlayer->teamId == pPlayer2->teamId) continue;
@ -5803,11 +5803,11 @@ static void actCheckExplosion()
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
auto dv = apos - gPlayer[p].GetActor()->spr.pos;
auto dv = apos - getPlayer(p)->GetActor()->spr.pos;
int nDist = int(dv.LengthSquared() + 0x40000);
int t = DivScale(actor->xspr.data2, nDist, 16);
gPlayer[p].flickerEffect += t;
getPlayer(p)->flickerEffect += t;
}
#ifdef NOONE_EXTENSIONS
@ -5975,7 +5975,7 @@ static void actCheckDudes()
}
if (actor->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
if (pPlayer->voodooTargets) voodooTarget(pPlayer);
if (pPlayer->hand && Chance(0x8000)) actDamageSprite(actor, actor, kDamageDrown, 12);
@ -6049,7 +6049,7 @@ static void actCheckDudes()
if (actor->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
double nDrag = FixedToFloat(gDudeDrag);
if (actor->xspr.height > 0)
nDrag -= Scale(nDrag, (double)actor->xspr.height, 256.);
@ -6624,7 +6624,7 @@ void actFireVector(DBloodActor* shooter, double offset, double zoffset, DVector3
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(shooter, hitactor)) return;
if (hitactor->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[hitactor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(hitactor->spr.type - kDudePlayer1);
if (powerupCheck(pPlayer, kPwUpReflectShots))
{
gHitInfo.hitActor = shooter;

View file

@ -114,7 +114,7 @@ static bool isImmune(DBloodActor* actor, int dmgType, int minScale)
return (thingInfo[type - kThingBase].dmgControl[dmgType] <= minScale);
else if (actor->IsDudeActor())
{
if (actor->IsPlayerActor()) return (gPlayer[type - kDudePlayer1].godMode || gPlayer[type - kDudePlayer1].damageControl[dmgType] <= minScale);
if (actor->IsPlayerActor()) return (getPlayer(type - kDudePlayer1)->godMode || getPlayer(type - kDudePlayer1)->damageControl[dmgType] <= minScale);
else return (dudeInfo[type - kDudeBase].damageVal[dmgType] <= minScale);
}
}
@ -1491,7 +1491,7 @@ void aiThinkTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (actor->GetOwner() == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -1536,7 +1536,7 @@ void aiLookForTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (actor->GetOwner() == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;

View file

@ -94,7 +94,7 @@ static void batThinkTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -251,7 +251,7 @@ static void batThinkChase(DBloodActor* actor)
aiNewState(actor, &batSearch);
return;
}
if (pTarget->IsPlayerActor() && powerupCheck(&gPlayer[pTarget->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (pTarget->IsPlayerActor() && powerupCheck(getPlayer(pTarget->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &batSearch);
return;

View file

@ -120,7 +120,7 @@ void StompSeqCallback(int, DBloodActor* actor)
else
nDamage = nBaseDamage + int(nBaseDamage2 * ((nDist - nDist2) / nDist));
if (actor2->IsPlayerActor())
gPlayer[actor2->spr.type - kDudePlayer1].quakeEffect += nDamage * 4;
getPlayer(actor2->spr.type - kDudePlayer1)->quakeEffect += nDamage * 4;
actDamageSprite(actor, actor2, kDamageFall, nDamage << 4);
}
}
@ -148,7 +148,7 @@ void StompSeqCallback(int, DBloodActor* actor)
nDamage = nBaseDamage + int(nBaseDamage2 * ((nDist - nDist2) / nDist));
if (actor2->IsPlayerActor())
gPlayer[actor2->spr.type - kDudePlayer1].quakeEffect += nDamage * 4;
getPlayer(actor2->spr.type - kDudePlayer1)->quakeEffect += nDamage * 4;
actDamageSprite(actor, actor2, kDamageFall, nDamage << 4);
}
}
@ -221,7 +221,7 @@ static void beastThinkChase(DBloodActor* actor)
aiNewState(actor, &beastSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
if (pXSector && pXSector->Underwater)
aiNewState(actor, &beastSwimSearch);
@ -355,7 +355,7 @@ static void beastThinkSwimChase(DBloodActor* actor)
aiNewState(actor, &beastSwimSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &beastSwimSearch);
return;

View file

@ -106,7 +106,7 @@ static void eelThinkTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -267,7 +267,7 @@ static void eelThinkChase(DBloodActor* actor)
aiNewState(actor, &eelSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &eelSearch);
return;

View file

@ -140,7 +140,7 @@ static void calebThinkChase(DBloodActor* actor)
}
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
if (pXSector && pXSector->Underwater)
aiNewState(actor, &tinycalebSwimSearch);
@ -242,7 +242,7 @@ static void calebThinkSwimChase(DBloodActor* actor)
aiNewState(actor, &tinycalebSwimSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &tinycalebSwimSearch);
return;

View file

@ -237,7 +237,7 @@ static void cerberusThinkTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -336,7 +336,7 @@ static void cerberusThinkChase(DBloodActor* actor)
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) {
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0) {
switch (actor->spr.type) {
case kDudeCerberusTwoHead:
aiNewState(actor, &cerberusSearch);

View file

@ -247,7 +247,7 @@ static void cultThinkChase(DBloodActor* actor)
}
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
switch (actor->xspr.medium)
{
@ -275,7 +275,7 @@ static void cultThinkChase(DBloodActor* actor)
{
case kDudeCultistTommy:
if (nDist < 0x1e0 && nDist > 0xe0 && nDeltaAngle < DAngle15 && !TargetNearExplosion(target->sector())
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && gPlayer[target->spr.type - kDudePlayer1].isRunning
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && getPlayer(target->spr.type - kDudePlayer1)->isRunning
&& Chance(0x8000))
{
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
@ -343,7 +343,7 @@ static void cultThinkChase(DBloodActor* actor)
break;
case kDudeCultistShotgun:
if (nDist < 0x2c0 && nDist > 0x140 && !TargetNearExplosion(target->sector())
&& (target->spr.flags & 2) && gGameOptions.nDifficulty >= 2 && target->IsPlayerActor() && !gPlayer[target->spr.type - kDudePlayer1].isRunning
&& (target->spr.flags & 2) && gGameOptions.nDifficulty >= 2 && target->IsPlayerActor() && !getPlayer(target->spr.type - kDudePlayer1)->isRunning
&& Chance(0x8000))
{
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
@ -411,7 +411,7 @@ static void cultThinkChase(DBloodActor* actor)
break;
case kDudeCultistTesla:
if (nDist < 0x1e0 && nDist > 0xe0 && !TargetNearExplosion(target->sector())
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && gPlayer[target->spr.type - kDudePlayer1].isRunning
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && getPlayer(target->spr.type - kDudePlayer1)->isRunning
&& Chance(0x8000))
{
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);
@ -522,7 +522,7 @@ static void cultThinkChase(DBloodActor* actor)
break;
case kDudeCultistBeast:
if (nDist < 0x1e0 && nDist > 0xe0 && !TargetNearExplosion(target->sector())
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && gPlayer[target->spr.type - kDudePlayer1].isRunning
&& (target->spr.flags & 2) && gGameOptions.nDifficulty > 2 && target->IsPlayerActor() && getPlayer(target->spr.type - kDudePlayer1)->isRunning
&& Chance(0x8000))
{
int hit = HitScan(actor, actor->spr.pos.Z, DVector3(dvec, 0), CLIPMASK1, 0);

View file

@ -193,7 +193,7 @@ static void gargThinkTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -312,7 +312,7 @@ static void gargThinkChase(DBloodActor* actor)
aiNewState(actor, &gargoyleFSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &gargoyleFSearch);
return;

View file

@ -174,7 +174,7 @@ static void ghostThinkTarget(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -291,7 +291,7 @@ static void ghostThinkChase(DBloodActor* actor)
aiNewState(actor, &ghostSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &ghostSearch);
return;

View file

@ -125,7 +125,7 @@ static void gillThinkChase(DBloodActor* actor)
aiNewState(actor, &gillBeastSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
if (pXSector && pXSector->Underwater)
aiNewState(actor, &gillBeastSwimSearch);
@ -226,7 +226,7 @@ static void gillThinkSwimChase(DBloodActor* actor)
aiNewState(actor, &gillBeastSwimSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &gillBeastSwimSearch);
return;

View file

@ -47,7 +47,7 @@ void HandJumpSeqCallback(int, DBloodActor* actor)
auto target = actor->GetTarget();
if (target->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[target->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(target->spr.type - kDudePlayer1);
if (!pPlayer->hand)
{
pPlayer->hand = 1;
@ -96,7 +96,7 @@ static void handThinkChase(DBloodActor* actor)
aiNewState(actor, &handSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &handSearch);
return;

View file

@ -107,7 +107,7 @@ static void houndThinkChase(DBloodActor* actor)
aiNewState(actor, &houndSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &houndSearch);
return;

View file

@ -92,7 +92,7 @@ static void ratThinkChase(DBloodActor* actor)
aiNewState(actor, &ratSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &ratSearch);
return;

View file

@ -49,7 +49,7 @@ static void spidBlindEffect(DBloodActor* actor, int nBlind, int max)
{
nBlind <<= 4;
max <<= 4;
BloodPlayer* pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
if (pPlayer->blindEffect < max)
{
pPlayer->blindEffect = ClipHigh(pPlayer->blindEffect + nBlind, max);
@ -74,7 +74,7 @@ void SpidBiteSeqCallback(int, DBloodActor* actor)
if (hit == 3 && gHitInfo.actor()->IsPlayerActor())
{
vec.Z += target->spr.pos.Z - actor->spr.pos.Z;
BloodPlayer* pPlayer = &gPlayer[target->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(target->spr.type - kDudePlayer1);
switch (actor->spr.type)
{
case kDudeSpiderBrown:
@ -200,7 +200,7 @@ static void spidThinkChase(DBloodActor* actor)
aiNewState(actor, &spidSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &spidSearch);
return;

View file

@ -198,7 +198,7 @@ static void sub_725A4(DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
if (pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;
auto ppos = pPlayer->GetActor()->spr.pos;
@ -272,7 +272,7 @@ static void tchernobogThinkChase(DBloodActor* actor)
aiNewState(actor, &tchernobogSearch);
return;
}
if (target->IsPlayerActor() && powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0)
if (target->IsPlayerActor() && powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0)
{
aiNewState(actor, &tchernobogSearch);
return;

View file

@ -498,7 +498,7 @@ static void unicultThinkChase(DBloodActor* actor)
}
else if (target->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[target->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(target->spr.type - kDudePlayer1);
if (powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
{
if (spriteIsUnderwater(actor, false)) aiGenDudeNewState(actor, &genDudeSearchShortW);
@ -1758,7 +1758,7 @@ void dudeLeechOperate(DBloodActor* actor, const EVENT& event)
{
if (actTarget->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[actTarget->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actTarget->spr.type - kDudePlayer1);
if (powerupCheck(pPlayer, kPwUpShadowCloak) > 0) return;
}
double top, bottom;

View file

@ -121,7 +121,7 @@ static void zombaThinkChase(DBloodActor* actor)
aiNewState(actor, &zombieASearch);
return;
}
if (target->IsPlayerActor() && (powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0 || powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpDeathMaskUseless) > 0))
if (target->IsPlayerActor() && (powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0 || powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpDeathMaskUseless) > 0))
{
aiNewState(actor, &zombieAGoto);
return;
@ -172,7 +172,7 @@ static void zombaThinkPonder(DBloodActor* actor)
aiNewState(actor, &zombieASearch);
return;
}
if (target->IsPlayerActor() && (powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0 || powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpDeathMaskUseless) > 0))
if (target->IsPlayerActor() && (powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0 || powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpDeathMaskUseless) > 0))
{
aiNewState(actor, &zombieAGoto);
return;
@ -209,7 +209,7 @@ static void myThinkTarget(DBloodActor* actor)
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
auto owneractor = actor->GetOwner();
if (owneractor == nullptr || owneractor == pPlayer->GetActor() || pPlayer->GetActor()->xspr.health == 0 || powerupCheck(pPlayer, kPwUpShadowCloak) > 0)
continue;

View file

@ -119,7 +119,7 @@ static void zombfThinkChase(DBloodActor* actor)
aiNewState(actor, &zombieFSearch);
return;
}
if (target->IsPlayerActor() && (powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0 || powerupCheck(&gPlayer[target->spr.type - kDudePlayer1], kPwUpDeathMaskUseless) > 0))
if (target->IsPlayerActor() && (powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0 || powerupCheck(getPlayer(target->spr.type - kDudePlayer1), kPwUpDeathMaskUseless) > 0))
{
aiNewState(actor, &zombieFSearch);
return;

View file

@ -490,7 +490,7 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF
case kViewEffectShowWeapon:
{
assert(pTSprite->type >= kDudePlayer1 && pTSprite->type <= kDudePlayer8);
BloodPlayer* pPlayer = &gPlayer[pTSprite->type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(pTSprite->type - kDudePlayer1);
WEAPONICON weaponIcon = gWeaponIcon[pPlayer->curWeapon];
auto nTex = weaponIcon.textureID();
if (!nTex.isValid()) break;
@ -505,7 +505,7 @@ static tspritetype* viewAddEffect(tspriteArray& tsprites, int nTSprite, VIEW_EFF
int nVoxel = GetExtInfo(nTex).tiletovox;
if (cl_showweapon == 2 && r_voxels && nVoxel != -1)
{
auto gView = &gPlayer[gViewIndex];
auto gView = getPlayer(gViewIndex);
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
@ -555,7 +555,7 @@ static int GetOctant(const DVector2& dPos)
void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA, double interpfrac)
{
BloodPlayer* pPlayer = &gPlayer[gViewIndex];
BloodPlayer* pPlayer = getPlayer(gViewIndex);
int nViewSprites = tsprites.Size();
// shift before interpolating to increase precision.
DAngle myclock = DAngle::fromBuild((PlayClock << 3) + (4 << 3) * interpfrac);
@ -841,7 +841,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA,
if (powerupCheck(pPlayer, kPwUpBeastVision) > 0) pTSprite->shade = -128;
if (IsPlayerSprite(pTSprite)) {
BloodPlayer* thisPlayer = &gPlayer[pTSprite->type - kDudePlayer1];
BloodPlayer* thisPlayer = getPlayer(pTSprite->type - kDudePlayer1);
if (powerupCheck(thisPlayer, kPwUpShadowCloak) && !powerupCheck(pPlayer, kPwUpBeastVision)) {
pTSprite->cstat |= CSTAT_SPRITE_TRANSLUCENT;
pTSprite->pal = 5;

View file

@ -96,7 +96,7 @@ static void markgcroots()
GC::MarkArray(gPhysSpritesList, gPhysSpritesCount);
GC::MarkArray(gImpactSpritesList, gImpactSpritesCount);
MarkSprInSect();
for (auto& pl : gPlayer)
for (auto& pl : PlayerArray)
{
GC::Mark(pl.actor);
GC::MarkArray(pl.ctfFlagState, 2);
@ -339,7 +339,7 @@ void StartLevel(MapRecord* level, bool newgame)
{
for (int i = connecthead; i >= 0; i = connectpoint2[i])
{
BloodPlayer* pPlayer = &gPlayer[i];
BloodPlayer* pPlayer = getPlayer(i);
pPlayer->GetActor()->xspr.health &= 0xf000;
pPlayer->GetActor()->xspr.health |= gHealthTemp[i];
pPlayer->weaponQav = gPlayerTemp[i].weaponQav;
@ -357,7 +357,7 @@ void StartLevel(MapRecord* level, bool newgame)
PreloadCache();
InitMirrors();
trInit(actorlist);
if (!gPlayer[myconnectindex].packSlots[1].isActive) // if diving suit is not active, turn off reverb sound effect
if (!getPlayer(myconnectindex)->packSlots[1].isActive) // if diving suit is not active, turn off reverb sound effect
sfxSetReverb(0);
ambInit();
gChokeCounter = 0;
@ -421,17 +421,17 @@ void GameInterface::Ticker(const ticcmd_t* playercmds)
thinktime.Reset();
thinktime.Clock();
BloodPlayer* pPlayer = &gPlayer[myconnectindex];
BloodPlayer* pPlayer = getPlayer(myconnectindex);
// disable synchronised input if set by game.
resetForcedSyncInput();
for (int i = connecthead; i >= 0; i = connectpoint2[i])
{
gPlayer[i].input = playercmds[i].ucmd;
gPlayer[i].Angles.resetCameraAngles();
getPlayer(i)->input = playercmds[i].ucmd;
getPlayer(i)->Angles.resetCameraAngles();
viewBackupView(i);
playerProcess(&gPlayer[i]);
playerProcess(getPlayer(i));
}
trProcessBusy();
@ -757,7 +757,7 @@ DEFINE_ACTION_FUNCTION(_Blood, PowerupIcon)
DEFINE_ACTION_FUNCTION(_Blood, GetViewPlayer)
{
PARAM_PROLOGUE;
ACTION_RETURN_POINTER(&gPlayer[gViewIndex]);
ACTION_RETURN_POINTER(getPlayer(gViewIndex));
}
DEFINE_ACTION_FUNCTION(_BloodPlayer, GetHealth)

View file

@ -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].GetActor(); }
DCoreActor* getConsoleActor() override { return getPlayer(myconnectindex)->GetActor(); }
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;
@ -136,8 +136,8 @@ struct GameInterface : public ::GameInterface
void AddQAVInterpProps(const int res_id, const FString& interptype, const bool loopable, const TMap<int, TArray<int>>&& ignoredata) override;
void RemoveQAVInterpProps(const int res_id) override;
void StartSoundEngine() override;
void reapplyInputBits(InputPacket* const input) override { input->actions |= gPlayer[myconnectindex].input.actions & (~(SB_BUTTON_MASK | SB_RUN | SB_WEAPONMASK_BITS) | SB_CENTERVIEW); }
void doPlayerMovement(const float scaleAdjust) override { gameInput.processMovement(&gPlayer[myconnectindex].Angles, scaleAdjust); }
void reapplyInputBits(InputPacket* const input) override { input->actions |= getPlayer(myconnectindex)->input.actions & (~(SB_BUTTON_MASK | SB_RUN | SB_WEAPONMASK_BITS) | SB_CENTERVIEW); }
void doPlayerMovement(const float scaleAdjust) override { gameInput.processMovement(&getPlayer(myconnectindex)->Angles, scaleAdjust); }
unsigned getCrouchState() override;
};

View file

@ -172,7 +172,7 @@ inline bool IsTargetTeammate(DBloodActor* pSource, DBloodActor* pTarget)
{
if (!pSource->IsPlayerActor())
return false;
BloodPlayer* pSourcePlayer = &gPlayer[pSource->spr.type - kDudePlayer1];
BloodPlayer* pSourcePlayer = getPlayer(pSource->spr.type - kDudePlayer1);
return IsTargetTeammate(pSourcePlayer, pTarget);
}

View file

@ -337,7 +337,7 @@ void PlayerBubble(DBloodActor* actor, sectortype*) // 10
if (!actor) return;
if (actor->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
if (!pPlayer->bubbleTime)
return;
double top, bottom;
@ -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].GetActor())
if (actor->IsPlayerActor() && playerSeqPlaying(getPlayer(actor->spr.type - kDudePlayer1), 16) && actor == getPlayer(myconnectindex)->GetActor())
sndStartSample(3313, -1, 1, 0);
}
@ -728,7 +728,7 @@ void DropVoodooCb(DBloodActor* actor, sectortype*) // unused
}
BloodPlayer* pPlayer;
if (Owner->IsPlayerActor())
pPlayer = &gPlayer[Owner->spr.type - kDudePlayer1];
pPlayer = getPlayer(Owner->spr.type - kDudePlayer1);
else
pPlayer = nullptr;
if (!pPlayer)
@ -755,7 +755,7 @@ void DropVoodooCb(DBloodActor* actor, sectortype*) // unused
{
BloodPlayer* pPlayer2;
if (actor2->IsPlayerActor())
pPlayer2 = &gPlayer[actor2->spr.type - kDudePlayer1];
pPlayer2 = getPlayer(actor2->spr.type - kDudePlayer1);
else
pPlayer2 = nullptr;

View file

@ -156,7 +156,7 @@ void GameInterface::MenuClosed()
bool GameInterface::CanSave()
{
return gPlayer[myconnectindex].GetActor() && gPlayer[myconnectindex].GetActor()->xspr.health != 0;
return getPlayer(myconnectindex)->GetActor() && getPlayer(myconnectindex)->GetActor()->xspr.health != 0;
}
FSavegameInfo GameInterface::GetSaveSig()

View file

@ -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].GetActor())
if (getPlayer(i)->GetActor())
{
memcpy(&gPlayerTemp[i], &gPlayer[i], sizeof(BloodPlayer));
gHealthTemp[i] = gPlayer[i].GetActor()->xspr.health;
memcpy(&gPlayerTemp[i], getPlayer(i), sizeof(BloodPlayer));
gHealthTemp[i] = getPlayer(i)->GetActor()->xspr.health;
}
}

View file

@ -169,7 +169,7 @@ void hudDraw(BloodPlayer* pPlayer, sectortype* pSector, double bobx, double boby
}
int zn = int(((pPlayer->zWeapon - pPlayer->zView - 12) * 2.) + 220);
BloodPlayer* pPSprite = &gPlayer[pPlayer->GetActor()->spr.type - kDudePlayer1];
BloodPlayer* pPSprite = getPlayer(pPlayer->GetActor()->spr.type - kDudePlayer1);
if (pPlayer->GetActor()->IsPlayerActor() && pPSprite->hand == 1)
{
gChoke.animateChoke(160, zn, interpfrac);

View file

@ -753,11 +753,11 @@ void GameInterface::SerializeGameState(FSerializer& arc)
InitSectorFX();
viewInitializePrediction();
PreloadCache();
if (!gPlayer[myconnectindex].packSlots[1].isActive) // if diving suit is not active, turn off reverb sound effect
if (!getPlayer(myconnectindex)->packSlots[1].isActive) // if diving suit is not active, turn off reverb sound effect
sfxSetReverb(0);
ambInit();
for (int i = 0; i < gNetPlayers; i++)
playerSetRace(&gPlayer[i], gPlayer[i].lifeMode);
playerSetRace(getPlayer(i), getPlayer(i)->lifeMode);
viewSetErrorMessage("");
paused = 0;
Mus_ResumeSaved();

View file

@ -292,7 +292,7 @@ static int parseArgs(char* pzArgs, int* nArg1, int* nArg2)
const char* GameInterface::GenericCheat(int player, int cheat)
{
// message processing is not perfect because many cheats output multiple messages.
BloodPlayer* pPlayer = &gPlayer[player];
BloodPlayer* pPlayer = getPlayer(player);
if (gGameOptions.nGameType != 0 || numplayers > 1) // sp only for now.
return nullptr;
@ -512,7 +512,7 @@ static cheatseq_t s_CheatInfo[] = {
void cheatReset(void)
{
BloodPlayer* pPlayer = &gPlayer[myconnectindex];
BloodPlayer* pPlayer = getPlayer(myconnectindex);
bPlayerCheated = 0;
playerSetGodMode(pPlayer, 0);
gNoClip = 0;
@ -530,7 +530,7 @@ void cheatReset(void)
static void cmd_Give(int player, uint8_t** stream, bool skip)
{
BloodPlayer* pPlayer = &gPlayer[player];
BloodPlayer* pPlayer = getPlayer(player);
int type = ReadByte(stream);
if (skip) return;

View file

@ -338,7 +338,7 @@ bool nnExtIsImmune(DBloodActor* actor, int dmgType, int minScale)
}
else if (actor->IsDudeActor())
{
if (actor->IsPlayerActor()) return (gPlayer[actor->spr.type - kDudePlayer1].damageControl[dmgType]);
if (actor->IsPlayerActor()) return (getPlayer(actor->spr.type - kDudePlayer1)->damageControl[dmgType]);
else if (actor->spr.type == kDudeModernCustom) return (actor->genDudeExtra.dmgControl[dmgType] <= minScale);
else return (getDudeInfo(actor->spr.type)->damageVal[dmgType] <= minScale);
}
@ -1175,11 +1175,11 @@ void nnExtProcessSuperSprites()
{
for (int a = connecthead; a >= 0; a = connectpoint2[a])
{
BloodPlayer* pPlayer = &gPlayer[a];
BloodPlayer* pPlayer = getPlayer(a);
if (!pPlayer || !xsprIsFine(pPlayer->GetActor()) || pPlayer->GetActor()->xspr.health <= 0)
continue;
if (pPlayer->GetActor()->xspr.health > 0 && CheckProximity(gPlayer->GetActor(), pos, pSect, okDist))
if (pPlayer->GetActor()->xspr.health > 0 && CheckProximity(getPlayer(0)->GetActor(), pos, pSect, okDist))
{
trTriggerSprite(pProx, kCmdSpriteProximity, pPlayer->GetActor());
}
@ -1213,7 +1213,7 @@ void nnExtProcessSuperSprites()
for (int a = connecthead; a >= 0; a = connectpoint2[a])
{
BloodPlayer* pPlayer = &gPlayer[a];
BloodPlayer* pPlayer = getPlayer(a);
if (!pPlayer || !xsprIsFine(pPlayer->GetActor()) || pPlayer->GetActor()->xspr.health <= 0)
continue;
@ -1303,7 +1303,7 @@ void nnExtProcessSuperSprites()
BloodPlayer* pPlayer = NULL;
for (int a = connecthead; a != -1; a = connectpoint2[a])
{
pPlayer = &gPlayer[a];
pPlayer = getPlayer(a);
DBloodActor* pact = pPlayer->GetActor();
if (pact && pact->hit.hit.type == kHitSprite && pact->hit.hit.actor() == debrisactor)
@ -4318,8 +4318,8 @@ bool condCheckPlayer(DBloodActor* aCond, int cmpOp, bool PUSH)
auto objActor = eob.actor();
for (int i = 0; i < kMaxPlayers; i++)
{
if (objActor != gPlayer[i].GetActor()) continue;
pPlayer = &gPlayer[i];
if (objActor != getPlayer(i)->GetActor()) continue;
pPlayer = getPlayer(i);
break;
}
@ -7415,8 +7415,8 @@ BloodPlayer* getPlayerById(int id)
id = id - 1;
for (int i = connecthead; i >= 0; i = connectpoint2[i])
{
if (id == gPlayer[i].nPlayer)
return &gPlayer[i];
if (id == getPlayer(i)->nPlayer)
return getPlayer(i);
}
// absolute sprite type
@ -7425,8 +7425,8 @@ BloodPlayer* getPlayerById(int id)
{
for (int i = connecthead; i >= 0; i = connectpoint2[i])
{
if (id == gPlayer[i].GetActor()->spr.type)
return &gPlayer[i];
if (id == getPlayer(i)->GetActor()->spr.type)
return getPlayer(i);
}
}
@ -7473,14 +7473,14 @@ bool IsKillableDude(DBloodActor* actor)
bool isGrown(DBloodActor* actor)
{
if (powerupCheck(&gPlayer[actor->spr.type - kDudePlayer1], kPwUpGrowShroom) > 0) return true;
if (powerupCheck(getPlayer(actor->spr.type - kDudePlayer1), kPwUpGrowShroom) > 0) return true;
else if (actor->hasX() && actor->xspr.scale >= 512) return true;
else return false;
}
bool isShrinked(DBloodActor* actor)
{
if (powerupCheck(&gPlayer[actor->spr.type - kDudePlayer1], kPwUpShrinkShroom) > 0) return true;
if (powerupCheck(getPlayer(actor->spr.type - kDudePlayer1), kPwUpShrinkShroom) > 0) return true;
else if (actor->hasX() && actor->xspr.scale > 0 && actor->xspr.scale <= 128) return true;
else return false;
}
@ -8400,7 +8400,7 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
// search for player targets
for (i = connecthead; i != -1; i = connectpoint2[i])
{
pPlayer = &gPlayer[i];
pPlayer = getPlayer(i);
if (!xsprIsFine(pPlayer->GetActor())) continue;
auto plActor = pPlayer->GetActor();
@ -9325,8 +9325,8 @@ void killEffectGenCallbacks(DBloodActor* actor)
case kChannelAllPlayers: // player sprites
for (i = connecthead; i >= 0; i = connectpoint2[i])
{
if (gPlayer[i].GetActor() != nullptr)
dokillEffectGenCallbacks(gPlayer[i].GetActor());
if (getPlayer(i)->GetActor() != nullptr)
dokillEffectGenCallbacks(getPlayer(i)->GetActor());
}
break;
case kChannelEventCauser: // worst case...

View file

@ -63,7 +63,7 @@ void GameInterface::SwitchCoopView()
gViewIndex = connectpoint2[gViewIndex];
if (gViewIndex == -1)
gViewIndex = connecthead;
if (oldViewIndex == gViewIndex || gPlayer[myconnectindex].teamId == gPlayer[gViewIndex].teamId)
if (oldViewIndex == gViewIndex || getPlayer(myconnectindex)->teamId == getPlayer(gViewIndex)->teamId)
break;
} while (oldViewIndex != gViewIndex);
}

View file

@ -34,7 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BEGIN_BLD_NS
BloodPlayer gPlayer[kMaxPlayers];
BloodPlayer PlayerArray[kMaxPlayers];
bool gBlueFlagDropped = false;
bool gRedFlagDropped = false;
@ -238,7 +238,7 @@ inline bool IsTargetTeammate(BloodPlayer* pSourcePlayer, DBloodActor* target)
return false;
if (gGameOptions.nGameType == 1 || gGameOptions.nGameType == 3)
{
BloodPlayer* pTargetPlayer = &gPlayer[target->spr.type - kDudePlayer1];
BloodPlayer* pTargetPlayer = getPlayer(target->spr.type - kDudePlayer1);
if (pSourcePlayer != pTargetPlayer)
{
if (gGameOptions.nGameType == 1)
@ -300,7 +300,7 @@ bool powerupActivate(BloodPlayer* pPlayer, int nPowerUp)
else if (isShrinked(pPlayer->GetActor())) playerDeactivateShrooms(pPlayer);
else {
playerSizeGrow(pPlayer, 2);
if (powerupCheck(&gPlayer[pPlayer->GetActor()->spr.type - kDudePlayer1], kPwUpShadowCloak) > 0) {
if (powerupCheck(getPlayer(pPlayer->GetActor()->spr.type - kDudePlayer1), kPwUpShadowCloak) > 0) {
powerupDeactivate(pPlayer, kPwUpShadowCloak);
pPlayer->pwUpTime[kPwUpShadowCloak] = 0;
}
@ -759,7 +759,7 @@ void playerResetPosture(BloodPlayer* pPlayer) {
void playerStart(int nPlayer, int bNewLevel)
{
BloodPlayer* pPlayer = &gPlayer[nPlayer];
BloodPlayer* pPlayer = getPlayer(nPlayer);
InputPacket* pInput = &pPlayer->input;
ZONE* pStartZone = NULL;
@ -982,9 +982,9 @@ int team_ticker[8];
void playerInit(int nPlayer, unsigned int a2)
{
if (!(a2 & 1))
gPlayer[nPlayer] = {};
*getPlayer(nPlayer) = {};
BloodPlayer* pPlayer = &gPlayer[nPlayer];
BloodPlayer* pPlayer = getPlayer(nPlayer);
pPlayer->nPlayer = nPlayer;
pPlayer->teamId = nPlayer;
if (gGameOptions.nGameType == 3)
@ -1499,7 +1499,7 @@ int ActionScan(BloodPlayer* pPlayer, HitInfo* out)
unsigned GameInterface::getCrouchState()
{
const bool swimming = gPlayer[myconnectindex].posture == kPostureSwim;
const bool swimming = getPlayer(myconnectindex)->posture == kPostureSwim;
return (CS_CANCROUCH * !swimming) | (CS_DISABLETOGGLE * swimming);
}
@ -1978,7 +1978,7 @@ void FragPlayer(BloodPlayer* pPlayer, DBloodActor* killer)
{
if (killer && killer->IsPlayerActor())
{
BloodPlayer* pKiller = &gPlayer[killer->spr.type - kDudePlayer1];
BloodPlayer* pKiller = getPlayer(killer->spr.type - kDudePlayer1);
playerFrag(pKiller, pPlayer);
int nTeam1 = pKiller->teamId & 1;
int nTeam2 = pPlayer->teamId & 1;
@ -2191,8 +2191,8 @@ int playerDamageSprite(DBloodActor* source, BloodPlayer* pPlayer, DAMAGE_TYPE nD
pActor->spr.flags |= 7;
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
if (gPlayer[p].fragger == pPlayer->GetActor() && gPlayer[p].deathTime > 0)
gPlayer[p].fragger = nullptr;
if (getPlayer(p)->fragger == pPlayer->GetActor() && getPlayer(p)->deathTime > 0)
getPlayer(p)->fragger = nullptr;
}
FragPlayer(pPlayer, source);
trTriggerSprite(pActor, kCmdOff);
@ -2209,7 +2209,7 @@ int playerDamageSprite(DBloodActor* source, BloodPlayer* pPlayer, DAMAGE_TYPE nD
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->GetActor()->xspr.key])
if (!getPlayer(i)->hasKey[pPlayer->GetActor()->xspr.key])
break;
}
@ -2322,7 +2322,7 @@ void PlayerSurvive(int, DBloodActor* actor)
sfxPlay3DSound(actor, 3009, 0, 6);
if (actor->IsPlayerActor())
{
BloodPlayer* pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
BloodPlayer* pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
if (pPlayer->nPlayer == myconnectindex)
viewSetMessage(GStrings("TXT_LIVEAGAIM"));
else
@ -2345,9 +2345,9 @@ void PlayerKneelsOver(int, DBloodActor* actor)
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
if (gPlayer[p].GetActor() == actor)
if (getPlayer(p)->GetActor() == actor)
{
BloodPlayer* pPlayer = &gPlayer[p];
BloodPlayer* pPlayer = getPlayer(p);
playerDamageSprite(pPlayer->fragger, pPlayer, kDamageSpirit, 500 << 4);
return;
}
@ -2528,7 +2528,7 @@ void SerializePlayers(FSerializer& arc)
{
arc("numplayers", gNetPlayers)
.Array("teamscore", team_score, gNetPlayers)
.Array("players", gPlayer, gNetPlayers)
.Array("players", PlayerArray, gNetPlayers)
#ifdef NOONE_EXTENSIONS
.Array("playerctrl", gPlayerCtrl, gNetPlayers)
#endif
@ -2539,13 +2539,13 @@ void SerializePlayers(FSerializer& arc)
{
for (int i = 0; i < gNetPlayers; i++)
{
gPlayer[i].pDudeInfo = &dudeInfo[gPlayer[i].GetActor()->spr.type - kDudeBase];
getPlayer(i)->pDudeInfo = &dudeInfo[getPlayer(i)->GetActor()->spr.type - kDudeBase];
#ifdef NOONE_EXTENSIONS
// load qav scene
if (gPlayer[i].sceneQav != -1)
if (getPlayer(i)->sceneQav != -1)
{
QAV* pQav = playerQavSceneLoad(gPlayer[i].sceneQav);
QAV* pQav = playerQavSceneLoad(getPlayer(i)->sceneQav);
if (pQav)
{
gPlayerCtrl[i].qavScene.qavResrc = pQav;
@ -2553,7 +2553,7 @@ void SerializePlayers(FSerializer& arc)
}
else
{
gPlayer[i].sceneQav = -1;
getPlayer(i)->sceneQav = -1;
}
}
#endif

View file

@ -198,7 +198,12 @@ struct POWERUPINFO
void playerResetPosture(BloodPlayer* pPlayer);
extern BloodPlayer gPlayer[kMaxPlayers];
extern BloodPlayer PlayerArray[kMaxPlayers];
inline BloodPlayer* getPlayer(int index)
{
return &PlayerArray[index];
}
extern bool gBlueFlagDropped;
extern bool gRedFlagDropped;

View file

@ -63,7 +63,7 @@ void BloodSoundEngine::CalcPosVel(int type, const void* source, const float pt[3
{
if (pos != nullptr && type != SOURCE_None)
{
BloodPlayer* pPlayer = &gPlayer[myconnectindex];
BloodPlayer* pPlayer = getPlayer(myconnectindex);
FVector3 camera;
if (pPlayer && pPlayer->GetActor()) camera = GetSoundPos(pPlayer->GetActor()->spr.pos);
@ -105,7 +105,7 @@ void BloodSoundEngine::CalcPosVel(int type, const void* source, const float pt[3
void GameInterface::UpdateSounds()
{
BloodPlayer* pPlayer = &gPlayer[myconnectindex];
BloodPlayer* pPlayer = getPlayer(myconnectindex);
SoundListener listener;
if (pPlayer->GetActor())

View file

@ -237,7 +237,7 @@ void LifeLeechOperate(DBloodActor* actor, EVENT event)
int nPlayer = actor->xspr.data4;
if (nPlayer >= 0 && nPlayer < kMaxPlayers && playeringame[nPlayer])
{
BloodPlayer* pPlayer = &gPlayer[nPlayer];
BloodPlayer* pPlayer = getPlayer(nPlayer);
if (pPlayer->GetActor()->xspr.health > 0)
{
evKillActor(actor);
@ -511,9 +511,9 @@ 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].GetActor()->spr.pos;
auto vec = actor->spr.pos - getPlayer(p)->GetActor()->spr.pos;
int nDist = int(vec.LengthSquared()) + 0x40000;
gPlayer[p].quakeEffect = DivScale(actor->xspr.data1, nDist, 16);
getPlayer(p)->quakeEffect = DivScale(actor->xspr.data1, nDist, 16);
}
break;
case kThingTNTBarrel:
@ -598,7 +598,7 @@ void OperateSprite(DBloodActor* actor, EVENT event)
case kSoundPlayer:
if (gGameOptions.nGameType == 0)
{
BloodPlayer* pPlayer = &gPlayer[myconnectindex];
BloodPlayer* pPlayer = getPlayer(myconnectindex);
if (pPlayer->GetActor()->xspr.health <= 0)
break;
@ -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].GetActor()->spr.Angles.Yaw += angleofs;
if (!VanillaMode() && ac->IsPlayerActor()) getPlayer(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].GetActor()->spr.Angles.Yaw += angleofs;
if (!VanillaMode() && ac->IsPlayerActor()) getPlayer(ac->spr.type - kDudePlayer1)->GetActor()->spr.Angles.Yaw += angleofs;
}
}
}
@ -1599,7 +1599,7 @@ void OperateTeleport(sectortype* pSector)
BloodPlayer* pPlayer;
bool bPlayer = actor->IsPlayerActor();
if (bPlayer)
pPlayer = &gPlayer[actor->spr.type - kDudePlayer1];
pPlayer = getPlayer(actor->spr.type - kDudePlayer1);
else
pPlayer = NULL;
if (bPlayer || !SectorContainsDudes(destactor->sector()))

View file

@ -58,7 +58,7 @@ int gViewIndex;
void viewBackupView(int nPlayer)
{
BloodPlayer* pPlayer = &gPlayer[nPlayer];
BloodPlayer* pPlayer = getPlayer(nPlayer);
pPlayer->ozView = pPlayer->zView;
pPlayer->ozWeapon = pPlayer->zWeapon - pPlayer->zView - 12;
pPlayer->obobHeight = pPlayer->bobHeight;
@ -113,7 +113,7 @@ void viewDrawAimedPlayerName(BloodPlayer* pPlayer)
{
int nPlayer = actor->spr.type - kDudePlayer1;
const char* szName = PlayerName(nPlayer);
int nPalette = (gPlayer[nPlayer].teamId & 3) + 11;
int nPalette = (getPlayer(nPlayer)->teamId & 3) + 11;
viewDrawText(DigiFont, szName, 160, 125, -128, nPalette, 1, 1);
}
}
@ -558,7 +558,7 @@ void renderCrystalBall()
void viewDrawScreen(bool sceneonly)
{
BloodPlayer* pPlayer = &gPlayer[gViewIndex];
BloodPlayer* pPlayer = getPlayer(gViewIndex);
FireProcess();
@ -778,7 +778,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos,
{
if (i == gViewIndex || gGameOptions.nGameType == 1)
{
auto actor = gPlayer[i].GetActor();
auto actor = getPlayer(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,

View file

@ -1694,7 +1694,7 @@ void FireVoodoo(int nTrigger, BloodPlayer* pPlayer)
fxSpawnBlood(targetactor, 17 << 4);
int nDamage = actDamageSprite(actor, targetactor, kDamageSpirit, 9 << 4);
if (targetactor->IsPlayerActor())
WeaponLower(&gPlayer[targetactor->spr.type - kDudePlayer1]);
WeaponLower(getPlayer(targetactor->spr.type - kDudePlayer1));
UseAmmo(pPlayer, 9, nDamage / 4);
break;
}
@ -1713,7 +1713,7 @@ void FireVoodoo(int nTrigger, BloodPlayer* pPlayer)
int nDamage = actDamageSprite(actor, targetactor, kDamageSpirit, 11 << 4);
if (targetactor->IsPlayerActor())
{
BloodPlayer* pOtherPlayer = &gPlayer[targetactor->spr.type - kDudePlayer1];
BloodPlayer* pOtherPlayer = getPlayer(targetactor->spr.type - kDudePlayer1);
pOtherPlayer->blindEffect = 128;
}
UseAmmo(pPlayer, 9, nDamage / 4);
@ -1756,7 +1756,7 @@ void AltFireVoodoo(int nTrigger, BloodPlayer* pPlayer)
if (targetactor->IsPlayerActor())
{
BloodPlayer* pOtherPlayer = &gPlayer[targetactor->spr.type - kDudePlayer1];
BloodPlayer* pOtherPlayer = getPlayer(targetactor->spr.type - kDudePlayer1);
if (!pOtherPlayer->godMode || !powerupCheck(pOtherPlayer, kPwUpDeathMask))
powerupActivate(pOtherPlayer, kPwUpDeliriumShroom);
}
@ -1794,7 +1794,7 @@ void AltFireVoodoo(int nTrigger, BloodPlayer* pPlayer)
UseAmmo(pPlayer, 9, nDamage);
if (targetactor->IsPlayerActor())
{
BloodPlayer* pOtherPlayer = &gPlayer[targetactor->spr.type - kDudePlayer1];
BloodPlayer* pOtherPlayer = getPlayer(targetactor->spr.type - kDudePlayer1);
if (!pOtherPlayer->godMode || !powerupCheck(pOtherPlayer, kPwUpDeathMask))
powerupActivate(pOtherPlayer, kPwUpDeliriumShroom);
}
@ -2063,7 +2063,7 @@ static const uint8_t gWeaponUpgrade[][13] = {
int WeaponUpgrade(BloodPlayer* pPlayer, int newWeapon)
{
int weaponswitch = WeaponSwitch(pPlayer - gPlayer);
int weaponswitch = WeaponSwitch(pPlayer - PlayerArray);
int weapon = pPlayer->curWeapon;
if (!checkLitSprayOrTNT(pPlayer) && (weaponswitch & 1) && (gWeaponUpgrade[pPlayer->curWeapon][newWeapon] || (weaponswitch & 2)))
weapon = newWeapon;