-/*
- * TargetingMode.h
- *
- * Created on: Aug 10, 2012
- * Author: holy
- */
-
#ifndef COMMON_TARGETINGMODE_H_
#define COMMON_TARGETINGMODE_H_
class TargetingMode {
public:
- TargetingMode() : mode(0) { }
+ static const int TYPE_ID = 306;
+
+public:
+ TargetingMode() : mode(0), ally(true) { }
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; }
+ bool TargetsEnemy() const { return !ally; }
+ bool TargetsAlly() const { return ally; }
+ bool TargetsAll() const { return mode == ALL; }
+ bool TargetsMultiple() const { return mode == MULTIPLE; }
+ bool TargetsSingle() const { return mode == SINGLE; }
+
+ void TargetAll() { mode = ALL; }
+ void TargetMultiple() { mode = MULTIPLE; }
+ void TargetSingle() { mode = SINGLE; }
+ void TargetAlly() { ally = true; }
+ void TargetEnemy() { ally = false; }
+
+ static void CreateTypeDescription();
+ static void Construct(void *);
private:
enum {
ALL = 0,
- ALLY = 0,
MULTIPLE = 1,
SINGLE = 2,
- COUNT_MASK = 127,
- ENEMY = 128,
- FACTION_MASK = 128,
};
- Uint8 mode;
+ int mode;
+ bool ally;
};
}
-#endif /* COMMON_TARGETINGMODE_H_ */
+#endif