- 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:
parent
b1a83bfd26
commit
59ed26c0b6
10 changed files with 286 additions and 220 deletions
71
src/info.cpp
71
src/info.cpp
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue