X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcommon%2FTargetingMode.h;fp=src%2Fcommon%2FTargetingMode.h;h=5376d1344b1d73a9385f9655f2e0e6b8f341b4ce;hb=d872d756e64b8f1f57cba64ae19f479f8eab3927;hp=0000000000000000000000000000000000000000;hpb=fb10fbd4a72793048916557308772fdaa2afebc2;p=l2e.git diff --git a/src/common/TargetingMode.h b/src/common/TargetingMode.h new file mode 100644 index 0000000..5376d13 --- /dev/null +++ b/src/common/TargetingMode.h @@ -0,0 +1,50 @@ +/* + * TargetingMode.h + * + * Created on: Aug 10, 2012 + * Author: holy + */ + +#ifndef COMMON_TARGETINGMODE_H_ +#define COMMON_TARGETINGMODE_H_ + +#include + +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_ */