Flag
From Valve Developer Community
A Flag is a boolean value that is stored in an integer variable.
To do: What is the advantage of this over separate bool vars?
Up to 256 flags can be stored in a single int, since each is represented by one of its digits.
[edit]
Creation
Flags are created like this:
#define FL_MYFLAG 1<<0 #define FL_MYFLAG 1<<1 #define FL_MYFLAG 1<<2 etc.
Or sometimes like this (e.g. spawnflags):
#define FL_MYFLAG 1 #define FL_MYFLAG 16 #define FL_MYFLAG 32 etc.
You can then use the #defs in place of the numbers.
[edit]
Usage
Flags are managed through functions, never directly. There are several different types of flags and each has its own set, but they all follow the same naming pattern:
Add<*>Flags()Remove<*>Flags()Clear<*>Flags()Has<*>Flags()(sometimesIs<*>FlagSet())
To operate on several flags at once you must use the bitwise operators &, | and ^ - the same as the normal boolean operators, but with only one character.
For instance:
if ( HasSpawnFlags(SF_CITIZEN_MEDIC | SF_CITIZEN_NOT_COMMANDABLE) ) ...
Categories: TODO | Programming | Glossary | Flags
