- added Gez's dumpactors patch.

SVN r2463 (trunk)
This commit is contained in:
Christoph Oelckers 2010-07-26 17:10:43 +00:00
parent 35ba99ed31
commit 2cf19f436a
3 changed files with 30 additions and 0 deletions

View file

@ -188,6 +188,33 @@ const char *FMetaTable::GetMetaString (DWORD id) const
return meta != NULL ? meta->Value.String : NULL;
}
CCMD (dumpactors)
{
char * filters[32] =
{
"0:All", "1:Doom", "2:Heretic", "3:DoomHeretic", "4:Hexen", "5:DoomHexen", "6:Raven", "7:IdRaven",
"8:Strife", "9:DoomStrife", "10:HereticStrife", "11:DoomHereticStrife", "12:HexenStrife",
"13:DoomHexenStrife", "14:RavenStrife", "15:NotChex", "16:Chex", "17:DoomChex", "18:HereticChex",
"19:DoomHereticChex", "20:HexenChex", "21:DoomHexenChex", "22:RavenChex", "23:NotStrife", "24:StrifeChex",
"25:DoomStrifeChex", "26:HereticStrifeChex", "27:NotHexen", "28:HexenStrifeChex", "29:NotHeretic",
"30:NotDoom", "31:All",
};
Printf("%i object class types total\nActor\tEd Num\tSpawnID\tFilter\tSource\n", PClass::m_Types.Size());
for (unsigned int i = 0; i < PClass::m_Types.Size(); i++)
{
PClass *cls = PClass::m_Types[i];
if (cls != NULL && cls->ActorInfo != NULL)
Printf("%s\t%i\t%i\t%s\t%s\n",
cls->TypeName.GetChars(), cls->ActorInfo->DoomEdNum,
cls->ActorInfo->SpawnID, filters[cls->ActorInfo->GameFilter & 31],
cls->Meta.GetMetaString (ACMETA_Lump));
else if (cls != NULL)
Printf("%s\tn/a\tn/a\tn/a\tEngine (not an actor type)\n", cls->TypeName.GetChars());
else
Printf("Type %i is not an object class\n", i);
}
}
CCMD (dumpclasses)
{
// This is by no means speed-optimized. But it's an informational console

View file

@ -230,6 +230,7 @@ enum
ACMETA_MeleeDamage,
ACMETA_MissileName,
ACMETA_MissileHeight,
ACMETA_Lump,
};

View file

@ -1106,6 +1106,8 @@ static FActorInfo *ParseActorHeader(FScanner &sc, Baggage *bag)
{
FActorInfo *info = CreateNewActor(sc, typeName, parentName, native);
info->DoomEdNum = DoomEdNum > 0? DoomEdNum : -1;
info->Class->Meta.SetMetaString (ACMETA_Lump, Wads.GetLumpFullPath(sc.LumpNum));
SetReplacement(info, replaceName);
ResetBaggage (bag, info->Class->ParentClass);