vector<Vec2> Level::getVisibleTiles(Vec2 pos, VisionId vision) const { return filter(getFieldOfView(vision).getVisibleTiles(pos), [&](Vec2 v) { return isWithinVision(pos, v, vision); }); }
vector<Vec2> Level::getVisibleTiles(Vec2 pos, VisionInfo vision) const { return filter(fieldOfView.at(int(vision) - 1).getVisibleTiles(pos), [this, pos](Vec2 v) { return isWithinVision(pos, v); }); }
bool Level::canSee(Vec2 from, Vec2 to, VisionId vision) const { return isWithinVision(from, to, vision) && getFieldOfView(vision).canSee(from, to); }
bool Level::canSee(const Creature* c, Vec2 pos) const { return isWithinVision(c->getPosition(), pos) && fieldOfView.at(int(c->getVisionInfo()) - 1).canSee(c->getPosition(), pos); }