Flag

From Valve Developer Community
Revision as of 14:54, 4 July 2008 by TomEdwards (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.

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.

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() (sometimes Is<*>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) )
	...