+/*
+ * HeroGroup.h
+ *
+ * Created on: Aug 10, 2012
+ * Author: holy
+ */
+
+#ifndef COMMON_HEROGROUP_H_
+#define COMMON_HEROGROUP_H_
+
+#include <SDL.h>
+
+namespace common {
+
+class HeroGroup {
+
+public:
+ HeroGroup() : members(NOBODY) { }
+
+public:
+ bool HasMaxim() const { return members & MAXIM; }
+ bool HasSelan() const { return members & SELAN; }
+ bool HasGuy() const { return members & GUY; }
+ bool HasArtea() const { return members & ARTEA; }
+ bool HasTia() const { return members & TIA; }
+ bool HasDekar() const { return members & DEKAR; }
+ bool HasLexis() const { return members & LEXIS; }
+
+ void AddMaxim() { members |= MAXIM; }
+ void AddSelan() { members |= SELAN; }
+ void AddGuy() { members |= GUY; }
+ void AddArtea() { members |= ARTEA; }
+ void AddTia() { members |= TIA; }
+ void AddDekar() { members |= DEKAR; }
+ void AddLexis() { members |= LEXIS; }
+ void AddAll() { members = (MAXIM | SELAN | GUY | ARTEA | TIA | DEKAR | LEXIS); }
+
+ void RemoveMaxim() { members &= ~MAXIM; }
+ void RemoveSelan() { members &= ~SELAN; }
+ void RemoveGuy() { members &= ~GUY; }
+ void RemoveArtea() { members &= ~ARTEA; }
+ void RemoveTia() { members &= ~TIA; }
+ void RemoveDekar() { members &= ~DEKAR; }
+ void RemoveLexis() { members &= ~LEXIS; }
+ void RemoveAll() { members = NOBODY; }
+
+public:
+ enum {
+ NOBODY = 0,
+ MAXIM = 1,
+ SELAN = 2,
+ GUY = 4,
+ ARTEA = 8,
+ TIA = 16,
+ DEKAR = 32,
+ LEXIS = 64,
+ };
+ Uint8 members;
+
+};
+
+}
+
+#endif /* COMMON_HEROGROUP_H_ */