]>
Commit | Line | Data |
---|---|---|
108f1888 | 1 | #ifndef FLAGS_H |
2 | #define FLAGS_H | |
3 | ||
6f727d4c | 4 | #include "extern.h" |
5 | ||
1af35752 | 6 | /* This file contains all the flags used in the aClient and Player classes. |
108f1888 | 7 | * More flags can be added simply by going up in multiples of 2. |
1af35752 | 8 | * ie. 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 |
9 | * 8000 10000 20000 40000 80000 100000 200000 400000 800000 1000000 2000000 4000000 | |
10 | * 8000000 10000000 20000000 40000000 80000000 (32 bit) | |
108f1888 | 11 | * This method was taken from my experience in working with various |
12 | * IRCD packages. Most of them use this for their modes along with | |
13 | * corresponding letter representations. | |
1af35752 | 14 | * Theoretically, each flag is 32 bit (long int), and each place in a flag |
15 | * is one hexadecimal digit (four bits). So, technically each flag variable | |
16 | * can hold 8 spaces for flags. 8 spaces at 4 flags per space makes for | |
17 | * 32 possible flags for each long int. That means there are 32 flags available | |
18 | * for the aClient class, and 32 for the player class. | |
0d012394 | 19 | * |
20 | * Basically if you are having problems visualizing how flags work, think of them in | |
21 | * binary terms: | |
22 | * Hex Binary | |
23 | * 0x0001 0001 | |
24 | * 0x0002 0010 | |
25 | * 0x0004 0100 | |
26 | * 0x0008 1000 | |
27 | * Basically, each flag represents a 1. When you add the different flags, you are just | |
28 | * adding a 1 in the given position. So 1001 would be 0x0009 or flags 0001 and 0008. | |
108f1888 | 29 | */ |
30 | ||
1af35752 | 31 | // aClient FLAGS ONLY |
18b84d11 | 32 | #define FLAG_ADMIN 0x00000001 |
33 | #define FLAG_IGNORE 0x00000002 | |
34 | #define FLAG_PLAYING 0x00000004 | |
108f1888 | 35 | |
1af35752 | 36 | // PLAYER FLAGS ONLY |
18b84d11 | 37 | #define FLAG_MASTER 0x00000001 |
38 | #define FLAG_ALIVE 0x00000002 | |
39 | #define FLAG_YOURTURN 0x00000004 | |
40 | #define FLAG_WONGAME 0x00000008 | |
108f1888 | 41 | |
9bafc40d | 42 | // Config File flags |
18b84d11 | 43 | #define CFLAG_LISTENONCF 0x00000001 |
44 | #define CFLAG_USEPRIVMSG 0x00000002 | |
45 | #define CFLAG_BOPER 0x00000004 | |
46 | #define CFLAG_WELCOME 0x00000008 | |
47 | ||
48 | #define setWelcome() (configflags |= CFLAG_WELCOME) | |
49 | #define clearWelcome() (configflags &= ~CFLAG_WELCOME) | |
50 | #define isWelcome() (configflags & CFLAG_WELCOME) | |
6f727d4c | 51 | |
52 | #define setListenOnCF() (configflags |= CFLAG_LISTENONCF) | |
53 | #define clearListenOnCF() (configflags &= ~CFLAG_LISTENONCF) | |
c8117c0f | 54 | #define isListenOnCF() (configflags & CFLAG_LISTENONCF) |
9bafc40d | 55 | |
6f727d4c | 56 | #define setUsePrivmsg() (configflags |= CFLAG_USEPRIVMSG) |
57 | #define clearUsePrivmsg() (configflags &= ~CFLAG_USEPRIVMSG) | |
58 | #define isUsePrivmsg() (configflags & CFLAG_USEPRIVMSG) | |
9bafc40d | 59 | |
6f727d4c | 60 | #define setBOper() (configflags |= CFLAG_BOPER) |
61 | #define clearBOPer() (configflags &= ~CFLAG_BOPER) | |
62 | #define isBOper() (configflags & CFLAG_BOPER) | |
108f1888 | 63 | |
1af35752 | 64 | // aClient flags |
65 | // #define ADMIN_FLAGS(FLAG_ONE | FLAG_TWO | FLAG_ETC) | |
66 | #define ADMIN_FLAGS (FLAG_ADMIN) | |
108f1888 | 67 | |
68 | #define setAdmin(x) ((x)->addFlag(FLAG_ADMIN)) | |
69 | #define clearAdmin(x) ((x)->remFlag(FLAG_ADMIN)) | |
70 | #define isAdmin(x) ((x)->getFlags() & FLAG_ADMIN) | |
71 | ||
1af35752 | 72 | #define clearAdminFlags(x) ((x)->remFlag(ADMIN_FLAGS)) |
73 | ||
448a1531 | 74 | #define setIgnore(x) ((x)->addFlag(FLAG_IGNORE)) |
75 | #define clearIgnore(x) ((x)->remFlag(FLAG_IGNORE)) | |
76 | #define isIgnore(x) ((x)->getFlags() & FLAG_IGNORE) && !isAdmin(x) | |
77 | ||
3f243b0b | 78 | #define setPlaying(x) ((x)->addFlag(FLAG_PLAYING)) |
79 | #define clearPlaying(x) ((x)->remFlag(FLAG_IGNORE)) | |
80 | #define FL_is_playing(x) ((x)->getFlags() & FLAG_PLAYING) | |
1af35752 | 81 | |
82 | // Player Flags | |
ee38284f | 83 | #define seenMaster(x) ((x)->getFlags() & FLAG_MASTER) |
84 | #define setMaster(x) ((x)->addFlag(FLAG_MASTER)) | |
85 | #define clearMaster(x) ((x)->remFlag(FLAG_MASTER)) | |
86 | ||
87 | #define isAlive(x) ((x)->getFlags() & FLAG_ALIVE) | |
88 | #define setAlive(x) ((x)->addFlag(FLAG_ALIVE)) | |
89 | #define clearAlive(x) ((x)->remFlag(FLAG_ALIVE)) | |
1af35752 | 90 | |
ee38284f | 91 | #define isYourTurn(x) ((x)->getFlags() & FLAG_YOURTURN) |
92 | #define setYourTurn(x) ((x)->addFlag(FLAG_YOURTURN)) | |
93 | #define clearYourTurn(x) ((x)->remFlag(FLAG_YOURTURN)) | |
1af35752 | 94 | |
9ea839ce | 95 | #define hasWonGame(x) ((x)->getFlags() & FLAG_WONGAME) |
96 | #define setWonGame(x) ((x)->addFlag(FLAG_WONGAME)) | |
97 | #define clearWonGame(x) ((x)->remFlag(FLAG_WONGAME)) | |
98 | ||
108f1888 | 99 | #endif |