+/*
+ * 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_ */