mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 04:24:39 +00:00
- Exhumed: Split out player action sequence code.
This commit is contained in:
parent
77fa3f6ea9
commit
0230a51ce2
1 changed files with 53 additions and 45 deletions
|
@ -1431,6 +1431,58 @@ static void doPlayerPitch(Player* const pPlayer)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static void doPlayerActionSequence(Player* const pPlayer)
|
||||||
|
{
|
||||||
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
|
const auto nSeq = SeqOffsets[pPlayer->nSeq] + PlayerSeq[pPlayer->nAction].a;
|
||||||
|
|
||||||
|
seq_MoveSequence(pPlayerActor, nSeq, pPlayer->nSeqSize);
|
||||||
|
pPlayer->nSeqSize++;
|
||||||
|
|
||||||
|
if (pPlayer->nSeqSize >= SeqSize[nSeq])
|
||||||
|
{
|
||||||
|
pPlayer->nSeqSize = 0;
|
||||||
|
|
||||||
|
switch (pPlayer->nAction)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
pPlayer->nSeqSize = SeqSize[nSeq] - 1;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
pPlayer->nAction = 0;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
pPlayer->nSeqSize = SeqSize[nSeq] - 1;
|
||||||
|
|
||||||
|
if (pPlayerActor->spr.pos.Z < pPlayerActor->sector()->floorz)
|
||||||
|
pPlayerActor->spr.pos.Z++;
|
||||||
|
|
||||||
|
if (!RandomSize(5))
|
||||||
|
{
|
||||||
|
sectortype* mouthSect;
|
||||||
|
const auto pos = WheresMyMouth(pPlayer->nPlayer, &mouthSect);
|
||||||
|
BuildAnim(nullptr, 71, 0, DVector3(pos.XY(), pPlayerActor->spr.pos.Z + 15), mouthSect, 1.171875, 128);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
pPlayer->nAction = 18;
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
pPlayerActor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
||||||
|
pPlayer->nAction = 20;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void doPlayerDeathPitch(Player* const pPlayer)
|
static void doPlayerDeathPitch(Player* const pPlayer)
|
||||||
{
|
{
|
||||||
const auto pPlayerActor = pPlayer->pActor;
|
const auto pPlayerActor = pPlayer->pActor;
|
||||||
|
@ -1638,51 +1690,7 @@ void AIPlayer::Tick(RunListEvent* ev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int var_AC = SeqOffsets[pPlayer->nSeq] + PlayerSeq[pPlayer->nAction].a;
|
doPlayerActionSequence(pPlayer);
|
||||||
|
|
||||||
seq_MoveSequence(pPlayerActor, var_AC, pPlayer->nSeqSize);
|
|
||||||
pPlayer->nSeqSize++;
|
|
||||||
|
|
||||||
if (pPlayer->nSeqSize >= SeqSize[var_AC])
|
|
||||||
{
|
|
||||||
pPlayer->nSeqSize = 0;
|
|
||||||
|
|
||||||
switch (pPlayer->nAction)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
pPlayer->nSeqSize = SeqSize[var_AC] - 1;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
pPlayer->nAction = 0;
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
pPlayer->nSeqSize = SeqSize[var_AC] - 1;
|
|
||||||
|
|
||||||
if (pPlayerActor->spr.pos.Z < pPlayerActor->sector()->floorz)
|
|
||||||
{
|
|
||||||
pPlayerActor->spr.pos.Z++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!RandomSize(5))
|
|
||||||
{
|
|
||||||
sectortype* mouthSect;
|
|
||||||
auto pos = WheresMyMouth(nPlayer, &mouthSect);
|
|
||||||
|
|
||||||
BuildAnim(nullptr, 71, 0, DVector3(pos.XY(), pPlayerActor->spr.pos.Z + 15), mouthSect, 1.171875, 128);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 17:
|
|
||||||
pPlayer->nAction = 18;
|
|
||||||
break;
|
|
||||||
case 19:
|
|
||||||
pPlayerActor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
|
||||||
pPlayer->nAction = 20;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pPlayer->nHealth)
|
if (!pPlayer->nHealth)
|
||||||
doPlayerDeathPitch(pPlayer);
|
doPlayerDeathPitch(pPlayer);
|
||||||
|
|
Loading…
Reference in a new issue