#ifndef VIEWS_H_98651096 #define VIEWS_H_98651096 #include "entity.h" #include namespace views { inline auto isMoving() { return ranges::view::filter([] (const Entity& entity) { return entity.moving; }); } inline auto isNotMoving() { return ranges::view::filter([] (const Entity& entity) { return !entity.moving; }); } inline auto isControllable() { return ranges::view::filter([] (const Entity& entity) { return entity.controllable; }); } inline auto isTrack() { return ranges::view::filter([] (const Entity& entity) { return entity.isTrack; }); } inline auto isScheduled() { return ranges::view::filter([] (const Entity& entity) { return entity.scheduled; }); } inline auto isOnLayer(Layer layer) { return ranges::view::filter([layer] (const Entity& entity) { return entity.layer == layer; }); } inline auto canBePushedBy(ColliderType ctype) { return ranges::view::filter([ctype] (const Entity& entity) { return entity.canBePushedBy.count(ctype); }); } inline auto atGridPos(vec2s pos) { return ranges::view::filter([pos] (const Entity& entity) { return entity.gridPos == pos; }); } inline auto isMovingTo(vec2s pos) { return ranges::view::filter([pos] (const Entity& entity) { return entity.moving && entity.destPos == pos; }); } } #endif /* end of include guard: VIEWS_H_98651096 */