#ifndef FLAGS_H
#define FLAGS_H
+#include "extern.h"
+
/* This file contains all the flags used in the aClient and Player classes.
* More flags can be added simply by going up in multiples of 2.
* ie. 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000
*/
// aClient FLAGS ONLY
-#define FLAG_ADMIN 0x0001
-
+#define FLAG_ADMIN 0x00000001
+#define FLAG_IGNORE 0x00000002
+#define FLAG_PLAYING 0x00000004
// PLAYER FLAGS ONLY
-#define FLAG_MASTER 0x0001
+#define FLAG_MASTER 0x00000001
+#define FLAG_ALIVE 0x00000002
+#define FLAG_YOURTURN 0x00000004
+#define FLAG_WONGAME 0x00000008
+
+// Config File flags
+#define CFLAG_LISTENONCF 0x00000001
+#define CFLAG_USEPRIVMSG 0x00000002
+#define CFLAG_BOPER 0x00000004
+#define CFLAG_WELCOME 0x00000008
+
+#define setWelcome() (configflags |= CFLAG_WELCOME)
+#define clearWelcome() (configflags &= ~CFLAG_WELCOME)
+#define isWelcome() (configflags & CFLAG_WELCOME)
+#define setListenOnCF() (configflags |= CFLAG_LISTENONCF)
+#define clearListenOnCF() (configflags &= ~CFLAG_LISTENONCF)
+#define isListenOnCF() (configflags & CFLAG_LISTENONCF)
+#define setUsePrivmsg() (configflags |= CFLAG_USEPRIVMSG)
+#define clearUsePrivmsg() (configflags &= ~CFLAG_USEPRIVMSG)
+#define isUsePrivmsg() (configflags & CFLAG_USEPRIVMSG)
+#define setBOper() (configflags |= CFLAG_BOPER)
+#define clearBOPer() (configflags &= ~CFLAG_BOPER)
+#define isBOper() (configflags & CFLAG_BOPER)
// aClient flags
// #define ADMIN_FLAGS(FLAG_ONE | FLAG_TWO | FLAG_ETC)
#define clearAdminFlags(x) ((x)->remFlag(ADMIN_FLAGS))
+#define setIgnore(x) ((x)->addFlag(FLAG_IGNORE))
+#define clearIgnore(x) ((x)->remFlag(FLAG_IGNORE))
+#define isIgnore(x) ((x)->getFlags() & FLAG_IGNORE) && !isAdmin(x)
+
+#define setPlaying(x) ((x)->addFlag(FLAG_PLAYING))
+#define clearPlaying(x) ((x)->remFlag(FLAG_IGNORE))
+#define FL_is_playing(x) ((x)->getFlags() & FLAG_PLAYING)
// Player Flags
-#define seenMaster(x) ((x)->getFlags() & FLAG_MASTER)
-#define setMaster(x) ((x)->addFlag(FLAG_MASTER))
-#define clearMaster(x) ((x)->remFlag(FLAG_MASTER))
+#define seenMaster(x) ((x)->getFlags() & FLAG_MASTER)
+#define setMaster(x) ((x)->addFlag(FLAG_MASTER))
+#define clearMaster(x) ((x)->remFlag(FLAG_MASTER))
+
+#define isAlive(x) ((x)->getFlags() & FLAG_ALIVE)
+#define setAlive(x) ((x)->addFlag(FLAG_ALIVE))
+#define clearAlive(x) ((x)->remFlag(FLAG_ALIVE))
+
+#define isYourTurn(x) ((x)->getFlags() & FLAG_YOURTURN)
+#define setYourTurn(x) ((x)->addFlag(FLAG_YOURTURN))
+#define clearYourTurn(x) ((x)->remFlag(FLAG_YOURTURN))
+#define hasWonGame(x) ((x)->getFlags() & FLAG_WONGAME)
+#define setWonGame(x) ((x)->addFlag(FLAG_WONGAME))
+#define clearWonGame(x) ((x)->remFlag(FLAG_WONGAME))
#endif