Advertisement
Guest User

Untitled

a guest
Dec 1st, 2018
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. sf::Vector2f v = handler->window->getView().getSize();
  2.     //std::cout << v.x << " " << v.y << std::endl;
  3.     std::vector<std::vector<sf::RectangleShape>> renderOrder(256,
  4.         std::vector<sf::RectangleShape>(0));
  5.  
  6.  
  7.     for (int x = 0; x < world->getWidth(); x++) {
  8.         for (int y = 0; y < world->getHeight(); y++) {
  9.  
  10.  
  11.  
  12.             if (!(x * tileSize + tileSize < xOffset + (handler->window->getSize().x / 2 - v.x / 2) ||
  13.                 x * tileSize > handler->window->getSize().x + xOffset - (handler->window->getSize().x / 2 - v.x / 2) ||
  14.                 y * tileSize + tileSize < yOffset + (handler->window->getSize().y / 2 - v.y / 2) ||
  15.                 y * tileSize > handler->window->getSize().y + yOffset - (handler->window->getSize().y / 2 - v.y / 2))) {
  16.  
  17.  
  18.                 sf::Uint8 tileId = world->getTile(x, y);
  19.  
  20.                 sf::RectangleShape tile(sf::Vector2f(tileSize, tileSize));
  21.                 tile.setPosition((x * tileSize - xOffset), (y * tileSize - yOffset));
  22.  
  23.                 sf::Uint8 data = 0;
  24.  
  25.                 tile.setTexture(handler->assets->getBaseTexture(tileId));
  26.  
  27.  
  28.  
  29.                 renderOrder[0].push_back(tile); // We always want the base tiles to be drawn first
  30.  
  31.                 TileData currentTileData = world->getTileData(x, y);
  32.                 std::map<sf::Uint8, sf::Uint8> adjInfo = currentTileData.getAdjacentInfo();
  33.                 for (std::map<sf::Uint8, sf::Uint8>::iterator it = adjInfo.begin(); it != adjInfo.end(); it++) {
  34.  
  35.                     sf::Uint8 key = it->first;
  36.                     sf::Uint8 value = it->second;
  37.  
  38.                     sf::Texture* newT = handler->assets->getOuterTexture(key, value, x, y);
  39.                     if (newT == nullptr) continue;
  40.                     tile.setTexture(newT);
  41.                     renderOrder[handler->assets->getTilePriority(key)].push_back(tile);
  42.  
  43.                 }
  44.  
  45.  
  46.             }
  47.  
  48.  
  49.  
  50.         }
  51.     }
  52.  
  53.     for (int i = 0; i < renderOrder.size(); i++) {
  54.         for (int j = 0; j < renderOrder[i].size(); j++) {
  55.             handler->window->draw(renderOrder[i][j]);
  56.         }
  57.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement