CSpellHandler.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. bool creatureAbility=false; //if true, only creature can use this spell
  16. int ifHit = 0;
  17. while(i<andame)
  18. {
  19. if(spells.size()==81)
  20. break;
  21. CSpell nsp; //new currently being read spell
  22. loadToIt(nsp.name,buf,i,4);
  23. if(nsp.name == std::string(""))
  24. {
  25. if(ifHit == 0)
  26. {
  27. combSpells = true;
  28. }
  29. if(ifHit == 1)
  30. {
  31. creatureAbility = true;
  32. }
  33. for(int z=0; z<3; ++z)
  34. loadToIt(pom,buf,i,3);
  35. loadToIt(nsp.name,buf,i,4);
  36. ++ifHit;
  37. }
  38. loadToIt(nsp.abbName,buf,i,4);
  39. loadToIt(nsp.level,buf,i,4);
  40. loadToIt(pom,buf,i,4);
  41. nsp.earth = pom[0]=='x' ? true : false;
  42. loadToIt(pom,buf,i,4);
  43. nsp.water = pom[0]=='x' ? true : false;
  44. loadToIt(pom,buf,i,4);
  45. nsp.fire = pom[0]=='x' ? true : false;
  46. loadToIt(pom,buf,i,4);
  47. nsp.air = pom[0]=='x' ? true : false;
  48. nsp.costs.resize(4);
  49. for (int z = 0; z < 4 ; z++)
  50. loadToIt(nsp.costs[z],buf,i,4);
  51. loadToIt(nsp.power,buf,i,4);
  52. nsp.powers.resize(4);
  53. for (int z = 0; z < 4 ; z++)
  54. loadToIt(nsp.powers[z],buf,i,4);
  55. nsp.probabilities.resize(9);
  56. for (int z = 0; z < 9 ; z++)
  57. loadToIt(nsp.probabilities[z],buf,i,4);
  58. nsp.AIVals.resize(4);
  59. for (int z = 0; z < 4 ; z++)
  60. loadToIt(nsp.AIVals[z],buf,i,4);
  61. nsp.descriptions.resize(4);
  62. for (int z = 0; z < 4 ; z++)
  63. {
  64. loadToIt(nsp.descriptions[z],buf,i,4);
  65. boost::algorithm::replace_all(nsp.descriptions[z],"\"","");
  66. }
  67. loadToIt(nsp.attributes,buf,i,3);
  68. nsp.id = spells.size();
  69. nsp.combatSpell = combSpells;
  70. nsp.creatureAbility = creatureAbility;
  71. spells.push_back(nsp);
  72. }
  73. }