]> jfr.im git - irc/gameservirc.git/blame - gameserv/flags.h
removed currentdragon.dat
[irc/gameservirc.git] / gameserv / flags.h
CommitLineData
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
6c33e9ce 47#define CFLAG_SAVEDNOTICE 0x00000010
5431156e 48#define CFLAG_USENICKSERV 0x00000020
49
50#define setUseNickServ() (configflags |= CFLAG_USENICKSERV)
51#define clearUseNickServ() (configflags &= ~CFLAG_USENICKSERV)
52#define isUseNickServ() (configflags & CFLAG_USENICKSERV)
6c33e9ce 53
54#define setSavedNotice() (configflags |= CFLAG_SAVEDNOTICE)
55#define clearSavedNotice() (configflags &= ~CFLAG_SAVEDNOTICE)
5c449fde 56#define isSavedNotice() (configflags & CFLAG_SAVEDNOTICE)
18b84d11 57
58#define setWelcome() (configflags |= CFLAG_WELCOME)
59#define clearWelcome() (configflags &= ~CFLAG_WELCOME)
60#define isWelcome() (configflags & CFLAG_WELCOME)
6f727d4c 61
62#define setListenOnCF() (configflags |= CFLAG_LISTENONCF)
63#define clearListenOnCF() (configflags &= ~CFLAG_LISTENONCF)
c8117c0f 64#define isListenOnCF() (configflags & CFLAG_LISTENONCF)
9bafc40d 65
6f727d4c 66#define setUsePrivmsg() (configflags |= CFLAG_USEPRIVMSG)
67#define clearUsePrivmsg() (configflags &= ~CFLAG_USEPRIVMSG)
68#define isUsePrivmsg() (configflags & CFLAG_USEPRIVMSG)
9bafc40d 69
6f727d4c 70#define setBOper() (configflags |= CFLAG_BOPER)
71#define clearBOPer() (configflags &= ~CFLAG_BOPER)
72#define isBOper() (configflags & CFLAG_BOPER)
108f1888 73
1af35752 74// aClient flags
75// #define ADMIN_FLAGS(FLAG_ONE | FLAG_TWO | FLAG_ETC)
76#define ADMIN_FLAGS (FLAG_ADMIN)
108f1888 77
78#define setAdmin(x) ((x)->addFlag(FLAG_ADMIN))
79#define clearAdmin(x) ((x)->remFlag(FLAG_ADMIN))
80#define isAdmin(x) ((x)->getFlags() & FLAG_ADMIN)
81
1af35752 82#define clearAdminFlags(x) ((x)->remFlag(ADMIN_FLAGS))
83
448a1531 84#define setIgnore(x) ((x)->addFlag(FLAG_IGNORE))
85#define clearIgnore(x) ((x)->remFlag(FLAG_IGNORE))
86#define isIgnore(x) ((x)->getFlags() & FLAG_IGNORE) && !isAdmin(x)
87
3f243b0b 88#define setPlaying(x) ((x)->addFlag(FLAG_PLAYING))
89#define clearPlaying(x) ((x)->remFlag(FLAG_IGNORE))
90#define FL_is_playing(x) ((x)->getFlags() & FLAG_PLAYING)
1af35752 91
92// Player Flags
ee38284f 93#define seenMaster(x) ((x)->getFlags() & FLAG_MASTER)
94#define setMaster(x) ((x)->addFlag(FLAG_MASTER))
95#define clearMaster(x) ((x)->remFlag(FLAG_MASTER))
96
97#define isAlive(x) ((x)->getFlags() & FLAG_ALIVE)
98#define setAlive(x) ((x)->addFlag(FLAG_ALIVE))
99#define clearAlive(x) ((x)->remFlag(FLAG_ALIVE))
1af35752 100
ee38284f 101#define isYourTurn(x) ((x)->getFlags() & FLAG_YOURTURN)
102#define setYourTurn(x) ((x)->addFlag(FLAG_YOURTURN))
103#define clearYourTurn(x) ((x)->remFlag(FLAG_YOURTURN))
1af35752 104
9ea839ce 105#define hasWonGame(x) ((x)->getFlags() & FLAG_WONGAME)
106#define setWonGame(x) ((x)->addFlag(FLAG_WONGAME))
107#define clearWonGame(x) ((x)->remFlag(FLAG_WONGAME))
108
108f1888 109#endif