- 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 (const AActor &other) throw();
AActor &operator= (const AActor &other);
void Destroy ();
void Destroy () override;
~AActor ();
void Serialize(FSerializer &arc);
@ -612,6 +612,7 @@ public:
bool CheckNoDelay();
virtual void BeginPlay(); // Called immediately after the actor is created
void CallBeginPlay();
virtual void PostBeginPlay(); // Called immediately before the actor's first tick
void LevelSpawned(); // Called after BeginPlay if this actor was spawned by the world
virtual void HandleSpawnFlags(); // Translates SpawnFlags into in-game flags.
@ -620,6 +621,8 @@ public:
virtual void Activate (AActor *activator);
virtual void Deactivate (AActor *activator);
void CallActivate(AActor *activator);
void CallDeactivate(AActor *activator);
virtual void Tick ();
@ -629,6 +632,7 @@ public:
// Perform some special damage action. Returns the amount of damage to do.
// Returning -1 signals the damage routine to exit immediately
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.
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);
// 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.
virtual AInventory *DropInventory (AInventory *item);

View file

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

View file

@ -187,7 +187,7 @@ static const char *KeyConfCommands[] =
// CODE --------------------------------------------------------------------
IMPLEMENT_CLASS(DWaitingCommand, false, false, false, false)
IMPLEMENT_CLASS(DWaitingCommand, false, false)
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 ()
{

View file

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

View file

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

View file

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

View file

@ -119,7 +119,7 @@ protected:
DDecalThinker () : DThinker (STAT_DECALTHINKER) {}
};
IMPLEMENT_CLASS(DDecalThinker, false, true, false, false)
IMPLEMENT_CLASS(DDecalThinker, false, true)
IMPLEMENT_POINTERS_START(DDecalThinker)
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)
{
@ -1202,7 +1202,7 @@ DThinker *FDecalFaderAnim::CreateThinker (DBaseDecal *actor, side_t *wall) const
return fader;
}
IMPLEMENT_CLASS(DDecalStretcher, false, false, false, false)
IMPLEMENT_CLASS(DDecalStretcher, false, false)
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)
{
@ -1370,7 +1370,7 @@ FDecalAnimator *FDecalLib::FindAnimator (const char *name)
return NULL;
}
IMPLEMENT_CLASS(DDecalColorer, false, false, false, false)
IMPLEMENT_CLASS(DDecalColorer, false, false)
void DDecalColorer::Serialize(FSerializer &arc)
{

View file

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

View file

@ -110,7 +110,7 @@ struct ClassReg
PClass *MyClass;
const char *Name;
ClassReg *ParentType;
ClassReg *VMExport;
ClassReg *_VMExport;
const size_t *Pointers;
void (*ConstructNative)(void *);
void(*InitNatives)();
@ -157,23 +157,23 @@ protected: \
# define _DECLARE_TI(cls) ClassReg * const cls::RegistrationInfoPtr __attribute__((section(SECTION_CREG))) = &cls::RegistrationInfo;
#endif
#define _IMP_PCLASS(cls, ptrs, create, initn, vmexport) \
#define _IMP_PCLASS(cls, ptrs, create) \
ClassReg cls::RegistrationInfo = {\
nullptr, \
#cls, \
&cls::Super::RegistrationInfo, \
vmexport, \
nullptr, \
ptrs, \
create, \
initn, \
nullptr, \
sizeof(cls), \
cls::MetaClassNum }; \
_DECLARE_TI(cls) \
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) \
_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
// 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_ABSTRACT_true(cls) nullptr
#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
enum EObjectFlags
@ -481,7 +481,7 @@ public:
// that don't call their base class.
void CheckIfSerialized () const;
virtual void Destroy ();
virtual void Destroy();
// If you need to replace one object with another and want to
// change any pointers from the old object to the new object,

View file

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

View file

@ -97,8 +97,8 @@ static const size_t TheEnd = ~(size_t)0;
// CODE --------------------------------------------------------------------
IMPLEMENT_CLASS(PErrorType, false, false, false, false)
IMPLEMENT_CLASS(PVoidType, false, false, false, false)
IMPLEMENT_CLASS(PErrorType, false, false)
IMPLEMENT_CLASS(PVoidType, false, false)
void DumpTypeTable()
{
@ -145,7 +145,7 @@ void DumpTypeTable()
/* PClassType *************************************************************/
IMPLEMENT_CLASS(PClassType, false, false, false, false)
IMPLEMENT_CLASS(PClassType, false, false)
//==========================================================================
//
@ -173,7 +173,7 @@ void PClassType::DeriveData(PClass *newclass)
/* PClassClass ************************************************************/
IMPLEMENT_CLASS(PClassClass, false, false, false, false)
IMPLEMENT_CLASS(PClassClass, false, false)
//==========================================================================
//
@ -191,7 +191,7 @@ PClassClass::PClassClass()
/* PType ******************************************************************/
IMPLEMENT_CLASS(PType, true, true, false, false)
IMPLEMENT_CLASS(PType, true, true)
IMPLEMENT_POINTERS_START(PType)
IMPLEMENT_POINTER(HashNext)
@ -647,7 +647,7 @@ void PType::StaticInit()
/* 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 **********************************************************/
IMPLEMENT_CLASS(PCompoundType, true, false, false, false)
IMPLEMENT_CLASS(PCompoundType, true, false)
/* PNamedType *************************************************************/
IMPLEMENT_CLASS(PNamedType, true, true, false, false)
IMPLEMENT_CLASS(PNamedType, true, true)
IMPLEMENT_POINTERS_START(PNamedType)
IMPLEMENT_POINTER(Outer)
@ -725,7 +725,7 @@ FString PNamedType::QualifiedName() const
/* PInt *******************************************************************/
IMPLEMENT_CLASS(PInt, false, false, false, false)
IMPLEMENT_CLASS(PInt, false, false)
//==========================================================================
//
@ -964,7 +964,7 @@ double PInt::GetValueFloat(void *addr) const
/* PBool ******************************************************************/
IMPLEMENT_CLASS(PBool, false, false, false, false)
IMPLEMENT_CLASS(PBool, false, false)
//==========================================================================
//
@ -985,7 +985,7 @@ PBool::PBool()
/* PFloat *****************************************************************/
IMPLEMENT_CLASS(PFloat, false, false, false, false)
IMPLEMENT_CLASS(PFloat, false, false)
//==========================================================================
//
@ -1235,7 +1235,7 @@ void PFloat::SetOps()
/* PString ****************************************************************/
IMPLEMENT_CLASS(PString, false, false, false, false)
IMPLEMENT_CLASS(PString, false, false)
//==========================================================================
//
@ -1332,7 +1332,7 @@ void PString::DestroyValue(void *addr) const
/* 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 ******************************************************************/
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 ******************************************************************/
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 *****************************************************************/
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 *****************************************************************/
IMPLEMENT_CLASS(PColor, false, false, false, false)
IMPLEMENT_CLASS(PColor, false, false)
//==========================================================================
//
@ -1534,7 +1534,7 @@ PColor::PColor()
/* PStateLabel *****************************************************************/
IMPLEMENT_CLASS(PStateLabel, false, false, false, false)
IMPLEMENT_CLASS(PStateLabel, false, false)
//==========================================================================
//
@ -1550,7 +1550,7 @@ PStateLabel::PStateLabel()
/* PPointer ***************************************************************/
IMPLEMENT_CLASS(PPointer, false, true, false, false)
IMPLEMENT_CLASS(PPointer, false, true)
IMPLEMENT_POINTERS_START(PPointer)
IMPLEMENT_POINTER(PointedType)
@ -1695,7 +1695,7 @@ PPointer *NewPointer(PType *type, bool isconst)
/* 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 **********************************************************/
IMPLEMENT_CLASS(PClassPointer, false, true, false, false)
IMPLEMENT_CLASS(PClassPointer,false, true)
IMPLEMENT_POINTERS_START(PClassPointer)
IMPLEMENT_POINTER(ClassRestriction)
@ -1819,7 +1819,7 @@ PClassPointer *NewClassPointer(PClass *restrict)
/* PEnum ******************************************************************/
IMPLEMENT_CLASS(PEnum, false, true, false, false)
IMPLEMENT_CLASS(PEnum, false, true)
IMPLEMENT_POINTERS_START(PEnum)
IMPLEMENT_POINTER(ValueType)
@ -1872,7 +1872,7 @@ PEnum *NewEnum(FName name, PTypeBase *outer)
/* PArray *****************************************************************/
IMPLEMENT_CLASS(PArray, false, true, false, false)
IMPLEMENT_CLASS(PArray, false, true)
IMPLEMENT_POINTERS_START(PArray)
IMPLEMENT_POINTER(ElementType)
@ -2035,7 +2035,7 @@ PArray *NewArray(PType *type, unsigned int count)
/* PDynArray **************************************************************/
IMPLEMENT_CLASS(PDynArray, false, true, false, false)
IMPLEMENT_CLASS(PDynArray, false, true)
IMPLEMENT_POINTERS_START(PDynArray)
IMPLEMENT_POINTER(ElementType)
@ -2118,7 +2118,7 @@ PDynArray *NewDynArray(PType *type)
/* PMap *******************************************************************/
IMPLEMENT_CLASS(PMap, false, true, false, false)
IMPLEMENT_CLASS(PMap, false, true)
IMPLEMENT_POINTERS_START(PMap)
IMPLEMENT_POINTER(KeyType)
@ -2202,7 +2202,7 @@ PMap *NewMap(PType *keytype, PType *valuetype)
/* PStruct ****************************************************************/
IMPLEMENT_CLASS(PStruct, false, false, false, false)
IMPLEMENT_CLASS(PStruct, false, false)
//==========================================================================
//
@ -2440,7 +2440,7 @@ PStruct *NewStruct(FName name, PTypeBase *outer)
/* PNativeStruct ****************************************************************/
IMPLEMENT_CLASS(PNativeStruct, false, false, false, false)
IMPLEMENT_CLASS(PNativeStruct, false, false)
//==========================================================================
//
@ -2478,7 +2478,7 @@ PNativeStruct *NewNativeStruct(FName name, PTypeBase *outer)
/* 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 *************************************************************/
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 **************************************************************/
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 *****************************************************************/
IMPLEMENT_CLASS(PClass, false, true, false, false)
IMPLEMENT_CLASS(PClass, false, true)
IMPLEMENT_POINTERS_START(PClass)
IMPLEMENT_POINTER(ParentClass)
@ -2907,7 +2907,6 @@ void PClass::StaticShutdown ()
{
auto cr = ((ClassReg *)*probe);
cr->MyClass = nullptr;
if (cr->VMExport != nullptr) cr->VMExport->MyClass = nullptr;
}
}
@ -3034,10 +3033,6 @@ PClass *ClassReg::RegisterClass()
{
cls->ParentClass = ParentType->RegisterClass();
}
if (VMExport != nullptr)
{
cls->VMExported = VMExport->RegisterClass();
}
return cls;
}
@ -3717,19 +3712,19 @@ CCMD(typetable)
// Symbol tables ------------------------------------------------------------
IMPLEMENT_CLASS(PTypeBase, true, false, false, false);
IMPLEMENT_CLASS(PSymbol, true, false, false, false);
IMPLEMENT_CLASS(PSymbolConst, false, false, false, false);
IMPLEMENT_CLASS(PSymbolConstNumeric, false, false, false, false);
IMPLEMENT_CLASS(PSymbolConstString, false, false, false, false);
IMPLEMENT_CLASS(PSymbolTreeNode, false, false, false, false)
IMPLEMENT_CLASS(PSymbolType, false, true, false, false)
IMPLEMENT_CLASS(PTypeBase, true, false);
IMPLEMENT_CLASS(PSymbol, true, false);
IMPLEMENT_CLASS(PSymbolConst, false, false);
IMPLEMENT_CLASS(PSymbolConstNumeric, false, false);
IMPLEMENT_CLASS(PSymbolConstString, false, false);
IMPLEMENT_CLASS(PSymbolTreeNode, false, false)
IMPLEMENT_CLASS(PSymbolType, false, true)
IMPLEMENT_POINTERS_START(PSymbolType)
IMPLEMENT_POINTER(Type)
IMPLEMENT_POINTERS_END
IMPLEMENT_CLASS(PSymbolVMFunction, false, true, false, false)
IMPLEMENT_CLASS(PSymbolVMFunction, false, true)
IMPLEMENT_POINTERS_START(PSymbolVMFunction)
IMPLEMENT_POINTER(Function)

View file

@ -809,7 +809,6 @@ public:
// Per-class information -------------------------------------
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 *FlatPointers; // object pointers defined by this class and all its superclasses; not initialized by default
BYTE *Defaults;

View file

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

View file

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

View file

@ -48,7 +48,7 @@ extern cycle_t BotSupportCycles;
extern cycle_t ActionCycles;
extern int BotWTG;
IMPLEMENT_CLASS(DThinker, false, false, false, true)
IMPLEMENT_CLASS(DThinker, false, false)
DThinker *NextToThink;
@ -56,6 +56,12 @@ FThinkerList DThinker::Thinkers[MAX_STATNUM+2];
FThinkerList DThinker::FreshThinkers[MAX_STATNUM+1];
bool DThinker::bSerialOverride = false;
//==========================================================================
//
//
//
//==========================================================================
void FThinkerList::AddTail(DThinker *thinker)
{
assert(thinker->PrevThinker == NULL && thinker->NextThinker == NULL);
@ -80,6 +86,12 @@ void FThinkerList::AddTail(DThinker *thinker)
GC::WriteBarrier(Sentinel, thinker);
}
//==========================================================================
//
//
//
//==========================================================================
DThinker *FThinkerList::GetHead() const
{
if (Sentinel == NULL || Sentinel->NextThinker == Sentinel)
@ -90,6 +102,12 @@ DThinker *FThinkerList::GetHead() const
return Sentinel->NextThinker;
}
//==========================================================================
//
//
//
//==========================================================================
DThinker *FThinkerList::GetTail() const
{
if (Sentinel == NULL || Sentinel->PrevThinker == Sentinel)
@ -99,11 +117,23 @@ DThinker *FThinkerList::GetTail() const
return Sentinel->PrevThinker;
}
//==========================================================================
//
//
//
//==========================================================================
bool FThinkerList::IsEmpty() const
{
return Sentinel == NULL || Sentinel->NextThinker == NULL;
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::SaveList(FSerializer &arc, DThinker *node)
{
if (node != NULL)
@ -234,6 +264,12 @@ void DThinker::Destroy ()
Super::Destroy();
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::Remove()
{
if (this == NextToThink)
@ -254,6 +290,12 @@ void DThinker::Remove()
PrevThinker = NULL;
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::PostBeginPlay ()
{
}
@ -261,15 +303,41 @@ void DThinker::PostBeginPlay ()
DEFINE_ACTION_FUNCTION(DThinker, PostBeginPlay)
{
PARAM_SELF_PROLOGUE(DThinker);
self->VMSuperCall();
self->PostBeginPlay();
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()
{
}
//==========================================================================
//
//
//
//==========================================================================
DThinker *DThinker::FirstThinker (int statnum)
{
DThinker *node;
@ -290,6 +358,12 @@ DThinker *DThinker::FirstThinker (int statnum)
return node;
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::ChangeStatNum (int statnum)
{
FThinkerList *list;
@ -313,7 +387,12 @@ void DThinker::ChangeStatNum (int statnum)
list->AddTail(this);
}
//==========================================================================
//
// Mark the first thinker of each list
//
//==========================================================================
void DThinker::MarkRoots()
{
for (int i = 0; i <= MAX_STATNUM; ++i)
@ -324,7 +403,12 @@ void DThinker::MarkRoots()
GC::Mark(Thinkers[MAX_STATNUM+1].Sentinel);
}
//==========================================================================
//
// Destroy every thinker
//
//==========================================================================
void DThinker::DestroyAllThinkers ()
{
int i;
@ -341,6 +425,12 @@ void DThinker::DestroyAllThinkers ()
GC::FullGC();
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::DestroyThinkersInList (FThinkerList &list)
{
if (list.Sentinel != NULL)
@ -355,6 +445,12 @@ void DThinker::DestroyThinkersInList (FThinkerList &list)
}
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::RunThinkers ()
{
int i, count;
@ -385,6 +481,12 @@ void DThinker::RunThinkers ()
ThinkCycles.Unclock();
}
//==========================================================================
//
//
//
//==========================================================================
int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
{
int count = 0;
@ -407,7 +509,7 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
node->Remove();
dest->AddTail(node);
}
node->PostBeginPlay();
node->CallPostBeginPlay();
}
else if (dest != NULL)
{
@ -416,7 +518,7 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
if (!(node->ObjectFlags & OF_EuthanizeMe))
{ // Only tick thinkers not scheduled for destruction
node->Tick();
node->CallTick();
node->ObjectFlags &= ~OF_JustSpawned;
GC::CheckGC();
}
@ -425,6 +527,12 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
return count;
}
//==========================================================================
//
//
//
//==========================================================================
void DThinker::Tick ()
{
}
@ -432,11 +540,28 @@ void DThinker::Tick ()
DEFINE_ACTION_FUNCTION(DThinker, Tick)
{
PARAM_SELF_PROLOGUE(DThinker);
self->VMSuperCall();
self->Tick();
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()
{
// 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();
}
//==========================================================================
//
//
//
//==========================================================================
FThinkerIterator::FThinkerIterator (const PClass *type, int statnum)
{
if ((unsigned)statnum > MAX_STATNUM)
@ -467,6 +598,12 @@ FThinkerIterator::FThinkerIterator (const PClass *type, int statnum)
m_SearchingFresh = false;
}
//==========================================================================
//
//
//
//==========================================================================
FThinkerIterator::FThinkerIterator (const PClass *type, int statnum, DThinker *prev)
{
if ((unsigned)statnum > MAX_STATNUM)
@ -491,12 +628,24 @@ FThinkerIterator::FThinkerIterator (const PClass *type, int statnum, DThinker *p
}
}
//==========================================================================
//
//
//
//==========================================================================
void FThinkerIterator::Reinit ()
{
m_CurrThinker = DThinker::Thinkers[m_Stat].GetHead();
m_SearchingFresh = false;
}
//==========================================================================
//
//
//
//==========================================================================
DThinker *FThinkerIterator::Next (bool exact)
{
if (m_ParentType == NULL)
@ -542,8 +691,13 @@ DThinker *FThinkerIterator::Next (bool exact)
return NULL;
}
//==========================================================================
//
// 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.
//
//==========================================================================
class DThinkerIterator : public DObject, public FThinkerIterator
{
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)
{
PARAM_PROLOGUE;
@ -577,8 +731,11 @@ DEFINE_ACTION_FUNCTION(DThinkerIterator, Reinit)
return 0;
}
//==========================================================================
//
//
//
//==========================================================================
ADD_STAT (think)
{

View file

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

View file

@ -1785,7 +1785,7 @@ public:
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)
{
@ -2975,7 +2975,7 @@ void FParser::SF_ObjAwaken(void)
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_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_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_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_POINTER(RunningScripts)

View file

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

View file

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

View file

@ -58,7 +58,7 @@ public:
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)
{
@ -80,7 +80,7 @@ public:
TObjPtr<AActor> Rain1, Rain2;
};
IMPLEMENT_CLASS(ARainTracker, false, false, false, false)
IMPLEMENT_CLASS(ARainTracker, false, false)
void ARainTracker::Serialize(FSerializer &arc)
{
@ -367,8 +367,8 @@ public:
void EndPowerup ();
};
IMPLEMENT_CLASS(APhoenixRod, false, false, false, false)
IMPLEMENT_CLASS(APhoenixRodPowered, false, false, false, false)
IMPLEMENT_CLASS(APhoenixRod, false, false)
IMPLEMENT_CLASS(APhoenixRodPowered, false, false)
void APhoenixRodPowered::EndPowerup ()
{
@ -388,7 +388,7 @@ public:
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)
{

View file

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

View file

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

View file

@ -25,7 +25,7 @@ public:
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)
{

View file

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

View file

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

View file

@ -59,7 +59,7 @@ public:
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)
{

View file

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

View file

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

View file

@ -72,7 +72,7 @@ public:
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)
{
@ -122,7 +122,7 @@ public:
}
};
IMPLEMENT_CLASS(ASorcBall, false, false, false, false)
IMPLEMENT_CLASS(ASorcBall, false, false)
// First ball (purple) - fires projectiles ----------------------------------
@ -140,7 +140,7 @@ public:
virtual void CastSorcererSpell ();
};
IMPLEMENT_CLASS(ASorcBall1, false, false, false, false)
IMPLEMENT_CLASS(ASorcBall1, false, false)
// Second ball (blue) - generates the shield --------------------------------
@ -156,7 +156,7 @@ public:
virtual void CastSorcererSpell ();
};
IMPLEMENT_CLASS(ASorcBall2, false, false, false, false)
IMPLEMENT_CLASS(ASorcBall2, false, false)
// Third ball (green) - summons Bishops -------------------------------------
@ -172,7 +172,7 @@ public:
virtual void CastSorcererSpell ();
};
IMPLEMENT_CLASS(ASorcBall3, false, false, false, false)
IMPLEMENT_CLASS(ASorcBall3, false, false)
// Sorcerer spell 1 (The burning, bouncing head thing) ----------------------

View file

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

View file

@ -32,7 +32,7 @@ public:
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)
{

View file

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

View file

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

View file

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

View file

@ -21,7 +21,7 @@ public:
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);
};
IMPLEMENT_CLASS(AArtiTeleportOther, false, false, false, false)
IMPLEMENT_CLASS(AArtiTeleportOther, false, false)
// Teleport Other FX --------------------------------------------------------
@ -45,7 +45,7 @@ public:
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)
{

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -40,11 +40,11 @@ static FRandom pr_torch ("Torch");
#define TIMEFREEZE_TICS ( 12 * TICRATE )
*/
IMPLEMENT_CLASS(APowerup, false, false, false, false)
IMPLEMENT_CLASS(APowerup, false, false)
// Powerup-Giver -------------------------------------------------------------
IMPLEMENT_CLASS(PClassPowerupGiver, false, false, false, false)
IMPLEMENT_CLASS(PClassPowerupGiver, false, false)
void PClassPowerupGiver::ReplaceClassRef(PClass *oldclass, PClass *newclass)
{
@ -388,7 +388,7 @@ bool APowerup::GetNoTeleportFreeze ()
// 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 --------------------------------------------
IMPLEMENT_CLASS(APowerStrength, false, false, false, false)
IMPLEMENT_CLASS(APowerStrength, false, false)
//===========================================================================
//
@ -590,7 +590,7 @@ PalEntry APowerStrength::GetBlend ()
// Invisibility Powerup ------------------------------------------------------
IMPLEMENT_CLASS(APowerInvisibility, false, false, false, false)
IMPLEMENT_CLASS(APowerInvisibility, false, false)
// Invisibility flag combos
#define INVISIBILITY_FLAGS1 (MF_SHADOW)
@ -795,7 +795,7 @@ bool APowerInvisibility::HandlePickup (AInventory *item)
// 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 -------------------------------------------
IMPLEMENT_CLASS(APowerMask, false, false, false, false)
IMPLEMENT_CLASS(APowerMask, false, false)
//===========================================================================
//
@ -869,7 +869,7 @@ void APowerMask::DoEffect ()
// Light-Amp Powerup ---------------------------------------------------------
IMPLEMENT_CLASS(APowerLightAmp, false, false, false, false)
IMPLEMENT_CLASS(APowerLightAmp, false, false)
//===========================================================================
//
@ -911,7 +911,7 @@ void APowerLightAmp::EndEffect ()
// 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 ---------------------------------------
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 --------------------------------
IMPLEMENT_CLASS(APowerWeaponLevel2, false, false, false, false)
IMPLEMENT_CLASS(APowerWeaponLevel2, false, false)
//===========================================================================
//
@ -1198,7 +1198,7 @@ void APowerWeaponLevel2::EndEffect ()
// Speed Powerup -------------------------------------------------------------
IMPLEMENT_CLASS(APowerSpeed, false, false, false, false)
IMPLEMENT_CLASS(APowerSpeed, false, false)
DEFINE_FIELD(APowerSpeed, SpeedFlags)
@ -1287,11 +1287,11 @@ void APowerSpeed::DoEffect ()
// Minotaur (aka Dark Servant) powerup ---------------------------------------
IMPLEMENT_CLASS(APowerMinotaur, false, false, false, false)
IMPLEMENT_CLASS(APowerMinotaur, false, false)
// Targeter powerup ---------------------------------------------------------
IMPLEMENT_CLASS(APowerTargeter, false, false, false, false)
IMPLEMENT_CLASS(APowerTargeter, false, false)
void APowerTargeter::Travelled ()
{
@ -1406,7 +1406,7 @@ void APowerTargeter::PositionAccuracy ()
// Frightener Powerup --------------------------------
IMPLEMENT_CLASS(APowerFrightener, false, false, false, false)
IMPLEMENT_CLASS(APowerFrightener, false, false)
//===========================================================================
//
@ -1442,7 +1442,7 @@ void APowerFrightener::EndEffect ()
// Buddha Powerup --------------------------------
IMPLEMENT_CLASS(APowerBuddha, false, false, false, false)
IMPLEMENT_CLASS(APowerBuddha, false, false)
//===========================================================================
//
@ -1478,11 +1478,11 @@ void APowerBuddha::EndEffect ()
// Scanner powerup ----------------------------------------------------------
IMPLEMENT_CLASS(APowerScanner, false, false, false, false)
IMPLEMENT_CLASS(APowerScanner, false, false)
// Time freezer powerup -----------------------------------------------------
IMPLEMENT_CLASS( APowerTimeFreezer, false, false, false, false)
IMPLEMENT_CLASS( APowerTimeFreezer, false, false)
//===========================================================================
//
@ -1609,7 +1609,7 @@ void APowerTimeFreezer::EndEffect()
// 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 ------------------------------------------------------
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_FLAGS5 (MF5_NOPAIN | MF5_DONTRIP)
@ -1744,7 +1744,7 @@ void APowerProtection::ModifyDamage(int damage, FName damageType, int &newdamage
// Drain rune -------------------------------------------------------
IMPLEMENT_CLASS(APowerDrain, false, false, false, false)
IMPLEMENT_CLASS(APowerDrain, false, false)
//===========================================================================
//
@ -1784,7 +1784,7 @@ void APowerDrain::EndEffect( )
// Regeneration rune -------------------------------------------------------
IMPLEMENT_CLASS(APowerRegeneration, false, false, false, false)
IMPLEMENT_CLASS(APowerRegeneration, false, false)
//===========================================================================
//
@ -1806,7 +1806,7 @@ void APowerRegeneration::DoEffect()
// 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 ---------------------------------------------
IMPLEMENT_CLASS(APowerDoubleFiringSpeed, false, false, false, false)
IMPLEMENT_CLASS(APowerDoubleFiringSpeed, false, false)
//===========================================================================
//
@ -1882,7 +1882,7 @@ void APowerDoubleFiringSpeed::EndEffect( )
// Morph powerup ------------------------------------------------------
IMPLEMENT_CLASS(APowerMorph, false, false, false, false)
IMPLEMENT_CLASS(APowerMorph, false, false)
DEFINE_FIELD(APowerMorph, PlayerClass)
DEFINE_FIELD(APowerMorph, MorphFlash)
@ -1990,7 +1990,7 @@ void APowerMorph::EndEffect( )
// 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)
public:
virtual void Tick ();
virtual void Destroy ();
virtual void Destroy () override;
virtual bool HandlePickup (AInventory *item);
virtual AInventory *CreateCopy (AActor *other);
virtual AInventory *CreateTossable ();

View file

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

View file

@ -64,7 +64,7 @@ protected:
DAngle Range;
};
IMPLEMENT_CLASS(ASecurityCamera, false, false, false, false)
IMPLEMENT_CLASS(ASecurityCamera, false, false)
void ASecurityCamera::Serialize(FSerializer &arc)
{
@ -124,7 +124,7 @@ protected:
DAngle MaxPitchChange;
};
IMPLEMENT_CLASS(AAimingCamera, false, false, false, false)
IMPLEMENT_CLASS(AAimingCamera, false, false)
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)
IMPLEMENT_CLASS(DBaseDecal, false, true, false, false)
IMPLEMENT_CLASS(DBaseDecal, false, true)
IMPLEMENT_POINTERS_START(DBaseDecal)
IMPLEMENT_POINTER(WallPrev)
IMPLEMENT_POINTER(WallNext)
IMPLEMENT_POINTERS_END
IMPLEMENT_CLASS(DImpactDecal, false, false, false, false)
IMPLEMENT_CLASS(DImpactDecal, false, false)
DBaseDecal::DBaseDecal ()
: DThinker(STAT_DECAL),
@ -746,7 +746,7 @@ public:
void BeginPlay ();
};
IMPLEMENT_CLASS(ADecal, false, false, false, false)
IMPLEMENT_CLASS(ADecal, false, false)
void ADecal::BeginPlay ()
{

View file

@ -8,7 +8,7 @@
#include "p_checkposition.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;
// call the scripted 'Effect' method.
VINDEX(AFastProjectile, Effect);
// Without the type cast this picks the 'void *' assignment...
VMValue params[1] = { (DObject*)this };
VMFrameStack stack;
stack.Call(VFUNC, params, 1, nullptr, 0, nullptr);
IFVIRTUAL(AFastProjectile, Effect)
{
// Without the type cast this picks the 'void *' assignment...
VMValue params[1] = { (DObject*)this };
VMFrameStack stack;
stack.Call(func, params, 1, nullptr, 0, nullptr);
}
}
}
}

View file

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

View file

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

View file

@ -46,7 +46,7 @@ public:
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()
{

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)

View file

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

View file

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

View file

@ -616,7 +616,7 @@ void InitAllPowerupEffects(AInventory *item)
// Base class for morphing projectiles --------------------------------------
IMPLEMENT_CLASS(AMorphProjectile, false, false, false, false)
IMPLEMENT_CLASS(AMorphProjectile, false, false)
DEFINE_FIELD(AMorphProjectile, PlayerClass)
DEFINE_FIELD(AMorphProjectile, MonsterClass)
@ -653,7 +653,7 @@ void AMorphProjectile::Serialize(FSerializer &arc)
// 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_POINTER(UnmorphedMe)

View file

@ -66,7 +66,7 @@ public:
TObjPtr<AInterpolationPoint> Next;
};
IMPLEMENT_CLASS(AInterpolationPoint, false, true, false, false)
IMPLEMENT_CLASS(AInterpolationPoint, false, true)
IMPLEMENT_POINTERS_START(AInterpolationPoint)
IMPLEMENT_POINTER(Next)
@ -135,7 +135,7 @@ public:
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
@ -178,7 +178,7 @@ protected:
int HoldTime;
};
IMPLEMENT_CLASS(APathFollower, false, true, false, false)
IMPLEMENT_CLASS(APathFollower, false, true)
IMPLEMENT_POINTERS_START(APathFollower)
IMPLEMENT_POINTER(PrevNode)
@ -342,9 +342,9 @@ void APathFollower::Tick ()
if (CurrNode != NULL)
NewNode ();
if (CurrNode == NULL || CurrNode->Next == NULL)
Deactivate (this);
CallDeactivate (this);
if ((args[2] & 1) == 0 && CurrNode->Next->Next == NULL)
Deactivate (this);
CallDeactivate (this);
}
}
}
@ -480,7 +480,7 @@ protected:
bool Interpolate ();
};
IMPLEMENT_CLASS(AActorMover, false, false, false, false)
IMPLEMENT_CLASS(AActorMover, false, false)
void AActorMover::BeginPlay()
{
@ -596,7 +596,7 @@ protected:
TObjPtr<AActor> Activator;
};
IMPLEMENT_CLASS(AMovingCamera, false, true, false, false)
IMPLEMENT_CLASS(AMovingCamera, false, true)
IMPLEMENT_POINTERS_START(AMovingCamera)
IMPLEMENT_POINTER(Activator)

View file

@ -23,7 +23,7 @@
static FRandom pr_restore ("RestorePos");
IMPLEMENT_CLASS(PClassInventory, false, false, false, false)
IMPLEMENT_CLASS(PClassInventory, false, false)
PClassInventory::PClassInventory()
{
@ -70,7 +70,7 @@ void PClassInventory::Finalize(FStateDefinitions &statedef)
((AActor*)Defaults)->flags |= MF_SPECIAL;
}
IMPLEMENT_CLASS(PClassAmmo, false, false, false, false)
IMPLEMENT_CLASS(PClassAmmo, false, false)
PClassAmmo::PClassAmmo()
{
@ -86,7 +86,7 @@ void PClassAmmo::DeriveData(PClass *newclass)
newc->DropAmount = DropAmount;
}
IMPLEMENT_CLASS(AAmmo, false, false, false, false)
IMPLEMENT_CLASS(AAmmo, false, false)
DEFINE_FIELD(AAmmo, BackpackAmount)
DEFINE_FIELD(AAmmo, BackpackMaxAmount)
@ -480,7 +480,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_RestoreSpecialPosition)
int AInventory::StaticLastMessageTic;
const char *AInventory::StaticLastMessage;
IMPLEMENT_CLASS(AInventory, false, true, false, false)
IMPLEMENT_CLASS(AInventory, false, true)
IMPLEMENT_POINTERS_START(AInventory)
IMPLEMENT_POINTER(Owner)
@ -1378,7 +1378,7 @@ bool AInventory::DrawPowerup (int x, int y)
/* 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(ACustomInventory, false, false, false, false)
IMPLEMENT_CLASS(AStateProvider, false, false)
IMPLEMENT_CLASS(ACustomInventory, false, false)
//===========================================================================
//
@ -1725,7 +1725,7 @@ bool ACustomInventory::TryPickup (AActor *&toucher)
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;
}
IMPLEMENT_CLASS(AHealth, false, false, false, false)
IMPLEMENT_CLASS(AHealth, false, false)
DEFINE_FIELD(AHealth, PrevHealth)
@ -1799,7 +1799,7 @@ bool AHealth::TryPickup (AActor *&other)
return false;
}
IMPLEMENT_CLASS(AHealthPickup, false, false, false, false)
IMPLEMENT_CLASS(AHealthPickup, false, false)
DEFINE_FIELD(AHealthPickup, autousemode)
@ -1879,7 +1879,7 @@ void AHealthPickup::Serialize(FSerializer &arc)
// Backpack -----------------------------------------------------------------
IMPLEMENT_CLASS(ABackpackItem, false, false, false, false)
IMPLEMENT_CLASS(ABackpackItem, false, false)
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 BeginPlay ();
virtual void Destroy ();
virtual void Destroy () override;
virtual void DepleteOrDestroy ();
virtual void Tick ();
virtual bool ShouldRespawn ();
@ -331,7 +331,7 @@ public:
virtual bool TryPickupRestricted (AActor *&toucher);
virtual bool PickupForAmmo (AWeapon *ownedWeapon);
virtual bool Use (bool pickup);
virtual void Destroy();
virtual void Destroy() override;
virtual FState *GetUpState ();
virtual FState *GetDownState ();

View file

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

View file

@ -14,7 +14,7 @@
static FRandom pr_quake ("Quake");
IMPLEMENT_CLASS(DEarthquake, false, true, false, false)
IMPLEMENT_CLASS(DEarthquake, false, true)
IMPLEMENT_POINTERS_START(DEarthquake)
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);
};
IMPLEMENT_CLASS(ASecretTrigger, false, false, false, false)
IMPLEMENT_CLASS(ASecretTrigger, false, false)
void ASecretTrigger::PostBeginPlay ()
{

View file

@ -37,7 +37,7 @@
// The base class for sector actions ----------------------------------------
IMPLEMENT_CLASS(ASectorAction, false, false, false, false)
IMPLEMENT_CLASS(ASectorAction, false, false)
ASectorAction::ASectorAction (bool activatedByUse) :
ActivatedByUse (activatedByUse) {}
@ -142,7 +142,7 @@ public:
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)
@ -160,7 +160,7 @@ public:
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)
@ -181,7 +181,7 @@ public:
// 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.
IMPLEMENT_CLASS(ASecActHitFloor, false, false, false, false)
IMPLEMENT_CLASS(ASecActHitFloor, false, false)
bool ASecActHitFloor::DoTriggerAction (AActor *triggerer, int activationType)
@ -199,7 +199,7 @@ public:
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)
@ -218,7 +218,7 @@ public:
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)
@ -237,7 +237,7 @@ public:
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)
@ -255,7 +255,7 @@ public:
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)
@ -273,7 +273,7 @@ public:
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)
@ -291,7 +291,7 @@ public:
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)
@ -309,7 +309,7 @@ public:
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)
@ -327,7 +327,7 @@ public:
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)

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
{
@ -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);
void Serialize(FSerializer &arc);
void Destroy ();
void Destroy() override;
FTextureID StickToWall(side_t *wall, double x, double y, F3DFloor * ffloor);
double GetRealZ (const side_t *wall) const;
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);
void BeginPlay ();
void Destroy ();
void Destroy() override;
protected:
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)
public:
void BeginPlay ();
void Destroy ();
void Destroy() override;
};
// For an EE compatible linedef based definition.
@ -116,7 +116,7 @@ public:
DFlashFader (float r1, float g1, float b1, float a1,
float r2, float g2, float b2, float a2,
float time, AActor *who);
void Destroy ();
void Destroy() override;
void Serialize(FSerializer &arc);
void Tick ();
AActor *WhoFor() { return ForWho; }
@ -206,7 +206,7 @@ public:
void Serialize(FSerializer &arc);
void Die (AActor *source, AActor *inflictor, int dmgflags);
void Destroy ();
void Destroy() override;
TObjPtr<AActor> UnmorphedMe;
int UnmorphTime, MorphStyle;

View file

@ -42,7 +42,7 @@
// 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
void ASkyViewpoint::BeginPlay ()
@ -73,7 +73,7 @@ void ASkyViewpoint::Destroy ()
Super::Destroy();
}
IMPLEMENT_CLASS(ASkyCamCompat, false, false, false, false)
IMPLEMENT_CLASS(ASkyCamCompat, false, false)
void ASkyCamCompat::BeginPlay()
{
@ -98,7 +98,7 @@ public:
void PostBeginPlay ();
};
IMPLEMENT_CLASS(ASkyPicker, false, false, false, false)
IMPLEMENT_CLASS(ASkyPicker, false, false)
void ASkyPicker::PostBeginPlay ()
{
@ -142,7 +142,7 @@ void ASkyPicker::PostBeginPlay ()
// arg0 = opacity of plane; 0 = invisible, 255 = fully opaque
IMPLEMENT_CLASS(AStackPoint, false, false, false, false)
IMPLEMENT_CLASS(AStackPoint, false, false)
void AStackPoint::BeginPlay ()
{
@ -157,10 +157,10 @@ class ASectorSilencer : public AActor
DECLARE_CLASS (ASectorSilencer, AActor)
public:
void BeginPlay ();
void Destroy ();
void Destroy() override;
};
IMPLEMENT_CLASS(ASectorSilencer, false, false, false, false)
IMPLEMENT_CLASS(ASectorSilencer, false, false)
void ASectorSilencer::BeginPlay ()
{
@ -184,7 +184,7 @@ public:
void BeginPlay ();
};
IMPLEMENT_CLASS(ASectorFlagSetter, false, false, false, false)
IMPLEMENT_CLASS(ASectorFlagSetter, false, false)
void ASectorFlagSetter::BeginPlay ()
{

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -23,7 +23,7 @@
extern FFlagDef WeaponFlagDefs[];
IMPLEMENT_CLASS(AWeapon, false, true, true, false)
IMPLEMENT_CLASS(AWeapon, false, true)
IMPLEMENT_POINTERS_START(AWeapon)
IMPLEMENT_POINTER(Ammo1)
@ -80,7 +80,7 @@ TMap<PClassWeapon *, int> Weapons_hton;
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 ***********************************************************/
IMPLEMENT_CLASS(AWeaponGiver, false, false, false, false)
IMPLEMENT_CLASS(AWeaponGiver, false, false)
DEFINE_FIELD(AWeaponGiver, DropAmmoFactor);

View file

@ -44,15 +44,15 @@
EXTERN_CVAR(Int, con_scaletext)
int active_con_scaletext();
IMPLEMENT_CLASS(DHUDMessage, false, true, false, false)
IMPLEMENT_CLASS(DHUDMessage, false, true)
IMPLEMENT_POINTERS_START(DHUDMessage)
IMPLEMENT_POINTER(Next)
IMPLEMENT_POINTERS_END
IMPLEMENT_CLASS(DHUDMessageFadeOut, false, false, false, false)
IMPLEMENT_CLASS(DHUDMessageFadeInOut, false, false, false, false)
IMPLEMENT_CLASS(DHUDMessageTypeOnFadeOut, false, false, false, false)
IMPLEMENT_CLASS(DHUDMessageFadeOut, false, false)
IMPLEMENT_CLASS(DHUDMessageFadeInOut, false, false)
IMPLEMENT_CLASS(DHUDMessageTypeOnFadeOut, false, false)
/*************************************************************************
* 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);
void Destroy ();
void Destroy() override;
void SetScaled (bool scale, bool force=false);

View file

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

View file

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

View file

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

View file

@ -17,7 +17,7 @@ public:
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)
{

View file

@ -23,7 +23,7 @@ public:
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);
};
IMPLEMENT_CLASS(ATeleporterBeacon, false, false, false, false)
IMPLEMENT_CLASS(ATeleporterBeacon, false, false)
bool ATeleporterBeacon::Use (bool pickup)
{

View file

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

View file

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

View file

@ -72,7 +72,7 @@ public:
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)
{
@ -197,7 +197,7 @@ public:
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)
{
@ -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);
};
IMPLEMENT_CLASS(APoisonBolt, false, false, false, false)
IMPLEMENT_CLASS(APoisonBolt, false, false)
int APoisonBolt::DoSpecialDamage (AActor *target, int damage, FName damagetype)
{
@ -607,7 +607,7 @@ public:
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)
{
@ -734,7 +734,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireGrenade)
// The Almighty Sigil! ------------------------------------------------------
IMPLEMENT_CLASS(ASigil, false, false, false, false)
IMPLEMENT_CLASS(ASigil, false, false)
//============================================================================
//

View file

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

View file

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

View file

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

View file

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

View file

@ -37,7 +37,7 @@
#include "cmdlib.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_POINTER(Pawn)

View file

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

View file

@ -236,7 +236,7 @@ class DJoystickConfigMenu : public 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 "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];
DLoadSaveMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
void Destroy();
void Destroy() override;
int RemoveSaveSlot (int index);
void UnloadSaveData ();
@ -119,7 +119,7 @@ public:
};
IMPLEMENT_CLASS(DLoadSaveMenu, false, false, false, false)
IMPLEMENT_CLASS(DLoadSaveMenu, false, false)
TArray<FSaveGameNode*> DLoadSaveMenu::SaveGames;
int DLoadSaveMenu::LastSaved = -1;
@ -466,6 +466,7 @@ void DLoadSaveMenu::Destroy()
if (currentSavePic != nullptr) delete currentSavePic;
currentSavePic = nullptr;
ClearSaveStuff ();
Super::Destroy();
}
//=============================================================================
@ -927,14 +928,14 @@ class DSaveMenu : public DLoadSaveMenu
public:
DSaveMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
void Destroy();
void Destroy() override;
void DoSave (FSaveGameNode *node);
bool Responder (event_t *ev);
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;
else Selected--;
}
Super::Destroy();
}
//=============================================================================
@ -1102,7 +1104,7 @@ public:
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_POINTER(mParentMenu)

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