void MapGui::drawFoWSprite(Renderer& renderer, Vec2 pos, int sizeX, int sizeY, EnumSet<Dir> dirs) { const Tile& tile = Tile::fromViewId(ViewId::FOG_OF_WAR); const Tile& tile2 = Tile::fromViewId(ViewId::FOG_OF_WAR_CORNER); Vec2 coord = tile.getSpriteCoord(dirs.intersection({Dir::N, Dir::S, Dir::E, Dir::W})); Vec2 sz = Renderer::tileSize[tile.getTexNum()]; renderer.drawSprite(pos.x, pos.y, coord.x * sz.x, coord.y * sz.y, sz.x, sz.y, Renderer::tiles[tile.getTexNum()], sizeX, sizeY); for (Dir dir : dirs.intersection({Dir::NE, Dir::SE, Dir::NW, Dir::SW})) { switch (dir) { case Dir::NE: if (!dirs[Dir::N] || !dirs[Dir::E]) continue; case Dir::SE: if (!dirs[Dir::S] || !dirs[Dir::E]) continue; case Dir::NW: if (!dirs[Dir::N] || !dirs[Dir::W]) continue; case Dir::SW: if (!dirs[Dir::S] || !dirs[Dir::W]) continue; default: break; } Vec2 coord = tile2.getSpriteCoord({dir}); renderer.drawSprite(pos.x, pos.y, coord.x * sz.x, coord.y * sz.y, sz.x, sz.y, Renderer::tiles[tile2.getTexNum()], sizeX, sizeY); } }