X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcommon%2FTargetingMode.h;h=f6f9e53f3947709f048c88f09b6340224cfe383d;hb=1907ca03c5e865c4d398170042aa384c67ffff29;hp=5376d1344b1d73a9385f9655f2e0e6b8f341b4ce;hpb=d872d756e64b8f1f57cba64ae19f479f8eab3927;p=l2e.git diff --git a/src/common/TargetingMode.h b/src/common/TargetingMode.h index 5376d13..f6f9e53 100644 --- a/src/common/TargetingMode.h +++ b/src/common/TargetingMode.h @@ -15,33 +15,35 @@ namespace common { class TargetingMode { public: - TargetingMode() : mode(0) { } + static const int TYPE_ID = 306; 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; } + TargetingMode() : mode(0), ally(true) { } + +public: + 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; };