Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. #include "Layer.h"
  2.  
  3.     Layer::Layer()
  4.     {
  5.     }
  6.  
  7.     Layer::~Layer()
  8.     {
  9.     }
  10.  
  11.     std::pair<int, int> Layer::SetTiles(std::string tileString)
  12.     {
  13.         std::pair<int, int> tiles;
  14.         tiles.first = atoi(tileString.substr(0, tileString.find(',')).c_str());
  15.         tiles.second = atoi(tileString.substr(tileString.find(',') + 1).c_str());
  16.  
  17.         return tiles;
  18.     }
  19.  
  20.     void Layer::LoadContent(std::string layerID, std::string mapID, SDL_Renderer *renderer)
  21.     {
  22.         file.LoadContent("Files/config/Maps/" + mapID + ".cfg", attributes, contents);
  23.         int indexY = 0;
  24.         for (int i = 0; i < attributes.size(); i++)
  25.         {
  26.             for (int j = 0; j < attributes[i].size(); j++)
  27.             {
  28.                 std::string att = attributes[i][j];
  29.                 std::string con = contents[i][j];
  30.  
  31.                 if (att == "TileSheet")
  32.                 {
  33.                     tileSheet.loadFromFile(con, renderer);
  34.                 }
  35.                 else if (att == "SolidTiles")
  36.                 {
  37.                     solidTiles.push_back(SetTiles(con));
  38.                 }
  39.                 else if (att == "StartLayer")
  40.                 {
  41.                     for (int k = 0; k < contents[i].size(); k++)
  42.                     {
  43.                         if (contents[i][k] != "---")
  44.                         {
  45.                             Tile::State tempState = Tile::State::Passive;
  46.                             std::pair<int, int> tTile = SetTiles(contents[i][k]);
  47.  
  48.                             if (std::find(solidTiles.begin(), solidTiles.end(), tTile) != solidTiles.end())
  49.                             {
  50.                                 tempState = Tile::State::Solid;
  51.                             }
  52.  
  53.                             imageRect.x = tTile.first * 32;
  54.                             imageRect.y = tTile.second * 32;
  55.                             imageRect.w = 32;
  56.                             imageRect.h = 32;
  57.  
  58.                             Tile tileInstance;
  59.                             tiles.push_back(tileInstance);
  60.  
  61.                             posX = k * 32;
  62.                             posY = indexY * 32;
  63.  
  64.                             tiles[tiles.size() - 1].SetContent(con, tempState, posX, posY, renderer);
  65.                         }
  66.                     }
  67.                     indexY++;
  68.                 }
  69.             }
  70.         }
  71.     }
  72.     void Layer::UnloadContent()
  73.     {
  74.         file.UnloadContent();
  75.         for (int i = 0; i < tiles.size(); i++)
  76.         {
  77.             tiles[i].UnloadContent();
  78.         }
  79.         tileSheet.free();
  80.     }
  81.     void Layer::Update(Player &player)
  82.     {
  83.         for (int i = 0; i < tiles.size(); i++)
  84.         {
  85.             tiles[i].Update(player);
  86.         }
  87.     }
  88.     void Layer::Draw(SDL_Renderer *renderer)
  89.     {
  90.         for (int i = 0; i < tiles.size(); i++)
  91.         {
  92.             tiles[i].Draw(renderer, imageRect);
  93.         }
  94.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement