Advertisement
Guest User

Untitled

a guest
Aug 28th, 2017
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.28 KB | None | 0 0
  1. //--------------------------------------------------- FILE MANAGER ------------------------------------------------------------
  2. void FileManager::LoadFromFile(std::string fileName, std::vector<std::vector<int>> &map, std::vector<std::vector<int>> &col, std::vector<std::vector<int>> &shadow)
  3. {
  4.     fileName = "Files/Config/" + fileName;
  5.     std::ifstream openFile(fileName);
  6.  
  7.     map.clear();
  8.     col.clear();
  9.  
  10.     if (openFile.is_open())
  11.     {
  12.         while (!openFile.eof())
  13.         {
  14.             std::string line;
  15.             std::getline(openFile, line);
  16.  
  17.             std::vector<int> tempVector;
  18.  
  19.             if (line.find("[map]") != std::string::npos)
  20.             {
  21.                 tempVector.clear();
  22.                 state = MAP;
  23.                 continue;
  24.             }
  25.             else if(line.find("[collision]") != std::string::npos)
  26.             {
  27.                 tempVector.clear();
  28.                 state = COLLISION;
  29.                 continue;
  30.             }
  31.             else if (line.find("[shadows]") != std::string::npos)
  32.             {
  33.                 tempVector.clear();
  34.                 state = SHADOW;
  35.                 continue;
  36.             }
  37.             std::stringstream str(line);
  38.  
  39.             while (str)
  40.             {
  41.                 std::getline(str, line, ' ');
  42.  
  43.                 if (line != "")
  44.                 {
  45.                     switch (state)
  46.                     {
  47.                         case MAP: tempVector.push_back(atoi(line.c_str())); break;
  48.                         case COLLISION: tempVector.push_back(atoi(line.c_str())); break;
  49.                         case SHADOW: tempVector.push_back(atoi(line.c_str())); break;
  50.                     }
  51.                 }
  52.             }
  53.  
  54.             switch (state)
  55.             {
  56.                 if (tempVector.size() > 0)
  57.                 {
  58.                     case MAP: map.push_back(tempVector); break;
  59.                     case COLLISION: col.push_back(tempVector); break;
  60.                     case SHADOW: shadow.push_back(tempVector); break;
  61.                 }
  62.  
  63.                 tempVector.clear();
  64.             }  
  65.         }
  66.     }
  67.  
  68.     openFile.clear();
  69.     openFile.close();
  70. }
  71. //------------------------------------------------------- MAPA ------------------------------------------------------------
  72.  
  73. //------------------------------------------------- MAPA KOLIZJI - check --------------------------------------------------
  74. bool GameplayScreen::checkCollision(int pRight, int pLeft, int pTop, int pBot)
  75. {
  76.     for (int y = 0; y < col.size(); y++)
  77.     {
  78.         for (int x = 0; x < col[y].size(); x++)
  79.         {
  80.             if (col[y][x] == 1)
  81.             {
  82.                 left = x * 32;
  83.                 right = x * 32 + 32;
  84.                 top = y * 32;
  85.                 bot = y * 32 + 32;
  86.  
  87.                 if (pRight < left || pLeft > right || pTop > bot || pBot < top)
  88.                 {
  89.                     std::cout << "NIE MA KOLIZJI" << std::endl;
  90.                     return false;
  91.                 }
  92.                 std::cout << "COLLISION" << std::endl;
  93.                 return true;
  94.             }
  95.         }
  96.     }
  97. }
  98. //---------------------------------------------------- PLAYER UPDATE -------------------------------------------------------
  99. void Player::UpdatePosX(int moveSpeed)
  100. {
  101.     this->left = posX - Config::getSM()->GetGame()->getPosX() + moveSpeed;
  102.     this->right = posX - Config::getSM()->GetGame()->getPosX() + moveSpeed + spriteX;
  103.     bool x = false;
  104.     if (moveSpeed > 0)
  105.     {
  106.         if (!Config::getSM()->GetGame()->checkCollision(right,left,top,bot))
  107.         {
  108.             if (posX >= (Config::getFM()->getW() / 2) - spriteX && Config::getSM()->GetGame()->getMoveMap() && Config::getSM()->GetGame()->getPosX() > -1728)
  109.             {
  110.                 Config::getSM()->GetGame()->MoveMap(-moveSpeed, 0);
  111.             }
  112.             else posX += moveSpeed;
  113.  
  114.             moveAnim = true;
  115.         }
  116.         else
  117.         {
  118.             UpdatePosX(moveSpeed - 1);
  119.             if (moveSpeed > 1 && jumpState == 0)
  120.             {
  121.                 --moveSpeed;
  122.             }
  123.  
  124.             if (jumpState == 0)
  125.             {
  126.                 setSpriteID(0);
  127.                 moveAnim = false;
  128.             }
  129.         }
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement