CPreGameTextHandler.cpp 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  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. for(int vv=0; vv<18; ++vv)
  254. {
  255. loadToIt(singleScenarioNameNr[vv], buf, i, 1);
  256. }
  257. for(int vv=0; vv<18; ++vv)
  258. {
  259. loadToIt(singleEntryScenarioNameNr[vv], buf, i, 1);
  260. }
  261. std::string ff = singleEntryScenarioNameNr[4];
  262. loadToIt(singleTurnDuration, buf, i, 1);
  263. loadToIt(singleChatText, buf, i, 0);
  264. loadToIt(singleChatEntry, buf, i, 0);
  265. loadToIt(singleChatPlug, buf, i, 0);
  266. loadToIt(singleChatPlayer, buf, i, 0);
  267. loadToIt(singleChatPlayerSlider, buf, i, 0);
  268. loadToIt(singleRollover, buf, i, 0);
  269. loadToIt(singleNext, buf, i, 0);
  270. loadToIt(singleBegin, buf, i, 0);
  271. loadToIt(singleBack, buf, i, 0);
  272. loadToIt(singleSSExit, buf, i, 0);
  273. loadToIt(singleWhichMap, buf, i, 0);
  274. loadToIt(singleSortNumber, buf, i, 0);
  275. loadToIt(singleSortSize, buf, i, 0);
  276. loadToIt(singleSortVersion, buf, i, 0);
  277. loadToIt(singleSortAlpha, buf, i, 0);
  278. loadToIt(singleSortVictory, buf, i, 0);
  279. loadToIt(singleSortLoss, buf, i, 1);
  280. loadToIt(singleBriefing, buf, i, 1);
  281. loadToIt(singleSSHero, buf, i, 1);
  282. loadToIt(singleGoldpic, buf, i, 1);
  283. for(int vv=0; vv<8; ++vv)
  284. {
  285. loadToIt(singleHumanCPU[vv], buf, i, 1);
  286. }
  287. for(int vv=0; vv<8; ++vv)
  288. {
  289. loadToIt(singleHandicap[vv], buf, i, 1);
  290. }
  291. for(int vv=0; vv<8; ++vv)
  292. {
  293. loadToIt(singleTownLeft[vv], buf, i, 1);
  294. }
  295. for(int vv=0; vv<8; ++vv)
  296. {
  297. loadToIt(singleTownRite[vv], buf, i, 1);
  298. }
  299. for(int vv=0; vv<8; ++vv)
  300. {
  301. loadToIt(singleHeroLeft[vv], buf, i, 1);
  302. }
  303. for(int vv=0; vv<8; ++vv)
  304. {
  305. loadToIt(singleHeroRite[vv], buf, i, 1);
  306. }
  307. for(int vv=0; vv<8; ++vv)
  308. {
  309. loadToIt(singleResLeft[vv], buf, i, 1);
  310. }
  311. for(int vv=0; vv<8; ++vv)
  312. {
  313. loadToIt(singleResRite[vv], buf, i, 1);
  314. }
  315. for(int vv=0; vv<8; ++vv)
  316. {
  317. loadToIt(singleHeroSetting[vv], buf, i, 1);
  318. }
  319. for(int vv=0; vv<8; ++vv)
  320. {
  321. loadToIt(singleTownSetting[vv], buf, i, 1);
  322. }
  323. loadToIt(singleConstCreateMap, buf, i, 1);
  324. loadToIt(singleConstMapSizeLabel, buf, i, 1);
  325. loadToIt(singleConstSmallMap, buf, i, 1);
  326. loadToIt(singleConstMediumMap, buf, i, 1);
  327. loadToIt(singleConstLargeMap, buf, i, 1);
  328. loadToIt(singleConstHugeMap, buf, i, 1);
  329. loadToIt(singleConstMapLevels, buf, i, 1);
  330. loadToIt(singleConstHumanPositionsLabel, buf, i, 1);
  331. for(int vv=0; vv<8; ++vv)
  332. {
  333. loadToIt(singleConstNHumans[vv], buf, i, 1);
  334. }
  335. loadToIt(singleConstRandomHumans, buf, i, 1);
  336. loadToIt(singleConstHumanTeamsLabel, buf, i, 1);
  337. loadToIt(singleConstNoHumanTeams, buf, i, 1);
  338. for(int vv=0; vv<7; ++vv)
  339. {
  340. loadToIt(singleConstNHumanTeams[vv], buf, i, 1);
  341. }
  342. loadToIt(singleConstRandomHumanTeams, buf, i, 1);
  343. loadToIt(singleConstComputerPositionsLabel, buf, i, 1);
  344. loadToIt(singleConstNoComputers, buf, i, 1);
  345. for(int vv=0; vv<7; ++vv)
  346. {
  347. loadToIt(singleConstNComputers[vv], buf, i, 1);
  348. }
  349. loadToIt(singleConstRandomComputers, buf, i, 1);
  350. loadToIt(singleConstComputerTeamsLabel, buf, i, 1);
  351. loadToIt(singleConstNoComputerTeams, buf, i, 1);
  352. for(int vv=0; vv<6; ++vv)
  353. {
  354. loadToIt(singleConstNComputerTeams[vv], buf, i, 1);
  355. }
  356. loadToIt(singleConstRandomComputerTeams, buf, i, 1);
  357. loadToIt(singleConstWaterLabel, buf, i, 1);
  358. loadToIt(singleConstNoWater, buf, i, 1);
  359. loadToIt(singleConstNormalWater, buf, i, 1);
  360. loadToIt(singleConstIslands, buf, i, 1);
  361. loadToIt(singleConstRandomWater, buf, i, 1);
  362. loadToIt(singleConstMonsterStrengthLabel, buf, i, 1);
  363. loadToIt(singleConstWeakMonsters, buf, i, 1);
  364. loadToIt(singleConstNormalMonsters, buf, i, 1);
  365. loadToIt(singleConstStrongMonsters, buf, i, 1);
  366. loadToIt(singleConstRandomMonsters, buf, i, 1);
  367. loadToIt(singleConstShowSavedRandomMaps, buf, i, 1);
  368. loadToIt(singleSliderChatWindow, buf, i, 1);
  369. loadToIt(singleSliderFileMenu, buf, i, 1);
  370. loadToIt(singleSliderDuration, buf, i, 1);
  371. loadToIt(singlePlayerHandicapHeaderID, buf, i, 0);
  372. loadToIt(singleTurnDurationHeaderID, buf, i, 0);
  373. loadToIt(singleStartingTownHeaderID, buf, i, 0);
  374. loadToIt(singleStartingTownHeaderWConfluxID, buf, i, 0);
  375. loadToIt(singleStartingHeroHeaderID, buf, i, 0);
  376. loadToIt(singleStartingBonusHeaderID, buf, i, 0);
  377. }
  378. void CPreGameTextHandler::loadToIt(std::string &dest, std::string &src, int &iter, int mode)
  379. {
  380. switch(mode)
  381. {
  382. case 0:
  383. {
  384. int hmcr = 0;
  385. for(iter; iter<src.size(); ++iter)
  386. {
  387. if(src[iter]=='\t')
  388. ++hmcr;
  389. if(hmcr==1)
  390. break;
  391. }
  392. ++iter;
  393. int befi=iter;
  394. for(iter; iter<src.size(); ++iter)
  395. {
  396. if(src[iter]=='\t')
  397. break;
  398. }
  399. dest = src.substr(befi, iter-befi);
  400. ++iter;
  401. hmcr = 0;
  402. for(iter; iter<src.size(); ++iter)
  403. {
  404. if(src[iter]=='\r')
  405. ++hmcr;
  406. if(hmcr==1)
  407. break;
  408. }
  409. iter+=2;
  410. break;
  411. }
  412. case 1:
  413. {
  414. int hmcr = 0;
  415. for(iter; iter<src.size(); ++iter)
  416. {
  417. if(src[iter]=='\t')
  418. ++hmcr;
  419. if(hmcr==1)
  420. break;
  421. }
  422. ++iter;
  423. int befi=iter;
  424. for(iter; iter<src.size(); ++iter)
  425. {
  426. if(src[iter]=='\r')
  427. break;
  428. }
  429. dest = src.substr(befi, iter-befi);
  430. iter+=2;
  431. }
  432. }
  433. }