CSpellHandler.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #define VCMI_DLL
  2. #include "../stdafx.h"
  3. #include "CSpellHandler.h"
  4. #include "CLodHandler.h"
  5. #include "../lib/VCMI_Lib.h"
  6. #include <boost/algorithm/string/replace.hpp>
  7. extern CLodHandler *bitmaph;
  8. void CSpellHandler::loadSpells()
  9. {
  10. std::string buf = bitmaph->getTextFile("SPTRAITS.TXT"), pom;
  11. int andame = buf.size(), i=0; //buf iterator
  12. for(int z=0; z<5; ++z)
  13. loadToIt(pom,buf,i,3);
  14. bool combSpells=false; //true, if we are reading combat spells
  15. while(i<andame)
  16. {
  17. if(spells.size()==81)
  18. break;
  19. CSpell nsp; //new currently being read spell
  20. loadToIt(nsp.name,buf,i,4);
  21. if(nsp.name == std::string(""))
  22. {
  23. for(int z=0; z<3; ++z)
  24. loadToIt(pom,buf,i,3);
  25. loadToIt(nsp.name,buf,i,4);
  26. }
  27. loadToIt(nsp.abbName,buf,i,4);
  28. loadToIt(nsp.level,buf,i,4);
  29. loadToIt(pom,buf,i,4);
  30. nsp.earth = pom[0]=='x' ? true : false;
  31. loadToIt(pom,buf,i,4);
  32. nsp.water = pom[0]=='x' ? true : false;
  33. loadToIt(pom,buf,i,4);
  34. nsp.fire = pom[0]=='x' ? true : false;
  35. loadToIt(pom,buf,i,4);
  36. nsp.air = pom[0]=='x' ? true : false;
  37. nsp.costs.resize(4);
  38. for (int z = 0; z < 4 ; z++)
  39. loadToIt(nsp.costs[z],buf,i,4);
  40. loadToIt(nsp.power,buf,i,4);
  41. nsp.powers.resize(4);
  42. for (int z = 0; z < 4 ; z++)
  43. loadToIt(nsp.powers[z],buf,i,4);
  44. nsp.probabilities.resize(9);
  45. for (int z = 0; z < 9 ; z++)
  46. loadToIt(nsp.probabilities[z],buf,i,4);
  47. nsp.AIVals.resize(4);
  48. for (int z = 0; z < 4 ; z++)
  49. loadToIt(nsp.AIVals[z],buf,i,4);
  50. nsp.descriptions.resize(4);
  51. for (int z = 0; z < 4 ; z++)
  52. {
  53. loadToIt(nsp.descriptions[z],buf,i,4);
  54. boost::algorithm::replace_all(nsp.descriptions[z],"\"","");
  55. }
  56. loadToIt(nsp.attributes,buf,i,3);
  57. nsp.id = spells.size();
  58. nsp.combatSpell = combSpells;
  59. spells.push_back(nsp);
  60. }
  61. }