mirror of
https://github.com/ZDoom/Raze.git
synced 2025-04-28 18:50:43 +00:00
- Exhumed: Split out player dopple actor update code.
* This cleans most of the player tick code. Now, onto that ghastly pickup code...
This commit is contained in:
parent
0230a51ce2
commit
650aa65533
1 changed files with 26 additions and 16 deletions
|
@ -1024,6 +1024,30 @@ static void updatePlayerFloorActor(Player* const pPlayer)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static void updatePlayerDoppleActor(Player* const pPlayer)
|
||||||
|
{
|
||||||
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
|
DExhumedActor* const pDopple = pPlayer->pDoppleSprite;
|
||||||
|
pDopple->spr.pos = pPlayerActor->spr.pos;
|
||||||
|
|
||||||
|
if (pPlayerActor->sector()->pAbove != nullptr)
|
||||||
|
{
|
||||||
|
pDopple->spr.Angles.Yaw = pPlayerActor->spr.Angles.Yaw;
|
||||||
|
ChangeActorSect(pDopple, pPlayerActor->sector()->pAbove);
|
||||||
|
pDopple->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pDopple->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void updatePlayerViewSector(Player* const pPlayer, const Collision& nMove, const DVector3& spr_pos, const DVector3& spr_vel, const bool bUnderwater)
|
static void updatePlayerViewSector(Player* const pPlayer, const Collision& nMove, const DVector3& spr_pos, const DVector3& spr_vel, const bool bUnderwater)
|
||||||
{
|
{
|
||||||
const auto pPlayerActor = pPlayer->pActor;
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
|
@ -1536,8 +1560,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
||||||
const auto pPlayerActor = pPlayer->pActor;
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
const auto pStartSect = pPlayerActor->sector();
|
const auto pStartSect = pPlayerActor->sector();
|
||||||
|
|
||||||
DExhumedActor* pDopple = pPlayer->pDoppleSprite;
|
pPlayer->pDoppleSprite->spr.picnum = pPlayerActor->spr.picnum;
|
||||||
pDopple->spr.picnum = pPlayerActor->spr.picnum;
|
|
||||||
pPlayerActor->spr.picnum = seq_GetSeqPicnum(pPlayer->nSeq, PlayerSeq[nHeightTemplate[pPlayer->nAction]].a, pPlayer->nSeqSize);
|
pPlayerActor->spr.picnum = seq_GetSeqPicnum(pPlayer->nSeq, PlayerSeq[nHeightTemplate[pPlayer->nAction]].a, pPlayer->nSeqSize);
|
||||||
pPlayerActor->vel.XY() = pPlayer->vel;
|
pPlayerActor->vel.XY() = pPlayer->vel;
|
||||||
|
|
||||||
|
@ -1679,7 +1702,6 @@ void AIPlayer::Tick(RunListEvent* ev)
|
||||||
|
|
||||||
// will invalidate nPlayerSprite
|
// will invalidate nPlayerSprite
|
||||||
RestartPlayer(nPlayer);
|
RestartPlayer(nPlayer);
|
||||||
pDopple = pPlayer->pDoppleSprite;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1695,19 +1717,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
||||||
if (!pPlayer->nHealth)
|
if (!pPlayer->nHealth)
|
||||||
doPlayerDeathPitch(pPlayer);
|
doPlayerDeathPitch(pPlayer);
|
||||||
|
|
||||||
// loc_1C4E1
|
updatePlayerDoppleActor(pPlayer);
|
||||||
pDopple->spr.pos = pPlayerActor->spr.pos;
|
|
||||||
|
|
||||||
if (pPlayerActor->sector()->pAbove != nullptr)
|
|
||||||
{
|
|
||||||
pDopple->spr.Angles.Yaw = pPlayerActor->spr.Angles.Yaw;
|
|
||||||
ChangeActorSect(pDopple, pPlayerActor->sector()->pAbove);
|
|
||||||
pDopple->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pDopple->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
MoveWeapons(nPlayer);
|
MoveWeapons(nPlayer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue