- disabled the scripted virtual function module after finding out that it only works if each single class that may serve as a parent for scripting is explicitly declared.

Needless to say, this is simply too volatile and would require constant active maintenance, not to mention a huge amount of work up front to get going.
It also hid a nasty problem with the Destroy method. Due to the way the garbage collector works, Destroy cannot be exposed to scripts as-is. It may be called from scripts but it may not be overridden from scripts because the garbage collector can call this function after all data needed for calling a scripted override has already been destroyed because if that data is also being collected there is no guarantee that proper order of destruction is observed. So for now Destroy is just a normal native method to scripted classes
This commit is contained in:
Christoph Oelckers 2016-11-24 21:36:02 +01:00
parent 9ae272d753
commit 66d28a24b8
149 changed files with 727 additions and 759 deletions

View file

@ -584,7 +584,7 @@ public:
AActor () throw(); AActor () throw();
AActor (const AActor &other) throw(); AActor (const AActor &other) throw();
AActor &operator= (const AActor &other); AActor &operator= (const AActor &other);
void Destroy (); void Destroy () override;
~AActor (); ~AActor ();
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
@ -612,6 +612,7 @@ public:
bool CheckNoDelay(); bool CheckNoDelay();
virtual void BeginPlay(); // Called immediately after the actor is created virtual void BeginPlay(); // Called immediately after the actor is created
void CallBeginPlay();
virtual void PostBeginPlay(); // Called immediately before the actor's first tick virtual void PostBeginPlay(); // Called immediately before the actor's first tick
void LevelSpawned(); // Called after BeginPlay if this actor was spawned by the world void LevelSpawned(); // Called after BeginPlay if this actor was spawned by the world
virtual void HandleSpawnFlags(); // Translates SpawnFlags into in-game flags. virtual void HandleSpawnFlags(); // Translates SpawnFlags into in-game flags.
@ -620,6 +621,8 @@ public:
virtual void Activate (AActor *activator); virtual void Activate (AActor *activator);
virtual void Deactivate (AActor *activator); virtual void Deactivate (AActor *activator);
void CallActivate(AActor *activator);
void CallDeactivate(AActor *activator);
virtual void Tick (); virtual void Tick ();
@ -629,6 +632,7 @@ public:
// Perform some special damage action. Returns the amount of damage to do. // Perform some special damage action. Returns the amount of damage to do.
// Returning -1 signals the damage routine to exit immediately // Returning -1 signals the damage routine to exit immediately
virtual int DoSpecialDamage (AActor *target, int damage, FName damagetype); virtual int DoSpecialDamage (AActor *target, int damage, FName damagetype);
int CallDoSpecialDamage(AActor *target, int damage, FName damagetype);
// Like DoSpecialDamage, but called on the actor receiving the damage. // Like DoSpecialDamage, but called on the actor receiving the damage.
virtual int TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FName damagetype); virtual int TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FName damagetype);
@ -684,7 +688,8 @@ public:
virtual bool TakeInventory (PClassActor *itemclass, int amount, bool fromdecorate = false, bool notakeinfinite = false); virtual bool TakeInventory (PClassActor *itemclass, int amount, bool fromdecorate = false, bool notakeinfinite = false);
// Uses an item and removes it from the inventory. // Uses an item and removes it from the inventory.
virtual bool UseInventory (AInventory *item); virtual bool DoUseInventory (AInventory *item);
bool UseInventory(AInventory *item);
// Tosses an item out of the inventory. // Tosses an item out of the inventory.
virtual AInventory *DropInventory (AInventory *item); virtual AInventory *DropInventory (AInventory *item);

View file

@ -15,7 +15,7 @@
#include "serializer.h" #include "serializer.h"
#include "d_player.h" #include "d_player.h"
IMPLEMENT_CLASS(DBot, false, true, false, false) IMPLEMENT_CLASS(DBot, false, true)
IMPLEMENT_POINTERS_START(DBot) IMPLEMENT_POINTERS_START(DBot)
IMPLEMENT_POINTER(dest) IMPLEMENT_POINTER(dest)

View file

@ -187,7 +187,7 @@ static const char *KeyConfCommands[] =
// CODE -------------------------------------------------------------------- // CODE --------------------------------------------------------------------
IMPLEMENT_CLASS(DWaitingCommand, false, false, false, false) IMPLEMENT_CLASS(DWaitingCommand, false, false)
void DWaitingCommand::Serialize(FSerializer &arc) void DWaitingCommand::Serialize(FSerializer &arc)
{ {
@ -225,7 +225,7 @@ void DWaitingCommand::Tick ()
} }
} }
IMPLEMENT_CLASS(DStoredCommand, false, false, false, false) IMPLEMENT_CLASS(DStoredCommand, false, false)
DStoredCommand::DStoredCommand () DStoredCommand::DStoredCommand ()
{ {

View file

@ -221,7 +221,7 @@ DehInfo deh =
// from the original actor's defaults. The original actor is then changed to // from the original actor's defaults. The original actor is then changed to
// spawn the new class. // spawn the new class.
IMPLEMENT_CLASS(ADehackedPickup, false, true, false, false) IMPLEMENT_CLASS(ADehackedPickup, false, true)
IMPLEMENT_POINTERS_START(ADehackedPickup) IMPLEMENT_POINTERS_START(ADehackedPickup)
IMPLEMENT_POINTER(RealPickup) IMPLEMENT_POINTER(RealPickup)

View file

@ -41,7 +41,7 @@ class ADehackedPickup : public AInventory
DECLARE_CLASS (ADehackedPickup, AInventory) DECLARE_CLASS (ADehackedPickup, AInventory)
HAS_OBJECT_POINTERS HAS_OBJECT_POINTERS
public: public:
void Destroy (); void Destroy() override;
const char *PickupMessage (); const char *PickupMessage ();
bool ShouldRespawn (); bool ShouldRespawn ();
bool ShouldStay (); bool ShouldStay ();

View file

@ -109,7 +109,7 @@ public:
virtual void Tick(); virtual void Tick();
virtual void AddInventory (AInventory *item); virtual void AddInventory (AInventory *item);
virtual void RemoveInventory (AInventory *item); virtual void RemoveInventory (AInventory *item);
virtual bool UseInventory (AInventory *item); virtual bool DoUseInventory (AInventory *item);
virtual void MarkPrecacheSounds () const; virtual void MarkPrecacheSounds () const;
virtual void PlayIdle (); virtual void PlayIdle ();

View file

@ -119,7 +119,7 @@ protected:
DDecalThinker () : DThinker (STAT_DECALTHINKER) {} DDecalThinker () : DThinker (STAT_DECALTHINKER) {}
}; };
IMPLEMENT_CLASS(DDecalThinker, false, true, false, false) IMPLEMENT_CLASS(DDecalThinker, false, true)
IMPLEMENT_POINTERS_START(DDecalThinker) IMPLEMENT_POINTERS_START(DDecalThinker)
IMPLEMENT_POINTER(TheDecal) IMPLEMENT_POINTER(TheDecal)
@ -1153,7 +1153,7 @@ FDecalAnimator::~FDecalAnimator ()
{ {
} }
IMPLEMENT_CLASS(DDecalFader, false, false, false, false) IMPLEMENT_CLASS(DDecalFader, false, false)
void DDecalFader::Serialize(FSerializer &arc) void DDecalFader::Serialize(FSerializer &arc)
{ {
@ -1202,7 +1202,7 @@ DThinker *FDecalFaderAnim::CreateThinker (DBaseDecal *actor, side_t *wall) const
return fader; return fader;
} }
IMPLEMENT_CLASS(DDecalStretcher, false, false, false, false) IMPLEMENT_CLASS(DDecalStretcher, false, false)
void DDecalStretcher::Serialize(FSerializer &arc) void DDecalStretcher::Serialize(FSerializer &arc)
{ {
@ -1290,7 +1290,7 @@ void DDecalStretcher::Tick ()
} }
} }
IMPLEMENT_CLASS(DDecalSlider, false, false, false, false) IMPLEMENT_CLASS(DDecalSlider, false, false)
void DDecalSlider::Serialize(FSerializer &arc) void DDecalSlider::Serialize(FSerializer &arc)
{ {
@ -1370,7 +1370,7 @@ FDecalAnimator *FDecalLib::FindAnimator (const char *name)
return NULL; return NULL;
} }
IMPLEMENT_CLASS(DDecalColorer, false, false, false, false) IMPLEMENT_CLASS(DDecalColorer, false, false)
void DDecalColorer::Serialize(FSerializer &arc) void DDecalColorer::Serialize(FSerializer &arc)
{ {

View file

@ -61,7 +61,7 @@ ClassReg DObject::RegistrationInfo =
nullptr, // MyClass nullptr, // MyClass
"DObject", // Name "DObject", // Name
nullptr, // ParentType nullptr, // ParentType
&DVMObject<DObject>::RegistrationInfo, // VMExport nullptr,
nullptr, // Pointers nullptr, // Pointers
&DObject::InPlaceConstructor, // ConstructNative &DObject::InPlaceConstructor, // ConstructNative
nullptr, nullptr,
@ -358,7 +358,6 @@ void DObject::Destroy ()
DEFINE_ACTION_FUNCTION(DObject, Destroy) DEFINE_ACTION_FUNCTION(DObject, Destroy)
{ {
PARAM_SELF_PROLOGUE(DObject); PARAM_SELF_PROLOGUE(DObject);
self->VMSuperCall();
self->Destroy(); self->Destroy();
return 0; return 0;
} }

View file

@ -110,7 +110,7 @@ struct ClassReg
PClass *MyClass; PClass *MyClass;
const char *Name; const char *Name;
ClassReg *ParentType; ClassReg *ParentType;
ClassReg *VMExport; ClassReg *_VMExport;
const size_t *Pointers; const size_t *Pointers;
void (*ConstructNative)(void *); void (*ConstructNative)(void *);
void(*InitNatives)(); void(*InitNatives)();
@ -157,23 +157,23 @@ protected: \
# define _DECLARE_TI(cls) ClassReg * const cls::RegistrationInfoPtr __attribute__((section(SECTION_CREG))) = &cls::RegistrationInfo; # define _DECLARE_TI(cls) ClassReg * const cls::RegistrationInfoPtr __attribute__((section(SECTION_CREG))) = &cls::RegistrationInfo;
#endif #endif
#define _IMP_PCLASS(cls, ptrs, create, initn, vmexport) \ #define _IMP_PCLASS(cls, ptrs, create) \
ClassReg cls::RegistrationInfo = {\ ClassReg cls::RegistrationInfo = {\
nullptr, \ nullptr, \
#cls, \ #cls, \
&cls::Super::RegistrationInfo, \ &cls::Super::RegistrationInfo, \
vmexport, \ nullptr, \
ptrs, \ ptrs, \
create, \ create, \
initn, \ nullptr, \
sizeof(cls), \ sizeof(cls), \
cls::MetaClassNum }; \ cls::MetaClassNum }; \
_DECLARE_TI(cls) \ _DECLARE_TI(cls) \
PClass *cls::StaticType() const { return RegistrationInfo.MyClass; } PClass *cls::StaticType() const { return RegistrationInfo.MyClass; }
#define IMPLEMENT_CLASS(cls, isabstract, ptrs, fields, vmexport) \ #define IMPLEMENT_CLASS(cls, isabstract, ptrs) \
_X_CONSTRUCTOR_##isabstract(cls) \ _X_CONSTRUCTOR_##isabstract(cls) \
_IMP_PCLASS(cls, _X_POINTERS_##ptrs(cls), _X_ABSTRACT_##isabstract(cls), _X_FIELDS_##fields(cls), _X_VMEXPORT_##vmexport(cls)) _IMP_PCLASS(cls, _X_POINTERS_##ptrs(cls), _X_ABSTRACT_##isabstract(cls))
// Taking the address of a field in an object at address 1 instead of // Taking the address of a field in an object at address 1 instead of
// address 0 keeps GCC from complaining about possible misuse of offsetof. // address 0 keeps GCC from complaining about possible misuse of offsetof.
@ -190,7 +190,7 @@ protected: \
#define _X_CONSTRUCTOR_false(cls) void cls::InPlaceConstructor(void *mem) { new((EInPlace *)mem) cls; } #define _X_CONSTRUCTOR_false(cls) void cls::InPlaceConstructor(void *mem) { new((EInPlace *)mem) cls; }
#define _X_ABSTRACT_true(cls) nullptr #define _X_ABSTRACT_true(cls) nullptr
#define _X_ABSTRACT_false(cls) cls::InPlaceConstructor #define _X_ABSTRACT_false(cls) cls::InPlaceConstructor
#define _X_VMEXPORT_true(cls) &DVMObject<cls>::RegistrationInfo #define _X_VMEXPORT_true(cls) nullptr
#define _X_VMEXPORT_false(cls) nullptr #define _X_VMEXPORT_false(cls) nullptr
enum EObjectFlags enum EObjectFlags
@ -481,7 +481,7 @@ public:
// that don't call their base class. // that don't call their base class.
void CheckIfSerialized () const; void CheckIfSerialized () const;
virtual void Destroy (); virtual void Destroy();
// If you need to replace one object with another and want to // If you need to replace one object with another and want to
// change any pointers from the old object to the new object, // change any pointers from the old object to the new object,

View file

@ -125,7 +125,7 @@ public:
int SideNum; int SideNum;
}; };
IMPLEMENT_CLASS(DSectorMarker, false, false, false, false) IMPLEMENT_CLASS(DSectorMarker, false, false)
// EXTERNAL FUNCTION PROTOTYPES -------------------------------------------- // EXTERNAL FUNCTION PROTOTYPES --------------------------------------------

View file

@ -97,8 +97,8 @@ static const size_t TheEnd = ~(size_t)0;
// CODE -------------------------------------------------------------------- // CODE --------------------------------------------------------------------
IMPLEMENT_CLASS(PErrorType, false, false, false, false) IMPLEMENT_CLASS(PErrorType, false, false)
IMPLEMENT_CLASS(PVoidType, false, false, false, false) IMPLEMENT_CLASS(PVoidType, false, false)
void DumpTypeTable() void DumpTypeTable()
{ {
@ -145,7 +145,7 @@ void DumpTypeTable()
/* PClassType *************************************************************/ /* PClassType *************************************************************/
IMPLEMENT_CLASS(PClassType, false, false, false, false) IMPLEMENT_CLASS(PClassType, false, false)
//========================================================================== //==========================================================================
// //
@ -173,7 +173,7 @@ void PClassType::DeriveData(PClass *newclass)
/* PClassClass ************************************************************/ /* PClassClass ************************************************************/
IMPLEMENT_CLASS(PClassClass, false, false, false, false) IMPLEMENT_CLASS(PClassClass, false, false)
//========================================================================== //==========================================================================
// //
@ -191,7 +191,7 @@ PClassClass::PClassClass()
/* PType ******************************************************************/ /* PType ******************************************************************/
IMPLEMENT_CLASS(PType, true, true, false, false) IMPLEMENT_CLASS(PType, true, true)
IMPLEMENT_POINTERS_START(PType) IMPLEMENT_POINTERS_START(PType)
IMPLEMENT_POINTER(HashNext) IMPLEMENT_POINTER(HashNext)
@ -647,7 +647,7 @@ void PType::StaticInit()
/* PBasicType *************************************************************/ /* PBasicType *************************************************************/
IMPLEMENT_CLASS(PBasicType, true, false, false, false) IMPLEMENT_CLASS(PBasicType, true, false)
//========================================================================== //==========================================================================
// //
@ -673,11 +673,11 @@ PBasicType::PBasicType(unsigned int size, unsigned int align)
/* PCompoundType **********************************************************/ /* PCompoundType **********************************************************/
IMPLEMENT_CLASS(PCompoundType, true, false, false, false) IMPLEMENT_CLASS(PCompoundType, true, false)
/* PNamedType *************************************************************/ /* PNamedType *************************************************************/
IMPLEMENT_CLASS(PNamedType, true, true, false, false) IMPLEMENT_CLASS(PNamedType, true, true)
IMPLEMENT_POINTERS_START(PNamedType) IMPLEMENT_POINTERS_START(PNamedType)
IMPLEMENT_POINTER(Outer) IMPLEMENT_POINTER(Outer)
@ -725,7 +725,7 @@ FString PNamedType::QualifiedName() const
/* PInt *******************************************************************/ /* PInt *******************************************************************/
IMPLEMENT_CLASS(PInt, false, false, false, false) IMPLEMENT_CLASS(PInt, false, false)
//========================================================================== //==========================================================================
// //
@ -964,7 +964,7 @@ double PInt::GetValueFloat(void *addr) const
/* PBool ******************************************************************/ /* PBool ******************************************************************/
IMPLEMENT_CLASS(PBool, false, false, false, false) IMPLEMENT_CLASS(PBool, false, false)
//========================================================================== //==========================================================================
// //
@ -985,7 +985,7 @@ PBool::PBool()
/* PFloat *****************************************************************/ /* PFloat *****************************************************************/
IMPLEMENT_CLASS(PFloat, false, false, false, false) IMPLEMENT_CLASS(PFloat, false, false)
//========================================================================== //==========================================================================
// //
@ -1235,7 +1235,7 @@ void PFloat::SetOps()
/* PString ****************************************************************/ /* PString ****************************************************************/
IMPLEMENT_CLASS(PString, false, false, false, false) IMPLEMENT_CLASS(PString, false, false)
//========================================================================== //==========================================================================
// //
@ -1332,7 +1332,7 @@ void PString::DestroyValue(void *addr) const
/* PName ******************************************************************/ /* PName ******************************************************************/
IMPLEMENT_CLASS(PName, false, false, false, false) IMPLEMENT_CLASS(PName, false, false)
//========================================================================== //==========================================================================
// //
@ -1382,7 +1382,7 @@ bool PName::ReadValue(FSerializer &ar, const char *key, void *addr) const
/* PSpriteID ******************************************************************/ /* PSpriteID ******************************************************************/
IMPLEMENT_CLASS(PSpriteID, false, false, false, false) IMPLEMENT_CLASS(PSpriteID, false, false)
//========================================================================== //==========================================================================
// //
@ -1424,7 +1424,7 @@ bool PSpriteID::ReadValue(FSerializer &ar, const char *key, void *addr) const
/* PTextureID ******************************************************************/ /* PTextureID ******************************************************************/
IMPLEMENT_CLASS(PTextureID, false, false, false, false) IMPLEMENT_CLASS(PTextureID, false, false)
//========================================================================== //==========================================================================
// //
@ -1467,7 +1467,7 @@ bool PTextureID::ReadValue(FSerializer &ar, const char *key, void *addr) const
/* PSound *****************************************************************/ /* PSound *****************************************************************/
IMPLEMENT_CLASS(PSound, false, false, false, false) IMPLEMENT_CLASS(PSound, false, false)
//========================================================================== //==========================================================================
// //
@ -1517,7 +1517,7 @@ bool PSound::ReadValue(FSerializer &ar, const char *key, void *addr) const
/* PColor *****************************************************************/ /* PColor *****************************************************************/
IMPLEMENT_CLASS(PColor, false, false, false, false) IMPLEMENT_CLASS(PColor, false, false)
//========================================================================== //==========================================================================
// //
@ -1534,7 +1534,7 @@ PColor::PColor()
/* PStateLabel *****************************************************************/ /* PStateLabel *****************************************************************/
IMPLEMENT_CLASS(PStateLabel, false, false, false, false) IMPLEMENT_CLASS(PStateLabel, false, false)
//========================================================================== //==========================================================================
// //
@ -1550,7 +1550,7 @@ PStateLabel::PStateLabel()
/* PPointer ***************************************************************/ /* PPointer ***************************************************************/
IMPLEMENT_CLASS(PPointer, false, true, false, false) IMPLEMENT_CLASS(PPointer, false, true)
IMPLEMENT_POINTERS_START(PPointer) IMPLEMENT_POINTERS_START(PPointer)
IMPLEMENT_POINTER(PointedType) IMPLEMENT_POINTER(PointedType)
@ -1695,7 +1695,7 @@ PPointer *NewPointer(PType *type, bool isconst)
/* PStatePointer **********************************************************/ /* PStatePointer **********************************************************/
IMPLEMENT_CLASS(PStatePointer, false, false, false, false) IMPLEMENT_CLASS(PStatePointer, false, false)
//========================================================================== //==========================================================================
// //
@ -1738,7 +1738,7 @@ bool PStatePointer::ReadValue(FSerializer &ar, const char *key, void *addr) cons
/* PClassPointer **********************************************************/ /* PClassPointer **********************************************************/
IMPLEMENT_CLASS(PClassPointer, false, true, false, false) IMPLEMENT_CLASS(PClassPointer,false, true)
IMPLEMENT_POINTERS_START(PClassPointer) IMPLEMENT_POINTERS_START(PClassPointer)
IMPLEMENT_POINTER(ClassRestriction) IMPLEMENT_POINTER(ClassRestriction)
@ -1819,7 +1819,7 @@ PClassPointer *NewClassPointer(PClass *restrict)
/* PEnum ******************************************************************/ /* PEnum ******************************************************************/
IMPLEMENT_CLASS(PEnum, false, true, false, false) IMPLEMENT_CLASS(PEnum, false, true)
IMPLEMENT_POINTERS_START(PEnum) IMPLEMENT_POINTERS_START(PEnum)
IMPLEMENT_POINTER(ValueType) IMPLEMENT_POINTER(ValueType)
@ -1872,7 +1872,7 @@ PEnum *NewEnum(FName name, PTypeBase *outer)
/* PArray *****************************************************************/ /* PArray *****************************************************************/
IMPLEMENT_CLASS(PArray, false, true, false, false) IMPLEMENT_CLASS(PArray, false, true)
IMPLEMENT_POINTERS_START(PArray) IMPLEMENT_POINTERS_START(PArray)
IMPLEMENT_POINTER(ElementType) IMPLEMENT_POINTER(ElementType)
@ -2035,7 +2035,7 @@ PArray *NewArray(PType *type, unsigned int count)
/* PDynArray **************************************************************/ /* PDynArray **************************************************************/
IMPLEMENT_CLASS(PDynArray, false, true, false, false) IMPLEMENT_CLASS(PDynArray, false, true)
IMPLEMENT_POINTERS_START(PDynArray) IMPLEMENT_POINTERS_START(PDynArray)
IMPLEMENT_POINTER(ElementType) IMPLEMENT_POINTER(ElementType)
@ -2118,7 +2118,7 @@ PDynArray *NewDynArray(PType *type)
/* PMap *******************************************************************/ /* PMap *******************************************************************/
IMPLEMENT_CLASS(PMap, false, true, false, false) IMPLEMENT_CLASS(PMap, false, true)
IMPLEMENT_POINTERS_START(PMap) IMPLEMENT_POINTERS_START(PMap)
IMPLEMENT_POINTER(KeyType) IMPLEMENT_POINTER(KeyType)
@ -2202,7 +2202,7 @@ PMap *NewMap(PType *keytype, PType *valuetype)
/* PStruct ****************************************************************/ /* PStruct ****************************************************************/
IMPLEMENT_CLASS(PStruct, false, false, false, false) IMPLEMENT_CLASS(PStruct, false, false)
//========================================================================== //==========================================================================
// //
@ -2440,7 +2440,7 @@ PStruct *NewStruct(FName name, PTypeBase *outer)
/* PNativeStruct ****************************************************************/ /* PNativeStruct ****************************************************************/
IMPLEMENT_CLASS(PNativeStruct, false, false, false, false) IMPLEMENT_CLASS(PNativeStruct, false, false)
//========================================================================== //==========================================================================
// //
@ -2478,7 +2478,7 @@ PNativeStruct *NewNativeStruct(FName name, PTypeBase *outer)
/* PField *****************************************************************/ /* PField *****************************************************************/
IMPLEMENT_CLASS(PField, false, false, false, false) IMPLEMENT_CLASS(PField, false, false)
//========================================================================== //==========================================================================
// //
@ -2523,7 +2523,7 @@ PField::PField(FName name, PType *type, DWORD flags, size_t offset, int bitvalue
/* PPrototype *************************************************************/ /* PPrototype *************************************************************/
IMPLEMENT_CLASS(PPrototype, false, false, false, false) IMPLEMENT_CLASS(PPrototype, false, false)
//========================================================================== //==========================================================================
// //
@ -2609,7 +2609,7 @@ PPrototype *NewPrototype(const TArray<PType *> &rettypes, const TArray<PType *>
/* PFunction **************************************************************/ /* PFunction **************************************************************/
IMPLEMENT_CLASS(PFunction, false, false, false, false) IMPLEMENT_CLASS(PFunction, false, false)
//========================================================================== //==========================================================================
// //
@ -2672,7 +2672,7 @@ unsigned PFunction::AddVariant(PPrototype *proto, TArray<DWORD> &argflags, TArra
/* PClass *****************************************************************/ /* PClass *****************************************************************/
IMPLEMENT_CLASS(PClass, false, true, false, false) IMPLEMENT_CLASS(PClass, false, true)
IMPLEMENT_POINTERS_START(PClass) IMPLEMENT_POINTERS_START(PClass)
IMPLEMENT_POINTER(ParentClass) IMPLEMENT_POINTER(ParentClass)
@ -2907,7 +2907,6 @@ void PClass::StaticShutdown ()
{ {
auto cr = ((ClassReg *)*probe); auto cr = ((ClassReg *)*probe);
cr->MyClass = nullptr; cr->MyClass = nullptr;
if (cr->VMExport != nullptr) cr->VMExport->MyClass = nullptr;
} }
} }
@ -3034,10 +3033,6 @@ PClass *ClassReg::RegisterClass()
{ {
cls->ParentClass = ParentType->RegisterClass(); cls->ParentClass = ParentType->RegisterClass();
} }
if (VMExport != nullptr)
{
cls->VMExported = VMExport->RegisterClass();
}
return cls; return cls;
} }
@ -3717,19 +3712,19 @@ CCMD(typetable)
// Symbol tables ------------------------------------------------------------ // Symbol tables ------------------------------------------------------------
IMPLEMENT_CLASS(PTypeBase, true, false, false, false); IMPLEMENT_CLASS(PTypeBase, true, false);
IMPLEMENT_CLASS(PSymbol, true, false, false, false); IMPLEMENT_CLASS(PSymbol, true, false);
IMPLEMENT_CLASS(PSymbolConst, false, false, false, false); IMPLEMENT_CLASS(PSymbolConst, false, false);
IMPLEMENT_CLASS(PSymbolConstNumeric, false, false, false, false); IMPLEMENT_CLASS(PSymbolConstNumeric, false, false);
IMPLEMENT_CLASS(PSymbolConstString, false, false, false, false); IMPLEMENT_CLASS(PSymbolConstString, false, false);
IMPLEMENT_CLASS(PSymbolTreeNode, false, false, false, false) IMPLEMENT_CLASS(PSymbolTreeNode, false, false)
IMPLEMENT_CLASS(PSymbolType, false, true, false, false) IMPLEMENT_CLASS(PSymbolType, false, true)
IMPLEMENT_POINTERS_START(PSymbolType) IMPLEMENT_POINTERS_START(PSymbolType)
IMPLEMENT_POINTER(Type) IMPLEMENT_POINTER(Type)
IMPLEMENT_POINTERS_END IMPLEMENT_POINTERS_END
IMPLEMENT_CLASS(PSymbolVMFunction, false, true, false, false) IMPLEMENT_CLASS(PSymbolVMFunction, false, true)
IMPLEMENT_POINTERS_START(PSymbolVMFunction) IMPLEMENT_POINTERS_START(PSymbolVMFunction)
IMPLEMENT_POINTER(Function) IMPLEMENT_POINTER(Function)

View file

@ -809,7 +809,6 @@ public:
// Per-class information ------------------------------------- // Per-class information -------------------------------------
PClass *ParentClass; // the class this class derives from PClass *ParentClass; // the class this class derives from
PClass *VMExported; // this is here to allow script classes to override native virtual functions
const size_t *Pointers; // object pointers defined by this class *only* const size_t *Pointers; // object pointers defined by this class *only*
const size_t *FlatPointers; // object pointers defined by this class and all its superclasses; not initialized by default const size_t *FlatPointers; // object pointers defined by this class and all its superclasses; not initialized by default
BYTE *Defaults; BYTE *Defaults;

View file

@ -31,7 +31,7 @@
#include "serializer.h" #include "serializer.h"
#include "doomstat.h" #include "doomstat.h"
IMPLEMENT_CLASS(DSectorEffect, false, false, false, false) IMPLEMENT_CLASS(DSectorEffect, false, false)
DSectorEffect::DSectorEffect () DSectorEffect::DSectorEffect ()
: DThinker(STAT_SECTOREFFECT) : DThinker(STAT_SECTOREFFECT)
@ -71,7 +71,7 @@ void DSectorEffect::Serialize(FSerializer &arc)
arc("sector", m_Sector); arc("sector", m_Sector);
} }
IMPLEMENT_CLASS(DMover, false, true, false, false) IMPLEMENT_CLASS(DMover, false, true)
IMPLEMENT_POINTERS_START(DMover) IMPLEMENT_POINTERS_START(DMover)
IMPLEMENT_POINTER(interpolation) IMPLEMENT_POINTER(interpolation)
@ -108,7 +108,7 @@ void DMover::StopInterpolation(bool force)
} }
} }
IMPLEMENT_CLASS(DMovingFloor, false, false, false, false) IMPLEMENT_CLASS(DMovingFloor, false, false)
DMovingFloor::DMovingFloor () DMovingFloor::DMovingFloor ()
{ {
@ -121,7 +121,7 @@ DMovingFloor::DMovingFloor (sector_t *sector)
interpolation = sector->SetInterpolation(sector_t::FloorMove, true); interpolation = sector->SetInterpolation(sector_t::FloorMove, true);
} }
IMPLEMENT_CLASS(DMovingCeiling, false, false, false, false) IMPLEMENT_CLASS(DMovingCeiling, false, false)
DMovingCeiling::DMovingCeiling () DMovingCeiling::DMovingCeiling ()
{ {

View file

@ -12,7 +12,7 @@ public:
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
void Destroy(); void Destroy() override;
sector_t *GetSector() const { return m_Sector; } sector_t *GetSector() const { return m_Sector; }
@ -35,7 +35,7 @@ protected:
DMover (); DMover ();
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
void Destroy(); void Destroy() override;
}; };
class DMovingFloor : public DMover class DMovingFloor : public DMover

View file

@ -48,7 +48,7 @@ extern cycle_t BotSupportCycles;
extern cycle_t ActionCycles; extern cycle_t ActionCycles;
extern int BotWTG; extern int BotWTG;
IMPLEMENT_CLASS(DThinker, false, false, false, true) IMPLEMENT_CLASS(DThinker, false, false)
DThinker *NextToThink; DThinker *NextToThink;
@ -56,6 +56,12 @@ FThinkerList DThinker::Thinkers[MAX_STATNUM+2];
FThinkerList DThinker::FreshThinkers[MAX_STATNUM+1]; FThinkerList DThinker::FreshThinkers[MAX_STATNUM+1];
bool DThinker::bSerialOverride = false; bool DThinker::bSerialOverride = false;
//==========================================================================
//
//
//
//==========================================================================
void FThinkerList::AddTail(DThinker *thinker) void FThinkerList::AddTail(DThinker *thinker)
{ {
assert(thinker->PrevThinker == NULL && thinker->NextThinker == NULL); assert(thinker->PrevThinker == NULL && thinker->NextThinker == NULL);
@ -80,6 +86,12 @@ void FThinkerList::AddTail(DThinker *thinker)
GC::WriteBarrier(Sentinel, thinker); GC::WriteBarrier(Sentinel, thinker);
} }
//==========================================================================
//
//
//
//==========================================================================
DThinker *FThinkerList::GetHead() const DThinker *FThinkerList::GetHead() const
{ {
if (Sentinel == NULL || Sentinel->NextThinker == Sentinel) if (Sentinel == NULL || Sentinel->NextThinker == Sentinel)
@ -90,6 +102,12 @@ DThinker *FThinkerList::GetHead() const
return Sentinel->NextThinker; return Sentinel->NextThinker;
} }
//==========================================================================
//
//
//
//==========================================================================
DThinker *FThinkerList::GetTail() const DThinker *FThinkerList::GetTail() const
{ {
if (Sentinel == NULL || Sentinel->PrevThinker == Sentinel) if (Sentinel == NULL || Sentinel->PrevThinker == Sentinel)
@ -99,11 +117,23 @@ DThinker *FThinkerList::GetTail() const
return Sentinel->PrevThinker; return Sentinel->PrevThinker;
} }
//==========================================================================
//
//
//
//==========================================================================
bool FThinkerList::IsEmpty() const bool FThinkerList::IsEmpty() const
{ {
return Sentinel == NULL || Sentinel->NextThinker == NULL; return Sentinel == NULL || Sentinel->NextThinker == NULL;
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::SaveList(FSerializer &arc, DThinker *node) void DThinker::SaveList(FSerializer &arc, DThinker *node)
{ {
if (node != NULL) if (node != NULL)
@ -234,6 +264,12 @@ void DThinker::Destroy ()
Super::Destroy(); Super::Destroy();
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::Remove() void DThinker::Remove()
{ {
if (this == NextToThink) if (this == NextToThink)
@ -254,6 +290,12 @@ void DThinker::Remove()
PrevThinker = NULL; PrevThinker = NULL;
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::PostBeginPlay () void DThinker::PostBeginPlay ()
{ {
} }
@ -261,15 +303,41 @@ void DThinker::PostBeginPlay ()
DEFINE_ACTION_FUNCTION(DThinker, PostBeginPlay) DEFINE_ACTION_FUNCTION(DThinker, PostBeginPlay)
{ {
PARAM_SELF_PROLOGUE(DThinker); PARAM_SELF_PROLOGUE(DThinker);
self->VMSuperCall();
self->PostBeginPlay(); self->PostBeginPlay();
return 0; return 0;
} }
void DThinker::CallPostBeginPlay()
{
IFVIRTUAL(DThinker, PostBeginPlay)
{
// Without the type cast this picks the 'void *' assignment...
VMValue params[1] = { (DObject*)this };
VMFrameStack stack;
stack.Call(func, params, 1, nullptr, 0, nullptr);
}
else
{
PostBeginPlay();
}
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::PostSerialize() void DThinker::PostSerialize()
{ {
} }
//==========================================================================
//
//
//
//==========================================================================
DThinker *DThinker::FirstThinker (int statnum) DThinker *DThinker::FirstThinker (int statnum)
{ {
DThinker *node; DThinker *node;
@ -290,6 +358,12 @@ DThinker *DThinker::FirstThinker (int statnum)
return node; return node;
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::ChangeStatNum (int statnum) void DThinker::ChangeStatNum (int statnum)
{ {
FThinkerList *list; FThinkerList *list;
@ -313,7 +387,12 @@ void DThinker::ChangeStatNum (int statnum)
list->AddTail(this); list->AddTail(this);
} }
//==========================================================================
//
// Mark the first thinker of each list // Mark the first thinker of each list
//
//==========================================================================
void DThinker::MarkRoots() void DThinker::MarkRoots()
{ {
for (int i = 0; i <= MAX_STATNUM; ++i) for (int i = 0; i <= MAX_STATNUM; ++i)
@ -324,7 +403,12 @@ void DThinker::MarkRoots()
GC::Mark(Thinkers[MAX_STATNUM+1].Sentinel); GC::Mark(Thinkers[MAX_STATNUM+1].Sentinel);
} }
//==========================================================================
//
// Destroy every thinker // Destroy every thinker
//
//==========================================================================
void DThinker::DestroyAllThinkers () void DThinker::DestroyAllThinkers ()
{ {
int i; int i;
@ -341,6 +425,12 @@ void DThinker::DestroyAllThinkers ()
GC::FullGC(); GC::FullGC();
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::DestroyThinkersInList (FThinkerList &list) void DThinker::DestroyThinkersInList (FThinkerList &list)
{ {
if (list.Sentinel != NULL) if (list.Sentinel != NULL)
@ -355,6 +445,12 @@ void DThinker::DestroyThinkersInList (FThinkerList &list)
} }
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::RunThinkers () void DThinker::RunThinkers ()
{ {
int i, count; int i, count;
@ -385,6 +481,12 @@ void DThinker::RunThinkers ()
ThinkCycles.Unclock(); ThinkCycles.Unclock();
} }
//==========================================================================
//
//
//
//==========================================================================
int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest) int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
{ {
int count = 0; int count = 0;
@ -407,7 +509,7 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
node->Remove(); node->Remove();
dest->AddTail(node); dest->AddTail(node);
} }
node->PostBeginPlay(); node->CallPostBeginPlay();
} }
else if (dest != NULL) else if (dest != NULL)
{ {
@ -416,7 +518,7 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
if (!(node->ObjectFlags & OF_EuthanizeMe)) if (!(node->ObjectFlags & OF_EuthanizeMe))
{ // Only tick thinkers not scheduled for destruction { // Only tick thinkers not scheduled for destruction
node->Tick(); node->CallTick();
node->ObjectFlags &= ~OF_JustSpawned; node->ObjectFlags &= ~OF_JustSpawned;
GC::CheckGC(); GC::CheckGC();
} }
@ -425,6 +527,12 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
return count; return count;
} }
//==========================================================================
//
//
//
//==========================================================================
void DThinker::Tick () void DThinker::Tick ()
{ {
} }
@ -432,11 +540,28 @@ void DThinker::Tick ()
DEFINE_ACTION_FUNCTION(DThinker, Tick) DEFINE_ACTION_FUNCTION(DThinker, Tick)
{ {
PARAM_SELF_PROLOGUE(DThinker); PARAM_SELF_PROLOGUE(DThinker);
self->VMSuperCall();
self->Tick(); self->Tick();
return 0; return 0;
} }
void DThinker::CallTick()
{
IFVIRTUAL(DThinker, Tick)
{
// Without the type cast this picks the 'void *' assignment...
VMValue params[1] = { (DObject*)this };
VMFrameStack stack;
stack.Call(func, params, 1, nullptr, 0, nullptr);
}
else Tick();
}
//==========================================================================
//
//
//
//==========================================================================
size_t DThinker::PropagateMark() size_t DThinker::PropagateMark()
{ {
// Do not choke on partially initialized objects (as happens when loading a savegame fails) // Do not choke on partially initialized objects (as happens when loading a savegame fails)
@ -450,6 +575,12 @@ size_t DThinker::PropagateMark()
return Super::PropagateMark(); return Super::PropagateMark();
} }
//==========================================================================
//
//
//
//==========================================================================
FThinkerIterator::FThinkerIterator (const PClass *type, int statnum) FThinkerIterator::FThinkerIterator (const PClass *type, int statnum)
{ {
if ((unsigned)statnum > MAX_STATNUM) if ((unsigned)statnum > MAX_STATNUM)
@ -467,6 +598,12 @@ FThinkerIterator::FThinkerIterator (const PClass *type, int statnum)
m_SearchingFresh = false; m_SearchingFresh = false;
} }
//==========================================================================
//
//
//
//==========================================================================
FThinkerIterator::FThinkerIterator (const PClass *type, int statnum, DThinker *prev) FThinkerIterator::FThinkerIterator (const PClass *type, int statnum, DThinker *prev)
{ {
if ((unsigned)statnum > MAX_STATNUM) if ((unsigned)statnum > MAX_STATNUM)
@ -491,12 +628,24 @@ FThinkerIterator::FThinkerIterator (const PClass *type, int statnum, DThinker *p
} }
} }
//==========================================================================
//
//
//
//==========================================================================
void FThinkerIterator::Reinit () void FThinkerIterator::Reinit ()
{ {
m_CurrThinker = DThinker::Thinkers[m_Stat].GetHead(); m_CurrThinker = DThinker::Thinkers[m_Stat].GetHead();
m_SearchingFresh = false; m_SearchingFresh = false;
} }
//==========================================================================
//
//
//
//==========================================================================
DThinker *FThinkerIterator::Next (bool exact) DThinker *FThinkerIterator::Next (bool exact)
{ {
if (m_ParentType == NULL) if (m_ParentType == NULL)
@ -542,8 +691,13 @@ DThinker *FThinkerIterator::Next (bool exact)
return NULL; return NULL;
} }
//==========================================================================
//
// This is for scripting, which needs the iterator wrapped into an object with the needed functions exported. // This is for scripting, which needs the iterator wrapped into an object with the needed functions exported.
// Unfortunately we cannot have templated type conversions in scripts. // Unfortunately we cannot have templated type conversions in scripts.
//
//==========================================================================
class DThinkerIterator : public DObject, public FThinkerIterator class DThinkerIterator : public DObject, public FThinkerIterator
{ {
DECLARE_CLASS(DThinkerIterator, DObject) DECLARE_CLASS(DThinkerIterator, DObject)
@ -555,7 +709,7 @@ public:
} }
}; };
IMPLEMENT_CLASS(DThinkerIterator, false, false, false, false); IMPLEMENT_CLASS(DThinkerIterator, false, false);
DEFINE_ACTION_FUNCTION(DThinkerIterator, Create) DEFINE_ACTION_FUNCTION(DThinkerIterator, Create)
{ {
PARAM_PROLOGUE; PARAM_PROLOGUE;
@ -577,8 +731,11 @@ DEFINE_ACTION_FUNCTION(DThinkerIterator, Reinit)
return 0; return 0;
} }
//==========================================================================
//
//
//
//==========================================================================
ADD_STAT (think) ADD_STAT (think)
{ {

View file

@ -66,10 +66,12 @@ class DThinker : public DObject
DECLARE_CLASS (DThinker, DObject) DECLARE_CLASS (DThinker, DObject)
public: public:
DThinker (int statnum = STAT_DEFAULT) throw(); DThinker (int statnum = STAT_DEFAULT) throw();
void Destroy (); void Destroy () override;
virtual ~DThinker (); virtual ~DThinker ();
virtual void Tick (); virtual void Tick ();
void CallTick();
virtual void PostBeginPlay (); // Called just before the first tick virtual void PostBeginPlay (); // Called just before the first tick
void CallPostBeginPlay();
virtual void PostSerialize(); virtual void PostSerialize();
size_t PropagateMark(); size_t PropagateMark();

View file

@ -1785,7 +1785,7 @@ public:
void Destroy() { Super::Destroy(); m_Sector->lightingdata=NULL; } void Destroy() { Super::Destroy(); m_Sector->lightingdata=NULL; }
}; };
IMPLEMENT_CLASS(DLightLevel, false, false, false, false) IMPLEMENT_CLASS(DLightLevel, false, false)
void DLightLevel::Serialize(FSerializer &arc) void DLightLevel::Serialize(FSerializer &arc)
{ {
@ -2975,7 +2975,7 @@ void FParser::SF_ObjAwaken(void)
if(mo) if(mo)
{ {
mo->Activate(Script->trigger); mo->CallActivate(Script->trigger);
} }
} }

View file

@ -71,7 +71,7 @@
// //
//========================================================================== //==========================================================================
IMPLEMENT_CLASS(DFsSection, false, true, false, false) IMPLEMENT_CLASS(DFsSection, false, true)
IMPLEMENT_POINTERS_START(DFsSection) IMPLEMENT_POINTERS_START(DFsSection)
IMPLEMENT_POINTER(next) IMPLEMENT_POINTER(next)

View file

@ -99,7 +99,7 @@ AActor *trigger_obj;
// //
//========================================================================== //==========================================================================
IMPLEMENT_CLASS(DFsScript, false, true, false, false) IMPLEMENT_CLASS(DFsScript, false, true)
IMPLEMENT_POINTERS_START(DFsScript) IMPLEMENT_POINTERS_START(DFsScript)
IMPLEMENT_POINTER(parent) IMPLEMENT_POINTER(parent)
@ -269,7 +269,7 @@ void DFsScript::ParseScript(char *position)
// //
//========================================================================== //==========================================================================
IMPLEMENT_CLASS(DRunningScript, false, true, false, false) IMPLEMENT_CLASS(DRunningScript, false, true)
IMPLEMENT_POINTERS_START(DRunningScript) IMPLEMENT_POINTERS_START(DRunningScript)
IMPLEMENT_POINTER(prev) IMPLEMENT_POINTER(prev)
@ -380,7 +380,7 @@ void DRunningScript::Serialize(FSerializer &arc)
// //
//========================================================================== //==========================================================================
IMPLEMENT_CLASS(DFraggleThinker, false, true, false, false) IMPLEMENT_CLASS(DFraggleThinker, false, true)
IMPLEMENT_POINTERS_START(DFraggleThinker) IMPLEMENT_POINTERS_START(DFraggleThinker)
IMPLEMENT_POINTER(RunningScripts) IMPLEMENT_POINTER(RunningScripts)

View file

@ -337,7 +337,7 @@ public:
DFsScript(); DFsScript();
~DFsScript(); ~DFsScript();
void Destroy(); void Destroy() override;
void Serialize(FSerializer &ar); void Serialize(FSerializer &ar);
DFsVariable *NewVariable(const char *name, int vtype); DFsVariable *NewVariable(const char *name, int vtype);
@ -652,7 +652,7 @@ class DRunningScript : public DObject
public: public:
DRunningScript(AActor *trigger=NULL, DFsScript *owner = NULL, int index = 0) ; DRunningScript(AActor *trigger=NULL, DFsScript *owner = NULL, int index = 0) ;
void Destroy(); void Destroy() override;
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
TObjPtr<DFsScript> script; TObjPtr<DFsScript> script;
@ -687,7 +687,7 @@ public:
bool nocheckposition; bool nocheckposition;
DFraggleThinker(); DFraggleThinker();
void Destroy(); void Destroy() override;
void Serialize(FSerializer & arc); void Serialize(FSerializer & arc);

View file

@ -179,7 +179,7 @@ AActor* actorvalue(const svalue_t &svalue)
// //
//========================================================================== //==========================================================================
IMPLEMENT_CLASS(DFsVariable, false, true, false, false) IMPLEMENT_CLASS(DFsVariable, false, true)
IMPLEMENT_POINTERS_START(DFsVariable) IMPLEMENT_POINTERS_START(DFsVariable)
IMPLEMENT_POINTER(next) IMPLEMENT_POINTER(next)

View file

@ -17,7 +17,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiTomeOfPower, false, false, false, false) IMPLEMENT_CLASS(AArtiTomeOfPower, false, false)
bool AArtiTomeOfPower::Use (bool pickup) bool AArtiTomeOfPower::Use (bool pickup)
{ {
@ -51,7 +51,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiTimeBomb, false, false, false, false) IMPLEMENT_CLASS(AArtiTimeBomb, false, false)
bool AArtiTimeBomb::Use (bool pickup) bool AArtiTimeBomb::Use (bool pickup)
{ {

View file

@ -58,7 +58,7 @@ public:
int DoSpecialDamage (AActor *target, int damage, FName damagetype); int DoSpecialDamage (AActor *target, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(ARainPillar, false, false, false, false) IMPLEMENT_CLASS(ARainPillar, false, false)
int ARainPillar::DoSpecialDamage (AActor *target, int damage, FName damagetype) int ARainPillar::DoSpecialDamage (AActor *target, int damage, FName damagetype)
{ {
@ -80,7 +80,7 @@ public:
TObjPtr<AActor> Rain1, Rain2; TObjPtr<AActor> Rain1, Rain2;
}; };
IMPLEMENT_CLASS(ARainTracker, false, false, false, false) IMPLEMENT_CLASS(ARainTracker, false, false)
void ARainTracker::Serialize(FSerializer &arc) void ARainTracker::Serialize(FSerializer &arc)
{ {
@ -367,8 +367,8 @@ public:
void EndPowerup (); void EndPowerup ();
}; };
IMPLEMENT_CLASS(APhoenixRod, false, false, false, false) IMPLEMENT_CLASS(APhoenixRod, false, false)
IMPLEMENT_CLASS(APhoenixRodPowered, false, false, false, false) IMPLEMENT_CLASS(APhoenixRodPowered, false, false)
void APhoenixRodPowered::EndPowerup () void APhoenixRodPowered::EndPowerup ()
{ {
@ -388,7 +388,7 @@ public:
int DoSpecialDamage (AActor *target, int damage, FName damagetype); int DoSpecialDamage (AActor *target, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(APhoenixFX2, false, false, false, false) IMPLEMENT_CLASS(APhoenixFX2, false, false)
int APhoenixFX2::DoSpecialDamage (AActor *target, int damage, FName damagetype) int APhoenixFX2::DoSpecialDamage (AActor *target, int damage, FName damagetype)
{ {

View file

@ -17,7 +17,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiBoostArmor, false, false, false, false) IMPLEMENT_CLASS(AArtiBoostArmor, false, false)
bool AArtiBoostArmor::Use (bool pickup) bool AArtiBoostArmor::Use (bool pickup)
{ {

View file

@ -58,11 +58,11 @@ public:
BYTE CHolyCount; BYTE CHolyCount;
}; };
IMPLEMENT_CLASS(ACWeapWraithverge, false, false, false, false) IMPLEMENT_CLASS(ACWeapWraithverge, false, false)
// Holy Spirit -------------------------------------------------------------- // Holy Spirit --------------------------------------------------------------
IMPLEMENT_CLASS(AHolySpirit, false, false, false, false) IMPLEMENT_CLASS(AHolySpirit, false, false)
bool AHolySpirit::Slam(AActor *thing) bool AHolySpirit::Slam(AActor *thing)
{ {

View file

@ -25,7 +25,7 @@ public:
int DoSpecialDamage (AActor *target, int damage, FName damagetype); int DoSpecialDamage (AActor *target, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(ACStaffMissile, false, false, false, false) IMPLEMENT_CLASS(ACStaffMissile, false, false)
int ACStaffMissile::DoSpecialDamage (AActor *target, int damage, FName damagetype) int ACStaffMissile::DoSpecialDamage (AActor *target, int damage, FName damagetype)
{ {

View file

@ -31,7 +31,7 @@ public:
FState *GetAtkState (bool hold); FState *GetAtkState (bool hold);
}; };
IMPLEMENT_CLASS(AFWeapAxe, false, false, false, false) IMPLEMENT_CLASS(AFWeapAxe, false, false)
FState *AFWeapAxe::GetUpState () FState *AFWeapAxe::GetUpState ()
{ {

View file

@ -11,9 +11,9 @@
#include "vm.h" #include "vm.h"
*/ */
IMPLEMENT_CLASS(AFighterWeapon, false, false, false, false) IMPLEMENT_CLASS(AFighterWeapon, false, false)
IMPLEMENT_CLASS(AClericWeapon, false, false, false, false) IMPLEMENT_CLASS(AClericWeapon, false, false)
IMPLEMENT_CLASS(AMageWeapon, false, false, false, false) IMPLEMENT_CLASS(AMageWeapon, false, false)
static FRandom pr_fpatk ("FPunchAttack"); static FRandom pr_fpatk ("FPunchAttack");

View file

@ -59,7 +59,7 @@ public:
int DoSpecialDamage(AActor *victim, int damage, FName damagetype); int DoSpecialDamage(AActor *victim, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(AFSwordMissile, false, false, false, false) IMPLEMENT_CLASS(AFSwordMissile, false, false)
int AFSwordMissile::DoSpecialDamage(AActor *victim, int damage, FName damagetype) int AFSwordMissile::DoSpecialDamage(AActor *victim, int damage, FName damagetype)
{ {

View file

@ -24,7 +24,7 @@ DECLARE_ACTION(A_CheckThrowBomb)
// Poison Bag Artifact (Flechette) ------------------------------------------ // Poison Bag Artifact (Flechette) ------------------------------------------
IMPLEMENT_CLASS(AArtiPoisonBag, false, false, false, false) IMPLEMENT_CLASS(AArtiPoisonBag, false, false)
// Poison Bag 1 (The Cleric's) ---------------------------------------------- // Poison Bag 1 (The Cleric's) ----------------------------------------------
@ -35,7 +35,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiPoisonBag1, false, false, false, false) IMPLEMENT_CLASS(AArtiPoisonBag1, false, false)
bool AArtiPoisonBag1::Use (bool pickup) bool AArtiPoisonBag1::Use (bool pickup)
{ {
@ -60,7 +60,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiPoisonBag2, false, false, false, false) IMPLEMENT_CLASS(AArtiPoisonBag2, false, false)
bool AArtiPoisonBag2::Use (bool pickup) bool AArtiPoisonBag2::Use (bool pickup)
{ {
@ -85,7 +85,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiPoisonBag3, false, false, false, false) IMPLEMENT_CLASS(AArtiPoisonBag3, false, false)
bool AArtiPoisonBag3::Use (bool pickup) bool AArtiPoisonBag3::Use (bool pickup)
{ {
@ -136,7 +136,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiPoisonBagGiver, false, false, false, false) IMPLEMENT_CLASS(AArtiPoisonBagGiver, false, false)
bool AArtiPoisonBagGiver::Use (bool pickup) bool AArtiPoisonBagGiver::Use (bool pickup)
{ {
@ -167,7 +167,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiPoisonBagShooter, false, false, false, false) IMPLEMENT_CLASS(AArtiPoisonBagShooter, false, false)
bool AArtiPoisonBagShooter::Use (bool pickup) bool AArtiPoisonBagShooter::Use (bool pickup)
{ {
@ -296,7 +296,7 @@ public:
void BeginPlay (); void BeginPlay ();
}; };
IMPLEMENT_CLASS(APoisonCloud, false, false, false, false) IMPLEMENT_CLASS(APoisonCloud, false, false)
void APoisonCloud::BeginPlay () void APoisonCloud::BeginPlay ()
{ {

View file

@ -25,7 +25,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiHealingRadius, false, false, false, false) IMPLEMENT_CLASS(AArtiHealingRadius, false, false)
bool AArtiHealingRadius::Use (bool pickup) bool AArtiHealingRadius::Use (bool pickup)
{ {

View file

@ -72,7 +72,7 @@ public:
void Die (AActor *source, AActor *inflictor, int dmgflags); void Die (AActor *source, AActor *inflictor, int dmgflags);
}; };
IMPLEMENT_CLASS(AHeresiarch, false, false, false, false) IMPLEMENT_CLASS(AHeresiarch, false, false)
void AHeresiarch::Serialize(FSerializer &arc) void AHeresiarch::Serialize(FSerializer &arc)
{ {
@ -122,7 +122,7 @@ public:
} }
}; };
IMPLEMENT_CLASS(ASorcBall, false, false, false, false) IMPLEMENT_CLASS(ASorcBall, false, false)
// First ball (purple) - fires projectiles ---------------------------------- // First ball (purple) - fires projectiles ----------------------------------
@ -140,7 +140,7 @@ public:
virtual void CastSorcererSpell (); virtual void CastSorcererSpell ();
}; };
IMPLEMENT_CLASS(ASorcBall1, false, false, false, false) IMPLEMENT_CLASS(ASorcBall1, false, false)
// Second ball (blue) - generates the shield -------------------------------- // Second ball (blue) - generates the shield --------------------------------
@ -156,7 +156,7 @@ public:
virtual void CastSorcererSpell (); virtual void CastSorcererSpell ();
}; };
IMPLEMENT_CLASS(ASorcBall2, false, false, false, false) IMPLEMENT_CLASS(ASorcBall2, false, false)
// Third ball (green) - summons Bishops ------------------------------------- // Third ball (green) - summons Bishops -------------------------------------
@ -172,7 +172,7 @@ public:
virtual void CastSorcererSpell (); virtual void CastSorcererSpell ();
}; };
IMPLEMENT_CLASS(ASorcBall3, false, false, false, false) IMPLEMENT_CLASS(ASorcBall3, false, false)
// Sorcerer spell 1 (The burning, bouncing head thing) ---------------------- // Sorcerer spell 1 (The burning, bouncing head thing) ----------------------

View file

@ -121,7 +121,7 @@ public:
void PostBeginPlay (); void PostBeginPlay ();
}; };
IMPLEMENT_CLASS(AZCorpseLynchedNoHeart, false, false, false, false) IMPLEMENT_CLASS(AZCorpseLynchedNoHeart, false, false)
void AZCorpseLynchedNoHeart::PostBeginPlay () void AZCorpseLynchedNoHeart::PostBeginPlay ()
{ {
@ -329,7 +329,7 @@ public:
void Activate (AActor *activator); void Activate (AActor *activator);
}; };
IMPLEMENT_CLASS(AZBell, false, false, false, false) IMPLEMENT_CLASS(AZBell, false, false)
void AZBell::Activate (AActor *activator) void AZBell::Activate (AActor *activator)
{ {

View file

@ -32,7 +32,7 @@ public:
int DoSpecialDamage (AActor *victim, int damage, FName damagetype); int DoSpecialDamage (AActor *victim, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(AFrostMissile, false, false, false, false) IMPLEMENT_CLASS(AFrostMissile, false, false)
int AFrostMissile::DoSpecialDamage (AActor *victim, int damage, FName damagetype) int AFrostMissile::DoSpecialDamage (AActor *victim, int damage, FName damagetype)
{ {

View file

@ -34,7 +34,7 @@ public:
int SpecialMissileHit (AActor *victim); int SpecialMissileHit (AActor *victim);
}; };
IMPLEMENT_CLASS(ALightning, false, false, false, false) IMPLEMENT_CLASS(ALightning, false, false)
int ALightning::SpecialMissileHit (AActor *thing) int ALightning::SpecialMissileHit (AActor *thing)
{ {
@ -87,7 +87,7 @@ public:
int SpecialMissileHit (AActor *thing); int SpecialMissileHit (AActor *thing);
}; };
IMPLEMENT_CLASS(ALightningZap, false, false, false, false) IMPLEMENT_CLASS(ALightningZap, false, false)
int ALightningZap::SpecialMissileHit (AActor *thing) int ALightningZap::SpecialMissileHit (AActor *thing)
{ {

View file

@ -56,7 +56,7 @@ public:
BYTE MStaffCount; BYTE MStaffCount;
}; };
IMPLEMENT_CLASS(AMWeapBloodscourge, false, false, false, false) IMPLEMENT_CLASS(AMWeapBloodscourge, false, false)
// Mage Staff FX2 (Bloodscourge) -------------------------------------------- // Mage Staff FX2 (Bloodscourge) --------------------------------------------
@ -68,7 +68,7 @@ public:
bool SpecialBlastHandling (AActor *source, double strength); bool SpecialBlastHandling (AActor *source, double strength);
}; };
IMPLEMENT_CLASS(AMageStaffFX2, false, false, false, false) IMPLEMENT_CLASS(AMageStaffFX2, false, false)
int AMageStaffFX2::SpecialMissileHit (AActor *victim) int AMageStaffFX2::SpecialMissileHit (AActor *victim)
{ {

View file

@ -26,7 +26,7 @@ public:
void Deactivate (AActor *activator); void Deactivate (AActor *activator);
}; };
IMPLEMENT_CLASS(AThrustFloor, false, false, false, false) IMPLEMENT_CLASS(AThrustFloor, false, false)
void AThrustFloor::Activate (AActor *activator) void AThrustFloor::Activate (AActor *activator)
{ {

View file

@ -21,7 +21,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiDarkServant, false, false, false, false) IMPLEMENT_CLASS(AArtiDarkServant, false, false)
//============================================================================ //============================================================================
// //

View file

@ -34,7 +34,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiTeleportOther, false, false, false, false) IMPLEMENT_CLASS(AArtiTeleportOther, false, false)
// Teleport Other FX -------------------------------------------------------- // Teleport Other FX --------------------------------------------------------
@ -45,7 +45,7 @@ public:
int DoSpecialDamage (AActor *target, int damage, FName damagetype); int DoSpecialDamage (AActor *target, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(ATelOtherFX1, false, false, false, false) IMPLEMENT_CLASS(ATelOtherFX1, false, false)
static void TeloSpawn (AActor *source, const char *type) static void TeloSpawn (AActor *source, const char *type)
{ {

View file

@ -903,7 +903,7 @@ public:
void Tick (); void Tick ();
}; };
IMPLEMENT_CLASS(DAutosaver, false, false, false, false) IMPLEMENT_CLASS(DAutosaver, false, false)
void DAutosaver::Tick () void DAutosaver::Tick ()
{ {

View file

@ -23,7 +23,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AArtiTeleport, false, false, false, false) IMPLEMENT_CLASS(AArtiTeleport, false, false)
bool AArtiTeleport::Use (bool pickup) bool AArtiTeleport::Use (bool pickup)
{ {

View file

@ -31,7 +31,7 @@ void P_MinotaurSlam (AActor *source, AActor *target);
DECLARE_ACTION(A_MinotaurLook) DECLARE_ACTION(A_MinotaurLook)
IMPLEMENT_CLASS(AMinotaur, false, false, false, false) IMPLEMENT_CLASS(AMinotaur, false, false)
void AMinotaur::Tick () void AMinotaur::Tick ()
{ {
@ -72,7 +72,7 @@ int AMinotaur::DoSpecialDamage (AActor *target, int damage, FName damagetype)
// Minotaur Friend ---------------------------------------------------------- // Minotaur Friend ----------------------------------------------------------
IMPLEMENT_CLASS(AMinotaurFriend, false, false, false, false) IMPLEMENT_CLASS(AMinotaurFriend, false, false)
void AMinotaurFriend::BeginPlay () void AMinotaurFriend::BeginPlay ()
{ {

View file

@ -28,7 +28,7 @@ public:
void Deactivate (AActor *activator); void Deactivate (AActor *activator);
}; };
IMPLEMENT_CLASS(ASwitchableDecoration, false, false, false, false) IMPLEMENT_CLASS(ASwitchableDecoration, false, false)
void ASwitchableDecoration::Activate (AActor *activator) void ASwitchableDecoration::Activate (AActor *activator)
{ {
@ -49,7 +49,7 @@ public:
void Deactivate (AActor *activator) {} void Deactivate (AActor *activator) {}
}; };
IMPLEMENT_CLASS(ASwitchingDecoration, false, false, false, false) IMPLEMENT_CLASS(ASwitchingDecoration, false, false)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// //
@ -295,7 +295,7 @@ class DCorpsePointer : public DThinker
HAS_OBJECT_POINTERS HAS_OBJECT_POINTERS
public: public:
DCorpsePointer (AActor *ptr); DCorpsePointer (AActor *ptr);
void Destroy (); void Destroy() override;
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
TObjPtr<AActor> Corpse; TObjPtr<AActor> Corpse;
DWORD Count; // Only the first corpse pointer's count is valid. DWORD Count; // Only the first corpse pointer's count is valid.
@ -303,7 +303,7 @@ private:
DCorpsePointer () {} DCorpsePointer () {}
}; };
IMPLEMENT_CLASS(DCorpsePointer, false, true, false, false) IMPLEMENT_CLASS(DCorpsePointer, false, true)
IMPLEMENT_POINTERS_START(DCorpsePointer) IMPLEMENT_POINTERS_START(DCorpsePointer)
IMPLEMENT_POINTER(Corpse) IMPLEMENT_POINTER(Corpse)

View file

@ -9,11 +9,11 @@
#include "serializer.h" #include "serializer.h"
#include "cmdlib.h" #include "cmdlib.h"
IMPLEMENT_CLASS(AArmor, false, false, false, false) IMPLEMENT_CLASS(AArmor, false, false)
IMPLEMENT_CLASS(ABasicArmor, false, false, false, false) IMPLEMENT_CLASS(ABasicArmor, false, false)
IMPLEMENT_CLASS(ABasicArmorPickup, false, false, false, false) IMPLEMENT_CLASS(ABasicArmorPickup, false, false)
IMPLEMENT_CLASS(ABasicArmorBonus, false, false, true, false) IMPLEMENT_CLASS(ABasicArmorBonus, false, false)
IMPLEMENT_CLASS(AHexenArmor, false, false, false, false) IMPLEMENT_CLASS(AHexenArmor, false, false)
DEFINE_FIELD(ABasicArmor, AbsorbCount) DEFINE_FIELD(ABasicArmor, AbsorbCount)

View file

@ -40,11 +40,11 @@ static FRandom pr_torch ("Torch");
#define TIMEFREEZE_TICS ( 12 * TICRATE ) #define TIMEFREEZE_TICS ( 12 * TICRATE )
*/ */
IMPLEMENT_CLASS(APowerup, false, false, false, false) IMPLEMENT_CLASS(APowerup, false, false)
// Powerup-Giver ------------------------------------------------------------- // Powerup-Giver -------------------------------------------------------------
IMPLEMENT_CLASS(PClassPowerupGiver, false, false, false, false) IMPLEMENT_CLASS(PClassPowerupGiver, false, false)
void PClassPowerupGiver::ReplaceClassRef(PClass *oldclass, PClass *newclass) void PClassPowerupGiver::ReplaceClassRef(PClass *oldclass, PClass *newclass)
{ {
@ -388,7 +388,7 @@ bool APowerup::GetNoTeleportFreeze ()
// Invulnerability Powerup --------------------------------------------------- // Invulnerability Powerup ---------------------------------------------------
IMPLEMENT_CLASS(APowerInvulnerable, false, false, false, false) IMPLEMENT_CLASS(APowerInvulnerable, false, false)
//=========================================================================== //===========================================================================
// //
@ -525,7 +525,7 @@ int APowerInvulnerable::AlterWeaponSprite (visstyle_t *vis)
// Strength (aka Berserk) Powerup -------------------------------------------- // Strength (aka Berserk) Powerup --------------------------------------------
IMPLEMENT_CLASS(APowerStrength, false, false, false, false) IMPLEMENT_CLASS(APowerStrength, false, false)
//=========================================================================== //===========================================================================
// //
@ -590,7 +590,7 @@ PalEntry APowerStrength::GetBlend ()
// Invisibility Powerup ------------------------------------------------------ // Invisibility Powerup ------------------------------------------------------
IMPLEMENT_CLASS(APowerInvisibility, false, false, false, false) IMPLEMENT_CLASS(APowerInvisibility, false, false)
// Invisibility flag combos // Invisibility flag combos
#define INVISIBILITY_FLAGS1 (MF_SHADOW) #define INVISIBILITY_FLAGS1 (MF_SHADOW)
@ -795,7 +795,7 @@ bool APowerInvisibility::HandlePickup (AInventory *item)
// Ironfeet Powerup ---------------------------------------------------------- // Ironfeet Powerup ----------------------------------------------------------
IMPLEMENT_CLASS(APowerIronFeet, false, false, false, false) IMPLEMENT_CLASS(APowerIronFeet, false, false)
//=========================================================================== //===========================================================================
// //
@ -832,7 +832,7 @@ void APowerIronFeet::DoEffect ()
// Strife Environment Suit Powerup ------------------------------------------- // Strife Environment Suit Powerup -------------------------------------------
IMPLEMENT_CLASS(APowerMask, false, false, false, false) IMPLEMENT_CLASS(APowerMask, false, false)
//=========================================================================== //===========================================================================
// //
@ -869,7 +869,7 @@ void APowerMask::DoEffect ()
// Light-Amp Powerup --------------------------------------------------------- // Light-Amp Powerup ---------------------------------------------------------
IMPLEMENT_CLASS(APowerLightAmp, false, false, false, false) IMPLEMENT_CLASS(APowerLightAmp, false, false)
//=========================================================================== //===========================================================================
// //
@ -911,7 +911,7 @@ void APowerLightAmp::EndEffect ()
// Torch Powerup ------------------------------------------------------------- // Torch Powerup -------------------------------------------------------------
IMPLEMENT_CLASS(APowerTorch, false, false, false, false) IMPLEMENT_CLASS(APowerTorch, false, false)
//=========================================================================== //===========================================================================
// //
@ -974,7 +974,7 @@ void APowerTorch::DoEffect ()
// Flight (aka Wings of Wrath) powerup --------------------------------------- // Flight (aka Wings of Wrath) powerup ---------------------------------------
IMPLEMENT_CLASS(APowerFlight, false, false, false, false) IMPLEMENT_CLASS(APowerFlight, false, false)
//=========================================================================== //===========================================================================
// //
@ -1114,7 +1114,7 @@ bool APowerFlight::DrawPowerup (int x, int y)
// Weapon Level 2 (aka Tome of Power) Powerup -------------------------------- // Weapon Level 2 (aka Tome of Power) Powerup --------------------------------
IMPLEMENT_CLASS(APowerWeaponLevel2, false, false, false, false) IMPLEMENT_CLASS(APowerWeaponLevel2, false, false)
//=========================================================================== //===========================================================================
// //
@ -1198,7 +1198,7 @@ void APowerWeaponLevel2::EndEffect ()
// Speed Powerup ------------------------------------------------------------- // Speed Powerup -------------------------------------------------------------
IMPLEMENT_CLASS(APowerSpeed, false, false, false, false) IMPLEMENT_CLASS(APowerSpeed, false, false)
DEFINE_FIELD(APowerSpeed, SpeedFlags) DEFINE_FIELD(APowerSpeed, SpeedFlags)
@ -1287,11 +1287,11 @@ void APowerSpeed::DoEffect ()
// Minotaur (aka Dark Servant) powerup --------------------------------------- // Minotaur (aka Dark Servant) powerup ---------------------------------------
IMPLEMENT_CLASS(APowerMinotaur, false, false, false, false) IMPLEMENT_CLASS(APowerMinotaur, false, false)
// Targeter powerup --------------------------------------------------------- // Targeter powerup ---------------------------------------------------------
IMPLEMENT_CLASS(APowerTargeter, false, false, false, false) IMPLEMENT_CLASS(APowerTargeter, false, false)
void APowerTargeter::Travelled () void APowerTargeter::Travelled ()
{ {
@ -1406,7 +1406,7 @@ void APowerTargeter::PositionAccuracy ()
// Frightener Powerup -------------------------------- // Frightener Powerup --------------------------------
IMPLEMENT_CLASS(APowerFrightener, false, false, false, false) IMPLEMENT_CLASS(APowerFrightener, false, false)
//=========================================================================== //===========================================================================
// //
@ -1442,7 +1442,7 @@ void APowerFrightener::EndEffect ()
// Buddha Powerup -------------------------------- // Buddha Powerup --------------------------------
IMPLEMENT_CLASS(APowerBuddha, false, false, false, false) IMPLEMENT_CLASS(APowerBuddha, false, false)
//=========================================================================== //===========================================================================
// //
@ -1478,11 +1478,11 @@ void APowerBuddha::EndEffect ()
// Scanner powerup ---------------------------------------------------------- // Scanner powerup ----------------------------------------------------------
IMPLEMENT_CLASS(APowerScanner, false, false, false, false) IMPLEMENT_CLASS(APowerScanner, false, false)
// Time freezer powerup ----------------------------------------------------- // Time freezer powerup -----------------------------------------------------
IMPLEMENT_CLASS( APowerTimeFreezer, false, false, false, false) IMPLEMENT_CLASS( APowerTimeFreezer, false, false)
//=========================================================================== //===========================================================================
// //
@ -1609,7 +1609,7 @@ void APowerTimeFreezer::EndEffect()
// Damage powerup ------------------------------------------------------ // Damage powerup ------------------------------------------------------
IMPLEMENT_CLASS(APowerDamage, false, false, false, false) IMPLEMENT_CLASS(APowerDamage, false, false)
//=========================================================================== //===========================================================================
// //
@ -1666,7 +1666,7 @@ void APowerDamage::ModifyDamage(int damage, FName damageType, int &newdamage, bo
// Quarter damage powerup ------------------------------------------------------ // Quarter damage powerup ------------------------------------------------------
IMPLEMENT_CLASS(APowerProtection, false, false, false, false) IMPLEMENT_CLASS(APowerProtection, false, false)
#define PROTECTION_FLAGS3 (MF3_NORADIUSDMG | MF3_DONTMORPH | MF3_DONTSQUASH | MF3_DONTBLAST | MF3_NOTELEOTHER) #define PROTECTION_FLAGS3 (MF3_NORADIUSDMG | MF3_DONTMORPH | MF3_DONTSQUASH | MF3_DONTBLAST | MF3_NOTELEOTHER)
#define PROTECTION_FLAGS5 (MF5_NOPAIN | MF5_DONTRIP) #define PROTECTION_FLAGS5 (MF5_NOPAIN | MF5_DONTRIP)
@ -1744,7 +1744,7 @@ void APowerProtection::ModifyDamage(int damage, FName damageType, int &newdamage
// Drain rune ------------------------------------------------------- // Drain rune -------------------------------------------------------
IMPLEMENT_CLASS(APowerDrain, false, false, false, false) IMPLEMENT_CLASS(APowerDrain, false, false)
//=========================================================================== //===========================================================================
// //
@ -1784,7 +1784,7 @@ void APowerDrain::EndEffect( )
// Regeneration rune ------------------------------------------------------- // Regeneration rune -------------------------------------------------------
IMPLEMENT_CLASS(APowerRegeneration, false, false, false, false) IMPLEMENT_CLASS(APowerRegeneration, false, false)
//=========================================================================== //===========================================================================
// //
@ -1806,7 +1806,7 @@ void APowerRegeneration::DoEffect()
// High jump rune ------------------------------------------------------- // High jump rune -------------------------------------------------------
IMPLEMENT_CLASS(APowerHighJump, false, false, false, false) IMPLEMENT_CLASS(APowerHighJump, false, false)
//=========================================================================== //===========================================================================
// //
@ -1844,7 +1844,7 @@ void APowerHighJump::EndEffect( )
// Double firing speed rune --------------------------------------------- // Double firing speed rune ---------------------------------------------
IMPLEMENT_CLASS(APowerDoubleFiringSpeed, false, false, false, false) IMPLEMENT_CLASS(APowerDoubleFiringSpeed, false, false)
//=========================================================================== //===========================================================================
// //
@ -1882,7 +1882,7 @@ void APowerDoubleFiringSpeed::EndEffect( )
// Morph powerup ------------------------------------------------------ // Morph powerup ------------------------------------------------------
IMPLEMENT_CLASS(APowerMorph, false, false, false, false) IMPLEMENT_CLASS(APowerMorph, false, false)
DEFINE_FIELD(APowerMorph, PlayerClass) DEFINE_FIELD(APowerMorph, PlayerClass)
DEFINE_FIELD(APowerMorph, MorphFlash) DEFINE_FIELD(APowerMorph, MorphFlash)
@ -1990,7 +1990,7 @@ void APowerMorph::EndEffect( )
// Infinite Ammo Powerup ----------------------------------------------------- // Infinite Ammo Powerup -----------------------------------------------------
IMPLEMENT_CLASS(APowerInfiniteAmmo, false, false, false, false) IMPLEMENT_CLASS(APowerInfiniteAmmo, false, false)
//=========================================================================== //===========================================================================
// //

View file

@ -12,7 +12,7 @@ class APowerup : public AInventory
DECLARE_CLASS (APowerup, AInventory) DECLARE_CLASS (APowerup, AInventory)
public: public:
virtual void Tick (); virtual void Tick ();
virtual void Destroy (); virtual void Destroy () override;
virtual bool HandlePickup (AInventory *item); virtual bool HandlePickup (AInventory *item);
virtual AInventory *CreateCopy (AActor *other); virtual AInventory *CreateCopy (AActor *other);
virtual AInventory *CreateTossable (); virtual AInventory *CreateTossable ();

View file

@ -37,10 +37,10 @@ class ACustomBridge : public AActor
DECLARE_CLASS (ACustomBridge, AActor) DECLARE_CLASS (ACustomBridge, AActor)
public: public:
void BeginPlay (); void BeginPlay ();
void Destroy(); void Destroy() override;
}; };
IMPLEMENT_CLASS(ACustomBridge, false, false, false, false) IMPLEMENT_CLASS(ACustomBridge, false, false)
void ACustomBridge::BeginPlay () void ACustomBridge::BeginPlay ()
{ {
@ -155,7 +155,7 @@ public:
void BeginPlay (); void BeginPlay ();
}; };
IMPLEMENT_CLASS(AInvisibleBridge, false, false, false, false) IMPLEMENT_CLASS(AInvisibleBridge, false, false)
void AInvisibleBridge::BeginPlay () void AInvisibleBridge::BeginPlay ()
{ {

View file

@ -64,7 +64,7 @@ protected:
DAngle Range; DAngle Range;
}; };
IMPLEMENT_CLASS(ASecurityCamera, false, false, false, false) IMPLEMENT_CLASS(ASecurityCamera, false, false)
void ASecurityCamera::Serialize(FSerializer &arc) void ASecurityCamera::Serialize(FSerializer &arc)
{ {
@ -124,7 +124,7 @@ protected:
DAngle MaxPitchChange; DAngle MaxPitchChange;
}; };
IMPLEMENT_CLASS(AAimingCamera, false, false, false, false) IMPLEMENT_CLASS(AAimingCamera, false, false)
void AAimingCamera::Serialize(FSerializer &arc) void AAimingCamera::Serialize(FSerializer &arc)
{ {

View file

@ -23,5 +23,5 @@ public:
} }
}; };
IMPLEMENT_CLASS(AGlassShard, false, false, false, false) IMPLEMENT_CLASS(AGlassShard, false, false)

View file

@ -58,14 +58,14 @@ static int ImpactCount;
CVAR (Bool, cl_spreaddecals, true, CVAR_ARCHIVE) CVAR (Bool, cl_spreaddecals, true, CVAR_ARCHIVE)
IMPLEMENT_CLASS(DBaseDecal, false, true, false, false) IMPLEMENT_CLASS(DBaseDecal, false, true)
IMPLEMENT_POINTERS_START(DBaseDecal) IMPLEMENT_POINTERS_START(DBaseDecal)
IMPLEMENT_POINTER(WallPrev) IMPLEMENT_POINTER(WallPrev)
IMPLEMENT_POINTER(WallNext) IMPLEMENT_POINTER(WallNext)
IMPLEMENT_POINTERS_END IMPLEMENT_POINTERS_END
IMPLEMENT_CLASS(DImpactDecal, false, false, false, false) IMPLEMENT_CLASS(DImpactDecal, false, false)
DBaseDecal::DBaseDecal () DBaseDecal::DBaseDecal ()
: DThinker(STAT_DECAL), : DThinker(STAT_DECAL),
@ -746,7 +746,7 @@ public:
void BeginPlay (); void BeginPlay ();
}; };
IMPLEMENT_CLASS(ADecal, false, false, false, false) IMPLEMENT_CLASS(ADecal, false, false)
void ADecal::BeginPlay () void ADecal::BeginPlay ()
{ {

View file

@ -8,7 +8,7 @@
#include "p_checkposition.h" #include "p_checkposition.h"
#include "virtual.h" #include "virtual.h"
IMPLEMENT_CLASS(AFastProjectile, false, false, false, false) IMPLEMENT_CLASS(AFastProjectile, false, false)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -135,11 +135,13 @@ void AFastProjectile::Tick ()
ripcount = count >> 3; ripcount = count >> 3;
// call the scripted 'Effect' method. // call the scripted 'Effect' method.
VINDEX(AFastProjectile, Effect); IFVIRTUAL(AFastProjectile, Effect)
// Without the type cast this picks the 'void *' assignment... {
VMValue params[1] = { (DObject*)this }; // Without the type cast this picks the 'void *' assignment...
VMFrameStack stack; VMValue params[1] = { (DObject*)this };
stack.Call(VFUNC, params, 1, nullptr, 0, nullptr); VMFrameStack stack;
stack.Call(func, params, 1, nullptr, 0, nullptr);
}
} }
} }
} }

View file

@ -3,7 +3,7 @@
#include "d_player.h" #include "d_player.h"
#include "serializer.h" #include "serializer.h"
IMPLEMENT_CLASS(DFlashFader, false, true, false, false) IMPLEMENT_CLASS(DFlashFader, false, true)
IMPLEMENT_POINTERS_START(DFlashFader) IMPLEMENT_POINTERS_START(DFlashFader)
IMPLEMENT_POINTER(ForWho) IMPLEMENT_POINTER(ForWho)

View file

@ -46,13 +46,13 @@ public:
void Deactivate (AActor *activator); void Deactivate (AActor *activator);
}; };
IMPLEMENT_CLASS(AParticleFountain, false, false, false, false) IMPLEMENT_CLASS(AParticleFountain, false, false)
void AParticleFountain::PostBeginPlay () void AParticleFountain::PostBeginPlay ()
{ {
Super::PostBeginPlay (); Super::PostBeginPlay ();
if (!(SpawnFlags & MTF_DORMANT)) if (!(SpawnFlags & MTF_DORMANT))
Activate (NULL); CallActivate (NULL);
} }
void AParticleFountain::Activate (AActor *activator) void AParticleFountain::Activate (AActor *activator)

View file

@ -46,7 +46,7 @@ public:
int TakeSpecialDamage(AActor *inflictor, AActor *source, int damage, FName damagetype); int TakeSpecialDamage(AActor *inflictor, AActor *source, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(AHateTarget, false, false, false, false) IMPLEMENT_CLASS(AHateTarget, false, false)
void AHateTarget::BeginPlay() void AHateTarget::BeginPlay()
{ {

View file

@ -470,7 +470,7 @@ bool P_CheckKeys (AActor *owner, int keynum, bool remote)
// //
//========================================================================== //==========================================================================
IMPLEMENT_CLASS(AKey, false, false, false, false) IMPLEMENT_CLASS(AKey, false, false)
DEFINE_FIELD(AKey, KeyNumber) DEFINE_FIELD(AKey, KeyNumber)

View file

@ -13,7 +13,7 @@
static FRandom pr_lightning ("Lightning"); static FRandom pr_lightning ("Lightning");
IMPLEMENT_CLASS(DLightningThinker, false, false, false, false) IMPLEMENT_CLASS(DLightningThinker, false, false)
DLightningThinker::DLightningThinker () DLightningThinker::DLightningThinker ()
: DThinker (STAT_LIGHTNING) : DThinker (STAT_LIGHTNING)

View file

@ -51,7 +51,7 @@
// //
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
IMPLEMENT_CLASS(AMapMarker, false, false, false, false) IMPLEMENT_CLASS(AMapMarker, false, false)
void AMapMarker::BeginPlay () void AMapMarker::BeginPlay ()
{ {

View file

@ -616,7 +616,7 @@ void InitAllPowerupEffects(AInventory *item)
// Base class for morphing projectiles -------------------------------------- // Base class for morphing projectiles --------------------------------------
IMPLEMENT_CLASS(AMorphProjectile, false, false, false, false) IMPLEMENT_CLASS(AMorphProjectile, false, false)
DEFINE_FIELD(AMorphProjectile, PlayerClass) DEFINE_FIELD(AMorphProjectile, PlayerClass)
DEFINE_FIELD(AMorphProjectile, MonsterClass) DEFINE_FIELD(AMorphProjectile, MonsterClass)
@ -653,7 +653,7 @@ void AMorphProjectile::Serialize(FSerializer &arc)
// Morphed Monster (you must subclass this to do something useful) --------- // Morphed Monster (you must subclass this to do something useful) ---------
IMPLEMENT_CLASS(AMorphedMonster, false, true, false, false) IMPLEMENT_CLASS(AMorphedMonster, false, true)
IMPLEMENT_POINTERS_START(AMorphedMonster) IMPLEMENT_POINTERS_START(AMorphedMonster)
IMPLEMENT_POINTER(UnmorphedMe) IMPLEMENT_POINTER(UnmorphedMe)

View file

@ -66,7 +66,7 @@ public:
TObjPtr<AInterpolationPoint> Next; TObjPtr<AInterpolationPoint> Next;
}; };
IMPLEMENT_CLASS(AInterpolationPoint, false, true, false, false) IMPLEMENT_CLASS(AInterpolationPoint, false, true)
IMPLEMENT_POINTERS_START(AInterpolationPoint) IMPLEMENT_POINTERS_START(AInterpolationPoint)
IMPLEMENT_POINTER(Next) IMPLEMENT_POINTER(Next)
@ -135,7 +135,7 @@ public:
void Tick () {} // Does absolutely nothing itself void Tick () {} // Does absolutely nothing itself
}; };
IMPLEMENT_CLASS(AInterpolationSpecial, false, false, false, false) IMPLEMENT_CLASS(AInterpolationSpecial, false, false)
/* /*
== PathFollower: something that follows a camera path == PathFollower: something that follows a camera path
@ -178,7 +178,7 @@ protected:
int HoldTime; int HoldTime;
}; };
IMPLEMENT_CLASS(APathFollower, false, true, false, false) IMPLEMENT_CLASS(APathFollower, false, true)
IMPLEMENT_POINTERS_START(APathFollower) IMPLEMENT_POINTERS_START(APathFollower)
IMPLEMENT_POINTER(PrevNode) IMPLEMENT_POINTER(PrevNode)
@ -342,9 +342,9 @@ void APathFollower::Tick ()
if (CurrNode != NULL) if (CurrNode != NULL)
NewNode (); NewNode ();
if (CurrNode == NULL || CurrNode->Next == NULL) if (CurrNode == NULL || CurrNode->Next == NULL)
Deactivate (this); CallDeactivate (this);
if ((args[2] & 1) == 0 && CurrNode->Next->Next == NULL) if ((args[2] & 1) == 0 && CurrNode->Next->Next == NULL)
Deactivate (this); CallDeactivate (this);
} }
} }
} }
@ -480,7 +480,7 @@ protected:
bool Interpolate (); bool Interpolate ();
}; };
IMPLEMENT_CLASS(AActorMover, false, false, false, false) IMPLEMENT_CLASS(AActorMover, false, false)
void AActorMover::BeginPlay() void AActorMover::BeginPlay()
{ {
@ -596,7 +596,7 @@ protected:
TObjPtr<AActor> Activator; TObjPtr<AActor> Activator;
}; };
IMPLEMENT_CLASS(AMovingCamera, false, true, false, false) IMPLEMENT_CLASS(AMovingCamera, false, true)
IMPLEMENT_POINTERS_START(AMovingCamera) IMPLEMENT_POINTERS_START(AMovingCamera)
IMPLEMENT_POINTER(Activator) IMPLEMENT_POINTER(Activator)

View file

@ -23,7 +23,7 @@
static FRandom pr_restore ("RestorePos"); static FRandom pr_restore ("RestorePos");
IMPLEMENT_CLASS(PClassInventory, false, false, false, false) IMPLEMENT_CLASS(PClassInventory, false, false)
PClassInventory::PClassInventory() PClassInventory::PClassInventory()
{ {
@ -70,7 +70,7 @@ void PClassInventory::Finalize(FStateDefinitions &statedef)
((AActor*)Defaults)->flags |= MF_SPECIAL; ((AActor*)Defaults)->flags |= MF_SPECIAL;
} }
IMPLEMENT_CLASS(PClassAmmo, false, false, false, false) IMPLEMENT_CLASS(PClassAmmo, false, false)
PClassAmmo::PClassAmmo() PClassAmmo::PClassAmmo()
{ {
@ -86,7 +86,7 @@ void PClassAmmo::DeriveData(PClass *newclass)
newc->DropAmount = DropAmount; newc->DropAmount = DropAmount;
} }
IMPLEMENT_CLASS(AAmmo, false, false, false, false) IMPLEMENT_CLASS(AAmmo, false, false)
DEFINE_FIELD(AAmmo, BackpackAmount) DEFINE_FIELD(AAmmo, BackpackAmount)
DEFINE_FIELD(AAmmo, BackpackMaxAmount) DEFINE_FIELD(AAmmo, BackpackMaxAmount)
@ -480,7 +480,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_RestoreSpecialPosition)
int AInventory::StaticLastMessageTic; int AInventory::StaticLastMessageTic;
const char *AInventory::StaticLastMessage; const char *AInventory::StaticLastMessage;
IMPLEMENT_CLASS(AInventory, false, true, false, false) IMPLEMENT_CLASS(AInventory, false, true)
IMPLEMENT_POINTERS_START(AInventory) IMPLEMENT_POINTERS_START(AInventory)
IMPLEMENT_POINTER(Owner) IMPLEMENT_POINTER(Owner)
@ -1378,7 +1378,7 @@ bool AInventory::DrawPowerup (int x, int y)
/* AArtifact implementation */ /* AArtifact implementation */
/***************************************************************************/ /***************************************************************************/
IMPLEMENT_CLASS(APowerupGiver, false, false, false, false) IMPLEMENT_CLASS(APowerupGiver, false, false)
//=========================================================================== //===========================================================================
// //
@ -1679,8 +1679,8 @@ void AInventory::DetachFromOwner ()
{ {
} }
IMPLEMENT_CLASS(AStateProvider, false, false, false, false) IMPLEMENT_CLASS(AStateProvider, false, false)
IMPLEMENT_CLASS(ACustomInventory, false, false, false, false) IMPLEMENT_CLASS(ACustomInventory, false, false)
//=========================================================================== //===========================================================================
// //
@ -1725,7 +1725,7 @@ bool ACustomInventory::TryPickup (AActor *&toucher)
return useok; return useok;
} }
IMPLEMENT_CLASS(PClassHealth, false, false, false, false) IMPLEMENT_CLASS(PClassHealth, false, false)
//=========================================================================== //===========================================================================
// //
@ -1754,7 +1754,7 @@ void PClassHealth::DeriveData(PClass *newclass)
newc->LowHealthMessage = LowHealthMessage; newc->LowHealthMessage = LowHealthMessage;
} }
IMPLEMENT_CLASS(AHealth, false, false, false, false) IMPLEMENT_CLASS(AHealth, false, false)
DEFINE_FIELD(AHealth, PrevHealth) DEFINE_FIELD(AHealth, PrevHealth)
@ -1799,7 +1799,7 @@ bool AHealth::TryPickup (AActor *&other)
return false; return false;
} }
IMPLEMENT_CLASS(AHealthPickup, false, false, false, false) IMPLEMENT_CLASS(AHealthPickup, false, false)
DEFINE_FIELD(AHealthPickup, autousemode) DEFINE_FIELD(AHealthPickup, autousemode)
@ -1879,7 +1879,7 @@ void AHealthPickup::Serialize(FSerializer &arc)
// Backpack ----------------------------------------------------------------- // Backpack -----------------------------------------------------------------
IMPLEMENT_CLASS(ABackpackItem, false, false, false, false) IMPLEMENT_CLASS(ABackpackItem, false, false)
DEFINE_FIELD(ABackpackItem, bDepleted) DEFINE_FIELD(ABackpackItem, bDepleted)
@ -2058,7 +2058,7 @@ void ABackpackItem::DetachFromOwner ()
// //
//=========================================================================== //===========================================================================
IMPLEMENT_CLASS(AMapRevealer, false, false, false, false) IMPLEMENT_CLASS(AMapRevealer, false, false)
//=========================================================================== //===========================================================================
// //
@ -2083,7 +2083,7 @@ bool AMapRevealer::TryPickup (AActor *&toucher)
// //
//=========================================================================== //===========================================================================
IMPLEMENT_CLASS(AScoreItem, false, false, false, false) IMPLEMENT_CLASS(AScoreItem, false, false)
//=========================================================================== //===========================================================================
// //

View file

@ -159,7 +159,7 @@ public:
virtual void MarkPrecacheSounds() const; virtual void MarkPrecacheSounds() const;
virtual void BeginPlay (); virtual void BeginPlay ();
virtual void Destroy (); virtual void Destroy () override;
virtual void DepleteOrDestroy (); virtual void DepleteOrDestroy ();
virtual void Tick (); virtual void Tick ();
virtual bool ShouldRespawn (); virtual bool ShouldRespawn ();
@ -331,7 +331,7 @@ public:
virtual bool TryPickupRestricted (AActor *&toucher); virtual bool TryPickupRestricted (AActor *&toucher);
virtual bool PickupForAmmo (AWeapon *ownedWeapon); virtual bool PickupForAmmo (AWeapon *ownedWeapon);
virtual bool Use (bool pickup); virtual bool Use (bool pickup);
virtual void Destroy(); virtual void Destroy() override;
virtual FState *GetUpState (); virtual FState *GetUpState ();
virtual FState *GetDownState (); virtual FState *GetDownState ();

View file

@ -8,7 +8,7 @@
#include "doomstat.h" #include "doomstat.h"
#include "v_font.h" #include "v_font.h"
IMPLEMENT_CLASS(PClassPuzzleItem, false, false, false, false) IMPLEMENT_CLASS(PClassPuzzleItem, false, false)
void PClassPuzzleItem::DeriveData(PClass *newclass) void PClassPuzzleItem::DeriveData(PClass *newclass)
{ {
@ -17,7 +17,7 @@ void PClassPuzzleItem::DeriveData(PClass *newclass)
static_cast<PClassPuzzleItem *>(newclass)->PuzzFailMessage = PuzzFailMessage; static_cast<PClassPuzzleItem *>(newclass)->PuzzFailMessage = PuzzFailMessage;
} }
IMPLEMENT_CLASS(APuzzleItem, false, false, false, false) IMPLEMENT_CLASS(APuzzleItem, false, false)
DEFINE_FIELD(APuzzleItem, PuzzleItemNumber) DEFINE_FIELD(APuzzleItem, PuzzleItemNumber)

View file

@ -14,7 +14,7 @@
static FRandom pr_quake ("Quake"); static FRandom pr_quake ("Quake");
IMPLEMENT_CLASS(DEarthquake, false, true, false, false) IMPLEMENT_CLASS(DEarthquake, false, true)
IMPLEMENT_POINTERS_START(DEarthquake) IMPLEMENT_POINTERS_START(DEarthquake)
IMPLEMENT_POINTER(m_Spot) IMPLEMENT_POINTER(m_Spot)

View file

@ -230,4 +230,4 @@ class ARandomSpawner : public AActor
}; };
IMPLEMENT_CLASS(ARandomSpawner, false, false, false, false) IMPLEMENT_CLASS(ARandomSpawner, false, false)

View file

@ -50,7 +50,7 @@ public:
void Activate (AActor *activator); void Activate (AActor *activator);
}; };
IMPLEMENT_CLASS(ASecretTrigger, false, false, false, false) IMPLEMENT_CLASS(ASecretTrigger, false, false)
void ASecretTrigger::PostBeginPlay () void ASecretTrigger::PostBeginPlay ()
{ {

View file

@ -37,7 +37,7 @@
// The base class for sector actions ---------------------------------------- // The base class for sector actions ----------------------------------------
IMPLEMENT_CLASS(ASectorAction, false, false, false, false) IMPLEMENT_CLASS(ASectorAction, false, false)
ASectorAction::ASectorAction (bool activatedByUse) : ASectorAction::ASectorAction (bool activatedByUse) :
ActivatedByUse (activatedByUse) {} ActivatedByUse (activatedByUse) {}
@ -142,7 +142,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActEnter, false, false, false, false) IMPLEMENT_CLASS(ASecActEnter, false, false)
bool ASecActEnter::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActEnter::DoTriggerAction (AActor *triggerer, int activationType)
@ -160,7 +160,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActExit, false, false, false, false) IMPLEMENT_CLASS(ASecActExit, false, false)
bool ASecActExit::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActExit::DoTriggerAction (AActor *triggerer, int activationType)
@ -181,7 +181,7 @@ public:
// Skull Tag uses 9999 for a special that is triggered whenever // Skull Tag uses 9999 for a special that is triggered whenever
// the player is on the sector's floor. I think this is more useful. // the player is on the sector's floor. I think this is more useful.
IMPLEMENT_CLASS(ASecActHitFloor, false, false, false, false) IMPLEMENT_CLASS(ASecActHitFloor, false, false)
bool ASecActHitFloor::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActHitFloor::DoTriggerAction (AActor *triggerer, int activationType)
@ -199,7 +199,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActHitCeil, false, false, false, false) IMPLEMENT_CLASS(ASecActHitCeil, false, false)
bool ASecActHitCeil::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActHitCeil::DoTriggerAction (AActor *triggerer, int activationType)
@ -218,7 +218,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActUse, false, false, false, false) IMPLEMENT_CLASS(ASecActUse, false, false)
bool ASecActUse::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActUse::DoTriggerAction (AActor *triggerer, int activationType)
@ -237,7 +237,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActUseWall, false, false, false, false) IMPLEMENT_CLASS(ASecActUseWall, false, false)
bool ASecActUseWall::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActUseWall::DoTriggerAction (AActor *triggerer, int activationType)
@ -255,7 +255,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActEyesDive, false, false, false, false) IMPLEMENT_CLASS(ASecActEyesDive, false, false)
bool ASecActEyesDive::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActEyesDive::DoTriggerAction (AActor *triggerer, int activationType)
@ -273,7 +273,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActEyesSurface, false, false, false, false) IMPLEMENT_CLASS(ASecActEyesSurface, false, false)
bool ASecActEyesSurface::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActEyesSurface::DoTriggerAction (AActor *triggerer, int activationType)
@ -291,7 +291,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActEyesBelowC, false, false, false, false) IMPLEMENT_CLASS(ASecActEyesBelowC, false, false)
bool ASecActEyesBelowC::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActEyesBelowC::DoTriggerAction (AActor *triggerer, int activationType)
@ -309,7 +309,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActEyesAboveC, false, false, false, false) IMPLEMENT_CLASS(ASecActEyesAboveC, false, false)
bool ASecActEyesAboveC::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActEyesAboveC::DoTriggerAction (AActor *triggerer, int activationType)
@ -327,7 +327,7 @@ public:
bool DoTriggerAction (AActor *triggerer, int activationType); bool DoTriggerAction (AActor *triggerer, int activationType);
}; };
IMPLEMENT_CLASS(ASecActHitFakeFloor, false, false, false, false) IMPLEMENT_CLASS(ASecActHitFakeFloor, false, false)
bool ASecActHitFakeFloor::DoTriggerAction (AActor *triggerer, int activationType) bool ASecActHitFakeFloor::DoTriggerAction (AActor *triggerer, int activationType)

View file

@ -15,7 +15,7 @@ class AColorSetter : public AActor
}; };
IMPLEMENT_CLASS(AColorSetter, false, false, false, false) IMPLEMENT_CLASS(AColorSetter, false, false)
class AFadeSetter : public AActor class AFadeSetter : public AActor
{ {
@ -30,4 +30,4 @@ class AFadeSetter : public AActor
}; };
IMPLEMENT_CLASS(AFadeSetter, false, false, false, false) IMPLEMENT_CLASS(AFadeSetter, false, false)

View file

@ -24,7 +24,7 @@ public:
DBaseDecal (const DBaseDecal *basis); DBaseDecal (const DBaseDecal *basis);
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
void Destroy (); void Destroy() override;
FTextureID StickToWall(side_t *wall, double x, double y, F3DFloor * ffloor); FTextureID StickToWall(side_t *wall, double x, double y, F3DFloor * ffloor);
double GetRealZ (const side_t *wall) const; double GetRealZ (const side_t *wall) const;
void SetShade (DWORD rgb); void SetShade (DWORD rgb);
@ -66,7 +66,7 @@ public:
static DImpactDecal *StaticCreate(const FDecalTemplate *tpl, const DVector3 &pos, side_t *wall, F3DFloor * ffloor, PalEntry color = 0); static DImpactDecal *StaticCreate(const FDecalTemplate *tpl, const DVector3 &pos, side_t *wall, F3DFloor * ffloor, PalEntry color = 0);
void BeginPlay (); void BeginPlay ();
void Destroy (); void Destroy() override;
protected: protected:
DBaseDecal *CloneSelf(const FDecalTemplate *tpl, double x, double y, double z, side_t *wall, F3DFloor * ffloor) const; DBaseDecal *CloneSelf(const FDecalTemplate *tpl, double x, double y, double z, side_t *wall, F3DFloor * ffloor) const;
@ -88,7 +88,7 @@ class ASkyViewpoint : public AActor
DECLARE_CLASS (ASkyViewpoint, AActor) DECLARE_CLASS (ASkyViewpoint, AActor)
public: public:
void BeginPlay (); void BeginPlay ();
void Destroy (); void Destroy() override;
}; };
// For an EE compatible linedef based definition. // For an EE compatible linedef based definition.
@ -116,7 +116,7 @@ public:
DFlashFader (float r1, float g1, float b1, float a1, DFlashFader (float r1, float g1, float b1, float a1,
float r2, float g2, float b2, float a2, float r2, float g2, float b2, float a2,
float time, AActor *who); float time, AActor *who);
void Destroy (); void Destroy() override;
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
void Tick (); void Tick ();
AActor *WhoFor() { return ForWho; } AActor *WhoFor() { return ForWho; }
@ -206,7 +206,7 @@ public:
void Serialize(FSerializer &arc); void Serialize(FSerializer &arc);
void Die (AActor *source, AActor *inflictor, int dmgflags); void Die (AActor *source, AActor *inflictor, int dmgflags);
void Destroy (); void Destroy() override;
TObjPtr<AActor> UnmorphedMe; TObjPtr<AActor> UnmorphedMe;
int UnmorphTime, MorphStyle; int UnmorphTime, MorphStyle;

View file

@ -42,7 +42,7 @@
// arg0 = Visibility*4 for this skybox // arg0 = Visibility*4 for this skybox
IMPLEMENT_CLASS(ASkyViewpoint, false, false, false, false) IMPLEMENT_CLASS(ASkyViewpoint, false, false)
// If this actor has no TID, make it the default sky box // If this actor has no TID, make it the default sky box
void ASkyViewpoint::BeginPlay () void ASkyViewpoint::BeginPlay ()
@ -73,7 +73,7 @@ void ASkyViewpoint::Destroy ()
Super::Destroy(); Super::Destroy();
} }
IMPLEMENT_CLASS(ASkyCamCompat, false, false, false, false) IMPLEMENT_CLASS(ASkyCamCompat, false, false)
void ASkyCamCompat::BeginPlay() void ASkyCamCompat::BeginPlay()
{ {
@ -98,7 +98,7 @@ public:
void PostBeginPlay (); void PostBeginPlay ();
}; };
IMPLEMENT_CLASS(ASkyPicker, false, false, false, false) IMPLEMENT_CLASS(ASkyPicker, false, false)
void ASkyPicker::PostBeginPlay () void ASkyPicker::PostBeginPlay ()
{ {
@ -142,7 +142,7 @@ void ASkyPicker::PostBeginPlay ()
// arg0 = opacity of plane; 0 = invisible, 255 = fully opaque // arg0 = opacity of plane; 0 = invisible, 255 = fully opaque
IMPLEMENT_CLASS(AStackPoint, false, false, false, false) IMPLEMENT_CLASS(AStackPoint, false, false)
void AStackPoint::BeginPlay () void AStackPoint::BeginPlay ()
{ {
@ -157,10 +157,10 @@ class ASectorSilencer : public AActor
DECLARE_CLASS (ASectorSilencer, AActor) DECLARE_CLASS (ASectorSilencer, AActor)
public: public:
void BeginPlay (); void BeginPlay ();
void Destroy (); void Destroy() override;
}; };
IMPLEMENT_CLASS(ASectorSilencer, false, false, false, false) IMPLEMENT_CLASS(ASectorSilencer, false, false)
void ASectorSilencer::BeginPlay () void ASectorSilencer::BeginPlay ()
{ {
@ -184,7 +184,7 @@ public:
void BeginPlay (); void BeginPlay ();
}; };
IMPLEMENT_CLASS(ASectorFlagSetter, false, false, false, false) IMPLEMENT_CLASS(ASectorFlagSetter, false, false)
void ASectorFlagSetter::BeginPlay () void ASectorFlagSetter::BeginPlay ()
{ {

View file

@ -46,14 +46,14 @@ public:
void Activate (AActor *deactivator); void Activate (AActor *deactivator);
}; };
IMPLEMENT_CLASS(ASoundEnvironment, false, false, false, false) IMPLEMENT_CLASS(ASoundEnvironment, false, false)
void ASoundEnvironment::PostBeginPlay () void ASoundEnvironment::PostBeginPlay ()
{ {
Super::PostBeginPlay (); Super::PostBeginPlay ();
if (!(flags2 & MF2_DORMANT)) if (!(flags2 & MF2_DORMANT))
{ {
Activate (this); CallActivate (this);
} }
} }

View file

@ -80,7 +80,7 @@ public:
TObjPtr<DSeqNode> Sequence; TObjPtr<DSeqNode> Sequence;
}; };
IMPLEMENT_CLASS(ASoundSequenceSlot, false, true, false, false) IMPLEMENT_CLASS(ASoundSequenceSlot, false, true)
IMPLEMENT_POINTERS_START(ASoundSequenceSlot) IMPLEMENT_POINTERS_START(ASoundSequenceSlot)
IMPLEMENT_POINTER(Sequence) IMPLEMENT_POINTER(Sequence)
@ -104,14 +104,14 @@ class ASoundSequence : public AActor
{ {
DECLARE_CLASS (ASoundSequence, AActor) DECLARE_CLASS (ASoundSequence, AActor)
public: public:
void Destroy (); void Destroy() override;
void PostBeginPlay (); void PostBeginPlay ();
void Activate (AActor *activator); void Activate (AActor *activator);
void Deactivate (AActor *activator); void Deactivate (AActor *activator);
void MarkPrecacheSounds () const; void MarkPrecacheSounds () const;
}; };
IMPLEMENT_CLASS(ASoundSequence, false, false, false, false) IMPLEMENT_CLASS(ASoundSequence, false, false)
//========================================================================== //==========================================================================
// //

View file

@ -45,7 +45,7 @@ public:
void Activate (AActor *activator); void Activate (AActor *activator);
}; };
IMPLEMENT_CLASS(ASpark, false, false, false, false) IMPLEMENT_CLASS(ASpark, false, false)
void ASpark::Activate (AActor *activator) void ASpark::Activate (AActor *activator)
{ {

View file

@ -44,8 +44,8 @@
static FRandom pr_spot ("SpecialSpot"); static FRandom pr_spot ("SpecialSpot");
static FRandom pr_spawnmace ("SpawnMace"); static FRandom pr_spawnmace ("SpawnMace");
IMPLEMENT_CLASS(DSpotState, false, false, false, false) IMPLEMENT_CLASS(DSpotState, false, false)
IMPLEMENT_CLASS(ASpecialSpot, false, false, false, false) IMPLEMENT_CLASS(ASpecialSpot, false, false)
TObjPtr<DSpotState> DSpotState::SpotState; TObjPtr<DSpotState> DSpotState::SpotState;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View file

@ -11,7 +11,7 @@ class ASpecialSpot : public AActor
public: public:
void BeginPlay(); void BeginPlay();
void Destroy(); void Destroy() override;
}; };
@ -28,7 +28,7 @@ public:
DSpotState (); DSpotState ();
void Destroy (); void Destroy() override;
void Tick (); void Tick ();
static DSpotState *GetSpotState(bool create = true); static DSpotState *GetSpotState(bool create = true);
FSpotList *FindSpotList(PClassActor *type); FSpotList *FindSpotList(PClassActor *type);

View file

@ -42,7 +42,7 @@ public:
void PostBeginPlay (); void PostBeginPlay ();
}; };
IMPLEMENT_CLASS(AWaterZone, false, false, false, false) IMPLEMENT_CLASS(AWaterZone, false, false)
void AWaterZone::PostBeginPlay () void AWaterZone::PostBeginPlay ()
{ {

View file

@ -3,8 +3,8 @@
#include "doomstat.h" #include "doomstat.h"
#include "serializer.h" #include "serializer.h"
IMPLEMENT_CLASS(PClassWeaponPiece, false, false, false, false) IMPLEMENT_CLASS(PClassWeaponPiece, false, false)
IMPLEMENT_CLASS(AWeaponHolder, false, false, false, false) IMPLEMENT_CLASS(AWeaponHolder, false, false)
DEFINE_FIELD(AWeaponHolder, PieceMask); DEFINE_FIELD(AWeaponHolder, PieceMask);
DEFINE_FIELD(AWeaponHolder, PieceWeapon); DEFINE_FIELD(AWeaponHolder, PieceWeapon);
@ -27,7 +27,7 @@ void AWeaponHolder::Serialize(FSerializer &arc)
("pieceweapon", PieceWeapon); ("pieceweapon", PieceWeapon);
} }
IMPLEMENT_CLASS(AWeaponPiece, false, true, false, false) IMPLEMENT_CLASS(AWeaponPiece, false, true)
IMPLEMENT_POINTERS_START(AWeaponPiece) IMPLEMENT_POINTERS_START(AWeaponPiece)
IMPLEMENT_POINTER(FullWeapon) IMPLEMENT_POINTER(FullWeapon)

View file

@ -23,7 +23,7 @@
extern FFlagDef WeaponFlagDefs[]; extern FFlagDef WeaponFlagDefs[];
IMPLEMENT_CLASS(AWeapon, false, true, true, false) IMPLEMENT_CLASS(AWeapon, false, true)
IMPLEMENT_POINTERS_START(AWeapon) IMPLEMENT_POINTERS_START(AWeapon)
IMPLEMENT_POINTER(Ammo1) IMPLEMENT_POINTER(Ammo1)
@ -80,7 +80,7 @@ TMap<PClassWeapon *, int> Weapons_hton;
static int ntoh_cmp(const void *a, const void *b); static int ntoh_cmp(const void *a, const void *b);
IMPLEMENT_CLASS(PClassWeapon, false, false, false, false) IMPLEMENT_CLASS(PClassWeapon, false, false)
//=========================================================================== //===========================================================================
// //
@ -866,7 +866,7 @@ FState *AWeapon::GetStateForButtonName (FName button)
/* Weapon giver ***********************************************************/ /* Weapon giver ***********************************************************/
IMPLEMENT_CLASS(AWeaponGiver, false, false, false, false) IMPLEMENT_CLASS(AWeaponGiver, false, false)
DEFINE_FIELD(AWeaponGiver, DropAmmoFactor); DEFINE_FIELD(AWeaponGiver, DropAmmoFactor);

View file

@ -44,15 +44,15 @@
EXTERN_CVAR(Int, con_scaletext) EXTERN_CVAR(Int, con_scaletext)
int active_con_scaletext(); int active_con_scaletext();
IMPLEMENT_CLASS(DHUDMessage, false, true, false, false) IMPLEMENT_CLASS(DHUDMessage, false, true)
IMPLEMENT_POINTERS_START(DHUDMessage) IMPLEMENT_POINTERS_START(DHUDMessage)
IMPLEMENT_POINTER(Next) IMPLEMENT_POINTER(Next)
IMPLEMENT_POINTERS_END IMPLEMENT_POINTERS_END
IMPLEMENT_CLASS(DHUDMessageFadeOut, false, false, false, false) IMPLEMENT_CLASS(DHUDMessageFadeOut, false, false)
IMPLEMENT_CLASS(DHUDMessageFadeInOut, false, false, false, false) IMPLEMENT_CLASS(DHUDMessageFadeInOut, false, false)
IMPLEMENT_CLASS(DHUDMessageTypeOnFadeOut, false, false, false, false) IMPLEMENT_CLASS(DHUDMessageTypeOnFadeOut, false, false)
/************************************************************************* /*************************************************************************
* Basic HUD message. Appears and disappears without any special effects * * Basic HUD message. Appears and disappears without any special effects *

View file

@ -341,7 +341,7 @@ public:
}; };
DBaseStatusBar (int reltop, int hres=320, int vres=200); DBaseStatusBar (int reltop, int hres=320, int vres=200);
void Destroy (); void Destroy() override;
void SetScaled (bool scale, bool force=false); void SetScaled (bool scale, bool force=false);

View file

@ -1531,7 +1531,7 @@ private:
SBarInfoMainBlock *lastPopup; SBarInfoMainBlock *lastPopup;
}; };
IMPLEMENT_CLASS(DSBarInfo, false, true, false, false) IMPLEMENT_CLASS(DSBarInfo, false, true)
IMPLEMENT_POINTERS_START(DSBarInfo) IMPLEMENT_POINTERS_START(DSBarInfo)
IMPLEMENT_POINTER(ammo1) IMPLEMENT_POINTER(ammo1)

View file

@ -62,7 +62,7 @@
#define XHAIRPICKUPSIZE (2+XHAIRSHRINKSIZE) #define XHAIRPICKUPSIZE (2+XHAIRSHRINKSIZE)
#define POWERUPICONSIZE 32 #define POWERUPICONSIZE 32
IMPLEMENT_CLASS(DBaseStatusBar, false, true, false, false) IMPLEMENT_CLASS(DBaseStatusBar, false, true)
IMPLEMENT_POINTERS_START(DBaseStatusBar) IMPLEMENT_POINTERS_START(DBaseStatusBar)
IMPLEMENT_POINTER(Messages[0]) IMPLEMENT_POINTER(Messages[0])

View file

@ -6,7 +6,7 @@
// Coin --------------------------------------------------------------------- // Coin ---------------------------------------------------------------------
IMPLEMENT_CLASS(ACoin, false, false, false, false) IMPLEMENT_CLASS(ACoin, false, false)
const char *ACoin::PickupMessage () const char *ACoin::PickupMessage ()
{ {

View file

@ -17,7 +17,7 @@ public:
int DoSpecialDamage (AActor *victim, int damage, FName damagetype); int DoSpecialDamage (AActor *victim, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(ALoreShot, false, false, false, false) IMPLEMENT_CLASS(ALoreShot, false, false)
int ALoreShot::DoSpecialDamage (AActor *victim, int damage, FName damagetype) int ALoreShot::DoSpecialDamage (AActor *victim, int damage, FName damagetype)
{ {

View file

@ -23,7 +23,7 @@ public:
PalEntry GetBlend (); PalEntry GetBlend ();
}; };
IMPLEMENT_CLASS(AProgLevelEnder, false, false, false, false) IMPLEMENT_CLASS(AProgLevelEnder, false, false)
//============================================================================ //============================================================================
// //

View file

@ -47,7 +47,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(ATeleporterBeacon, false, false, false, false) IMPLEMENT_CLASS(ATeleporterBeacon, false, false)
bool ATeleporterBeacon::Use (bool pickup) bool ATeleporterBeacon::Use (bool pickup)
{ {

View file

@ -16,7 +16,7 @@ public:
void Touch (AActor *toucher); void Touch (AActor *toucher);
}; };
IMPLEMENT_CLASS(ASpectralMonster, false, false, false, false) IMPLEMENT_CLASS(ASpectralMonster, false, false)
void ASpectralMonster::Touch (AActor *toucher) void ASpectralMonster::Touch (AActor *toucher)
{ {

View file

@ -19,7 +19,7 @@
*/ */
// Degnin Ore --------------------------------------------------------------- // Degnin Ore ---------------------------------------------------------------
IMPLEMENT_CLASS(ADegninOre, false, false, false, false) IMPLEMENT_CLASS(ADegninOre, false, false)
DEFINE_ACTION_FUNCTION(AActor, A_RemoveForceField) DEFINE_ACTION_FUNCTION(AActor, A_RemoveForceField)
{ {
@ -75,7 +75,7 @@ public:
bool TryPickup (AActor *&toucher); bool TryPickup (AActor *&toucher);
}; };
IMPLEMENT_CLASS(AHealthTraining, false, false, false, false) IMPLEMENT_CLASS(AHealthTraining, false, false)
bool AHealthTraining::TryPickup (AActor *&toucher) bool AHealthTraining::TryPickup (AActor *&toucher)
{ {
@ -105,7 +105,7 @@ public:
bool Use (bool pickup); bool Use (bool pickup);
}; };
IMPLEMENT_CLASS(AScanner, false, false, false, false) IMPLEMENT_CLASS(AScanner, false, false)
bool AScanner::Use (bool pickup) bool AScanner::Use (bool pickup)
{ {
@ -130,7 +130,7 @@ public:
bool SpecialDropAction (AActor *dropper); bool SpecialDropAction (AActor *dropper);
}; };
IMPLEMENT_CLASS(APrisonPass, false, false, false, false) IMPLEMENT_CLASS(APrisonPass, false, false)
bool APrisonPass::TryPickup (AActor *&toucher) bool APrisonPass::TryPickup (AActor *&toucher)
{ {
@ -163,7 +163,7 @@ bool APrisonPass::SpecialDropAction (AActor *dropper)
// actions and cannot be held. ---------------------------------------------- // actions and cannot be held. ----------------------------------------------
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
IMPLEMENT_CLASS(ADummyStrifeItem, false, false, false, false) IMPLEMENT_CLASS(ADummyStrifeItem, false, false)
// Sound the alarm! --------------------------------------------------------- // Sound the alarm! ---------------------------------------------------------
@ -175,7 +175,7 @@ public:
bool SpecialDropAction (AActor *dropper); bool SpecialDropAction (AActor *dropper);
}; };
IMPLEMENT_CLASS(ARaiseAlarm, false, false, false, false) IMPLEMENT_CLASS(ARaiseAlarm, false, false)
bool ARaiseAlarm::TryPickup (AActor *&toucher) bool ARaiseAlarm::TryPickup (AActor *&toucher)
{ {
@ -209,7 +209,7 @@ public:
bool TryPickup (AActor *&toucher); bool TryPickup (AActor *&toucher);
}; };
IMPLEMENT_CLASS(AOpenDoor222, false, false, false, false) IMPLEMENT_CLASS(AOpenDoor222, false, false)
bool AOpenDoor222::TryPickup (AActor *&toucher) bool AOpenDoor222::TryPickup (AActor *&toucher)
{ {
@ -228,7 +228,7 @@ public:
bool SpecialDropAction (AActor *dropper); bool SpecialDropAction (AActor *dropper);
}; };
IMPLEMENT_CLASS(ACloseDoor222, false, false, false, false) IMPLEMENT_CLASS(ACloseDoor222, false, false)
bool ACloseDoor222::TryPickup (AActor *&toucher) bool ACloseDoor222::TryPickup (AActor *&toucher)
{ {
@ -262,7 +262,7 @@ public:
bool SpecialDropAction (AActor *dropper); bool SpecialDropAction (AActor *dropper);
}; };
IMPLEMENT_CLASS(AOpenDoor224, false, false, false, false) IMPLEMENT_CLASS(AOpenDoor224, false, false)
bool AOpenDoor224::TryPickup (AActor *&toucher) bool AOpenDoor224::TryPickup (AActor *&toucher)
{ {
@ -287,7 +287,7 @@ public:
bool TryPickup (AActor *&toucher); bool TryPickup (AActor *&toucher);
}; };
IMPLEMENT_CLASS(AAmmoFillup, false, false, false, false) IMPLEMENT_CLASS(AAmmoFillup, false, false)
bool AAmmoFillup::TryPickup (AActor *&toucher) bool AAmmoFillup::TryPickup (AActor *&toucher)
{ {
@ -325,7 +325,7 @@ public:
bool TryPickup (AActor *&toucher); bool TryPickup (AActor *&toucher);
}; };
IMPLEMENT_CLASS(AHealthFillup, false, false, false, false) IMPLEMENT_CLASS(AHealthFillup, false, false)
bool AHealthFillup::TryPickup (AActor *&toucher) bool AHealthFillup::TryPickup (AActor *&toucher)
{ {
@ -342,7 +342,7 @@ bool AHealthFillup::TryPickup (AActor *&toucher)
// Upgrade Stamina ---------------------------------------------------------- // Upgrade Stamina ----------------------------------------------------------
IMPLEMENT_CLASS(AUpgradeStamina, false, false, false, false) IMPLEMENT_CLASS(AUpgradeStamina, false, false)
bool AUpgradeStamina::TryPickup (AActor *&toucher) bool AUpgradeStamina::TryPickup (AActor *&toucher)
{ {
@ -360,7 +360,7 @@ bool AUpgradeStamina::TryPickup (AActor *&toucher)
// Upgrade Accuracy --------------------------------------------------------- // Upgrade Accuracy ---------------------------------------------------------
IMPLEMENT_CLASS(AUpgradeAccuracy, false, false, false, false) IMPLEMENT_CLASS(AUpgradeAccuracy, false, false)
bool AUpgradeAccuracy::TryPickup (AActor *&toucher) bool AUpgradeAccuracy::TryPickup (AActor *&toucher)
{ {
@ -373,7 +373,7 @@ bool AUpgradeAccuracy::TryPickup (AActor *&toucher)
// Start a slideshow -------------------------------------------------------- // Start a slideshow --------------------------------------------------------
IMPLEMENT_CLASS(ASlideshowStarter, false, false, false, false) IMPLEMENT_CLASS(ASlideshowStarter, false, false)
bool ASlideshowStarter::TryPickup (AActor *&toucher) bool ASlideshowStarter::TryPickup (AActor *&toucher)
{ {

View file

@ -72,7 +72,7 @@ public:
int TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FName damagetype); int TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(AForceFieldGuard, false, false, false, false) IMPLEMENT_CLASS(AForceFieldGuard, false, false)
int AForceFieldGuard::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FName damagetype) int AForceFieldGuard::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, FName damagetype)
{ {
@ -197,7 +197,7 @@ public:
void Die (AActor *source, AActor *inflictor, int dmgflags); void Die (AActor *source, AActor *inflictor, int dmgflags);
}; };
IMPLEMENT_CLASS(APowerCoupling, false, false, false, false) IMPLEMENT_CLASS(APowerCoupling, false, false)
void APowerCoupling::Die (AActor *source, AActor *inflictor, int dmgflags) void APowerCoupling::Die (AActor *source, AActor *inflictor, int dmgflags)
{ {
@ -239,7 +239,7 @@ public:
} }
}; };
IMPLEMENT_CLASS(AMeat, false, false, false, false) IMPLEMENT_CLASS(AMeat, false, false)
//========================================================================== //==========================================================================
// //

View file

@ -184,7 +184,7 @@ public:
int DoSpecialDamage (AActor *target, int damage, FName damagetype); int DoSpecialDamage (AActor *target, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(APoisonBolt, false, false, false, false) IMPLEMENT_CLASS(APoisonBolt, false, false)
int APoisonBolt::DoSpecialDamage (AActor *target, int damage, FName damagetype) int APoisonBolt::DoSpecialDamage (AActor *target, int damage, FName damagetype)
{ {
@ -607,7 +607,7 @@ public:
int DoSpecialDamage (AActor *target, int damage, FName damagetype); int DoSpecialDamage (AActor *target, int damage, FName damagetype);
}; };
IMPLEMENT_CLASS(APhosphorousFire, false, false, false, false) IMPLEMENT_CLASS(APhosphorousFire, false, false)
int APhosphorousFire::DoSpecialDamage (AActor *target, int damage, FName damagetype) int APhosphorousFire::DoSpecialDamage (AActor *target, int damage, FName damagetype)
{ {
@ -734,7 +734,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireGrenade)
// The Almighty Sigil! ------------------------------------------------------ // The Almighty Sigil! ------------------------------------------------------
IMPLEMENT_CLASS(ASigil, false, false, false, false) IMPLEMENT_CLASS(ASigil, false, false)
//============================================================================ //============================================================================
// //

View file

@ -851,7 +851,7 @@ private:
double ItemFlash; double ItemFlash;
}; };
IMPLEMENT_CLASS(DStrifeStatusBar, false, false, false, false); IMPLEMENT_CLASS(DStrifeStatusBar, false, false);
DBaseStatusBar *CreateStrifeStatusBar () DBaseStatusBar *CreateStrifeStatusBar ()
{ {

View file

@ -151,7 +151,7 @@ int GetSpriteIndex(const char * spritename, bool add)
return (lastindex = (int)sprites.Push (temp)); return (lastindex = (int)sprites.Push (temp));
} }
IMPLEMENT_CLASS(PClassActor, false, true, false, false) IMPLEMENT_CLASS(PClassActor, false, true)
IMPLEMENT_POINTERS_START(PClassActor) IMPLEMENT_POINTERS_START(PClassActor)
IMPLEMENT_POINTER(DropItems) IMPLEMENT_POINTER(DropItems)

View file

@ -54,12 +54,12 @@
FIntermissionDescriptorList IntermissionDescriptors; FIntermissionDescriptorList IntermissionDescriptors;
IMPLEMENT_CLASS(DIntermissionScreen, false, false, false, false) IMPLEMENT_CLASS(DIntermissionScreen, false, false)
IMPLEMENT_CLASS(DIntermissionScreenFader, false, false, false, false) IMPLEMENT_CLASS(DIntermissionScreenFader, false, false)
IMPLEMENT_CLASS(DIntermissionScreenText, false, false, false, false) IMPLEMENT_CLASS(DIntermissionScreenText, false, false)
IMPLEMENT_CLASS(DIntermissionScreenCast, false, false, false, false) IMPLEMENT_CLASS(DIntermissionScreenCast, false, false)
IMPLEMENT_CLASS(DIntermissionScreenScroller, false, false, false, false) IMPLEMENT_CLASS(DIntermissionScreenScroller, false, false)
IMPLEMENT_CLASS(DIntermissionController, false, true, false, false) IMPLEMENT_CLASS(DIntermissionController, false, true)
IMPLEMENT_POINTERS_START(DIntermissionController) IMPLEMENT_POINTERS_START(DIntermissionController)
IMPLEMENT_POINTER(mScreen) IMPLEMENT_POINTER(mScreen)

View file

@ -176,7 +176,7 @@ public:
virtual int Responder (event_t *ev); virtual int Responder (event_t *ev);
virtual int Ticker (); virtual int Ticker ();
virtual void Drawer (); virtual void Drawer ();
void Destroy(); void Destroy() override;
FTextureID GetBackground(bool *fill) FTextureID GetBackground(bool *fill)
{ {
*fill = mFlatfill; *fill = mFlatfill;
@ -301,7 +301,7 @@ public:
bool Responder (event_t *ev); bool Responder (event_t *ev);
void Ticker (); void Ticker ();
void Drawer (); void Drawer ();
void Destroy(); void Destroy() override;
friend void F_AdvanceIntermission(); friend void F_AdvanceIntermission();
}; };

View file

@ -37,7 +37,7 @@
#include "cmdlib.h" #include "cmdlib.h"
#include "i_system.h" #include "i_system.h"
IMPLEMENT_CLASS(DArgs, false, false, false, false) IMPLEMENT_CLASS(DArgs, false, false)
//=========================================================================== //===========================================================================
// //

View file

@ -1033,7 +1033,7 @@ public:
} }
}; };
IMPLEMENT_CLASS(DSuicider, false, true, false, false) IMPLEMENT_CLASS(DSuicider, false, true)
IMPLEMENT_POINTERS_START(DSuicider) IMPLEMENT_POINTERS_START(DSuicider)
IMPLEMENT_POINTER(Pawn) IMPLEMENT_POINTER(Pawn)

View file

@ -95,7 +95,7 @@ public:
desc->CalcIndent(); desc->CalcIndent();
} }
void Destroy() void Destroy() override
{ {
if (mStartItem >= 0) if (mStartItem >= 0)
{ {
@ -331,7 +331,7 @@ public:
} }
}; };
IMPLEMENT_CLASS(DColorPickerMenu, true, false, false, false) IMPLEMENT_CLASS(DColorPickerMenu, true, false)
CCMD(undocolorpic) CCMD(undocolorpic)
{ {

View file

@ -236,7 +236,7 @@ class DJoystickConfigMenu : public DOptionMenu
DECLARE_CLASS(DJoystickConfigMenu, DOptionMenu) DECLARE_CLASS(DJoystickConfigMenu, DOptionMenu)
}; };
IMPLEMENT_CLASS(DJoystickConfigMenu, false, false, false, false) IMPLEMENT_CLASS(DJoystickConfigMenu, false, false)
//============================================================================= //=============================================================================
// //

View file

@ -42,7 +42,7 @@
#include "d_event.h" #include "d_event.h"
#include "menu/menu.h" #include "menu/menu.h"
IMPLEMENT_CLASS(DListMenu, false, false, false, false) IMPLEMENT_CLASS(DListMenu, false, false)
//============================================================================= //=============================================================================
// //

View file

@ -103,7 +103,7 @@ protected:
char savegamestring[SAVESTRINGSIZE]; char savegamestring[SAVESTRINGSIZE];
DLoadSaveMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL); DLoadSaveMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
void Destroy(); void Destroy() override;
int RemoveSaveSlot (int index); int RemoveSaveSlot (int index);
void UnloadSaveData (); void UnloadSaveData ();
@ -119,7 +119,7 @@ public:
}; };
IMPLEMENT_CLASS(DLoadSaveMenu, false, false, false, false) IMPLEMENT_CLASS(DLoadSaveMenu, false, false)
TArray<FSaveGameNode*> DLoadSaveMenu::SaveGames; TArray<FSaveGameNode*> DLoadSaveMenu::SaveGames;
int DLoadSaveMenu::LastSaved = -1; int DLoadSaveMenu::LastSaved = -1;
@ -466,6 +466,7 @@ void DLoadSaveMenu::Destroy()
if (currentSavePic != nullptr) delete currentSavePic; if (currentSavePic != nullptr) delete currentSavePic;
currentSavePic = nullptr; currentSavePic = nullptr;
ClearSaveStuff (); ClearSaveStuff ();
Super::Destroy();
} }
//============================================================================= //=============================================================================
@ -927,14 +928,14 @@ class DSaveMenu : public DLoadSaveMenu
public: public:
DSaveMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL); DSaveMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
void Destroy(); void Destroy() override;
void DoSave (FSaveGameNode *node); void DoSave (FSaveGameNode *node);
bool Responder (event_t *ev); bool Responder (event_t *ev);
bool MenuEvent (int mkey, bool fromcontroller); bool MenuEvent (int mkey, bool fromcontroller);
}; };
IMPLEMENT_CLASS(DSaveMenu, false, false, false, false) IMPLEMENT_CLASS(DSaveMenu, false, false)
//============================================================================= //=============================================================================
@ -975,6 +976,7 @@ void DSaveMenu::Destroy()
if (Selected == 0) Selected = -1; if (Selected == 0) Selected = -1;
else Selected--; else Selected--;
} }
Super::Destroy();
} }
//============================================================================= //=============================================================================
@ -1102,7 +1104,7 @@ public:
bool MenuEvent (int mkey, bool fromcontroller); bool MenuEvent (int mkey, bool fromcontroller);
}; };
IMPLEMENT_CLASS(DLoadMenu, false, false, false, false) IMPLEMENT_CLASS(DLoadMenu, false, false)
//============================================================================= //=============================================================================

View file

@ -91,7 +91,7 @@ static bool MenuEnabled = true;
// //
//============================================================================ //============================================================================
IMPLEMENT_CLASS(DMenu, false, true, false, false) IMPLEMENT_CLASS(DMenu, false, true)
IMPLEMENT_POINTERS_START(DMenu) IMPLEMENT_POINTERS_START(DMenu)
IMPLEMENT_POINTER(mParentMenu) IMPLEMENT_POINTER(mParentMenu)

Some files were not shown because too many files have changed in this diff Show more