mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-26 22:11:43 +00:00
- fixed CheckRange return value.
- removed the error message for multiple state blocks in DECORATE. - added some constants for state types.
This commit is contained in:
parent
ba62a86c80
commit
199e2e2f9c
5 changed files with 28 additions and 7 deletions
15
src/info.h
15
src/info.h
|
@ -67,6 +67,14 @@ enum EStateDefineFlags
|
|||
SDF_DEHACKED = 8, // Identify a state as having been modified by a dehacked lump
|
||||
};
|
||||
|
||||
enum EStateUseFlags
|
||||
{
|
||||
SUF_ACTOR = 1,
|
||||
SUF_OVERLAY = 2,
|
||||
SUF_WEAPON = 4,
|
||||
SUF_ITEM = 8,
|
||||
};
|
||||
|
||||
enum EStateType : int // this must ensure proper alignment.
|
||||
{
|
||||
STATE_Actor,
|
||||
|
@ -97,11 +105,12 @@ struct FState
|
|||
WORD sprite;
|
||||
SWORD Tics;
|
||||
WORD TicRange;
|
||||
short Light;
|
||||
BYTE Frame;
|
||||
BYTE UseFlags;
|
||||
BYTE DefineFlags; // Unused byte so let's use it during state creation.
|
||||
int Misc1; // Was changed to SBYTE, reverted to long for MBF compat
|
||||
int Misc2; // Was changed to BYTE, reverted to long for MBF compat
|
||||
short Light;
|
||||
BYTE Fullbright:1; // State is fullbright
|
||||
BYTE SameFrame:1; // Ignore Frame (except when spawning actor)
|
||||
BYTE Fast:1;
|
||||
|
@ -153,6 +162,10 @@ struct FState
|
|||
{
|
||||
Frame = frame - 'A';
|
||||
}
|
||||
inline bool CheckUse(int usetype)
|
||||
{
|
||||
return !!(UseFlags & usetype);
|
||||
}
|
||||
void SetAction(VMFunction *func) { ActionFunc = func; }
|
||||
void ClearAction() { ActionFunc = NULL; }
|
||||
void SetAction(const char *name);
|
||||
|
|
|
@ -3622,7 +3622,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, CheckRange)
|
|||
}
|
||||
}
|
||||
}
|
||||
ACTION_RETURN_BOOL(false);
|
||||
ACTION_RETURN_BOOL(true);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1062,11 +1062,6 @@ static void ParseActor(FScanner &sc)
|
|||
break;
|
||||
|
||||
case TK_States:
|
||||
if (bag.StateSet)
|
||||
{
|
||||
sc.ScriptMessage("'%s' contains multiple state declarations", bag.Info->TypeName.GetChars());
|
||||
FScriptPosition::ErrorCounter++;
|
||||
}
|
||||
ParseStates(sc, bag.Info, (AActor *)bag.Info->Defaults, bag);
|
||||
bag.StateSet = true;
|
||||
break;
|
||||
|
|
|
@ -63,6 +63,7 @@ class FStateDefinitions
|
|||
FState *laststatebeforelabel;
|
||||
intptr_t lastlabel;
|
||||
TArray<FState> StateArray;
|
||||
uint8_t UseType;
|
||||
|
||||
static FStateDefine *FindStateLabelInList(TArray<FStateDefine> &list, FName name, bool create);
|
||||
static FStateLabels *CreateStateLabelList(TArray<FStateDefine> &statelist);
|
||||
|
@ -74,6 +75,10 @@ class FStateDefinitions
|
|||
FState *ResolveGotoLabel(AActor *actor, PClassActor *mytype, char *name);
|
||||
static void FixStatePointers(PClassActor *actor, TArray<FStateDefine> & list);
|
||||
void ResolveGotoLabels(PClassActor *actor, AActor *defaults, TArray<FStateDefine> & list);
|
||||
void SetUseType(int type)
|
||||
{
|
||||
UseType = uint8_t(type);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
// for flag changer functions.
|
||||
const FLAG_NO_CHANGE = -1;
|
||||
|
||||
enum EStateUseFlags
|
||||
{
|
||||
SUF_ACTOR = 1,
|
||||
SUF_OVERLAY = 2,
|
||||
SUF_WEAPON = 4,
|
||||
SUF_ITEM = 8,
|
||||
};
|
||||
|
||||
// Flags for A_PainAttack
|
||||
enum EPainAttackFlags
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue