gzdoom-gles/src/g_shared/a_sharedglobal.h

188 lines
3.9 KiB
C++

#ifndef __A_SHAREDGLOBAL_H__
#define __A_SHAREDGLOBAL_H__
#include "dobject.h"
#include "info.h"
#include "actor.h"
class FDecal;
struct vertex_s;
struct side_s;
extern void P_SpawnDirt (AActor *actor, fixed_t radius);
class AUnknown : public AActor
{
DECLARE_ACTOR (AUnknown, AActor)
};
class APatrolPoint : public AActor
{
DECLARE_STATELESS_ACTOR (APatrolPoint, AActor)
};
class APatrolSpecial : public AActor
{
DECLARE_STATELESS_ACTOR (APatrolSpecial, AActor)
};
class ABlood : public AActor
{
DECLARE_ACTOR (ABlood, AActor)
public:
void SetDamage (int damage);
};
class AMapSpot : public AActor
{
DECLARE_STATELESS_ACTOR (AMapSpot, AActor)
};
class AMapSpotGravity : public AMapSpot
{
DECLARE_STATELESS_ACTOR (AMapSpotGravity, AMapSpot)
};
class ARealGibs : public AActor
{
DECLARE_ACTOR (ARealGibs, AActor)
};
struct side_s;
class ADecal : public AActor
{
DECLARE_STATELESS_ACTOR (ADecal, AActor)
public:
void BeginPlay ();
void Destroy ();
int StickToWall (side_s *wall);
void Relocate (fixed_t x, fixed_t y, fixed_t z);
fixed_t GetRealZ (const side_s *wall) const;
static void SerializeChain (FArchive &arc, ADecal **firstptr);
static void MoveChain (ADecal *first, fixed_t x, fixed_t y);
static void FixForSide (side_s *side);
protected:
void CalcFracPos (side_s *wall);
void DoTrace ();
void Remove ();
};
class AImpactDecal : public ADecal
{
DECLARE_STATELESS_ACTOR (AImpactDecal, ADecal)
public:
static AImpactDecal *StaticCreate (const char *name, fixed_t x, fixed_t y, fixed_t z, side_s *wall, PalEntry color=0);
static AImpactDecal *StaticCreate (const FDecal *decal, fixed_t x, fixed_t y, fixed_t z, side_s *wall, PalEntry color=0);
void BeginPlay ();
void Destroy ();
void Serialize (FArchive &arc);
static void SerializeTime (FArchive &arc);
protected:
AImpactDecal *CloneSelf (const FDecal *decal, fixed_t x, fixed_t y, fixed_t z, side_s *wall) const;
static void SpreadLeft (fixed_t r, vertex_s *v1, side_s *feelwall);
static void SpreadRight (fixed_t r, side_s *feelwall, fixed_t wallsize);
};
class AWaterSplashBase : public AActor
{
DECLARE_ACTOR (AWaterSplashBase, AActor)
};
class AWaterSplash : public AActor
{
DECLARE_ACTOR (AWaterSplash, AActor)
};
class ALavaSplash : public AActor
{
DECLARE_ACTOR (ALavaSplash, AActor)
};
class ALavaSmoke : public AActor
{
DECLARE_ACTOR (ALavaSmoke, AActor)
};
class ASludgeSplash : public AActor
{
DECLARE_ACTOR (ASludgeSplash, AActor)
};
class ASludgeChunk : public AActor
{
DECLARE_ACTOR (ASludgeChunk, AActor)
};
class AAmbientSound : public AActor
{
DECLARE_STATELESS_ACTOR (AAmbientSound, AActor)
public:
void Serialize (FArchive &arc);
void BeginPlay ();
void Tick ();
void Activate (AActor *activator);
void Deactivate (AActor *activator);
protected:
bool bActive;
private:
void SetTicker (struct AmbientSound *ambient);
int NextCheck;
};
class ATeleportFog : public AActor
{
DECLARE_ACTOR (ATeleportFog, AActor)
public:
void PostBeginPlay ();
};
class ATeleportDest : public AActor
{
DECLARE_STATELESS_ACTOR (ATeleportDest, AActor)
};
class ASkyViewpoint : public AActor
{
DECLARE_STATELESS_ACTOR (ASkyViewpoint, AActor)
public:
void Serialize (FArchive &arc);
void BeginPlay ();
bool bInSkybox;
bool bAlways;
ASkyViewpoint *Mate;
fixed_t PlaneAlpha;
};
class DFlashFader : public DThinker
{
DECLARE_CLASS (DFlashFader, DThinker)
HAS_OBJECT_POINTERS
public:
DFlashFader (float r1, float g1, float b1, float a1,
float r2, float g2, float b2, float a2,
float time, AActor *who);
~DFlashFader ();
void Serialize (FArchive &arc);
void Tick ();
AActor *WhoFor() { return ForWho; }
void Cancel ();
protected:
float Blends[2][4];
int TotalTics;
int StartTic;
AActor *ForWho;
void SetBlend (float time);
DFlashFader ();
};
#endif //__A_SHAREDGLOBAL_H__