CArtHandler.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #include "stdafx.h"
  2. #include "CArtHandler.h"
  3. void CArtHandler::loadArtifacts()
  4. {
  5. std::ifstream inp("ARTRAITS.TXT", std::ios::in);
  6. std::string dump;
  7. for(int i=0; i<44; ++i)
  8. {
  9. inp>>dump;
  10. }
  11. inp.ignore();
  12. int numberlet = 0; //numer of artifact
  13. while(!inp.eof())
  14. {
  15. CArtifact nart;
  16. nart.number = numberlet++;
  17. char * read = new char[10000]; //here we'll have currently read character
  18. inp.getline(read, 10000);
  19. int eol=0; //end of looking
  20. std::string ss = std::string(read);
  21. if(ss==std::string("") && inp.eof())
  22. {
  23. delete [10000] read;
  24. loadArtEvents();
  25. return;
  26. }
  27. for(int i=0; i<200; ++i)
  28. {
  29. if(ss[i]=='\t')
  30. {
  31. nart.name = ss.substr(0, i);
  32. eol=i+1;
  33. break;
  34. }
  35. }
  36. if(nart.name==std::string("-1") || nart.name==std::string("-2"))
  37. {
  38. artifacts.push_back(nart);
  39. continue;
  40. }
  41. for(int i=eol; i<eol+200; ++i)
  42. {
  43. if(ss[i]=='\t')
  44. {
  45. nart.price = atoi(ss.substr(eol, i).c_str());
  46. eol=i+1;
  47. break;
  48. }
  49. }
  50. if(ss[eol]=='x')
  51. nart.spellBook = true;
  52. else
  53. nart.spellBook = false;
  54. if(ss[eol++]!='\t')
  55. eol++;
  56. if(ss[eol]=='x')
  57. nart.warMachine4 = true;
  58. else
  59. nart.warMachine4 = false;
  60. if(ss[eol++]!='\t')
  61. eol++;
  62. if(ss[eol]=='x')
  63. nart.warMachine3 = true;
  64. else
  65. nart.warMachine3 = false;
  66. if(ss[eol++]!='\t')
  67. eol++;
  68. if(ss[eol]=='x')
  69. nart.warMachine2 = true;
  70. else
  71. nart.warMachine2 = false;
  72. if(ss[eol++]!='\t')
  73. eol++;
  74. if(ss[eol]=='x')
  75. nart.warMachine1 = true;
  76. else
  77. nart.warMachine1 = false;
  78. if(ss[eol++]!='\t')
  79. eol++;
  80. if(ss[eol]=='x')
  81. nart.misc5 = true;
  82. else
  83. nart.misc5 = false;
  84. if(ss[eol++]!='\t')
  85. eol++;
  86. if(ss[eol]=='x')
  87. nart.misc4 = true;
  88. else
  89. nart.misc4 = false;
  90. if(ss[eol++]!='\t')
  91. eol++;
  92. if(ss[eol]=='x')
  93. nart.misc3 = true;
  94. else
  95. nart.misc3 = false;
  96. if(ss[eol++]!='\t')
  97. eol++;
  98. if(ss[eol]=='x')
  99. nart.misc2 = true;
  100. else
  101. nart.misc2 = false;
  102. if(ss[eol++]!='\t')
  103. eol++;
  104. if(ss[eol]=='x')
  105. nart.misc1 = true;
  106. else
  107. nart.misc1 = false;
  108. if(ss[eol++]!='\t')
  109. eol++;
  110. if(ss[eol]=='x')
  111. nart.feet = true;
  112. else
  113. nart.feet = false;
  114. if(ss[eol++]!='\t')
  115. eol++;
  116. if(ss[eol]=='x')
  117. nart.lRing = true;
  118. else
  119. nart.lRing = false;
  120. if(ss[eol++]!='\t')
  121. eol++;
  122. if(ss[eol]=='x')
  123. nart.rRing = true;
  124. else
  125. nart.rRing = false;
  126. if(ss[eol++]!='\t')
  127. eol++;
  128. if(ss[eol]=='x')
  129. nart.torso = true;
  130. else
  131. nart.torso = false;
  132. if(ss[eol++]!='\t')
  133. eol++;
  134. if(ss[eol]=='x')
  135. nart.lHand = true;
  136. else
  137. nart.lHand = false;
  138. if(ss[eol++]!='\t')
  139. eol++;
  140. if(ss[eol]=='x')
  141. nart.rHand = true;
  142. else
  143. nart.rHand = false;
  144. if(ss[eol++]!='\t')
  145. eol++;
  146. if(ss[eol]=='x')
  147. nart.neck = true;
  148. else
  149. nart.neck = false;
  150. if(ss[eol++]!='\t')
  151. eol++;
  152. if(ss[eol]=='x')
  153. nart.shoulders = true;
  154. else
  155. nart.shoulders = false;
  156. if(ss[eol++]!='\t')
  157. eol++;
  158. if(ss[eol]=='x')
  159. nart.head = true;
  160. else
  161. nart.head = false;
  162. if(ss[eol++]!='\t')
  163. eol++;
  164. switch(ss[eol])
  165. {
  166. case 'J':
  167. nart.aClass = EartClass::JartClass;
  168. break;
  169. case 'N':
  170. nart.aClass = EartClass::NartClass;
  171. break;
  172. case 'R':
  173. nart.aClass = EartClass::RartClass;
  174. break;
  175. case 'S':
  176. nart.aClass = EartClass::SartClass;
  177. break;
  178. case 'T':
  179. nart.aClass = EartClass::TartClass;
  180. break;
  181. }
  182. if(ss[eol++]!='\t')
  183. eol++;
  184. nart.description = ss.substr(eol, ss.size());
  185. inp.getline(read, 10000);
  186. int bowCounter=0;
  187. nart.desc2 = "";
  188. do //do - while begin
  189. {
  190. ++bowCounter;
  191. inp.getline(read, 10000);
  192. //inp.ignore();
  193. ss = std::string(read);
  194. nart.desc2 += ss;
  195. }
  196. while(nart.desc2[nart.desc2.size()-1]!='"' ||
  197. ( (nart.name==std::string("£uk Penetracji")||nart.name==std::string("Bow of Seeking")) && bowCounter<4) ); //do - while end
  198. //if(nart.name!=std::string("-1") && nart.name!=std::string("-2"))
  199. this->artifacts.push_back(nart);
  200. delete[10000] read;
  201. }
  202. loadArtEvents();
  203. }
  204. bool CArtHandler::loadArtEvents()
  205. {
  206. std::ifstream inp("ARTEVENT.TXT", std::ios::in);
  207. if(!inp.is_open())
  208. {
  209. return false;
  210. }
  211. for(int i=0; i<this->artifacts.size(); ++i)
  212. {
  213. char * tab = new char[1000];
  214. inp.getline(tab, 1000);
  215. std::string spo = std::string("\42-1\42");
  216. if(std::string(tab).substr(0, std::string(tab).size()-1)==std::string("\42-1\42")
  217. || std::string(tab).substr(0, std::string(tab).size()-1)==std::string("\"-2\""))
  218. {
  219. continue;
  220. }
  221. artifacts[i].eventText = std::string(tab).substr(0, std::string(tab).size()-1);
  222. delete[1000] tab;
  223. }
  224. return true;
  225. }