- Fixed: Old style decorations forgot all inherited states when installing their labels.

SVN r1246 (trunk)
This commit is contained in:
Christoph Oelckers 2008-09-23 19:14:50 +00:00
parent 3e291cf528
commit ec1cfdd236

View file

@ -141,7 +141,6 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
PClass *type; PClass *type;
PClass *parent; PClass *parent;
FName typeName; FName typeName;
FStateDefinitions statedef;
if (def == DEF_Pickup) parent = RUNTIME_CLASS(AFakeInventory); if (def == DEF_Pickup) parent = RUNTIME_CLASS(AFakeInventory);
else parent = RUNTIME_CLASS(AActor); else parent = RUNTIME_CLASS(AActor);
@ -246,7 +245,7 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
if (extra.DeathHeight == 0) extra.DeathHeight = ((AActor*)(type->Defaults))->height; if (extra.DeathHeight == 0) extra.DeathHeight = ((AActor*)(type->Defaults))->height;
info->Class->Meta.SetMetaFixed (AMETA_DeathHeight, extra.DeathHeight); info->Class->Meta.SetMetaFixed (AMETA_DeathHeight, extra.DeathHeight);
} }
statedef.AddState("Death", &info->OwnedStates[extra.DeathStart]); bag.statedef.AddState("Death", &info->OwnedStates[extra.DeathStart]);
} }
// Burn states are the same as death states, except they can optionally terminate // Burn states are the same as death states, except they can optionally terminate
@ -284,7 +283,7 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
if (extra.BurnHeight == 0) extra.BurnHeight = ((AActor*)(type->Defaults))->height; if (extra.BurnHeight == 0) extra.BurnHeight = ((AActor*)(type->Defaults))->height;
type->Meta.SetMetaFixed (AMETA_BurnHeight, extra.BurnHeight); type->Meta.SetMetaFixed (AMETA_BurnHeight, extra.BurnHeight);
statedef.AddState("Burn", &info->OwnedStates[extra.FireDeathStart]); bag.statedef.AddState("Burn", &info->OwnedStates[extra.FireDeathStart]);
} }
// Ice states are similar to burn and death, except their final frame enters // Ice states are similar to burn and death, except their final frame enters
@ -305,11 +304,11 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
info->OwnedStates[i].Tics = 1; info->OwnedStates[i].Tics = 1;
info->OwnedStates[i].Misc1 = 0; info->OwnedStates[i].Misc1 = 0;
info->OwnedStates[i].SetAction(FindGlobalActionFunction("A_FreezeDeathChunks")); info->OwnedStates[i].SetAction(FindGlobalActionFunction("A_FreezeDeathChunks"));
statedef.AddState("Ice", &info->OwnedStates[extra.IceDeathStart]); bag.statedef.AddState("Ice", &info->OwnedStates[extra.IceDeathStart]);
} }
else if (extra.bGenericIceDeath) else if (extra.bGenericIceDeath)
{ {
statedef.AddState("Ice", RUNTIME_CLASS(AActor)->ActorInfo->FindState(NAME_GenericFreezeDeath)); bag.statedef.AddState("Ice", RUNTIME_CLASS(AActor)->ActorInfo->FindState(NAME_GenericFreezeDeath));
} }
} }
if (def == DEF_BreakableDecoration) if (def == DEF_BreakableDecoration)
@ -320,8 +319,8 @@ void ParseOldDecoration(FScanner &sc, EDefinitionType def)
{ {
((AActor *)(type->Defaults))->flags |= MF_DROPOFF|MF_MISSILE; ((AActor *)(type->Defaults))->flags |= MF_DROPOFF|MF_MISSILE;
} }
statedef.AddState("Spawn", &info->OwnedStates[extra.SpawnStart]); bag.statedef.AddState("Spawn", &info->OwnedStates[extra.SpawnStart]);
statedef.InstallStates (info, ((AActor *)(type->Defaults))); bag.statedef.InstallStates (info, ((AActor *)(type->Defaults)));
} }
//========================================================================== //==========================================================================