- resorted some of thingdef.cpp's contents into more appropriate files.

- split FinishActor into several functions. While DECORATE can, ZSCRIPT cannot do all this in one go.
- split the state finalization into several class-specific virtual functions.
This commit is contained in:
Christoph Oelckers 2016-10-12 20:42:41 +02:00
commit 59ed26c0b6
10 changed files with 286 additions and 220 deletions

View file

@ -53,7 +53,9 @@
#include "g_level.h"
#include "stats.h"
#include "vm.h"
#include "thingdef.h"
#include "d_player.h"
#include "doomerrors.h"
extern void LoadActors ();
extern void InitBotStuff();
@ -380,6 +382,75 @@ void PClassActor::InitializeNativeDefaults()
}
}
//==========================================================================
//
// PClassActor :: SetReplacement
//
// Sets as a replacement class for another class.
//
//==========================================================================
bool PClassActor::SetReplacement(FName replaceName)
{
// Check for "replaces"
if (replaceName != NAME_None)
{
// Get actor name
PClassActor *replacee = PClass::FindActor(replaceName);
if (replacee == nullptr)
{
return false;
}
if (replacee != nullptr)
{
replacee->Replacement = this;
Replacee = replacee;
}
}
return true;
}
//==========================================================================
//
// PClassActor :: SetDropItems
//
// Sets a new drop item list
//
//==========================================================================
void PClassActor::SetDropItems(DDropItem *drops)
{
DropItems = drops;
GC::WriteBarrier(this, DropItems);
}
//==========================================================================
//
// PClassActor :: Finalize
//
// Installs the parsed states and does some sanity checking
//
//==========================================================================
void PClassActor::Finalize(FStateDefinitions &statedef)
{
AActor *defaults = (AActor*)Defaults;
try
{
statedef.FinishStates(this, defaults);
}
catch (CRecoverableError &)
{
statedef.MakeStateDefines(NULL);
throw;
}
statedef.InstallStates(this, defaults);
statedef.MakeStateDefines(NULL);
}
//==========================================================================
//
// PClassActor :: RegisterIDs