Esempio n. 1
0
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);
  }
}