CHeroHandler.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #include "stdafx.h"
  2. #include "CHeroHandler.h"
  3. void CHeroHandler::loadHeroes()
  4. {
  5. std::ifstream inp("HOTRAITS.TXT", std::ios::in);
  6. std::string dump;
  7. for(int i=0; i<25; ++i)
  8. {
  9. inp>>dump;
  10. }
  11. inp.ignore();
  12. while(!inp.eof())
  13. {
  14. CHero nher;
  15. std::string base;
  16. char * tab = new char[500];
  17. int iit = 0;
  18. inp.getline(tab, 500);
  19. base = std::string(tab);
  20. if(base.size()<2) //ended, but some rubbish could still stay end we have something useless
  21. {
  22. loadSpecialAbilities();
  23. return;
  24. }
  25. while(base[iit]!='\t')
  26. {
  27. ++iit;
  28. }
  29. nher.name = base.substr(0, iit);
  30. ++iit;
  31. for(int i=iit; i<iit+100; ++i)
  32. {
  33. if(base[i]==(char)(10) || base[i]==(char)(9))
  34. {
  35. nher.low1stack = atoi(base.substr(iit, i).c_str());
  36. iit=i+1;
  37. break;
  38. }
  39. }
  40. for(int i=iit; i<iit+100; ++i)
  41. {
  42. if(base[i]==(char)(10) || base[i]==(char)(9))
  43. {
  44. nher.high1stack = atoi(base.substr(iit, i).c_str());
  45. iit=i+1;
  46. break;
  47. }
  48. }
  49. int ipom=iit;
  50. while(base[ipom]!='\t')
  51. {
  52. ++ipom;
  53. }
  54. nher.refType1stack = base.substr(iit, ipom-iit);
  55. iit=ipom+1;
  56. for(int i=iit; i<iit+100; ++i)
  57. {
  58. if(base[i]==(char)(10) || base[i]==(char)(9))
  59. {
  60. nher.low2stack = atoi(base.substr(iit, i-iit).c_str());
  61. iit=i+1;
  62. break;
  63. }
  64. }
  65. for(int i=iit; i<iit+100; ++i)
  66. {
  67. if(base[i]==(char)(10) || base[i]==(char)(9))
  68. {
  69. nher.high2stack = atoi(base.substr(iit, i-iit).c_str());
  70. iit=i+1;
  71. break;
  72. }
  73. }
  74. ipom=iit;
  75. while(base[ipom]!='\t')
  76. {
  77. ++ipom;
  78. }
  79. nher.refType2stack = base.substr(iit, ipom-iit);
  80. iit=ipom+1;
  81. for(int i=iit; i<iit+100; ++i)
  82. {
  83. if(base[i]==(char)(10) || base[i]==(char)(9))
  84. {
  85. nher.low3stack = atoi(base.substr(iit, i-iit).c_str());
  86. iit=i+1;
  87. break;
  88. }
  89. }
  90. for(int i=iit; i<iit+100; ++i)
  91. {
  92. if(base[i]==(char)(10) || base[i]==(char)(9))
  93. {
  94. nher.high3stack = atoi(base.substr(iit, i-iit).c_str());
  95. iit=i+1;
  96. break;
  97. }
  98. }
  99. nher.refType3stack = base.substr(iit, base.size()-iit);
  100. heroes.push_back(nher);
  101. delete[500] tab;
  102. }
  103. loadSpecialAbilities();
  104. }
  105. void CHeroHandler::loadSpecialAbilities()
  106. {
  107. std::ifstream inp("HeroSpec.txt", std::ios::in);
  108. std::string dump;
  109. for(int i=0; i<7; ++i)
  110. {
  111. inp>>dump;
  112. }
  113. inp.ignore();
  114. int whHero=0;
  115. while(!inp.eof())
  116. {
  117. std::string base;
  118. char * tab = new char[500];
  119. int iitBef = 0;
  120. int iit = 0;
  121. inp.getline(tab, 500);
  122. base = std::string(tab);
  123. if(base.size()<2) //ended, but some rubbish could still stay end we have something useless
  124. {
  125. return; //add counter
  126. }
  127. while(base[iit]!='\t')
  128. {
  129. ++iit;
  130. }
  131. heroes[whHero].bonusName = base.substr(0, iit);
  132. ++iit;
  133. iitBef=iit;
  134. if(heroes[whHero].bonusName == std::string("Ogry"))
  135. {
  136. char * tab2 = new char[500];
  137. inp.getline(tab2, 500);
  138. base += std::string(tab2);
  139. delete [500] tab2;
  140. }
  141. while(base[iit]!='\t')
  142. {
  143. ++iit;
  144. }
  145. heroes[whHero].shortBonus = base.substr(iitBef, iit-iitBef);
  146. ++iit;
  147. iitBef=iit;
  148. while(base[iit]!='\t' && iit<base.size())
  149. {
  150. ++iit;
  151. }
  152. heroes[whHero].longBonus = base.substr(iitBef, iit-iitBef);
  153. ++whHero;
  154. delete [500] tab;
  155. }
  156. }