mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-21 19:11:06 +00:00
- Exhumed: Split off runlist signal code from player ticker.
This commit is contained in:
parent
a86751a355
commit
e5e1428062
1 changed files with 50 additions and 34 deletions
|
@ -1452,6 +1452,49 @@ static bool doPlayerMovement(Player* const pPlayer)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static void doPlayerRunlistSignals(Player* const pPlayer, sectortype* const pStartSect)
|
||||||
|
{
|
||||||
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
|
const auto pPlayerSect = pPlayerActor->sector();
|
||||||
|
|
||||||
|
if (bTouchFloor && pPlayerSect->lotag > 0)
|
||||||
|
runlist_SignalRun(pPlayerSect->lotag - 1, pPlayer->nPlayer, &ExhumedAI::TouchFloor);
|
||||||
|
|
||||||
|
if (pStartSect != pPlayerSect)
|
||||||
|
{
|
||||||
|
if (pStartSect->lotag > 0)
|
||||||
|
runlist_SignalRun(pStartSect->lotag - 1, pPlayer->nPlayer, &ExhumedAI::EnterSector);
|
||||||
|
|
||||||
|
if (pPlayerSect->lotag > 0)
|
||||||
|
runlist_SignalRun(pPlayerSect->lotag - 1, pPlayer->nPlayer, &ExhumedAI::LeaveSector);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pPlayer->bIsMummified)
|
||||||
|
{
|
||||||
|
if (pPlayer->input.actions & SB_OPEN)
|
||||||
|
{
|
||||||
|
pPlayer->input.actions &= ~SB_OPEN;
|
||||||
|
|
||||||
|
// neartag finds the nearest sector, wall, and sprite which has its hitag and/or lotag set to a value.
|
||||||
|
HitInfo near;
|
||||||
|
neartag(pPlayerActor->spr.pos, pPlayerSect, pPlayerActor->spr.Angles.Yaw, near, 128., NT_Hitag | NT_NoSpriteCheck);
|
||||||
|
|
||||||
|
int tag;
|
||||||
|
if (near.hitWall != nullptr && (tag = near.hitWall->lotag) > 0)
|
||||||
|
runlist_SignalRun(tag - 1, pPlayer->nPlayer, &ExhumedAI::Use);
|
||||||
|
|
||||||
|
if (near.hitSector != nullptr && (tag = near.hitSector->lotag) > 0)
|
||||||
|
runlist_SignalRun(tag - 1, pPlayer->nPlayer, &ExhumedAI::Use);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void updatePlayerAction(Player* const pPlayer)
|
static void updatePlayerAction(Player* const pPlayer)
|
||||||
{
|
{
|
||||||
const auto pPlayerActor = pPlayer->pActor;
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
|
@ -1516,6 +1559,8 @@ static void updatePlayerAction(Player* const pPlayer)
|
||||||
|
|
||||||
if (pPlayer->input.actions & SB_FIRE) // was var_38
|
if (pPlayer->input.actions & SB_FIRE) // was var_38
|
||||||
{
|
{
|
||||||
|
pPlayer->bIsFiring = true;
|
||||||
|
|
||||||
if (bUnderwater)
|
if (bUnderwater)
|
||||||
{
|
{
|
||||||
nextAction = 11;
|
nextAction = 11;
|
||||||
|
@ -1525,6 +1570,10 @@ static void updatePlayerAction(Player* const pPlayer)
|
||||||
nextAction = 5;
|
nextAction = 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pPlayer->bIsFiring = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle player pressing number keys to change weapon
|
// Handle player pressing number keys to change weapon
|
||||||
|
@ -1753,40 +1802,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
||||||
updatePlayerInventory(pPlayer);
|
updatePlayerInventory(pPlayer);
|
||||||
updatePlayerWeapon(pPlayer);
|
updatePlayerWeapon(pPlayer);
|
||||||
doPlayerItemPickups(pPlayer);
|
doPlayerItemPickups(pPlayer);
|
||||||
|
doPlayerRunlistSignals(pPlayer, pStartSect);
|
||||||
if (bTouchFloor && pPlayerActor->sector()->lotag > 0)
|
|
||||||
runlist_SignalRun(pPlayerActor->sector()->lotag - 1, nPlayer, &ExhumedAI::TouchFloor);
|
|
||||||
|
|
||||||
if (pStartSect != pPlayerActor->sector())
|
|
||||||
{
|
|
||||||
if (pStartSect->lotag > 0)
|
|
||||||
runlist_SignalRun(pStartSect->lotag - 1, nPlayer, &ExhumedAI::EnterSector);
|
|
||||||
|
|
||||||
if (pPlayerActor->sector()->lotag > 0)
|
|
||||||
runlist_SignalRun(pPlayerActor->sector()->lotag - 1, nPlayer, &ExhumedAI::LeaveSector);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pPlayer->bIsMummified)
|
|
||||||
{
|
|
||||||
if (pPlayer->input.actions & SB_OPEN)
|
|
||||||
{
|
|
||||||
pPlayer->input.actions &= ~SB_OPEN;
|
|
||||||
|
|
||||||
// neartag finds the nearest sector, wall, and sprite which has its hitag and/or lotag set to a value.
|
|
||||||
HitInfo near;
|
|
||||||
neartag(pPlayerActor->spr.pos, pPlayerActor->sector(), pPlayerActor->spr.Angles.Yaw, near, 128., NT_Hitag | NT_NoSpriteCheck);
|
|
||||||
|
|
||||||
int tag;
|
|
||||||
if (near.hitWall != nullptr && (tag = near.hitWall->lotag) > 0)
|
|
||||||
runlist_SignalRun(tag - 1, nPlayer, &ExhumedAI::Use);
|
|
||||||
|
|
||||||
if (near.hitSector != nullptr && (tag = near.hitSector->lotag) > 0)
|
|
||||||
runlist_SignalRun(tag - 1, nPlayer, &ExhumedAI::Use);
|
|
||||||
}
|
|
||||||
|
|
||||||
pPlayer->bIsFiring = !!(pPlayer->input.actions & SB_FIRE);
|
|
||||||
}
|
|
||||||
|
|
||||||
updatePlayerAction(pPlayer);
|
updatePlayerAction(pPlayer);
|
||||||
doPlayerPitch(pPlayer);
|
doPlayerPitch(pPlayer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue