CHeroWindow.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. #include "stdafx.h"
  2. #include "global.h"
  3. #include "CHeroWindow.h"
  4. #include "CGameInfo.h"
  5. #include "hch\CHeroHandler.h"
  6. #include "hch\CGeneralTextHandler.h"
  7. #include "SDL.h"
  8. #include "SDL_Extensions.h"
  9. #include "CAdvmapInterface.h"
  10. #include "AdventureMapButton.h"
  11. #include "CMessage.h"
  12. #include <sstream>
  13. extern SDL_Surface * screen;
  14. extern TTF_Font * GEOR16;
  15. CHeroWindow::CHeroWindow(int playerColor): artFeet(0), artHead(0), artLHand(0),
  16. artLRing(0), artMach1(0), artMach2(0), artMach3(0), artMach4(0), artMisc1(0),
  17. artMisc2(0), artMisc3(0), artMisc4(0), artMisc5(0), artNeck(0), artRhand(0),
  18. artRRing(0), artShoulders(0), artSpellBook(0), artTorso(0),
  19. backpackPos(0), player(playerColor)
  20. {
  21. background = CGI->bitmaph->loadBitmap("HEROSCR4.bmp");
  22. CSDL_Ext::blueToPlayersAdv(background, playerColor);
  23. pos.x = 65;
  24. pos.y = 8;
  25. pos.h = background->h;
  26. pos.w = background->w;
  27. curBack = NULL;
  28. curHero = NULL;
  29. quitButton = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::quit, 674, 524, "hsbtns.def", this);
  30. dismissButton = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::dismissCurrent, 519, 437, "hsbtns2.def", this);
  31. questlogButton = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::questlog, 379, 437, "hsbtns4.def", this);
  32. gar1button = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::gar1, 546, 491, "hsbtns6.def", this);
  33. gar2button = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::gar2, 604, 491, "hsbtns8.def", this);
  34. gar3button = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::gar3, 546, 527, "hsbtns7.def", this);
  35. gar4button = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::gar4, 604, 527, "hsbtns9.def", this);
  36. leftArtRoll = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::leftArtRoller, 379, 364, "hsbtns3.def", this);
  37. rightArtRoll = new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::rightArtRoller, 632, 364, "hsbtns5.def", this);
  38. for(int g=0; g<8; ++g)
  39. {
  40. heroList.push_back(new AdventureMapButton<CHeroWindow>(std::string(), std::string(), &CHeroWindow::switchHero, 677, 95+g*54, "hsbtns5.def", this));
  41. }
  42. skillpics = CGI->spriteh->giveDef("pskil42.def");
  43. flags = CGI->spriteh->giveDef("CREST58.DEF");
  44. //areas
  45. portraitArea = new LClickableArea();
  46. portraitArea->pos.x = 83;
  47. portraitArea->pos.y = 26;
  48. portraitArea->pos.w = 58;
  49. portraitArea->pos.h = 64;
  50. }
  51. CHeroWindow::~CHeroWindow()
  52. {
  53. SDL_FreeSurface(background);
  54. delete quitButton;
  55. delete dismissButton;
  56. delete questlogButton;
  57. delete gar1button;
  58. delete gar2button;
  59. delete gar3button;
  60. delete gar4button;
  61. delete leftArtRoll;
  62. delete rightArtRoll;
  63. for(int g=0; g<heroList.size(); ++g)
  64. delete heroList[g];
  65. if(curBack)
  66. SDL_FreeSurface(curBack);
  67. delete skillpics;
  68. delete flags;
  69. delete artFeet;
  70. delete artHead;
  71. delete artLHand;
  72. delete artLRing;
  73. delete artMach1;
  74. delete artMach2;
  75. delete artMach3;
  76. delete artMach4;
  77. delete artMisc1;
  78. delete artMisc2;
  79. delete artMisc3;
  80. delete artMisc4;
  81. delete artMisc5;
  82. delete artNeck;
  83. delete artRhand;
  84. delete artRRing;
  85. delete artShoulders;
  86. delete artSpellBook;
  87. delete artTorso;
  88. for(int g=0; g<backpack.size(); ++g)
  89. {
  90. delete backpack[g];
  91. }
  92. backpack.clear();
  93. delete portraitArea;
  94. }
  95. void CHeroWindow::show(SDL_Surface *to)
  96. {
  97. if(!to)
  98. to=ekran;
  99. blitAt(curBack,pos.x,pos.y,to);
  100. quitButton->show();
  101. dismissButton->show();
  102. questlogButton->show();
  103. gar1button->show();
  104. gar2button->show();
  105. gar3button->show();
  106. gar4button->show();
  107. leftArtRoll->show();
  108. rightArtRoll->show();
  109. artFeet->show(to);
  110. artHead->show(to);
  111. artLHand->show(to);
  112. artLRing->show(to);
  113. artMach1->show(to);
  114. artMach2->show(to);
  115. artMach3->show(to);
  116. artMach4->show(to);
  117. artMisc1->show(to);
  118. artMisc2->show(to);
  119. artMisc3->show(to);
  120. artMisc4->show(to);
  121. artMisc5->show(to);
  122. artNeck->show(to);
  123. artRhand->show(to);
  124. artRRing->show(to);
  125. artShoulders->show(to);
  126. artSpellBook->show(to);
  127. artTorso->show(to);
  128. for(int d=0; d<backpack.size(); ++d)
  129. {
  130. backpack[d]->show(to);
  131. }
  132. }
  133. void CHeroWindow::setHero(const CGHeroInstance *hero)
  134. {
  135. curHero = hero;
  136. delete artFeet;
  137. delete artHead;
  138. delete artLHand;
  139. delete artLRing;
  140. delete artMach1;
  141. delete artMach2;
  142. delete artMach3;
  143. delete artMach4;
  144. delete artMisc1;
  145. delete artMisc2;
  146. delete artMisc3;
  147. delete artMisc4;
  148. delete artMisc5;
  149. delete artNeck;
  150. delete artRhand;
  151. delete artRRing;
  152. delete artShoulders;
  153. delete artSpellBook;
  154. delete artTorso;
  155. for(int g=0; g<backpack.size(); ++g)
  156. {
  157. delete backpack[g];
  158. }
  159. backpack.clear();
  160. artFeet = new CArtPlace(hero->artFeet);
  161. artFeet->pos.x = 515;
  162. artFeet->pos.y = 295;
  163. artFeet->pos.h = artFeet->pos.w = 44;
  164. artHead = new CArtPlace(hero->artHead);
  165. artHead->pos.x = 509;
  166. artHead->pos.y = 30;
  167. artHead->pos.h = artHead->pos.h = 44;
  168. artLHand = new CArtPlace(hero->artLHand);
  169. artLHand->pos.x = 564;
  170. artLHand->pos.y = 183;
  171. artLHand->pos.h = artLHand->pos.h = 44;
  172. artLRing = new CArtPlace(hero->artLRing);
  173. artLRing->pos.x = 610;
  174. artLRing->pos.y = 183;
  175. artLRing->pos.h = artLRing->pos.h = 44;
  176. artMach1 = new CArtPlace(hero->artMach1);
  177. artMach1->pos.x = 564;
  178. artMach1->pos.y = 30;
  179. artMach1->pos.h = artMach1->pos.h = 44;
  180. artMach2 = new CArtPlace(hero->artMach2);
  181. artMach2->pos.x = 610;
  182. artMach2->pos.y = 30;
  183. artMach2->pos.h = artMach2->pos.h = 44;
  184. artMach3 = new CArtPlace(hero->artMach3);
  185. artMach3->pos.x = 610;
  186. artMach3->pos.y = 76;
  187. artMach3->pos.h = artMach3->pos.h = 44;
  188. artMach4 = new CArtPlace(hero->artMach4);
  189. artMach4->pos.x = 610;
  190. artMach4->pos.y = 122;
  191. artMach4->pos.h = artMach4->pos.h = 44;
  192. artMisc1 = new CArtPlace(hero->artMisc1);
  193. artMisc1->pos.x = 383;
  194. artMisc1->pos.y = 143;
  195. artMisc1->pos.h = artMisc1->pos.h = 44;
  196. artMisc2 = new CArtPlace(hero->artMisc2);
  197. artMisc2->pos.x = 399;
  198. artMisc2->pos.y = 194;
  199. artMisc2->pos.h = artMisc2->pos.h = 44;
  200. artMisc3 = new CArtPlace(hero->artMisc3);
  201. artMisc3->pos.x = 415;
  202. artMisc3->pos.y = 245;
  203. artMisc3->pos.h = artMisc3->pos.h = 44;
  204. artMisc4 = new CArtPlace(hero->artMisc4);
  205. artMisc4->pos.x = 431;
  206. artMisc4->pos.y = 296;
  207. artMisc4->pos.h = artMisc4->pos.h = 44;
  208. artMisc5 = new CArtPlace(hero->artMisc5);
  209. artMisc5->pos.x = 381;
  210. artMisc5->pos.y = 296;
  211. artMisc5->pos.h = artMisc5->pos.h = 44;
  212. artNeck = new CArtPlace(hero->artNeck);
  213. artNeck->pos.x = 508;
  214. artNeck->pos.y = 79;
  215. artNeck->pos.h = artNeck->pos.h = 44;
  216. artRhand = new CArtPlace(hero->artRhand);
  217. artRhand->pos.x = 383;
  218. artRhand->pos.y = 68;
  219. artRhand->pos.h = artRhand->pos.h = 44;
  220. artRRing = new CArtPlace(hero->artRRing);
  221. artRRing->pos.x = 431;
  222. artRRing->pos.y = 68;
  223. artRRing->pos.h = artRRing->pos.h = 44;
  224. artShoulders = new CArtPlace(hero->artShoulders);
  225. artShoulders->pos.x = 567;
  226. artShoulders->pos.y = 240;
  227. artShoulders->pos.h = artShoulders->pos.h = 44;
  228. artSpellBook = new CArtPlace(hero->artSpellBook);
  229. artSpellBook->pos.x = 610;
  230. artSpellBook->pos.y = 310;
  231. artSpellBook->pos.h = artSpellBook->pos.h = 44;
  232. artTorso = new CArtPlace(hero->artTorso);
  233. artTorso->pos.x = 509;
  234. artTorso->pos.y = 130;
  235. artTorso->pos.h = artTorso->pos.h = 44;
  236. for(int s=0; s<5 && s<curHero->artifacts.size(); ++s)
  237. {
  238. CArtPlace * add = new CArtPlace(curHero->artifacts[(s+backpackPos) % curHero->artifacts.size() ]);
  239. add->pos.x = 403 + 46*s;
  240. add->pos.y = 365;
  241. add->pos.h = add->pos.h = 44;
  242. backpack.push_back(add);
  243. }
  244. }
  245. void CHeroWindow::quit()
  246. {
  247. for(int i=0; i<LOCPLINT->objsToBlit.size(); ++i)
  248. {
  249. if( dynamic_cast<CHeroWindow*>( LOCPLINT->objsToBlit[i] ) )
  250. {
  251. LOCPLINT->objsToBlit.erase(LOCPLINT->objsToBlit.begin()+i);
  252. }
  253. }
  254. quitButton->deactivate();
  255. dismissButton->deactivate();
  256. questlogButton->deactivate();
  257. gar1button->deactivate();
  258. gar2button->deactivate();
  259. gar3button->deactivate();
  260. gar4button->deactivate();
  261. leftArtRoll->deactivate();
  262. rightArtRoll->deactivate();
  263. for(int g=0; g<heroList.size(); ++g)
  264. {
  265. heroList[g]->deactivate();
  266. }
  267. LOCPLINT->adventureInt->show();
  268. SDL_FreeSurface(curBack);
  269. curBack = NULL;
  270. for(int v=0; v<LOCPLINT->lclickable.size(); ++v)
  271. {
  272. if(dynamic_cast<CArtPlace*>(LOCPLINT->lclickable[v]))
  273. LOCPLINT->lclickable.erase(LOCPLINT->lclickable.begin()+v);
  274. }
  275. portraitArea->deactivate();
  276. delete artFeet;
  277. artFeet = 0;
  278. delete artHead;
  279. artHead = 0;
  280. delete artLHand;
  281. artLHand = 0;
  282. delete artLRing;
  283. artLRing = 0;
  284. delete artMach1;
  285. artMach1 = 0;
  286. delete artMach2;
  287. artMach2 = 0;
  288. delete artMach3;
  289. artMach3 = 0;
  290. delete artMach4;
  291. artMach4 = 0;
  292. delete artMisc1;
  293. artMisc1 = 0;
  294. delete artMisc2;
  295. artMisc2 = 0;
  296. delete artMisc3;
  297. artMisc3 = 0;
  298. delete artMisc4;
  299. artMisc4 = 0;
  300. delete artMisc5;
  301. artMisc5 = 0;
  302. delete artNeck;
  303. artNeck = 0;
  304. delete artRhand;
  305. artRhand = 0;
  306. delete artRRing;
  307. artRRing = 0;
  308. delete artShoulders;
  309. artShoulders = 0;
  310. delete artSpellBook;
  311. artSpellBook = 0;
  312. delete artTorso;
  313. artTorso = 0;
  314. for(int g=0; g<backpack.size(); ++g)
  315. {
  316. delete backpack[g];
  317. }
  318. backpack.clear();
  319. }
  320. void CHeroWindow::activate()
  321. {
  322. LOCPLINT->curint = this;
  323. quitButton->activate();
  324. dismissButton->activate();
  325. questlogButton->activate();
  326. gar1button->activate();
  327. gar2button->activate();
  328. gar3button->activate();
  329. gar4button->activate();
  330. leftArtRoll->activate();
  331. rightArtRoll->activate();
  332. portraitArea->activate();
  333. for(int g=0; g<heroList.size(); ++g)
  334. {
  335. heroList[g]->activate();
  336. }
  337. redrawCurBack();
  338. //LOCPLINT->lclickable.push_back(artFeet);
  339. }
  340. void CHeroWindow::deactivate()
  341. {
  342. quitButton->deactivate();
  343. dismissButton->deactivate();
  344. questlogButton->deactivate();
  345. gar1button->deactivate();
  346. gar2button->deactivate();
  347. gar3button->deactivate();
  348. gar4button->deactivate();
  349. leftArtRoll->deactivate();
  350. rightArtRoll->deactivate();
  351. portraitArea->deactivate();
  352. for(int g=0; g<heroList.size(); ++g)
  353. {
  354. heroList[g]->deactivate();
  355. }
  356. }
  357. void CHeroWindow::dismissCurrent()
  358. {
  359. }
  360. void CHeroWindow::questlog()
  361. {
  362. }
  363. void CHeroWindow::gar1()
  364. {
  365. }
  366. void CHeroWindow::gar2()
  367. {
  368. }
  369. void CHeroWindow::gar3()
  370. {
  371. }
  372. void CHeroWindow::gar4()
  373. {
  374. }
  375. void CHeroWindow::leftArtRoller()
  376. {
  377. if(curHero->artifacts.size()>5) //if it is <=5, we have nothing to scroll
  378. {
  379. backpackPos+=curHero->artifacts.size()-1; //set new offset
  380. for(int s=0; s<5 && s<curHero->artifacts.size(); ++s) //set new data
  381. {
  382. backpack[s]->ourArt = curHero->artifacts[(s+backpackPos) % curHero->artifacts.size() ];
  383. }
  384. }
  385. }
  386. void CHeroWindow::rightArtRoller()
  387. {
  388. if(curHero->artifacts.size()>5) //if it is <=5, we have nothing to scroll
  389. {
  390. backpackPos+=1; //set new offset
  391. for(int s=0; s<5 && s<curHero->artifacts.size(); ++s) //set new data
  392. {
  393. backpack[s]->ourArt = curHero->artifacts[(s+backpackPos) % curHero->artifacts.size() ];
  394. }
  395. }
  396. }
  397. void CHeroWindow::switchHero()
  398. {
  399. int y;
  400. SDL_GetMouseState(NULL, &y);
  401. for(int g=0; g<heroList.size(); ++g)
  402. {
  403. if(y>=94+54*g)
  404. {
  405. //quit();
  406. setHero(LOCPLINT->cb->getHeroInfo(player, g, false));
  407. //LOCPLINT->openHeroWindow(curHero);
  408. redrawCurBack();
  409. }
  410. }
  411. }
  412. void CHeroWindow::redrawCurBack()
  413. {
  414. if(curBack)
  415. SDL_FreeSurface(curBack);
  416. curBack = CSDL_Ext::copySurface(background);
  417. blitAt(skillpics->ourImages[0].bitmap, 32, 111, curBack);
  418. blitAt(skillpics->ourImages[1].bitmap, 102, 111, curBack);
  419. blitAt(skillpics->ourImages[2].bitmap, 172, 111, curBack);
  420. blitAt(skillpics->ourImages[5].bitmap, 242, 111, curBack);
  421. blitAt(skillpics->ourImages[4].bitmap, 20, 230, curBack);
  422. blitAt(skillpics->ourImages[3].bitmap, 162, 230, curBack);
  423. blitAt(curHero->type->portraitLarge, 19, 19, curBack);
  424. CSDL_Ext::printAtMiddle(curHero->name, 190, 40, GEORXX, tytulowy, curBack);
  425. std::stringstream secondLine;
  426. secondLine<<"Level "<<curHero->level<<" "<<curHero->type->heroClass->name;
  427. CSDL_Ext::printAtMiddle(secondLine.str(), 190, 66, TNRB16, zwykly, curBack);
  428. //primary skliis names
  429. CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[1], 53, 98, GEOR13, tytulowy, curBack);
  430. CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[2], 123, 98, GEOR13, tytulowy, curBack);
  431. CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[3], 193, 98, GEOR13, tytulowy, curBack);
  432. CSDL_Ext::printAtMiddle(CGI->generaltexth->jktexts[4], 263, 98, GEOR13, tytulowy, curBack);
  433. //dismiss / quest log
  434. std::vector<std::string> * toPrin = CMessage::breakText(CGI->generaltexth->jktexts[8].substr(1, CGI->generaltexth->jktexts[8].size()-2));
  435. if(toPrin->size()==1)
  436. {
  437. CSDL_Ext::printAt((*toPrin)[0], 372, 440, GEOR13, zwykly, curBack);
  438. }
  439. else
  440. {
  441. CSDL_Ext::printAt((*toPrin)[0], 372, 431, GEOR13, zwykly, curBack);
  442. CSDL_Ext::printAt((*toPrin)[1], 372, 447, GEOR13, zwykly, curBack);
  443. }
  444. delete toPrin;
  445. toPrin = CMessage::breakText(CGI->generaltexth->jktexts[9].substr(1, CGI->generaltexth->jktexts[9].size()-2));
  446. if(toPrin->size()==1)
  447. {
  448. CSDL_Ext::printAt((*toPrin)[0], 512, 440, GEOR13, zwykly, curBack);
  449. }
  450. else
  451. {
  452. CSDL_Ext::printAt((*toPrin)[0], 512, 431, GEOR13, zwykly, curBack);
  453. CSDL_Ext::printAt((*toPrin)[1], 512, 447, GEOR13, zwykly, curBack);
  454. }
  455. delete toPrin;
  456. //printing primary skills' amounts
  457. std::stringstream primarySkill1;
  458. primarySkill1<<curHero->primSkills[0];
  459. CSDL_Ext::printAtMiddle(primarySkill1.str(), 53, 165, TNRB16, zwykly, curBack);
  460. std::stringstream primarySkill2;
  461. primarySkill2<<curHero->primSkills[1];
  462. CSDL_Ext::printAtMiddle(primarySkill2.str(), 123, 165, TNRB16, zwykly, curBack);
  463. std::stringstream primarySkill3;
  464. primarySkill3<<curHero->primSkills[2];
  465. CSDL_Ext::printAtMiddle(primarySkill3.str(), 193, 165, TNRB16, zwykly, curBack);
  466. std::stringstream primarySkill4;
  467. primarySkill4<<curHero->primSkills[3];
  468. CSDL_Ext::printAtMiddle(primarySkill4.str(), 263, 165, TNRB16, zwykly, curBack);
  469. blitAt(LOCPLINT->luck42->ourImages[curHero->getCurrentLuck()+3].bitmap, 239, 182, curBack);
  470. blitAt(LOCPLINT->morale42->ourImages[curHero->getCurrentMorale()+3].bitmap, 181, 182, curBack);
  471. blitAt(flags->ourImages[player].bitmap, 606, 8, curBack);
  472. //hero list blitting
  473. for(int g=0; g<LOCPLINT->cb->howManyHeroes(); ++g)
  474. {
  475. const CGHeroInstance * cur = LOCPLINT->cb->getHeroInfo(player, g, false);
  476. blitAt(cur->type->portraitSmall, 611, 87+g*54, curBack);
  477. //printing yellow border
  478. if(cur->name == curHero->name)
  479. {
  480. for(int f=0; f<cur->type->portraitSmall->w; ++f)
  481. {
  482. for(int h=0; h<cur->type->portraitSmall->h; ++h)
  483. if(f==0 || h==0 || f==cur->type->portraitSmall->w-1 || h==cur->type->portraitSmall->h-1)
  484. {
  485. CSDL_Ext::SDL_PutPixel(curBack, 611+f, 87+g*54+h, 240, 220, 120);
  486. }
  487. }
  488. }
  489. }
  490. //secondary skills
  491. if(curHero->secSkills.size()>=1)
  492. {
  493. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[0].first*3+3+curHero->secSkills[0].second].bitmap, 18, 276, curBack);
  494. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[0].second], 69, 279, GEOR13, zwykly, curBack);
  495. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[0].first]->name, 69, 299, GEOR13, zwykly, curBack);
  496. }
  497. if(curHero->secSkills.size()>=2)
  498. {
  499. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[1].first*3+3+curHero->secSkills[1].second].bitmap, 161, 276, curBack);
  500. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[1].second], 213, 279, GEOR13, zwykly, curBack);
  501. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[1].first]->name, 213, 299, GEOR13, zwykly, curBack);
  502. }
  503. if(curHero->secSkills.size()>=3)
  504. {
  505. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[2].first*3+3+curHero->secSkills[2].second].bitmap, 18, 324, curBack);
  506. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[2].second], 69, 327, GEOR13, zwykly, curBack);
  507. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[2].first]->name, 69, 347, GEOR13, zwykly, curBack);
  508. }
  509. if(curHero->secSkills.size()>=4)
  510. {
  511. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[3].first*3+3+curHero->secSkills[3].second].bitmap, 161, 324, curBack);
  512. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[3].second], 213, 327, GEOR13, zwykly, curBack);
  513. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[3].first]->name, 213, 347, GEOR13, zwykly, curBack);
  514. }
  515. if(curHero->secSkills.size()>=5)
  516. {
  517. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[4].first*3+3+curHero->secSkills[4].second].bitmap, 18, 372, curBack);
  518. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[4].second], 69, 375, GEOR13, zwykly, curBack);
  519. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[4].first]->name, 69, 395, GEOR13, zwykly, curBack);
  520. }
  521. if(curHero->secSkills.size()>=6)
  522. {
  523. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[5].first*3+3+curHero->secSkills[5].second].bitmap, 161, 372, curBack);
  524. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[5].second], 213, 375, GEOR13, zwykly, curBack);
  525. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[5].first]->name, 213, 395, GEOR13, zwykly, curBack);
  526. }
  527. if(curHero->secSkills.size()>=7)
  528. {
  529. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[6].first*3+3+curHero->secSkills[6].second].bitmap, 18, 420, curBack);
  530. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[6].second], 69, 423, GEOR13, zwykly, curBack);
  531. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[6].first]->name, 69, 443, GEOR13, zwykly, curBack);
  532. }
  533. if(curHero->secSkills.size()>=8)
  534. {
  535. blitAt(CGI->abilh->abils44->ourImages[curHero->secSkills[7].first*3+3+curHero->secSkills[7].second].bitmap, 161, 420, curBack);
  536. CSDL_Ext::printAt(CGI->abilh->levels[curHero->secSkills[7].second], 213, 423, GEOR13, zwykly, curBack);
  537. CSDL_Ext::printAt(CGI->abilh->abilities[curHero->secSkills[7].first]->name, 213, 443, GEOR13, zwykly, curBack);
  538. }
  539. //printing special ability
  540. blitAt(CGI->heroh->un44->ourImages[curHero->subID].bitmap, 18, 180, curBack);
  541. //printing necessery texts
  542. CSDL_Ext::printAt(CGI->generaltexth->jktexts[6].substr(1, CGI->generaltexth->jktexts[6].size()-2), 69, 231, GEOR13, tytulowy, curBack);
  543. std::stringstream expstr;
  544. expstr<<curHero->exp;
  545. CSDL_Ext::printAt(expstr.str(), 69, 247, GEOR16, zwykly, curBack);
  546. CSDL_Ext::printAt(CGI->generaltexth->jktexts[7].substr(1, CGI->generaltexth->jktexts[7].size()-2), 212, 231, GEOR13, tytulowy, curBack);
  547. std::stringstream manastr;
  548. manastr<<curHero->mana<<'/'<<curHero->primSkills[3]*10;
  549. CSDL_Ext::printAt(manastr.str(), 212, 247, GEOR16, zwykly, curBack);
  550. }
  551. CArtPlace::CArtPlace(CArtifact *art): ourArt(art){}
  552. void CArtPlace::activate()
  553. {
  554. }
  555. void CArtPlace::clickLeft(boost::logic::tribool down)
  556. {
  557. }
  558. void CArtPlace::deactivate()
  559. {
  560. }
  561. void CArtPlace::show(SDL_Surface *to)
  562. {
  563. if(ourArt)
  564. {
  565. blitAt(CGI->arth->artDefs->ourImages[ourArt->id].bitmap, pos.x, pos.y, to);
  566. }
  567. }
  568. void LClickableArea::activate()
  569. {
  570. ClickableL::activate();
  571. }
  572. void LClickableArea::deactivate()
  573. {
  574. ClickableL::deactivate();
  575. }
  576. void LClickableArea::clickLeft(boost::logic::tribool down)
  577. {
  578. if(!down)
  579. {
  580. LOCPLINT->showInfoDialog("TEST TEST AAA", std::vector<SComponent*>());
  581. }
  582. }