mirror of
https://github.com/ZDoom/Raze.git
synced 2025-01-10 11:00:46 +00:00
2e0b9490e1
* Major pre-requisite for the next steps I'm undertaking, let's get it into the branch now.
62 lines
1.3 KiB
C++
62 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "coreactor.h"
|
|
|
|
BEGIN_PS_NS
|
|
|
|
|
|
enum
|
|
{
|
|
kHitAuxMask = 0x30000,
|
|
kHitAux1 = 0x10000,
|
|
kHitAux2 = 0x20000,
|
|
};
|
|
|
|
|
|
class DExhumedActor : public DCoreActor
|
|
{
|
|
DECLARE_CLASS(DExhumedActor, DCoreActor)
|
|
HAS_OBJECT_POINTERS
|
|
|
|
public:
|
|
TObjPtr<DExhumedActor*> pTarget;
|
|
|
|
int16_t nPhase;
|
|
|
|
int16_t nHealth;
|
|
int16_t nFrame;
|
|
int16_t nAction;
|
|
int16_t nCount;
|
|
int16_t nRun;
|
|
union { int16_t nIndex; int16_t nAngle; }; // angle is for wasp.
|
|
union { int16_t nIndex2; int16_t nAngle2; }; // index2 is for scorpion, angle2 is for wasp.
|
|
union { int16_t nChannel; int16_t nVel; }; // channel is for scorpion, vel is for wasp.
|
|
union { int16_t nDamage; int16_t nAction2; }; // nAction2 is for the queen.
|
|
DAngle pitch; // used by AngleChase
|
|
|
|
// for the grenade.
|
|
int nTurn;
|
|
DVector2 vec;
|
|
|
|
|
|
DExhumedActor() = default;
|
|
|
|
void Serialize(FSerializer& arc) override;
|
|
void VelFromAngle(int shift = 0)
|
|
{
|
|
vel.XY() = spr.Angles.Yaw.ToVector() * (1 << (10 + shift));
|
|
}
|
|
|
|
|
|
};
|
|
|
|
// subclassed to add a game specific actor() method
|
|
using HitInfo = THitInfo<DExhumedActor>;
|
|
using Collision = TCollision<DExhumedActor>;
|
|
|
|
using ExhumedStatIterator = TStatIterator<DExhumedActor>;
|
|
using ExhumedSectIterator = TSectIterator<DExhumedActor>;
|
|
using ExhumedSpriteIterator = TSpriteIterator<DExhumedActor>;
|
|
|
|
|
|
END_BLD_NS
|