CSpellHandler.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. #include "stdafx.h"
  2. #include "CSpellHandler.h"
  3. #include "CGameInfo.h"
  4. void CSpellHandler::loadSpells()
  5. {
  6. std::string buf = CGameInfo::mainObj->bitmaph->getTextFile("SPTRAITS.TXT");
  7. int andame = buf.size();
  8. int i=0; //buf iterator
  9. int hmcr=0;
  10. for(i; i<andame; ++i)
  11. {
  12. if(buf[i]=='\r')
  13. ++hmcr;
  14. if(hmcr==5)
  15. break;
  16. }
  17. i+=2;
  18. bool combSpells=false; //true, if we are reading combat spells
  19. while(i<andame)
  20. {
  21. if(spells.size()==81)
  22. break;
  23. CSpell nsp; //new currently being read spell
  24. int befi=i;
  25. for(i; i<andame; ++i)
  26. {
  27. if(buf[i]=='\t')
  28. break;
  29. }
  30. nsp.name = buf.substr(befi, i-befi);
  31. ++i;
  32. if(nsp.name == std::string(""))
  33. {
  34. combSpells = true;
  35. int hmcr=0;
  36. for(i; i<andame; ++i)
  37. {
  38. if(buf[i]=='\r')
  39. ++hmcr;
  40. if(hmcr==3)
  41. break;
  42. }
  43. ++i;
  44. ++i;
  45. befi=i;
  46. for(i; i<andame; ++i)
  47. {
  48. if(buf[i]=='\t')
  49. break;
  50. }
  51. nsp.name = buf.substr(befi, i-befi);
  52. ++i;
  53. }
  54. befi=i;
  55. for(i; i<andame; ++i)
  56. {
  57. if(buf[i]=='\t')
  58. break;
  59. }
  60. nsp.abbName = buf.substr(befi, i-befi);
  61. ++i;
  62. befi=i;
  63. for(i; i<andame; ++i)
  64. {
  65. if(buf[i]=='\t')
  66. break;
  67. }
  68. nsp.level = atoi(buf.substr(befi, i-befi).c_str());
  69. ++i;
  70. befi=i;
  71. for(i; i<andame; ++i)
  72. {
  73. if(buf[i]=='\t')
  74. break;
  75. }
  76. nsp.earth = buf.substr(befi, i-befi)[0]=='x' ? true : false;
  77. ++i;
  78. befi=i;
  79. for(i; i<andame; ++i)
  80. {
  81. if(buf[i]=='\t')
  82. break;
  83. }
  84. nsp.water = buf.substr(befi, i-befi)[0]=='x' ? true : false;
  85. ++i;
  86. befi=i;
  87. for(i; i<andame; ++i)
  88. {
  89. if(buf[i]=='\t')
  90. break;
  91. }
  92. nsp.fire = buf.substr(befi, i-befi)[0]=='x' ? true : false;
  93. ++i;
  94. befi=i;
  95. for(i; i<andame; ++i)
  96. {
  97. if(buf[i]=='\t')
  98. break;
  99. }
  100. nsp.air = buf.substr(befi, i-befi)[0]=='x' ? true : false;
  101. ++i;
  102. befi=i;
  103. for(i; i<andame; ++i)
  104. {
  105. if(buf[i]=='\t')
  106. break;
  107. }
  108. nsp.costNone = atoi(buf.substr(befi, i-befi).c_str());
  109. ++i;
  110. befi=i;
  111. for(i; i<andame; ++i)
  112. {
  113. if(buf[i]=='\t')
  114. break;
  115. }
  116. nsp.costBas = atoi(buf.substr(befi, i-befi).c_str());
  117. ++i;
  118. befi=i;
  119. for(i; i<andame; ++i)
  120. {
  121. if(buf[i]=='\t')
  122. break;
  123. }
  124. nsp.costAdv = atoi(buf.substr(befi, i-befi).c_str());
  125. ++i;
  126. befi=i;
  127. for(i; i<andame; ++i)
  128. {
  129. if(buf[i]=='\t')
  130. break;
  131. }
  132. nsp.costExp = atoi(buf.substr(befi, i-befi).c_str());
  133. ++i;
  134. befi=i;
  135. for(i; i<andame; ++i)
  136. {
  137. if(buf[i]=='\t')
  138. break;
  139. }
  140. nsp.power = atoi(buf.substr(befi, i-befi).c_str());
  141. ++i;
  142. befi=i;
  143. for(i; i<andame; ++i)
  144. {
  145. if(buf[i]=='\t')
  146. break;
  147. }
  148. nsp.powerNone = atoi(buf.substr(befi, i-befi).c_str());
  149. ++i;
  150. befi=i;
  151. for(i; i<andame; ++i)
  152. {
  153. if(buf[i]=='\t')
  154. break;
  155. }
  156. nsp.powerBas = atoi(buf.substr(befi, i-befi).c_str());
  157. ++i;
  158. befi=i;
  159. for(i; i<andame; ++i)
  160. {
  161. if(buf[i]=='\t')
  162. break;
  163. }
  164. nsp.powerAdv = atoi(buf.substr(befi, i-befi).c_str());
  165. ++i;
  166. befi=i;
  167. for(i; i<andame; ++i)
  168. {
  169. if(buf[i]=='\t')
  170. break;
  171. }
  172. nsp.powerExp = atoi(buf.substr(befi, i-befi).c_str());
  173. ++i;
  174. befi=i;
  175. for(i; i<andame; ++i)
  176. {
  177. if(buf[i]=='\t')
  178. break;
  179. }
  180. nsp.castle = atoi(buf.substr(befi, i-befi).c_str());
  181. ++i;
  182. befi=i;
  183. for(i; i<andame; ++i)
  184. {
  185. if(buf[i]=='\t')
  186. break;
  187. }
  188. nsp.rampart = atoi(buf.substr(befi, i-befi).c_str());
  189. ++i;
  190. befi=i;
  191. for(i; i<andame; ++i)
  192. {
  193. if(buf[i]=='\t')
  194. break;
  195. }
  196. nsp.tower = atoi(buf.substr(befi, i-befi).c_str());
  197. ++i;
  198. befi=i;
  199. for(i; i<andame; ++i)
  200. {
  201. if(buf[i]=='\t')
  202. break;
  203. }
  204. nsp.inferno = atoi(buf.substr(befi, i-befi).c_str());
  205. ++i;
  206. befi=i;
  207. for(i; i<andame; ++i)
  208. {
  209. if(buf[i]=='\t')
  210. break;
  211. }
  212. nsp.necropolis = atoi(buf.substr(befi, i-befi).c_str());
  213. ++i;
  214. befi=i;
  215. for(i; i<andame; ++i)
  216. {
  217. if(buf[i]=='\t')
  218. break;
  219. }
  220. nsp.dungeon = atoi(buf.substr(befi, i-befi).c_str());
  221. ++i;
  222. befi=i;
  223. for(i; i<andame; ++i)
  224. {
  225. if(buf[i]=='\t')
  226. break;
  227. }
  228. nsp.stronghold = atoi(buf.substr(befi, i-befi).c_str());
  229. ++i;
  230. befi=i;
  231. for(i; i<andame; ++i)
  232. {
  233. if(buf[i]=='\t')
  234. break;
  235. }
  236. nsp.fortress = atoi(buf.substr(befi, i-befi).c_str());
  237. ++i;
  238. befi=i;
  239. for(i; i<andame; ++i)
  240. {
  241. if(buf[i]=='\t')
  242. break;
  243. }
  244. nsp.conflux = atoi(buf.substr(befi, i-befi).c_str());
  245. ++i;
  246. befi=i;
  247. for(i; i<andame; ++i)
  248. {
  249. if(buf[i]=='\t')
  250. break;
  251. }
  252. nsp.none2 = atoi(buf.substr(befi, i-befi).c_str());
  253. ++i;
  254. befi=i;
  255. for(i; i<andame; ++i)
  256. {
  257. if(buf[i]=='\t')
  258. break;
  259. }
  260. nsp.bas2 = atoi(buf.substr(befi, i-befi).c_str());
  261. ++i;
  262. befi=i;
  263. for(i; i<andame; ++i)
  264. {
  265. if(buf[i]=='\t')
  266. break;
  267. }
  268. nsp.adv2 = atoi(buf.substr(befi, i-befi).c_str());
  269. ++i;
  270. befi=i;
  271. for(i; i<andame; ++i)
  272. {
  273. if(buf[i]=='\t')
  274. break;
  275. }
  276. nsp.exp2 = atoi(buf.substr(befi, i-befi).c_str());
  277. ++i;
  278. befi=i;
  279. for(i; i<andame; ++i)
  280. {
  281. if(buf[i]=='\t')
  282. break;
  283. }
  284. nsp.noneTip = buf.substr(befi, i-befi).c_str();
  285. ++i;
  286. befi=i;
  287. for(i; i<andame; ++i)
  288. {
  289. if(buf[i]=='\t')
  290. break;
  291. }
  292. nsp.basTip = buf.substr(befi, i-befi).c_str();
  293. ++i;
  294. befi=i;
  295. for(i; i<andame; ++i)
  296. {
  297. if(buf[i]=='\t')
  298. break;
  299. }
  300. nsp.advTip = buf.substr(befi, i-befi).c_str();
  301. ++i;
  302. befi=i;
  303. for(i; i<andame; ++i)
  304. {
  305. if(buf[i]=='\t')
  306. break;
  307. }
  308. nsp.expTip = buf.substr(befi, i-befi).c_str();
  309. ++i;
  310. befi=i;
  311. for(i; i<andame; ++i)
  312. {
  313. if(buf[i]=='\r')
  314. break;
  315. }
  316. nsp.attributes = buf.substr(befi, i-befi).c_str();
  317. ++i;
  318. ++i;
  319. nsp.combatSpell = combSpells;
  320. spells.push_back(nsp);
  321. }
  322. }