CPreGameTextHandler.cpp 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. #include "stdafx.h"
  2. #include "CPreGameTextHandler.h"
  3. std::string CPreGameTextHandler::getTitle(std::string text)
  4. {
  5. std::string ret;
  6. int i=0;
  7. while ((text[i++]!='{'));
  8. while ((text[i]!='}') && (i<text.length()))
  9. ret+=text[i++];
  10. return ret;
  11. }
  12. std::string CPreGameTextHandler::getDescr(std::string text)
  13. {
  14. std::string ret;
  15. int i=0;
  16. while ((text[i++]!='}'));
  17. i+=2;
  18. while ((text[i]!='"') && (i<text.length()))
  19. ret+=text[i++];
  20. return ret;
  21. }
  22. void CPreGameTextHandler::loadTexts()
  23. {
  24. std::ifstream inp("H3bitmap.lod\\ZELP.TXT", std::ios::in|std::ios::binary);
  25. inp.seekg(0,std::ios::end); // na koniec
  26. int andame = inp.tellg(); // read length
  27. inp.seekg(0,std::ios::beg); // wracamy na poczatek
  28. char * bufor = new char[andame]; // allocate memory
  29. inp.read((char*)bufor, andame); // read map file to buffer
  30. std::string buf = std::string(bufor);
  31. delete [andame] bufor;
  32. int i=0; //buf iterator
  33. int hmcr=0;
  34. for(i; i<andame; ++i)
  35. {
  36. if(buf[i]=='\r')
  37. ++hmcr;
  38. if(hmcr==3)
  39. break;
  40. }
  41. i+=3;
  42. int befi=i;
  43. for(i; i<andame; ++i)
  44. {
  45. if(buf[i]=='\t')
  46. break;
  47. }
  48. mainNewGame = buf.substr(befi, i-befi);
  49. ++i;
  50. hmcr = 0;
  51. for(i; i<andame; ++i)
  52. {
  53. if(buf[i]=='\r')
  54. ++hmcr;
  55. if(hmcr==1)
  56. break;
  57. }
  58. i+=3;
  59. befi=i;
  60. for(i; i<andame; ++i)
  61. {
  62. if(buf[i]=='\t')
  63. break;
  64. }
  65. mainLoadGame = buf.substr(befi, i-befi);
  66. ++i;
  67. hmcr = 0;
  68. for(i; i<andame; ++i)
  69. {
  70. if(buf[i]=='\r')
  71. ++hmcr;
  72. if(hmcr==1)
  73. break;
  74. }
  75. i+=3;
  76. befi=i;
  77. for(i; i<andame; ++i)
  78. {
  79. if(buf[i]=='\t')
  80. break;
  81. }
  82. mainHighScores = buf.substr(befi, i-befi);
  83. ++i;
  84. hmcr = 0;
  85. for(i; i<andame; ++i)
  86. {
  87. if(buf[i]=='\r')
  88. ++hmcr;
  89. if(hmcr==1)
  90. break;
  91. }
  92. i+=3;
  93. befi=i;
  94. for(i; i<andame; ++i)
  95. {
  96. if(buf[i]=='\t')
  97. break;
  98. }
  99. mainCredits = buf.substr(befi, i-befi);
  100. ++i;
  101. hmcr = 0;
  102. for(i; i<andame; ++i)
  103. {
  104. if(buf[i]=='\r')
  105. ++hmcr;
  106. if(hmcr==1)
  107. break;
  108. }
  109. i+=3;
  110. befi=i;
  111. for(i; i<andame; ++i)
  112. {
  113. if(buf[i]=='\t')
  114. break;
  115. }
  116. mainQuit = buf.substr(befi, i-befi);
  117. ++i;
  118. hmcr = 0;
  119. for(i; i<andame; ++i)
  120. {
  121. if(buf[i]=='\r')
  122. ++hmcr;
  123. if(hmcr==3)
  124. break;
  125. }
  126. i+=3;
  127. befi=i;
  128. for(i; i<andame; ++i)
  129. {
  130. if(buf[i]=='\t')
  131. break;
  132. }
  133. ngSingleScenario = buf.substr(befi, i-befi);
  134. ++i;
  135. hmcr = 0;
  136. for(i; i<andame; ++i)
  137. {
  138. if(buf[i]=='\r')
  139. ++hmcr;
  140. if(hmcr==1)
  141. break;
  142. }
  143. i+=3;
  144. befi=i;
  145. for(i; i<andame; ++i)
  146. {
  147. if(buf[i]=='\t')
  148. break;
  149. }
  150. ngCampain = buf.substr(befi, i-befi);
  151. ++i;
  152. hmcr = 0;
  153. for(i; i<andame; ++i)
  154. {
  155. if(buf[i]=='\r')
  156. ++hmcr;
  157. if(hmcr==1)
  158. break;
  159. }
  160. i+=3;
  161. befi=i;
  162. for(i; i<andame; ++i)
  163. {
  164. if(buf[i]=='\t')
  165. break;
  166. }
  167. ngMultiplayer = buf.substr(befi, i-befi);
  168. ++i;
  169. hmcr = 0;
  170. for(i; i<andame; ++i)
  171. {
  172. if(buf[i]=='\r')
  173. ++hmcr;
  174. if(hmcr==1)
  175. break;
  176. }
  177. i+=3;
  178. befi=i;
  179. for(i; i<andame; ++i)
  180. {
  181. if(buf[i]=='\t')
  182. break;
  183. }
  184. ngTutorial = buf.substr(befi, i-befi);
  185. ++i;
  186. hmcr = 0;
  187. for(i; i<andame; ++i)
  188. {
  189. if(buf[i]=='\r')
  190. ++hmcr;
  191. if(hmcr==1)
  192. break;
  193. }
  194. i+=3;
  195. befi=i;
  196. for(i; i<andame; ++i)
  197. {
  198. if(buf[i]=='\t')
  199. break;
  200. }
  201. ngBack = buf.substr(befi, i-befi);
  202. ++i;
  203. hmcr = 0;
  204. for(i; i<andame; ++i)
  205. {
  206. if(buf[i]=='\r')
  207. ++hmcr;
  208. if(hmcr==4)
  209. break;
  210. }
  211. i+=2;
  212. loadToIt(singleChooseScenario, buf, i);
  213. loadToIt(singleSetAdvOptions, buf, i);
  214. loadToIt(singleRandomMap, buf, i);
  215. loadToIt(singleScenarioName, buf, i);
  216. loadToIt(singleDescriptionTitle, buf, i);
  217. loadToIt(singleDescriptionText, buf, i);
  218. loadToIt(singleEasy, buf, i);
  219. loadToIt(singleNormal, buf, i);
  220. loadToIt(singleHard, buf, i);
  221. loadToIt(singleExpert, buf, i);
  222. loadToIt(singleImpossible, buf, i);
  223. loadToIt(singleAllyFlag[0], buf, i);
  224. loadToIt(singleAllyFlag[1], buf, i);
  225. loadToIt(singleAllyFlag[2], buf, i);
  226. loadToIt(singleAllyFlag[3], buf, i, 1);
  227. loadToIt(singleAllyFlag[4], buf, i, 1);
  228. loadToIt(singleAllyFlag[5], buf, i, 1);
  229. loadToIt(singleAllyFlag[6], buf, i, 1);
  230. loadToIt(singleAllyFlag[7], buf, i, 1);
  231. loadToIt(singleEnemyFlag[0], buf, i, 1);
  232. loadToIt(singleEnemyFlag[1], buf, i, 1);
  233. loadToIt(singleEnemyFlag[2], buf, i, 1);
  234. loadToIt(singleEnemyFlag[3], buf, i, 1);
  235. loadToIt(singleEnemyFlag[4], buf, i, 1);
  236. loadToIt(singleEnemyFlag[5], buf, i, 1);
  237. loadToIt(singleEnemyFlag[6], buf, i, 1);
  238. loadToIt(singleEnemyFlag[7], buf, i, 1);
  239. loadToIt(singleViewHideScenarioList, buf, i, 1);
  240. loadToIt(singleViewHideAdvOptions, buf, i, 1);
  241. loadToIt(singlePlayRandom, buf, i, 1);
  242. loadToIt(singleChatDesc, buf, i, 1);
  243. loadToIt(singleMapDifficulty, buf, i, 1);
  244. loadToIt(singleRating, buf, i, 1);
  245. loadToIt(singleMapPossibleDifficulties, buf, i, 1);
  246. loadToIt(singleVicCon, buf, i, 1);
  247. loadToIt(singleLossCon, buf, i, 1);
  248. loadToIt(singleSFilter, buf, i, 1);
  249. loadToIt(singleMFilter, buf, i, 1);
  250. loadToIt(singleLFilter, buf, i, 1);
  251. loadToIt(singleXLFilter, buf, i, 1);
  252. loadToIt(singleAllFilter, buf, i, 1);
  253. }
  254. void CPreGameTextHandler::loadToIt(std::string &dest, std::string &src, int &iter, int mode)
  255. {
  256. switch(mode)
  257. {
  258. case 0:
  259. {
  260. int hmcr = 0;
  261. for(iter; iter<src.size(); ++iter)
  262. {
  263. if(src[iter]=='\t')
  264. ++hmcr;
  265. if(hmcr==1)
  266. break;
  267. }
  268. ++iter;
  269. int befi=iter;
  270. for(iter; iter<src.size(); ++iter)
  271. {
  272. if(src[iter]=='\t')
  273. break;
  274. }
  275. dest = src.substr(befi, iter-befi);
  276. ++iter;
  277. hmcr = 0;
  278. for(iter; iter<src.size(); ++iter)
  279. {
  280. if(src[iter]=='\r')
  281. ++hmcr;
  282. if(hmcr==1)
  283. break;
  284. }
  285. iter+=2;
  286. break;
  287. }
  288. case 1:
  289. {
  290. int hmcr = 0;
  291. for(iter; iter<src.size(); ++iter)
  292. {
  293. if(src[iter]=='\t')
  294. ++hmcr;
  295. if(hmcr==1)
  296. break;
  297. }
  298. ++iter;
  299. int befi=iter;
  300. for(iter; iter<src.size(); ++iter)
  301. {
  302. if(src[iter]=='\r')
  303. break;
  304. }
  305. dest = src.substr(befi, iter-befi);
  306. iter+=2;
  307. }
  308. }
  309. }