]> git.localhorst.tv Git - l2e.git/blob - src/common/TargetingMode.h
reordered type description creation to avoid reallocation
[l2e.git] / src / common / TargetingMode.h
1 /*
2  * TargetingMode.h
3  *
4  *  Created on: Aug 10, 2012
5  *      Author: holy
6  */
7
8 #ifndef COMMON_TARGETINGMODE_H_
9 #define COMMON_TARGETINGMODE_H_
10
11 #include <SDL.h>
12
13 namespace common {
14
15 class TargetingMode {
16
17 public:
18         TargetingMode() : mode(0) { }
19
20 public:
21         bool TargetsEnemy() const { return (mode & FACTION_MASK) == ENEMY; }
22         bool TargetsAlly() const { return (mode & FACTION_MASK) == ALLY; }
23         bool TargetsAll() const { return (mode & COUNT_MASK) == ALL; }
24         bool TargetsMultiple() const { return (mode & COUNT_MASK) == MULTIPLE; }
25         bool TargetsSingle() const { return (mode & COUNT_MASK) == SINGLE; }
26
27         void TargetAll() { mode = (mode & FACTION_MASK) | ALL; }
28         void TargetMultiple() { mode = (mode & FACTION_MASK) | MULTIPLE; }
29         void TargetSingle() { mode = (mode & FACTION_MASK) | SINGLE; }
30         void TargetAlly() { mode = ALLY | (mode & COUNT_MASK); }
31         void TargetEnemy() { mode = ENEMY | (mode & COUNT_MASK); }
32
33         void TargetAllEnemies() { mode = ENEMY | ALL; }
34         void TargetMultipleEnemies() { mode = ENEMY | MULTIPLE; }
35         void TargetSingleEnemy() { mode = ENEMY | SINGLE; }
36         void TargetAllAllies() { mode = ALLY | ALL; }
37         void TargetMultipleAllies() { mode = ALLY | MULTIPLE; }
38         void TargetSingleAlly() { mode = ALLY | SINGLE; }
39
40         static void CreateTypeDescription();
41
42 private:
43         enum {
44                 ALL = 0,
45                 ALLY = 0,
46                 MULTIPLE = 1,
47                 SINGLE = 2,
48                 COUNT_MASK = 127,
49                 ENEMY = 128,
50                 FACTION_MASK = 128,
51         };
52         Uint8 mode;
53
54 };
55
56 }
57
58 #endif /* COMMON_TARGETINGMODE_H_ */