CArtHandler.cpp 4.6 KB

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