From 911c5158d217664c7aa92d175224d92abe1da15e Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Fri, 24 Mar 2023 19:01:35 +1100 Subject: [PATCH] - Exhumed: Split out player floor actor code. --- source/games/exhumed/src/player.cpp | 47 +++++++++++++++++------------ 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index a730b9151..3157b47f1 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -1000,6 +1000,30 @@ static void doPlayerGravity(DExhumedActor* const pPlayerActor) // //--------------------------------------------------------------------------- +static void updatePlayerFloorActor(Player* const pPlayer) +{ + if (nTotalPlayers > 1) + { + if (DExhumedActor* const pFloorActor = pPlayer->pPlayerFloorSprite) + { + const auto pPlayerActor = pPlayer->pActor; + pFloorActor->spr.pos.XY() = pPlayerActor->spr.pos.XY(); + pFloorActor->spr.pos.Z = pPlayerActor->sector()->floorz; + + if (pFloorActor->sector() != pPlayerActor->sector()) + { + ChangeActorSect(pFloorActor, pPlayerActor->sector()); + } + } + } +} + +//--------------------------------------------------------------------------- +// +// +// +//--------------------------------------------------------------------------- + static void updatePlayerAction(Player* const pPlayer) { const auto pPlayerActor = pPlayer->pActor; @@ -1481,29 +1505,12 @@ void AIPlayer::Tick(RunListEvent* ev) } } - // loc_1B1EB - DExhumedActor* pFloorActor = pPlayer->pPlayerFloorSprite; - if (nTotalPlayers > 1 && pFloorActor) - { - pFloorActor->spr.pos.XY() = pPlayerActor->spr.pos.XY(); - - if (pFloorActor->sector() != pPlayerActor->sector()) - { - ChangeActorSect(pFloorActor, pPlayerActor->sector()); - } - - pFloorActor->spr.pos.Z = pPlayerActor->sector()->floorz; - } - + updatePlayerFloorActor(pPlayer); doPlayerItemPickups(pPlayer); - // CORRECT ? // loc_1BAF9: - if (bTouchFloor) + if (bTouchFloor && pPlayerActor->sector()->lotag > 0) { - if (pPlayerActor->sector()->lotag > 0) - { - runlist_SignalRun(pPlayerActor->sector()->lotag - 1, nPlayer, &ExhumedAI::TouchFloor); - } + runlist_SignalRun(pPlayerActor->sector()->lotag - 1, nPlayer, &ExhumedAI::TouchFloor); } if (spr_sect != pPlayerActor->sector())