summary refs log tree commit diff stats
path: root/src/views.h
diff options
context:
space:
mode:
authorKelly Rauchenberger <fefferburbia@gmail.com>2019-02-23 12:02:00 -0500
committerKelly Rauchenberger <fefferburbia@gmail.com>2019-02-23 12:02:00 -0500
commit15b511e694f976686fdec1fb9f959f8a92f3b594 (patch)
tree18c0a234bbbfd34592a371d15dbfbecbede906c8 /src/views.h
parent26fbd8c1edaf94513d9750681edbe449b699efe4 (diff)
downloaddispatcher-15b511e694f976686fdec1fb9f959f8a92f3b594.tar.gz
dispatcher-15b511e694f976686fdec1fb9f959f8a92f3b594.tar.bz2
dispatcher-15b511e694f976686fdec1fb9f959f8a92f3b594.zip
More ranges stuff! Now with custom views
Diffstat (limited to 'src/views.h')
-rw-r--r--src/views.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/views.h b/src/views.h new file mode 100644 index 0000000..69bd2b5 --- /dev/null +++ b/src/views.h
@@ -0,0 +1,62 @@
1#ifndef VIEWS_H_98651096
2#define VIEWS_H_98651096
3
4#include "entity.h"
5#include <range/v3/all.hpp>
6
7namespace views {
8
9 inline auto isMoving()
10 {
11 return ranges::view::filter([] (const Entity& entity) {
12 return entity.moving;
13 });
14 }
15
16 inline auto isNotMoving()
17 {
18 return ranges::view::filter([] (const Entity& entity) {
19 return !entity.moving;
20 });
21 }
22
23 inline auto isControllable()
24 {
25 return ranges::view::filter([] (const Entity& entity) {
26 return entity.controllable;
27 });
28 }
29
30 inline auto isTrack()
31 {
32 return ranges::view::filter([] (const Entity& entity) {
33 return entity.isTrack;
34 });
35 }
36
37 inline auto isScheduled()
38 {
39 return ranges::view::filter([] (const Entity& entity) {
40 return entity.scheduled;
41 });
42 }
43
44 inline auto isOnLayer(Layer layer)
45 {
46 return ranges::view::filter([layer] (const Entity& entity) {
47 return entity.layer == layer;
48 });
49 }
50
51 inline auto canBePushedBy(ColliderType ctype)
52 {
53 return ranges::view::filter([ctype] (const Entity& entity) {
54 return entity.canBePushedBy.count(ctype);
55 });
56 }
57
58
59
60}
61
62#endif /* end of include guard: VIEWS_H_98651096 */