]> git.localhorst.tv Git - l2e.git/blobdiff - src/common/TargetingMode.h
added spells
[l2e.git] / src / common / TargetingMode.h
diff --git a/src/common/TargetingMode.h b/src/common/TargetingMode.h
new file mode 100644 (file)
index 0000000..5376d13
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * TargetingMode.h
+ *
+ *  Created on: Aug 10, 2012
+ *      Author: holy
+ */
+
+#ifndef COMMON_TARGETINGMODE_H_
+#define COMMON_TARGETINGMODE_H_
+
+#include <SDL.h>
+
+namespace common {
+
+class TargetingMode {
+
+public:
+       TargetingMode() : mode(0) { }
+
+public:
+       bool TargetsEnemy() const { return (mode & FACTION_MASK) == ENEMY; }
+       bool TargetsAlly() const { return (mode & FACTION_MASK) == ALLY; }
+       bool TargetsAll() const { return (mode & COUNT_MASK) == ALL; }
+       bool TargetsMultiple() const { return (mode & COUNT_MASK) == MULTIPLE; }
+       bool TargetsSingle() const { return (mode & COUNT_MASK) == SINGLE; }
+
+       void TargetAllEnemies() { mode = ENEMY | ALL; }
+       void TargetMultipleEnemies() { mode = ENEMY | MULTIPLE; }
+       void TargetSingleEnemy() { mode = ENEMY | SINGLE; }
+       void TargetAllAllies() { mode = ALLY | ALL; }
+       void TargetMultipleAllies() { mode = ALLY | MULTIPLE; }
+       void TargetSingleAlly() { mode = ALLY | SINGLE; }
+
+private:
+       enum {
+               ALL = 0,
+               ALLY = 0,
+               MULTIPLE = 1,
+               SINGLE = 2,
+               COUNT_MASK = 127,
+               ENEMY = 128,
+               FACTION_MASK = 128,
+       };
+       Uint8 mode;
+
+};
+
+}
+
+#endif /* COMMON_TARGETINGMODE_H_ */