Advertisement
Guest User

xml.cpp

a guest
May 6th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.50 KB | None | 0 0
  1. void Grapnel::SavePointers()
  2. {
  3.     std::wofstream fileStream;
  4.     fileStream.open(L"./Resources/GameInit.txt");
  5.     if (fileStream.fail() == true)
  6.     {
  7.         GAME_ENGINE->MessageBox(String("Failed to open file!"));
  8.         return;
  9.     }
  10.     fileStream << String("//Gaetan, Thibaut, 1DAE10").C_str();
  11.     fileStream << std::endl;
  12.    
  13.     //GroundEnemy
  14.     for (int i = 0; i < m_GenGroundEnemyPtrArr.size(); i++)
  15.     {
  16.         fileStream << String("<GroundEnemy").C_str();
  17.         fileStream << std::endl;
  18.  
  19.         fileStream << String("\tSpawnPos").C_str();
  20.         fileStream << String("=").C_str();
  21.         fileStream << String("\"").C_str();
  22.         fileStream << String(m_GenGroundEnemyPtrArr[i]->GetStartPos().x).C_str();
  23.         fileStream << String(",").C_str();
  24.         fileStream << String(m_GenGroundEnemyPtrArr[i]->GetStartPos().y).C_str();
  25.         fileStream << String("\"").C_str();
  26.         fileStream << std::endl;
  27.  
  28.         fileStream << String("\tWalkDistance").C_str();
  29.         fileStream << String("=").C_str();
  30.         fileStream << String("\"").C_str();
  31.         fileStream << String(m_GenGroundEnemyPtrArr[i]->GetMaxWalkDistance()).C_str();
  32.         fileStream << String("\"").C_str();
  33.         fileStream << std::endl;
  34.  
  35.         fileStream << String("\tBitmap").C_str();
  36.         fileStream << String("=").C_str();
  37.         fileStream << String("\"").C_str();
  38.         fileStream << String("m_BmpGroundEnemyPtr").C_str();
  39.         fileStream << String("\"").C_str();
  40.         fileStream << std::endl;
  41.  
  42.         fileStream << String("/>").C_str();
  43.         fileStream << std::endl;
  44.     }
  45.    
  46.     //Coin's
  47.     for (int i = 0; i < m_ConCoinPtrArr.size(); i++)
  48.     {
  49.         fileStream << String("<Coin").C_str();
  50.         fileStream << std::endl;
  51.  
  52.         fileStream << String("\tSpawnPos").C_str();
  53.         fileStream << String("=").C_str();
  54.         fileStream << String("\"").C_str();
  55.         fileStream << String(m_ConCoinPtrArr[i]->GetStartPos().x).C_str();
  56.         fileStream << String(",").C_str();
  57.         fileStream << String(m_ConCoinPtrArr[i]->GetStartPos().y).C_str();
  58.         fileStream << String("\"").C_str();
  59.         fileStream << std::endl;
  60.  
  61.         fileStream << String("\tBitmap").C_str();
  62.         fileStream << String("=").C_str();
  63.         fileStream << String("\"").C_str();
  64.         fileStream << String("m_BmpCoinPtr").C_str();
  65.         fileStream << String("\"").C_str();
  66.         fileStream << std::endl;
  67.  
  68.         fileStream << String("/>").C_str();
  69.         fileStream << std::endl;
  70.     }
  71.     //Platforms
  72.     for (int i = 0; i < m_ConCoinPtrArr.size(); i++)
  73.     {
  74.         fileStream << String("<Platforms").C_str();
  75.         fileStream << std::endl;
  76.  
  77.         fileStream << String("\tSpawnPos").C_str();
  78.         fileStream << String("=").C_str();
  79.         fileStream << String("\"").C_str();
  80.         fileStream << String(m_PfmPlatformPtrArr[i]->GetStartPos().x).C_str();
  81.         fileStream << String(",").C_str();
  82.         fileStream << String(m_PfmPlatformPtrArr[i]->GetStartPos().y).C_str();
  83.         fileStream << String("\"").C_str();
  84.         fileStream << std::endl;
  85.  
  86.         //fileStream << String("\tBitmap").C_str();
  87.         //fileStream << String("=").C_str();
  88.         //fileStream << String("\"").C_str();
  89.         //fileStream << String("m_BmpCoinPtr").C_str();
  90.         //fileStream << String("\"").C_str();
  91.         //fileStream << std::endl;
  92.  
  93.         fileStream << String("/>").C_str();
  94.         fileStream << std::endl;
  95.     }
  96.  
  97.     fileStream.close();
  98. }
  99.  
  100. void Grapnel::LoadPointers()
  101. {
  102.     std::wifstream ifileStream;
  103.     ifileStream.open(L"./Resources/GameInit.txt");
  104.     if (ifileStream.fail() == true)
  105.     {
  106.         GAME_ENGINE->MessageBox(String("Failed to open file!"));
  107.         return;
  108.     }
  109.     std::wstring extractedLine;
  110.     std::wstringstream expressionStream;
  111.     while (ifileStream.eof() == false)
  112.     {
  113.         std::getline(ifileStream, extractedLine); //Extract the line to the expression stream
  114.         expressionStream << extractedLine; //Write the line to the expression stream
  115.  
  116.         //When the extrexted line contains a full stop
  117.         //then it contains the last piece of the expression
  118.         if (extractedLine.find(L'/>') != std::wstring::npos)
  119.         {
  120.             std::wstring shapeString = expressionStream.str();
  121.             CreateObject(shapeString);
  122.  
  123.             //clear the string in stringstream
  124.             expressionStream.str(L"");
  125.             std::wcout << std::endl;
  126.         }
  127.     }
  128.  
  129.     ifileStream.close();
  130. }
  131.  
  132. void Grapnel::CreateObject(const std::wstring & pointerRef)
  133. {
  134.     if (pointerRef.find(L"GroundEnemy") != std::wstring::npos)
  135.     {
  136.         createGroundEnemy(pointerRef);
  137.     }
  138.     if (pointerRef.find(L"Coin") != std::wstring::npos)
  139.     {
  140.         createCoin(pointerRef);
  141.     }
  142. }
  143.  
  144. void Grapnel::createGroundEnemy(const std::wstring & pointerRef)
  145. {
  146.     std::wstring spawnPosString = GetValue(L"SpawnPos", pointerRef);
  147.     DOUBLE2 spawnPos = StringToDOUBLE2(spawnPosString);
  148.  
  149.     std::wstring WalkDistanceString = GetValue(L"WalkDistance", pointerRef);
  150.     double walkDistance = StringTodouble(WalkDistanceString);
  151.  
  152.     m_GenGroundEnemyPtrArr.push_back(new GroundEnemy(spawnPos, walkDistance, m_BmpGroundEnemyPtr));
  153. }
  154.  
  155. void Grapnel::createCoin(const std::wstring & pointerRef)
  156. {
  157.     std::wstring spawnPosString = GetValue(L"SpawnPos", pointerRef);
  158.     DOUBLE2 spawnPos = StringToDOUBLE2(spawnPosString);
  159.  
  160.     m_ConCoinPtrArr.push_back(new Coin(spawnPos, m_BmpCoinPtr));
  161. }
  162.  
  163. void Grapnel::createPlatform(const std::wstring & pointerRef)
  164. {
  165.     std::wstring spawnPosString = GetValue(L"SpawnPos", pointerRef);
  166.     DOUBLE2 spawnPos = StringToDOUBLE2(spawnPosString);
  167.  
  168.     m_PfmPlatformPtrArr.push_back(new Platform(spawnPos/*, m_BmpCoinPtr*/));
  169. }
  170.  
  171. std::wstring Grapnel::GetValue(const std::wstring & nameRef, const std::wstring & shapeRef)
  172. {
  173.     //get the name and value out of the shapes.txt
  174.     std::size_t idxFrom = shapeRef.find(nameRef);
  175.     idxFrom = shapeRef.find(L"\"", idxFrom) + 1;
  176.     std::size_t idxTill = shapeRef.find(L"\"", idxFrom);
  177.  
  178.     std::wstring timeString = shapeRef.substr(idxFrom, idxTill - idxFrom);
  179.     return timeString;
  180. }
  181.  
  182. DOUBLE2 Grapnel::StringToDOUBLE2(const std::wstring & DOUBLE2Ref)
  183. {
  184.     using namespace std;
  185.     size_t idxFromdouble1 = DOUBLE2Ref.find(L"\"") + 1;
  186.     size_t idxTilldouble1 = DOUBLE2Ref.find(L",", idxFromdouble1);
  187.     wstring double1 = DOUBLE2Ref.substr(idxFromdouble1, idxTilldouble1 - idxFromdouble1);
  188.  
  189.     size_t idxFromdouble2 = DOUBLE2Ref.find(L",", idxTilldouble1) + 1;
  190.     size_t idxTilldouble2 = DOUBLE2Ref.find(L"\"", idxFromdouble1);
  191.     wstring double2 = DOUBLE2Ref.substr(idxFromdouble2, idxTilldouble2 - idxFromdouble2);
  192.  
  193.     double xdouble = stoi(double1);
  194.     double ydouble = stoi(double2);
  195.  
  196.     return DOUBLE2(xdouble, ydouble);
  197. }
  198.  
  199. double Grapnel::StringTodouble(const std::wstring & doubleRef)
  200. {
  201.     using namespace std;
  202.     size_t idxFromdouble1 = doubleRef.find(L"\"") + 1;
  203.     size_t idxTilldouble1 = doubleRef.find(L"\"", idxFromdouble1);
  204.     wstring double1 = doubleRef.substr(idxFromdouble1, idxTilldouble1 - idxFromdouble1);
  205.  
  206.     double xdouble = stoi(double1);
  207.  
  208.     return double(xdouble);
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement