Advertisement
Guest User

Untitled

a guest
Feb 28th, 2014
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 288.98 KB | None | 0 0
  1. //Serious Sam 2D - The Last Game Hero - AntonioR Software - Croatia - 2010
  2.  
  3. #include "..\Engine\Advanced2D.h"
  4. #include <iostream>
  5. #include <fstream>
  6. #include <string.h>
  7.  
  8. using namespace Advanced2D;
  9. using namespace std;
  10.  
  11. #define NORMAL 999
  12. #define SERIOUS 1000
  13.  
  14. #define STATE_CROTEAM 1
  15. #define STATE_ANTONIOR 2
  16. #define STATE_SS2DTLGH 3
  17. #define STATE_PLAY 4
  18. #define STATE_MENU 5
  19. #define STATE_LOSER 6
  20. #define STATE_EXIT 7
  21. #define STATE_END 8
  22. #define STATE_UPUTE 9
  23. #define STATE_INTRO 10
  24. #define STATE_TEZINA 11
  25. #define STATE_CREDITS 12
  26. #define STATE_CREDITS_K 13
  27. #define STATE_RESTART_L 14
  28. #define STATE_GAMEOVER 15
  29.  
  30. #define BACKGROUND 50
  31. #define SKYBOX_1 51
  32. #define SKYBOX_2 52
  33.  
  34. #define CURSOR 61
  35. #define START 62
  36. #define QUIT 63
  37. #define LOAD 64
  38. #define SAVE 65
  39. #define GLUPOST 66
  40.  
  41. #define SPRITE_PADDLE 101
  42. #define SPRITE_NOGE 102
  43. #define SPRITE_META 103
  44. #define SPRITE_PUPAK 104
  45. #define SPRITE_LOF 105
  46.  
  47. #define SACMA 110
  48. #define LASER 111
  49. #define LASER2 112
  50. #define METAK 113
  51. #define RAKETA 114
  52. #define TOPOVSKA_KUGLA 115
  53. #define CREDITSB 116
  54.  
  55. #define HEALTH_100 150
  56. #define HEALTH_25 151
  57. #define MR 152
  58. #define MT 153
  59. #define ML 154
  60. #define MM 155
  61. #define MM2 156
  62. #define SSF 157
  63. #define CROWBAR 158
  64. #define GMAN 159
  65.  
  66. #define N_KAMIKAZA 200
  67. #define N_SETACPLAVI 201
  68. #define N_SETACCRVENI 202
  69. #define N_GNAARFEMALE 203
  70. #define N_BIK 204
  71. #define N_HARPIJA 205
  72. #define N_GNAARMALE 206
  73.  
  74. #define PTICA 301
  75. #define OBJECT_EXPLOSION 302
  76. #define N_LASER 303
  77. #define N_RAKETA 304
  78. #define N_HARPIJAPROJEKTIL 305
  79. #define OBJECT_KRV 306
  80. #define CREDITS 307
  81. #define OBJECT_PALMA 308
  82. #define OBJECT_STUP 309
  83. #define OBJECT_IKI 310
  84. #define OBJECT_LGB 311
  85. #define OBJECT_MISC 312
  86.  
  87. #define MRTVAC 400
  88. #define MRTVAC_SAM 401
  89. #define KONZOLA 402
  90.  
  91. #define BOSS 666
  92. #define BOSS_VATRA 667
  93. #define BOSS_ROG 668
  94. #define BOSS_OKO 669
  95. #define BOSS_METAG 670
  96. #define BOSS_METAD 671
  97. #define BOSS_HEAD 672
  98. #define BOSS_VATRENAKUGLA 673
  99.  
  100. //******************************************************************************CONFIG.txt
  101. int SCREENW = 1280;
  102. int SCREENH = 768;
  103. int W_ili_FS;
  104. int Preskoci=0;
  105. int ShowCollisionBox = 0;
  106. int SmanjiLifeTime=0;
  107. int SmanjiLifeTime_U=100;
  108.  
  109. bool konzola=false;
  110.  
  111. int Tezina=NORMAL;
  112. int TezinaRazlika=1;
  113. bool ProciCu=true;
  114. bool SecondaryFire=false;
  115. int Level_End = 0;
  116. double NekiKut;
  117. double d;
  118. double polx;
  119. double poly;
  120. int BrojN[10]={0,20,20,140,70,50,50,115,0,0};
  121. //int BrojN[10]={0,0,0,0,0,0,50,0,0,0};
  122. int BrzinaOruzja[10]={375,800,70,650,135,1500};
  123.  
  124. int BossEnergyTriger1=500;
  125. int BossEnergyTriger2=150;
  126.  
  127. string CheatUlaz;
  128. string Cheat1="ARS_HEALTH25";
  129. string Cheat2="ARS_SSF";
  130. string Cheat3="CHEATER_I_AM";
  131. bool Cheater=false;
  132.  
  133. //Brzine
  134. double KAMIKAZA_VEL = 11.0;
  135. double GNAAR_VEL = 10.0;
  136. double SETAC_VEL = 4.0;
  137. double BULLET_VEL = 28.0;
  138. double BIK_VEL = 13.0;
  139. double HARPIJA_VEL = 5.0;
  140. double pistoljV= 40;
  141. double sacmaricaV= 45;
  142. double minigunV= 45;
  143. double rocketV= 34;
  144. double laserV= 34;
  145. double kuglaV=35;
  146.  
  147. //******************************************************************************CONFIG.txt KRAJ
  148. int QWERTZ = 0;
  149. int MunicijaRL = 0;
  150. int MunicijaT = 0;
  151. int MunicijaMG = 0;
  152. int MunicijaL = 0;
  153.  
  154. bool MrtavBoss=false;
  155. int FireBoss3=-120;
  156. int FireBoss33=15;
  157. int FireBoss1i2=0;
  158. bool spustanje=true;
  159. bool VatraKraj=true;
  160. bool lijevoidesno=true;
  161. bool boss_krik=true;
  162. bool boss_krik2=true;
  163.  
  164. //In-game trigeri
  165. bool mraketa=false;
  166. bool mtop=false;
  167. bool DieWhenIKillYou=false;
  168. bool domamami=true;
  169. bool LudePtice=false;
  170. //Menu trigeri
  171. bool menustart = true;
  172. bool menuquit = true;
  173. bool menuload = true;
  174. bool menusave = true;
  175. bool menunormal = true;
  176. bool menuserious = true;
  177.  
  178. //Serious Sam razno
  179. bool LOF=false;
  180. bool LOF2=false;
  181. bool trcanjeL=true;
  182. bool trcanjeD=true;
  183. double Sam_BrzinaX = 3.5;
  184. double Sam_BrzinaY = 3.0;
  185. double SmanjiSamBrzinu = 0;
  186. double Kut_Pucanja;
  187. double paddle_angle;
  188. double paddleVelocity = 0.0f;
  189. double paddleVelocity2 = 0.0f;
  190. int Kretanje = 0;
  191. int KretanjeY = 0;
  192. //zbog problema sa zvukom
  193. bool WoundWeak=false;
  194. bool WoundStrong=false;
  195.  
  196. int BossEnergy=0;
  197. int level=0;
  198. int score = 0;
  199. int gameState = STATE_ANTONIOR;
  200. int Sam_energy=100;
  201. int enemy_count=0;
  202. int enemy_spawn_count=0;
  203. int oruzje=0;
  204. int BrPtica=0;
  205.  
  206. ////////////////////////////////RESTART LEVEL
  207. int RL_Level=0;
  208. int RL_Score=0;
  209. int RL_Sam_energy=100;
  210. int RL_enemy_count=15;
  211. int RL_enemy_spawn_count=150;
  212. int RL_oruzje=0;
  213. int RL_MunicijaRL = 0;
  214. int RL_MunicijaT = 0;
  215. int RL_MunicijaMG = 0;
  216. int RL_MunicijaL = 0;
  217. int RL_Tezina = NORMAL;
  218. ////////////////////////////////
  219.  
  220. //Console *console;
  221. Font *times24;
  222. Font *verdana10;
  223.  
  224. //******************************************************************************SPRITE
  225. Sprite *background;
  226. Sprite *SkyBox1_S;
  227. Sprite *SkyBox2_S;
  228. Sprite *paddle;
  229. Sprite *noge;
  230. Sprite *S_LOF;
  231. Sprite *META;
  232. Sprite *Pupak;
  233. Sprite *HUD;
  234. Sprite *cursor;
  235. Sprite *StartS;
  236. Sprite *QuitS;
  237. Sprite *LoadS;
  238. Sprite *SaveS;
  239. Sprite *boss = new Sprite();
  240. Sprite *MetaG = new Sprite();
  241. Sprite *MetaD = new Sprite();
  242. Sprite *PanelQuit;
  243. Sprite *Glupost;
  244. Sprite *Konzola;
  245.  
  246. //******************************************************************************TEXTURE
  247. //BACKGROUND
  248. Texture *B_Croteam;
  249. Texture *B_AntonioR;
  250. Texture *B_SS2DTLGH;
  251. Texture *B_Menu;
  252. Texture *B_Upute;
  253. Texture *B_Intro;
  254. Texture *B_Level000;
  255. Texture *B_Level001;
  256. Texture *B_Level002;
  257. Texture *B_Level003;
  258. Texture *B_Level004;
  259. Texture *B_Level005;
  260. Texture *B_Level006;
  261. Texture *B_Level007;
  262. Texture *B_Level008;
  263. Texture *B_Level009;
  264. Texture *B_End;
  265. Texture *B_Credits;
  266. Texture *B_Credits2;
  267.  
  268. //SKYBOX
  269. Texture *SB_Vedrosoblacima;
  270. Texture *SB_Vedrosoblacima2;
  271.  
  272. //MENU
  273. Texture *M_Start_T;
  274. Texture *M_Quit_T;
  275. Texture *M_Load_T;
  276. Texture *M_NSG_T;
  277. Texture *M_ASO_T;
  278. Texture *M_Save_T;
  279. Texture *M_Yes_T;
  280. Texture *M_No_T;
  281. Texture *M_AreYouSerious_T;
  282. Texture *M_GameOver_T;
  283. Texture *M_Normal_T;
  284. Texture *M_Serious_T;
  285. Texture *M_Tezina_T;
  286.  
  287. //NEPRIJATELJI
  288. Texture *N_KamikazaD_T;
  289. Texture *N_KamikazaL_T;
  290. Texture *N_GnaarFemale_T;
  291. Texture *N_Bik_T;
  292. Texture *N_SetacPlaviD_T;
  293. Texture *N_SetacPlaviL_T;
  294. Texture *N_SetacCrveniD_T;
  295. Texture *N_SetacCrveniL_T;
  296. Texture *N_HarpijaD_T;
  297. Texture *N_HarpijaL_T;
  298. Texture *N_GnaarMale_T;
  299. Texture *N_TheBoss;
  300. Texture *N_TheBossH;
  301.  
  302. //NEPRIJATELJI MRTVI
  303. Texture *N_GnaarFemaleMrtav_T;
  304. Texture *N_BikMrtav_T;
  305. Texture *N_SetacPlaviMrtavD_T;
  306. Texture *N_SetacPlaviMrtavL_T;
  307. Texture *N_SetacCrveniMrtavD_T;
  308. Texture *N_SetacCrveniMrtavL_T;
  309. Texture *N_GnaarMaleMrtav_T;
  310.  
  311. //SERIOUS SAM
  312. Texture *Sam_Desno;
  313. Texture *Sam_Lijevo;
  314. Texture *Noge_Desno;
  315. Texture *Noge_Lijevo;
  316. Texture *NogeT_Desno;
  317. Texture *NogeT_Lijevo;
  318. Texture *Noge_UnazadD;
  319. Texture *Noge_UnazadL;
  320. Texture *META_T;
  321. Texture *I_Knew_It;
  322. Texture *Sam_PupakD;
  323. Texture *Sam_PupakL;
  324. Texture *Sam_MrtavD_T;
  325. Texture *Sam_MrtavL_T;
  326.  
  327. //PREDMETI
  328. Texture *Health100;
  329. Texture *I_Health25_T;
  330. Texture *I_RocketLauncher_T;
  331. Texture *I_Top_T;
  332. Texture *I_Laser_T;
  333. Texture *I_Minigun_T;
  334. Texture *MunicijaRaketa;
  335. Texture *MunicijaLaser;
  336. Texture *MunicijaMinigun;
  337. Texture *MunicijaTop;
  338. Texture *I_SeriousSecondaryFire_T;
  339. Texture *I_PticaL_T;
  340. Texture *I_PticaD_T;
  341. Texture *I_PalmaT;
  342. Texture *I_StupD_T;
  343. Texture *I_StupL_T;
  344. Texture *I_LOF_T;
  345. Texture *I_LGB_T;
  346. Texture *I_CB_T;
  347. Texture *I_GM_T;
  348.  
  349. //PROJEKTILI
  350. Texture *A_Kugla_T;
  351. Texture *A_Raketa_T;
  352. Texture *A_BRaketa_T;
  353. Texture *A_RaketaSC_T;
  354. Texture *A_Laser_T;
  355. Texture *A_Laser2_T;
  356. Texture *A_Sacma_T;
  357. Texture *A_MetakP_T;
  358. Texture *A_Minigun_T;
  359. Texture *A_BOko_T;
  360. Texture *vatrena_kugla;
  361. Texture *FireBoss1;
  362. Texture *A_LaserSP_T;
  363. Texture *A_HarpijaP_T;
  364.  
  365. //MISC
  366. Texture *HarpijaKrilo_T;
  367. Texture *Explosion_K;
  368. Texture *Explosion_R;
  369. Texture *Explosion_V;
  370. Texture *Krv_C;
  371. Texture *Krv_Z;
  372. Texture *IntroText_T;
  373. Texture *CreditsText;
  374. Texture *B_METAG_T;
  375. Texture *B_METAD_T;
  376. Texture *Ruka;
  377. Texture *Krilo;
  378.  
  379. //******************************************************************************TIMERI
  380. Timer N_Timer1;
  381. Timer N_Timer2;
  382. Timer N_Timer3;
  383. Timer N_Timer4;
  384. Timer N_Timer5;
  385. Timer Sam_Pucaj;
  386. Timer Sam_PucajTop;
  387.  
  388. //UREDJENO
  389. bool game_preload()
  390. {
  391. ifstream filein("config.txt");
  392. filein >> W_ili_FS >> ShowCollisionBox >> CheatUlaz;
  393. //filein >> W_ili_FS >> Preskoci >> ShowCollisionBox >> SmanjiLifeTime_U;
  394. g_engine->setAppTitle("Serious Sam 2D - The Last Game Hero by AntonioR Software");
  395. g_engine->setScreenWidth(SCREENW);
  396. g_engine->setScreenHeight(SCREENH);
  397. g_engine->setColorDepth(32);
  398. if (W_ili_FS == 0) g_engine->setFullscreen(false);
  399. else g_engine->setFullscreen(true);
  400. return true;
  401. }
  402.  
  403. bool initMusic()
  404. {
  405. if (!g_engine->audio->Load("Music/Music_AntonioR.ogg","Music_AntonioR"))
  406. {
  407. g_engine->message("Error loading Music_AntonioR.ogg");
  408. return false;
  409. }
  410.  
  411. if (!g_engine->audio->Load("Music/Music_SpaceIntro.ogg","Music_SpaceIntro"))
  412. {
  413. g_engine->message("Error loading Music_SpaceIntro.ogg");
  414. return false;
  415. }
  416.  
  417. if (!g_engine->audio->Load("Music/Music_Level000.ogg","Music_Level000"))
  418. {
  419. g_engine->message("Error loading Music_Level000.ogg");
  420. return false;
  421. }
  422.  
  423. if (!g_engine->audio->Load("Music/Music_Level001.ogg","Music_Level001"))
  424. {
  425. g_engine->message("Error loading Music_Level001.ogg");
  426. return false;
  427. }
  428.  
  429. if (!g_engine->audio->Load("Music/Music_Level003.ogg","Music_Level003"))
  430. {
  431. g_engine->message("Error loading Music_Level003.ogg");
  432. return false;
  433. }
  434.  
  435. if (!g_engine->audio->Load("Music/Music_Level004.ogg","Music_Level004"))
  436. {
  437. g_engine->message("Error loading Music_Level004.ogg");
  438. return false;
  439. }
  440.  
  441. if (!g_engine->audio->Load("Music/Music_Level005.ogg","Music_Level005"))
  442. {
  443. g_engine->message("Error loading Music_Level005.ogg");
  444. return false;
  445. }
  446.  
  447. if (!g_engine->audio->Load("Music/Music_Level006.ogg","Music_Level006"))
  448. {
  449. g_engine->message("Error loading Music_Level006.ogg");
  450. return false;
  451. }
  452.  
  453. if (!g_engine->audio->Load("Music/Music_Level007.ogg","Music_Level007"))
  454. {
  455. g_engine->message("Error loading Music_Level007.ogg");
  456. return false;
  457. }
  458.  
  459. if (!g_engine->audio->Load("Music/Music_Level008.ogg","Music_Level008"))
  460. {
  461. g_engine->message("Error loading Music_Level008.ogg");
  462. return false;
  463. }
  464.  
  465. if (!g_engine->audio->Load("Music/Music_Level009.ogg","Music_Level009"))
  466. {
  467. g_engine->message("Error loading Music_Level009.ogg");
  468. return false;
  469. }
  470.  
  471. if (!g_engine->audio->Load("Music/Music_Credits.ogg","Music_Credits"))
  472. {
  473. g_engine->message("Error loading Music_Credits.ogg");
  474. return false;
  475. }
  476. }
  477.  
  478. bool initSound()
  479. {
  480.  
  481. //ZVUK SERIOUS SAM
  482. if (!g_engine->audio->Load("Sound/Sam_LOF.wav","Sam_LOF"))
  483. {
  484. g_engine->message("Error loading Sam_LOF.wav");
  485. return false;
  486. }
  487.  
  488. if (!g_engine->audio->Load("Sound/Sam_Now_I_Am_Seriously_Serious.wav","Sam_Now_I_Am_Seriously_Serious"))
  489. {
  490. g_engine->message("Error loading Sam_Now_I_Am_Seriously_Serious.wav");
  491. return false;
  492. }
  493.  
  494. if (!g_engine->audio->Load("Sound/Sam_Hey.wav","Sam_Hey"))
  495. {
  496. g_engine->message("Error loading Sam_Hey.wav");
  497. return false;
  498. }
  499.  
  500. if (!g_engine->audio->Load("Sound/Sam_Noooo.wav","Sam_Noooo"))
  501. {
  502. g_engine->message("Error loading Sam_Noooo.wav");
  503. return false;
  504. }
  505.  
  506. if (!g_engine->audio->Load("Sound/Sam_WoundWeak.wav","Sam_WoundWeak"))
  507. {
  508. g_engine->message("Error loading Sam_WoundWeak.wav");
  509. return false;
  510. }
  511.  
  512. if (!g_engine->audio->Load("Sound/Sam_WoundStrong.wav","Sam_WoundStrong"))
  513. {
  514. g_engine->message("Error loading Sam_WoundStrong.wav");
  515. return false;
  516. }
  517.  
  518. if (!g_engine->audio->Load("Sound/Sam_Sam_I_Am.wav","Sam_Sam_I_Am"))
  519. {
  520. g_engine->message("Error loading Sam_Sam_I_Am.wav");
  521. return false;
  522. }
  523.  
  524. if (!g_engine->audio->Load("Sound/Sam_Ready_For_Battle.wav","Sam_Ready_For_Battle"))
  525. {
  526. g_engine->message("Error loading Sam_Ready_For_Battle.wav");
  527. return false;
  528. }
  529.  
  530. if (!g_engine->audio->Load("Sound/Sam_Aaa_Yourself.wav","Sam_Aaa_Yourself"))
  531. {
  532. g_engine->message("Error loading Sam_Aaa_Yourself.wav");
  533. return false;
  534. }
  535.  
  536. if (!g_engine->audio->Load("Sound/Sam_Aaah_Its_Just_What_I_Have_Always_Wanted.wav","Sam_Aaah_Its_Just_What_I_Have_Always_Wanted"))
  537. {
  538. g_engine->message("Error loading Sam_Aaah_Its_Just_What_I_Have_Always_Wanted.wav");
  539. return false;
  540. }
  541.  
  542. if (!g_engine->audio->Load("Sound/Sam_Die_When_I_Kill_You.wav","Sam_Die_When_I_Kill_You"))
  543. {
  544. g_engine->message("Error loading Sam_Die_When_I_Kill_You.wav");
  545. return false;
  546. }
  547.  
  548. if (!g_engine->audio->Load("Sound/Sam_I_Knew_It.wav","Sam_I_Knew_It"))
  549. {
  550. g_engine->message("Error loading Sam_I_Knew_It.wav");
  551. return false;
  552. }
  553.  
  554. if (!g_engine->audio->Load("Sound/Sam_Smrt.wav","Sam_Smrt"))
  555. {
  556. g_engine->message("Error loading Sam_Smrt.wav");
  557. return false;
  558. }
  559.  
  560. if (!g_engine->audio->Load("Sound/Ammo.wav","Ammo"))
  561. {
  562. g_engine->message("Error loading Ammo.wav");
  563. return false;
  564. }
  565.  
  566. if (!g_engine->audio->Load("Sound/Weapon.wav","Weapon"))
  567. {
  568. g_engine->message("Error loading Weapon.wav");
  569. return false;
  570. }
  571.  
  572. //ZVUK ORUZJA
  573. if (!g_engine->audio->Load("Sound/BossFly.wav","BossFly"))
  574. {
  575. g_engine->message("Error loading BossFly.wav");
  576. return false;
  577. }
  578.  
  579. if (!g_engine->audio->Load("Sound/Boss_B1.wav","B_B1"))
  580. {
  581. g_engine->message("Error loading Boss_B1.wav");
  582. return false;
  583. }
  584.  
  585. if (!g_engine->audio->Load("Sound/fire.wav","fire"))
  586. {
  587. g_engine->message("Error loading fire.wav");
  588. return false;
  589. }
  590.  
  591. if (!g_engine->audio->Load("Sound/FireSacmarica.wav","FireSacmarica"))
  592. {
  593. g_engine->message("Error loading FireSacmarica.wav");
  594. return false;
  595. }
  596.  
  597. if (!g_engine->audio->Load("Sound/FireMinigun.wav","FireMinigun"))
  598. {
  599. g_engine->message("Error loading FireMinigun.wav");
  600. return false;
  601. }
  602.  
  603. if (!g_engine->audio->Load("Sound/FireLaser.wav","FireLaser"))
  604. {
  605. g_engine->message("Error loading FireLaser.wav");
  606. return false;
  607. }
  608.  
  609. if (!g_engine->audio->Load("Sound/FireLaser2.wav","FireLaser2"))
  610. {
  611. g_engine->message("Error loading FireLaser2.wav");
  612. return false;
  613. }
  614.  
  615. if (!g_engine->audio->Load("Sound/FireTop.wav","FireTop"))
  616. {
  617. g_engine->message("Error loading FireTop.wav");
  618. return false;
  619. }
  620.  
  621. if (!g_engine->audio->Load("Sound/rocket.wav","rocket"))
  622. {
  623. g_engine->message("Error loading rocket.wav");
  624. return false;
  625. }
  626.  
  627. if (!g_engine->audio->Load("Sound/rocket3.wav","rocket3"))
  628. {
  629. g_engine->message("Error loading rocket3.wav");
  630. return false;
  631. }
  632.  
  633. //ZVUK NEPRIJATELJI
  634. //BOSS
  635. if (!g_engine->audio->Load("Sound/Boss_Start.wav","B_Start"))
  636. {
  637. g_engine->message("Error loading Boss_Start.wav");
  638. return false;
  639. }
  640.  
  641. if (!g_engine->audio->Load("Sound/Boss_EndClose.wav","B_EndClose"))
  642. {
  643. g_engine->message("Error loading Boss_EndClose.wav");
  644. return false;
  645. }
  646.  
  647. if (!g_engine->audio->Load("Sound/Boss_Death.wav","B_Death"))
  648. {
  649. g_engine->message("Error loading Boss_Death.wav");
  650. return false;
  651. }
  652.  
  653. //KAMIKAZA
  654. if (!g_engine->audio->Load("Sound/N_Kamikaza.wav","N_Kamikaza"))
  655. {
  656. g_engine->message("Error loading N_Kamikaza.wav");
  657. return false;
  658. }
  659.  
  660. //HARPIJA
  661. if (!g_engine->audio->Load("Sound/N_Harpija_Sight.wav","N_Harpija_Sight"))
  662. {
  663. g_engine->message("Error loading N_Harpija_Sight.wav");
  664. return false;
  665. }
  666.  
  667. if (!g_engine->audio->Load("Sound/N_Harpija_Fire.wav","N_Harpija_Fire"))
  668. {
  669. g_engine->message("Error loading N_Harpija_Fire.wav");
  670. return false;
  671. }
  672.  
  673. if (!g_engine->audio->Load("Sound/N_Harpija_Death.wav","N_Harpija_Death"))
  674. {
  675. g_engine->message("Error loading N_Harpija_Death.wav");
  676. return false;
  677. }
  678.  
  679. //GNAAR
  680. if (!g_engine->audio->Load("Sound/gnaar_sight.wav","gnaar_sight"))
  681. {
  682. g_engine->message("Error loading gnaar_sight.wav");
  683. return false;
  684. }
  685.  
  686. if (!g_engine->audio->Load("Sound/Punch.wav","Punch"))
  687. {
  688. g_engine->message("Error loading Punch.wav");
  689. return false;
  690. }
  691.  
  692. if (!g_engine->audio->Load("Sound/GnaarDeath.wav","GnaarDeath"))
  693. {
  694. g_engine->message("Error loading GnaarDeath.wav");
  695. return false;
  696. }
  697.  
  698. //BIK
  699. if (!g_engine->audio->Load("Sound/BikSight.wav","BikSight"))
  700. {
  701. g_engine->message("Error loading BikSight.wav");
  702. return false;
  703. }
  704.  
  705. if (!g_engine->audio->Load("Sound/N_BikRun.wav","N_BikRun"))
  706. {
  707. g_engine->message("Error loading N_BikRun.wav");
  708. return false;
  709. }
  710.  
  711. if (!g_engine->audio->Load("Sound/BikDeath.wav","BikDeath"))
  712. {
  713. g_engine->message("Error loading BikDeath.wav");
  714. return false;
  715. }
  716.  
  717. //SETACI
  718. if (!g_engine->audio->Load("Sound/Fire_Setac_plavi2.wav","Fire_Setac_plavi2"))
  719. {
  720. g_engine->message("Error loading Fire_Setac_plavi2.wav");
  721. return false;
  722. }
  723.  
  724. if (!g_engine->audio->Load("Sound/Fire_Setac_plavi.wav","Fire_Setac_plavi"))
  725. {
  726. g_engine->message("Error loading Fire_Setac_plavi.wav");
  727. return false;
  728. }
  729.  
  730. if (!g_engine->audio->Load("Sound/setac_plavi_sight.wav","setac_plavi_sight"))
  731. {
  732. g_engine->message("Error loading setac_plavi_sight.wav");
  733. return false;
  734. }
  735.  
  736. if (!g_engine->audio->Load("Sound/SetacPlaviDeath.wav","SetacPlaviDeath"))
  737. {
  738. g_engine->message("Error loading SetacPlaviDeath.wav");
  739. return false;
  740. }
  741.  
  742. //ZVUK MISC
  743. if (!g_engine->audio->Load("Sound/Select.wav","Select"))
  744. {
  745. g_engine->message("Error loading Select.wav");
  746. return false;
  747. }
  748.  
  749. if (!g_engine->audio->Load("Sound/Press.wav","Press"))
  750. {
  751. g_engine->message("Error loading Press.wav");
  752. return false;
  753. }
  754.  
  755. if (!g_engine->audio->Load("Sound/Health_100.wav","Health_100"))
  756. {
  757. g_engine->message("Error loading Health_100.wav");
  758. return false;
  759. }
  760.  
  761. if (!g_engine->audio->Load("Sound/Health_25.wav","Health_25"))
  762. {
  763. g_engine->message("Error loading Health_25.wav");
  764. return false;
  765. }
  766.  
  767. if (!g_engine->audio->Load("Sound/explode2.wav","explode2"))
  768. {
  769. g_engine->message("Error loading boom.wav");
  770. return false;
  771. }
  772. }
  773.  
  774. bool initSprites()
  775. {
  776. HUD = new Sprite();
  777. if (!HUD->loadImage("Textures/HUD.tga"))
  778. {
  779. g_engine->message("Error loading HUD.tga");
  780. return false;
  781. }
  782. HUD->setCollidable(false);
  783. HUD->setPosition(0,SCREENH-45);
  784. HUD->setColor(0xDDFFFFFF);
  785.  
  786. //SERIOUS SAM 2D
  787. paddle = new Sprite();
  788. paddle->setImage(Sam_Desno);
  789. paddle->setTotalFrames(1);
  790. paddle->setColumns(6);
  791. paddle->setSize(324,104);
  792. paddle->setFrameTimer(100);
  793. paddle->setPosition(0,0);
  794. paddle->setObjectType( SPRITE_PADDLE );
  795. paddle->setVisible(false);
  796. paddle->setCollidable(false);
  797. g_engine->addEntity( paddle );
  798.  
  799. noge = new Sprite();
  800. noge->setImage(Noge_Desno);
  801. noge->setTotalFrames(1);
  802. noge->setColumns(5);
  803. noge->setSize(65,80);
  804. noge->setFrameTimer(65);
  805. noge->setPosition(0,0);
  806. noge->setCollidable(false);
  807. noge->setObjectType(SPRITE_NOGE);
  808. noge->setVisible(false);
  809. g_engine->addEntity( noge );
  810.  
  811. Pupak=new Sprite();
  812. Pupak->setImage(Sam_PupakD);
  813. Pupak->setObjectType(SPRITE_PUPAK);
  814. Pupak->setCollidable(false);
  815. Pupak->setVisible(false);
  816. g_engine->addEntity( Pupak );
  817.  
  818. META = new Sprite();
  819. META->setImage(META_T);
  820. META->setTotalFrames(1);
  821. META->setColumns(1);
  822. META->setSize(50,110);
  823. META->setPosition(0,0);
  824. META->setObjectType(SPRITE_META);
  825. META->setVisible(false);
  826. g_engine->addEntity(META);
  827.  
  828. S_LOF=new Sprite();
  829. S_LOF->setObjectType(SPRITE_LOF);
  830. S_LOF->setImage(I_LOF_T);
  831. S_LOF->setPosition(90,375);
  832. S_LOF->setVisible(false);
  833. S_LOF->setCollidable(false);
  834. g_engine->addEntity(S_LOF);
  835.  
  836. //**************************************************************************MAIN MENU
  837. StartS=new Sprite();
  838. StartS->setObjectType(START);
  839. StartS->setImage(M_Start_T);
  840. StartS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2-105);
  841. StartS->setVisible(false);
  842. g_engine->addEntity(StartS);
  843.  
  844. LoadS=new Sprite();
  845. LoadS->setObjectType(LOAD);
  846. LoadS->setImage(M_Load_T);
  847. LoadS->setSize(150,50);
  848. LoadS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2-50);
  849. LoadS->setVisible(false);
  850. g_engine->addEntity(LoadS);
  851.  
  852. SaveS=new Sprite();
  853. SaveS->setObjectType(SAVE);
  854. SaveS->setImage(M_Save_T);
  855. SaveS->setSize(150,50);
  856. SaveS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2+5);
  857. SaveS->setVisible(false);
  858. g_engine->addEntity(SaveS);
  859.  
  860. QuitS=new Sprite();
  861. QuitS->setObjectType(QUIT);
  862. QuitS->setImage(M_Quit_T);
  863. QuitS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2+60);
  864. QuitS->setVisible(false);
  865. g_engine->addEntity(QuitS);
  866.  
  867. Konzola=new Sprite();
  868. Konzola->setObjectType(KONZOLA);
  869. Konzola->loadImage("panel.tga");
  870. Konzola->setColor(0xAA448844);
  871. Konzola->setPosition(0,0);
  872. Konzola->setVisible(false);
  873. g_engine->addEntity(Konzola);
  874.  
  875. PanelQuit=new Sprite();
  876. PanelQuit->setObjectType(QUIT);
  877. PanelQuit->loadImage("panel.tga");
  878. PanelQuit->setColor(0xDD222222);
  879. PanelQuit->setPosition(330, SCREENH/2-160);
  880. PanelQuit->setVisible(false);
  881. g_engine->addEntity(PanelQuit);
  882.  
  883. Glupost=new Sprite();
  884. Glupost->setObjectType(QUIT);
  885. Glupost->loadImage("Textures/Glupost_T.tga");
  886. Glupost->setPosition(0,752);
  887. Glupost->setVisible(false);
  888. g_engine->addEntity(Glupost);
  889.  
  890. //**************************************************************************IGRAC PREDMETI
  891. Sam_MrtavD_T = new Texture();
  892. if (!Sam_MrtavD_T->Load("Textures/Sam_MrtavD_T.tga")) {
  893. g_engine->message("Error loading Sam_MrtavD_T.tga");
  894. return false;
  895. }
  896.  
  897. Sam_MrtavL_T = new Texture();
  898. if (!Sam_MrtavL_T->Load("Textures/Sam_MrtavL_T.tga")) {
  899. g_engine->message("Error loading Sam_MrtavL_T.tga");
  900. return false;
  901. }
  902.  
  903. I_Knew_It = new Texture();
  904. if (!I_Knew_It->Load("Textures/I_Knew_It.tga")) {
  905. g_engine->message("Error loading I_Knew_It.tga");
  906. return false;
  907. }
  908.  
  909. I_CB_T = new Texture();
  910. if (!I_CB_T->Load("Textures/I_CB_T.tga")) {
  911. g_engine->message("Error loading I_CB_T.tga");
  912. return false;
  913. }
  914.  
  915. I_GM_T = new Texture();
  916. if (!I_GM_T->Load("Textures/I_GM_T.tga")) {
  917. g_engine->message("Error loading I_GM_T.tga");
  918. return false;
  919. }
  920.  
  921. I_LGB_T = new Texture();
  922. if (!I_LGB_T->Load("Textures/I_LGB_T.tga")) {
  923. g_engine->message("Error loading I_LGB_T.tga");
  924. return false;
  925. }
  926.  
  927. Health100 = new Texture();
  928. if (!Health100->Load("Textures/I_Health100_T.tga")) {
  929. g_engine->message("Error loading I_Health100_T.tga");
  930. return false;
  931. }
  932.  
  933. I_Health25_T = new Texture();
  934. if (!I_Health25_T->Load("Textures/I_Health25_T.tga")) {
  935. g_engine->message("Error loading I_Health25_T.tga");
  936. return false;
  937. }
  938.  
  939. I_SeriousSecondaryFire_T = new Texture();
  940. if (!I_SeriousSecondaryFire_T->Load("Textures/I_SeriousSecondaryFire_T.tga")) {
  941. g_engine->message("Error loading I_SeriousSecondaryFire_T.tga");
  942. return false;
  943. }
  944.  
  945. MunicijaRaketa = new Texture();
  946. if (!MunicijaRaketa->Load("Textures/I_MunicijaRaketa_T.tga")) {
  947. g_engine->message("Error loading I_MunicijaRaketa_T.tga");
  948. return false;
  949. }
  950.  
  951. MunicijaMinigun = new Texture();
  952. if (!MunicijaMinigun->Load("Textures/I_MunicijaMinigun_T.tga")) {
  953. g_engine->message("Error loading I_MunicijaMinigun_T.tga");
  954. return false;
  955. }
  956.  
  957. MunicijaLaser = new Texture();
  958. if (!MunicijaLaser->Load("Textures/I_MunicijaLaser_T.tga")) {
  959. g_engine->message("Error loading I_MunicijaLaser_T.tga");
  960. return false;
  961. }
  962.  
  963. MunicijaTop = new Texture();
  964. if (!MunicijaTop->Load("Textures/I_MunicijaTop_T.tga")) {
  965. g_engine->message("Error loading I_MunicijaTop_T.tga");
  966. return false;
  967. }
  968.  
  969. I_RocketLauncher_T = new Texture();
  970. if (!I_RocketLauncher_T->Load("Textures/I_RocketLauncher_T.tga")) {
  971. g_engine->message("Error loading I_RocketLauncher_T.tga");
  972. return false;
  973. }
  974.  
  975. I_Top_T = new Texture();
  976. if (!I_Top_T->Load("Textures/I_Top_T.tga")) {
  977. g_engine->message("Error loading I_Top_T.tga");
  978. return false;
  979. }
  980.  
  981. I_Laser_T = new Texture();
  982. if (!I_Laser_T->Load("Textures/I_Laser_T.tga")) {
  983. g_engine->message("Error loading I_Laser_T.tga");
  984. return false;
  985. }
  986.  
  987. I_Minigun_T = new Texture();
  988. if (!I_Minigun_T->Load("Textures/I_Minigun_T.tga")) {
  989. g_engine->message("Error loading I_Minigun_T.tga");
  990. return false;
  991. }
  992. //**************************************************************************IGRAC PROJEKTILI
  993. A_MetakP_T = new Texture();
  994. if (!A_MetakP_T->Load("Textures/A_MetakP_T.tga")) {
  995. g_engine->message("Error loading A_MetakP_T.tga");
  996. return false;
  997. }
  998.  
  999. A_Raketa_T = new Texture();
  1000. if (!A_Raketa_T->Load("Textures/A_Raketa_T.tga")) {
  1001. g_engine->message("Error loading A_Raketa_T.tga");
  1002. return false;
  1003. }
  1004.  
  1005. A_BRaketa_T = new Texture();
  1006. if (!A_BRaketa_T->Load("Textures/A_BRaketa_T.tga")) {
  1007. g_engine->message("Error loading A_BRaketa_T.tga");
  1008. return false;
  1009. }
  1010.  
  1011. A_Kugla_T = new Texture();
  1012. if (!A_Kugla_T->Load("Textures/A_Kugla_T.tga")) {
  1013. g_engine->message("Error loading A_Kugla_T.tga");
  1014. return false;
  1015. }
  1016.  
  1017. A_Laser_T = new Texture();
  1018. if (!A_Laser_T->Load("Textures/A_Laser_T.tga")) {
  1019. g_engine->message("Error loading A_Laser_T.tga");
  1020. return false;
  1021. }
  1022.  
  1023. A_Laser2_T = new Texture();
  1024. if (!A_Laser2_T->Load("Textures/A_Laser2_T.tga")) {
  1025. g_engine->message("Error loading A_Laser2_T.tga");
  1026. return false;
  1027. }
  1028.  
  1029. A_Minigun_T = new Texture();
  1030. if (!A_Minigun_T->Load("Textures/A_Minigun_T.tga")) {
  1031. g_engine->message("Error loading A_Minigun_T.tga");
  1032. return false;
  1033. }
  1034.  
  1035. A_Sacma_T = new Texture();
  1036. if (!A_Sacma_T->Load("Textures/A_Sacma_T.tga")) {
  1037. g_engine->message("Error loading A_Sacma_T.tga");
  1038. return false;
  1039. }
  1040.  
  1041. vatrena_kugla = new Texture();
  1042. if (!vatrena_kugla->Load("Textures/A_BVatrenaKugla_T.tga")) {
  1043. g_engine->message("Error loading A_BVatrenaKugla_T.tga");
  1044. return false;
  1045. }
  1046.  
  1047. HarpijaKrilo_T = new Texture();
  1048. if (!HarpijaKrilo_T->Load("Textures/HarpijaKrilo_T.tga")) {
  1049. g_engine->message("Error loading HarpijaKrilo_T.tga");
  1050. return false;
  1051. }
  1052.  
  1053. //**************************************************************************NEPRIJATELJI
  1054. //BOSS
  1055. N_TheBoss = new Texture();
  1056. if (!N_TheBoss->Load("Textures/B_P.tga")) {
  1057. g_engine->message("Error loading B_P.tga");
  1058. return false;
  1059. }
  1060.  
  1061. N_TheBossH = new Texture();
  1062. if (!N_TheBossH->Load("Textures/B_S.tga")) {
  1063. g_engine->message("Error loading B_S.tga");
  1064. return false;
  1065. }
  1066.  
  1067. FireBoss1 = new Texture();
  1068. if (!FireBoss1->Load("Textures/A_BVatra_T.tga")) {
  1069. g_engine->message("Error loading A_BVatra_T.tga");
  1070. return false;
  1071. }
  1072.  
  1073. A_BOko_T = new Texture();
  1074. if (!A_BOko_T->Load("Textures/A_BOko_T.tga")) {
  1075. g_engine->message("Error loading A_BOko_T.tga");
  1076. return false;
  1077. }
  1078.  
  1079. B_METAG_T = new Texture();
  1080. if (!B_METAG_T->Load("Textures/B_METAG_T.tga")) {
  1081. g_engine->message("Error loading B_METAG_T.tga");
  1082. return false;
  1083. }
  1084.  
  1085. B_METAD_T = new Texture();
  1086. if (!B_METAD_T->Load("Textures/B_METAD_T.tga")) {
  1087. g_engine->message("Error loading B_METAD_T.tga");
  1088. return false;
  1089. }
  1090.  
  1091. Ruka = new Texture();
  1092. if (!Ruka->Load("Textures/B_Ruka.tga")) {
  1093. g_engine->message("Error loading B_Ruka.tga");
  1094. return false;
  1095. }
  1096.  
  1097. Krilo = new Texture();
  1098. if (!Krilo->Load("Textures/B_Krilo.tga")) {
  1099. g_engine->message("Error loading B_Krilo.tga");
  1100. return false;
  1101. }
  1102.  
  1103. //KAMIKAZA
  1104. N_KamikazaD_T = new Texture();
  1105. if (!N_KamikazaD_T->Load("Textures/N_KamikazaD_T.tga")) {
  1106. g_engine->message("Error loading N_KamikazaD_T.tga");
  1107. return false;
  1108. }
  1109. N_KamikazaL_T = new Texture();
  1110. if (!N_KamikazaL_T->Load("Textures/N_KamikazaL_T.tga")) {
  1111. g_engine->message("Error loading N_KamikazaL_T.tga");
  1112. return false;
  1113. }
  1114.  
  1115. //GNAARFEMALEEMALE
  1116. N_GnaarFemale_T = new Texture();
  1117. if (!N_GnaarFemale_T->Load("Textures/N_GnaarFemale_T.tga")) {
  1118. g_engine->message("Error loading N_GnaarFemale_T.tga");
  1119. return false;
  1120. }
  1121.  
  1122. //GNAARMALEEMALE
  1123. N_GnaarMale_T = new Texture();
  1124. if (!N_GnaarMale_T->Load("Textures/N_GnaarMale_T.tga")) {
  1125. g_engine->message("Error loading N_GnaarMale_T.tga");
  1126. return false;
  1127. }
  1128.  
  1129. //BIK
  1130. N_Bik_T = new Texture();
  1131. if (!N_Bik_T->Load("Textures/N_Bik_T.tga")) {
  1132. g_engine->message("Error loading N_Bik_T.tga");
  1133. return false;
  1134. }
  1135.  
  1136. //SETAC_PLAVI
  1137. N_SetacPlaviD_T = new Texture();
  1138. if (!N_SetacPlaviD_T->Load("Textures/N_SetacPlaviD_T.tga")) {
  1139. g_engine->message("Error loading N_SetacPlaviD_T.tga");
  1140. return false;
  1141. }
  1142.  
  1143. N_SetacPlaviL_T = new Texture();
  1144. if (!N_SetacPlaviL_T->Load("Textures/N_SetacPlaviL_T.tga")) {
  1145. g_engine->message("Error loading N_SetacPlaviL_T.tga");
  1146. return false;
  1147. }
  1148.  
  1149. //SETAC_CRVENI
  1150. N_SetacCrveniD_T = new Texture();
  1151. if (!N_SetacCrveniD_T->Load("Textures/N_SetacCrveniD_T.tga")) {
  1152. g_engine->message("Error loading N_SetacCrveniD_T.tga");
  1153. return false;
  1154. }
  1155.  
  1156. N_SetacCrveniL_T = new Texture();
  1157. if (!N_SetacCrveniL_T->Load("Textures/N_SetacCrveniL_T.tga")) {
  1158. g_engine->message("Error loading N_SetacCrveniD_L.tga");
  1159. return false;
  1160. }
  1161.  
  1162. //HARPIJA
  1163. N_HarpijaD_T = new Texture();
  1164. if (!N_HarpijaD_T->Load("Textures/N_HarpijaD_T.tga")) {
  1165. g_engine->message("Error loading N_HarpijaD_T.tga");
  1166. return false;
  1167. }
  1168. N_HarpijaL_T = new Texture();
  1169. if (!N_HarpijaL_T->Load("Textures/N_HarpijaL_T.tga")) {
  1170. g_engine->message("Error loading N_HarpijaL_T.tga");
  1171. return false;
  1172. }
  1173.  
  1174. //**************************************************************************NEPRIJATELJI PROJEKTILI
  1175. A_RaketaSC_T = new Texture();
  1176. if (!A_RaketaSC_T->Load("Textures/A_RaketaSC_T.tga")) {
  1177. g_engine->message("Error loading A_RaketaSC_T.tga");
  1178. return false;
  1179. }
  1180.  
  1181. A_LaserSP_T = new Texture();
  1182. if (!A_LaserSP_T->Load("Textures/A_LaserSP_T.tga")) {
  1183. g_engine->message("Error loading A_LaserSP_T.tga");
  1184. return false;
  1185. }
  1186.  
  1187. A_HarpijaP_T = new Texture();
  1188. if (!A_HarpijaP_T->Load("Textures/A_HarpijaP_T.tga")) {
  1189. g_engine->message("Error loading A_HarpijaP_T.tga");
  1190. return false;
  1191. }
  1192.  
  1193. //**************************************************************************NEPRIJATELJI MRTVI
  1194. N_BikMrtav_T = new Texture();
  1195. if (!N_BikMrtav_T->Load("Textures/N_BikMrtav_T.tga")) {
  1196. g_engine->message("Error loading N_BikMrtav_T.tga");
  1197. return false;
  1198. }
  1199.  
  1200. N_SetacPlaviMrtavD_T = new Texture();
  1201. if (!N_SetacPlaviMrtavD_T->Load("Textures/N_SetacPlaviMrtavD_T.tga")) {
  1202. g_engine->message("Error loading N_SetacPlaviMrtavD_T.tga");
  1203. return false;
  1204. }
  1205.  
  1206. N_SetacPlaviMrtavL_T = new Texture();
  1207. if (!N_SetacPlaviMrtavL_T->Load("Textures/N_SetacPlaviMrtavL_T.tga")) {
  1208. g_engine->message("Error loading N_SetacPlaviMrtavL_T.tga");
  1209. return false;
  1210. }
  1211.  
  1212. N_SetacCrveniMrtavD_T = new Texture();
  1213. if (!N_SetacCrveniMrtavD_T->Load("Textures/N_SetacCrveniMrtavD_T.tga")) {
  1214. g_engine->message("Error loading N_SetacCrveniMrtavD_T.tga");
  1215. return false;
  1216. }
  1217.  
  1218. N_SetacCrveniMrtavL_T = new Texture();
  1219. if (!N_SetacCrveniMrtavL_T->Load("Textures/N_SetacCrveniMrtavL_T.tga")) {
  1220. g_engine->message("Error loading N_SetacCrveniMrtavL_T.tga");
  1221. return false;
  1222. }
  1223.  
  1224. N_GnaarFemaleMrtav_T = new Texture();
  1225. if (!N_GnaarFemaleMrtav_T->Load("Textures/N_GnaarFemaleMrtav_T.tga")) {
  1226. g_engine->message("Error loading N_GnaarFemaleMrtav_T.tga");
  1227. return false;
  1228. }
  1229.  
  1230. N_GnaarMaleMrtav_T = new Texture();
  1231. if (!N_GnaarMaleMrtav_T->Load("Textures/N_GnaarMaleMrtav_T.tga")) {
  1232. g_engine->message("Error loading N_GnaarMaleMrtav_T.tga");
  1233. return false;
  1234. }
  1235.  
  1236. //**************************************************************************MISC
  1237. IntroText_T = new Texture();
  1238. if (!IntroText_T->Load("Textures/IntroText_T.tga")) {
  1239. g_engine->message("Error loading IntroText_T.tga");
  1240. return false;
  1241. }
  1242.  
  1243. I_PalmaT = new Texture();
  1244. if (!I_PalmaT->Load("Textures/I_PalmaT.tga")) {
  1245. g_engine->message("Error loading I_PalmaT.tga");
  1246. return false;
  1247. }
  1248.  
  1249. I_StupL_T = new Texture();
  1250. if (!I_StupL_T->Load("Textures/I_StupL_T.tga")) {
  1251. g_engine->message("Error loading I_StupL_T.tga");
  1252. return false;
  1253. }
  1254.  
  1255. I_StupD_T = new Texture();
  1256. if (!I_StupD_T->Load("Textures/I_StupD_T.tga")) {
  1257. g_engine->message("Error loading I_StupD_T.tga");
  1258. return false;
  1259. }
  1260.  
  1261. CreditsText = new Texture();
  1262. if (!CreditsText->Load("Textures/CreditsText.tga")) {
  1263. g_engine->message("Error loading CreditsText.tga");
  1264. return false;
  1265. }
  1266.  
  1267. I_PticaL_T = new Texture();
  1268. if (!I_PticaL_T->Load("Textures/I_PticaL_T.tga")) {
  1269. g_engine->message("Error loading I_PticaL_T.tga");
  1270. return false;
  1271. }
  1272.  
  1273. I_PticaD_T = new Texture();
  1274. if (!I_PticaD_T->Load("Textures/I_PticaD_T.tga")) {
  1275. g_engine->message("Error loading I_PticaD_T.tga");
  1276. return false;
  1277. }
  1278.  
  1279. Explosion_R = new Texture();
  1280. if (!Explosion_R->Load("Textures/Explosion_R.tga")) {
  1281. g_engine->message("Error loading Explosion_R.tga");
  1282. return false;
  1283. }
  1284.  
  1285. Explosion_K = new Texture();
  1286. if (!Explosion_K->Load("Textures/Explosion_K.tga")) {
  1287. g_engine->message("Error loading Explosion_K.tga");
  1288. return false;
  1289. }
  1290.  
  1291. Explosion_V = new Texture();
  1292. if (!Explosion_V->Load("Textures/Explosion_V.tga")) {
  1293. g_engine->message("Error loading Explosion_V.tga");
  1294. return false;
  1295. }
  1296.  
  1297. Krv_C = new Texture();
  1298. if (!Krv_C->Load("Textures/Krv_C.tga")) {
  1299. g_engine->message("Error loading Krv_C.tga");
  1300. return false;
  1301. }
  1302.  
  1303. Krv_Z = new Texture();
  1304. if (!Krv_Z->Load("Textures/Krv_Z.tga")) {
  1305. g_engine->message("Error loading Krv_Z.tga");
  1306. return false;
  1307. }
  1308.  
  1309. //load cursor
  1310. cursor = new Sprite();
  1311. cursor->loadImage("Textures/Cursor_Menu.tga");
  1312. cursor->setVisible(false);
  1313. cursor->setSize(24,24);
  1314. cursor->setPosition(0,0);
  1315. cursor->setObjectType(CURSOR);
  1316. g_engine->addEntity(cursor);
  1317.  
  1318. if (Preskoci == 1)
  1319. {
  1320.  
  1321. gameState=STATE_UPUTE;
  1322. background->setImage(B_Upute);
  1323. }
  1324. else
  1325. {
  1326. gameState=STATE_ANTONIOR;
  1327. background->setImage(B_AntonioR);
  1328. g_engine->audio->Play("Music_AntonioR");
  1329. }
  1330.  
  1331. }
  1332.  
  1333. bool game_init(HWND hwnd)
  1334. {
  1335. //**************************************************************************BACKGROUND
  1336.  
  1337. B_AntonioR = new Texture();
  1338. if (!B_AntonioR->Load("Textures/Background/B_AntonioR.tga")) {
  1339. g_engine->message("Error loading B_AntonioR.tga");
  1340. return false;
  1341. }
  1342.  
  1343. B_Croteam = new Texture();
  1344. if (!B_Croteam->Load("Textures/Background/B_Croteam.tga")) {
  1345. g_engine->message("Error loading B_Croteam.tga");
  1346. return false;
  1347. }
  1348.  
  1349. B_SS2DTLGH = new Texture();
  1350. if (!B_SS2DTLGH->Load("Textures/Background/B_SS2DTLGH.tga")) {
  1351. g_engine->message("Error loading B_SS2DTLGH.tga");
  1352. return false;
  1353. }
  1354.  
  1355. B_Menu = new Texture();
  1356. if (!B_Menu->Load("Textures/Background/B_Menu.tga")) {
  1357. g_engine->message("Error loading B_Menu.tga");
  1358. return false;
  1359. }
  1360.  
  1361. B_Upute = new Texture();
  1362. if (!B_Upute->Load("Textures/Background/B_Upute.tga")) {
  1363. g_engine->message("Error loading B_Upute.tga");
  1364. return false;
  1365. }
  1366.  
  1367. B_Intro = new Texture();
  1368. if (!B_Intro->Load("Textures/Background/B_Intro.tga")) {
  1369. g_engine->message("Error loading B_Intro.tga");
  1370. return false;
  1371. }
  1372.  
  1373. B_Level000 = new Texture();
  1374. if (!B_Level000->Load("Textures/Background/B_Level000.tga")) {
  1375. g_engine->message("Error loading B_Level000.tga");
  1376. return false;
  1377. }
  1378.  
  1379. B_Level001 = new Texture();
  1380. if (!B_Level001->Load("Textures/Background/B_Level001.tga")) {
  1381. g_engine->message("Error loading B_Level001.tga");
  1382. return false;
  1383. }
  1384.  
  1385. B_Level002 = new Texture();
  1386. if (!B_Level002->Load("Textures/Background/B_Level002.tga")) {
  1387. g_engine->message("Error loading B_Level002.tga");
  1388. return false;
  1389. }
  1390.  
  1391. B_Level003 = new Texture();
  1392. if (!B_Level003->Load("Textures/Background/B_Level003.tga")) {
  1393. g_engine->message("Error loading B_Level003.tga");
  1394. return false;
  1395. }
  1396.  
  1397. B_Level004 = new Texture();
  1398. if (!B_Level004->Load("Textures/Background/B_Level004.tga")) {
  1399. g_engine->message("Error loading B_Level004.tga");
  1400. return false;
  1401. }
  1402.  
  1403. B_Level005 = new Texture();
  1404. if (!B_Level005->Load("Textures/Background/B_Level005.tga")) {
  1405. g_engine->message("Error loading B_Level005.tga");
  1406. return false;
  1407. }
  1408.  
  1409. B_Level006 = new Texture();
  1410. if (!B_Level006->Load("Textures/Background/B_Level006.tga")) {
  1411. g_engine->message("Error loading B_Level006.tga");
  1412. return false;
  1413. }
  1414.  
  1415. B_Level007 = new Texture();
  1416. if (!B_Level007->Load("Textures/Background/B_Level007.tga")) {
  1417. g_engine->message("Error loading B_Level007.tga");
  1418. return false;
  1419. }
  1420.  
  1421. B_Level008 = new Texture();
  1422. if (!B_Level008->Load("Textures/Background/B_Level008.tga")) {
  1423. g_engine->message("Error loading B_Level008.tga");
  1424. return false;
  1425. }
  1426.  
  1427. B_Level009 = new Texture();
  1428. if (!B_Level009->Load("Textures/Background/B_Level009.tga")) {
  1429. g_engine->message("Error loading B_Level009.tga");
  1430. return false;
  1431. }
  1432.  
  1433. SB_Vedrosoblacima = new Texture();
  1434. if (!SB_Vedrosoblacima->Load("Textures/Background/SB_Vedrosoblacima.tga")) {
  1435. g_engine->message("Error loading SB_Vedrosoblacima.tga");
  1436. return false;
  1437. }
  1438.  
  1439. SB_Vedrosoblacima2 = new Texture();
  1440. if (!SB_Vedrosoblacima2->Load("Textures/Background/SB_Vedrosoblacima2.tga")) {
  1441. g_engine->message("Error loading SB_Vedrosoblacima2.tga");
  1442. return false;
  1443. }
  1444.  
  1445. B_End = new Texture();
  1446. if (!B_End->Load("Textures/Background/B_End.tga")) {
  1447. g_engine->message("Error loading B_End.tga");
  1448. return false;
  1449. }
  1450.  
  1451. B_Credits = new Texture();
  1452. if (!B_Credits->Load("Textures/Background/B_Credits.tga")) {
  1453. g_engine->message("Error loading B_Credits.tga");
  1454. return false;
  1455. }
  1456.  
  1457. B_Credits2 = new Texture();
  1458. if (!B_Credits2->Load("Textures/Background/B_Credits2.tga")) {
  1459. g_engine->message("Error loading B_Credits2.tga");
  1460. return false;
  1461. }
  1462.  
  1463. SkyBox1_S = new Sprite();
  1464. SkyBox1_S->setImage(SB_Vedrosoblacima);
  1465. SkyBox1_S->setObjectType(SKYBOX_1);
  1466. SkyBox1_S->setVisible(false);
  1467. SkyBox1_S->setCollidable(false);
  1468. SkyBox1_S->setVelocity(-0.2+SmanjiSamBrzinu*0.1,0);
  1469. g_engine->addEntity( SkyBox1_S );
  1470.  
  1471. SkyBox2_S = new Sprite();
  1472. SkyBox2_S->setImage(SB_Vedrosoblacima);
  1473. SkyBox2_S->setObjectType(SKYBOX_2);
  1474. SkyBox2_S->setVisible(false);
  1475. SkyBox2_S->setCollidable(false);
  1476. SkyBox2_S->setVelocity(-0.2+SmanjiSamBrzinu*0.1,0);
  1477. SkyBox2_S->setPosition(SCREENW,0);
  1478. g_engine->addEntity( SkyBox2_S );
  1479.  
  1480. background = new Sprite();
  1481. //if (!background->setImage("AntonioR.tga",0)) { cemu ova nula?????
  1482. background->setImage(B_AntonioR);
  1483. background->setObjectType(BACKGROUND);
  1484. background->setSize(SCREENW,SCREENH);
  1485. background->setCollidable(false);
  1486. g_engine->addEntity( background );
  1487.  
  1488. //**************************************************************************MAIN MENU
  1489. M_Start_T = new Texture();
  1490. if (!M_Start_T->Load("Textures/M_Start_T.tga")) {
  1491. g_engine->message("Error loading M_Start_T.tga");
  1492. return false;
  1493. }
  1494.  
  1495. M_Quit_T = new Texture();
  1496. if (!M_Quit_T->Load("Textures/M_Quit_T.tga")) {
  1497. g_engine->message("Error loading M_Quit_T.tga");
  1498. return false;
  1499. }
  1500.  
  1501. M_Load_T = new Texture();
  1502. if (!M_Load_T->Load("Textures/M_Load_T.tga")) {
  1503. g_engine->message("Error loading M_Load_T.tga");
  1504. return false;
  1505. }
  1506.  
  1507. M_NSG_T = new Texture();
  1508. if (!M_NSG_T->Load("Textures/M_NSG_T.tga")) {
  1509. g_engine->message("Error loading M_NSG_T.tga");
  1510. return false;
  1511. }
  1512.  
  1513. M_ASO_T = new Texture();
  1514. if (!M_ASO_T->Load("Textures/M_ASO_T.tga")) {
  1515. g_engine->message("Error loading M_ASO_T.tga");
  1516. return false;
  1517. }
  1518.  
  1519. M_No_T = new Texture();
  1520. if (!M_No_T->Load("Textures/M_No_T.tga")) {
  1521. g_engine->message("Error loading M_No_T.tga");
  1522. return false;
  1523. }
  1524.  
  1525. M_Yes_T = new Texture();
  1526. if (!M_Yes_T->Load("Textures/M_Yes_T.tga")) {
  1527. g_engine->message("Error loading M_Yes_T.tga");
  1528. return false;
  1529. }
  1530.  
  1531. M_Save_T = new Texture();
  1532. if (!M_Save_T->Load("Textures/M_Save_T.tga")) {
  1533. g_engine->message("Error loading M_Save_T.tga");
  1534. return false;
  1535. }
  1536.  
  1537. M_AreYouSerious_T = new Texture();
  1538. if (!M_AreYouSerious_T->Load("Textures/M_AreYouSerious_T.tga")) {
  1539. g_engine->message("Error loading M_AreYouSerious_T.tga");
  1540. return false;
  1541. }
  1542.  
  1543. M_GameOver_T = new Texture();
  1544. if (!M_GameOver_T->Load("Textures/M_GameOver_T.tga")) {
  1545. g_engine->message("Error loading M_GameOver_T.tga");
  1546. return false;
  1547. }
  1548.  
  1549. M_Tezina_T = new Texture();
  1550. if (!M_Tezina_T->Load("Textures/M_Tezina_T.tga")) {
  1551. g_engine->message("Error loading M_Tezina_T.tga");
  1552. return false;
  1553. }
  1554.  
  1555. M_Normal_T = new Texture();
  1556. if (!M_Normal_T->Load("Textures/M_Normal_T.tga")) {
  1557. g_engine->message("Error loading M_Normal_T.tga");
  1558. return false;
  1559. }
  1560.  
  1561. M_Serious_T = new Texture();
  1562. if (!M_Serious_T->Load("Textures/M_Serious_T.tga")) {
  1563. g_engine->message("Error loading M_Serious_T.tga");
  1564. return false;
  1565. }
  1566.  
  1567. I_LOF_T = new Texture();
  1568. if (!I_LOF_T->Load("Textures/I_LOF_T.tga")) {
  1569. g_engine->message("Error loading I_LOF_T.tga");
  1570. return false;
  1571. }
  1572.  
  1573. //**************************************************************************SERIOUS SAM
  1574. Sam_Lijevo = new Texture();
  1575. if (!Sam_Lijevo->Load("Textures/Sam_Lijevo.tga")) {
  1576. g_engine->message("Error loading Sam_Lijevo.tga");
  1577. return false;
  1578. }
  1579.  
  1580. Sam_Desno = new Texture();
  1581. if (!Sam_Desno->Load("Textures/Sam_Desno.tga")) {
  1582. g_engine->message("Error loading Sam_Desno.tga");
  1583. return false;
  1584. }
  1585.  
  1586. Noge_Lijevo = new Texture();
  1587. if (!Noge_Lijevo->Load("Textures/Noge_Lijevo.tga")) {
  1588. g_engine->message("Error loading Noge_Lijevo.tga");
  1589. return false;
  1590. }
  1591.  
  1592. Noge_Desno = new Texture();
  1593. if (!Noge_Desno->Load("Textures/Noge_Desno.tga")) {
  1594. g_engine->message("Error loading Noge_Desno.tga");
  1595. return false;
  1596. }
  1597.  
  1598. NogeT_Lijevo = new Texture();
  1599. if (!NogeT_Lijevo->Load("Textures/NogeT_Lijevo.tga")) {
  1600. g_engine->message("Error loading NogeT_Lijevo.tga");
  1601. return false;
  1602. }
  1603.  
  1604. NogeT_Desno = new Texture();
  1605. if (!NogeT_Desno->Load("Textures/NogeT_Desno.tga")) {
  1606. g_engine->message("Error loading NogeT_Desno.tga");
  1607. return false;
  1608. }
  1609.  
  1610. Noge_UnazadD = new Texture();
  1611. if (!Noge_UnazadD->Load("Textures/Noge_UnazadD.tga")) {
  1612. g_engine->message("Error loading Noge_UnazadD.tga");
  1613. return false;
  1614. }
  1615.  
  1616. Noge_UnazadL = new Texture();
  1617. if (!Noge_UnazadL->Load("Textures/Noge_UnazadL.tga")) {
  1618. g_engine->message("Error loading Noge_UnazadL.tga");
  1619. return false;
  1620. }
  1621.  
  1622. Sam_PupakD = new Texture();
  1623. if (!Sam_PupakD->Load("Textures/Sam_PupakD.tga")) {
  1624. g_engine->message("Error loading Sam_PupakD.tga");
  1625. return false;
  1626. }
  1627.  
  1628. Sam_PupakL = new Texture();
  1629. if (!Sam_PupakL->Load("Textures/Sam_PupakL.tga")) {
  1630. g_engine->message("Error loading Sam_PupakL.tga");
  1631. return false;
  1632. }
  1633.  
  1634. META_T = new Texture();
  1635. if (!META_T->Load("Textures/META_T.tga")) {
  1636. g_engine->message("Error loading META_T.tga");
  1637. return false;
  1638. }
  1639.  
  1640. //BUG: Mora se barem jedan .ogg ucitati prije init console
  1641. if (!initMusic()) return false;
  1642. if (!initSound()) return false;
  1643.  
  1644. /*
  1645. //create the console
  1646. console = new Console();
  1647. if (!console->init()) {
  1648. g_engine->message("Error loading console");
  1649. return false;
  1650. }
  1651. console->hide();
  1652. */
  1653.  
  1654. //load the TimesNewRoman24 font
  1655. times24 = new Font();
  1656. if (!times24->loadImage("timesnewroman24.tga")) {
  1657. g_engine->message("Error loading timesnewroman24.tga");
  1658. return false;
  1659. }
  1660. if (!times24->loadWidthData("timesnewroman24.dat")) {
  1661. g_engine->message("Error loading timesnewroman24.dat");
  1662. return false;
  1663. }
  1664. times24->setColumns(16);
  1665. times24->setCharSize(32,36);
  1666.  
  1667.  
  1668. verdana10 = new Font();
  1669. if (!verdana10->loadImage("verdana10.tga")) {
  1670. g_engine->message("Error loading verdana10.tga");
  1671. return false;
  1672. }
  1673. if (!verdana10->loadWidthData("verdana10.dat")) {
  1674. g_engine->message("Error loading verdana10.dat");
  1675. return false;
  1676. }
  1677. verdana10->setColumns(16);
  1678. verdana10->setCharSize(20,16);
  1679.  
  1680.  
  1681.  
  1682. //g_engine->setPaused(true); //??????? cemu ovo?
  1683.  
  1684. if (!initSprites()) return false;
  1685.  
  1686. return true;
  1687. }
  1688.  
  1689. //UREDJENO
  1690. void game_end()
  1691. {
  1692. //brisanje iz memorije
  1693. //if (console) delete console;
  1694. if (times24) delete times24;
  1695. delete Explosion_K;
  1696. delete Explosion_R;
  1697. delete Explosion_V;
  1698. delete Krv_C;
  1699. delete Krv_Z;
  1700. delete A_MetakP_T;
  1701. delete A_LaserSP_T;
  1702. delete A_Kugla_T;
  1703. delete A_Raketa_T;
  1704. delete A_RaketaSC_T;
  1705. delete N_GnaarFemaleMrtav_T;
  1706. delete N_GnaarMaleMrtav_T;
  1707. delete N_BikMrtav_T;
  1708. delete A_Laser_T;
  1709. delete A_Laser2_T;
  1710. delete A_Minigun_T;
  1711. delete A_Sacma_T;
  1712. delete cursor;
  1713. delete I_PticaL_T;
  1714. delete I_PticaD_T;
  1715. }
  1716.  
  1717. //g-l tocka,d-d
  1718. bool Unutra(Sprite* a, double Ax1, double Ay1 , double Ax2 ,double Ay2, Sprite* b)
  1719. {
  1720. double Ax = a->getX() + Ax1;
  1721. double Ay = a->getY() + Ay1;
  1722. double AW = Ax2-Ax1;
  1723. double AH = Ay2-Ay1;
  1724.  
  1725. double Bx = b->getX();
  1726. double By = b->getY();
  1727. double BW = b->getWidth();
  1728. double BH = b->getHeight();
  1729.  
  1730. //Svi vrhovi od A i vrh B-G-L
  1731. //G-L,G-D,D-L,D-D
  1732. if(((Bx > Ax) && (By > Ay)) && ((Bx < (Ax+AW)) && (By > Ay)) && ((Bx > Ax) && (By < (Ay+AH))) && ((Bx < (Ax+AW)) && (By < (Ay+AH)))) return true;
  1733.  
  1734. //Svi vrhovi od A i B-G-D
  1735. //G-L,G-D,D-L,D-D
  1736. if ( (((Bx+BW) > Ax) && (By > Ay)) && (((Bx+BW) < (Ax+AW)) && (By > Ay)) && (((Bx+BW) > Ax) && (By < (Ay+AH))) && (((Bx+BW) < (Ax+AW)) && (By < (Ay+AH))) ) return true;
  1737.  
  1738. //Svi vrhovi od A i B-D-L
  1739. //G-L,G-D,D-L,D-D
  1740. if ( ((Bx > Ax) && ((By+BH) > Ay)) && ((Bx < (Ax+AW)) && ((By+BH) > Ay)) && ((Bx > Ax) && ((By+BH) < (Ay+AH))) && ((Bx < (Ax+AW)) && ((By+BH) < (Ay+AH)))) return true;
  1741.  
  1742. //Svi vrhovi od A i B-D-D
  1743. //G-L,G-D,D-L,D-D
  1744. if ( (((Bx+BW) > Ax) && ((By+BH) > Ay)) && (((Bx+BW) < (Ax+AW)) && ((By+BH) > Ay)) && (((Bx+BW) > Ax) && ((By+BH) < (Ay+AH))) && (((Bx+BW) < (Ax+AW)) && ((By+BH) < (Ay+AH)))) return true;
  1745.  
  1746. return false;
  1747. }
  1748.  
  1749. void PratiMe(Sprite *EvoPratim)
  1750. {
  1751.  
  1752. double Kut;
  1753. double brzina;
  1754.  
  1755. //calculate angle to target
  1756. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+10,EvoPratim->getX(),EvoPratim->getY());
  1757.  
  1758. switch ( EvoPratim->getObjectType() )
  1759. {
  1760. case BOSS_ROG:
  1761. brzina=rocketV-5;
  1762. break;
  1763. case N_KAMIKAZA:
  1764. brzina=KAMIKAZA_VEL;
  1765. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+5,EvoPratim->getX(),EvoPratim->getY());
  1766. break;
  1767. case N_SETACCRVENI:
  1768. brzina=SETAC_VEL;
  1769. break;
  1770. case N_SETACPLAVI:
  1771. brzina=SETAC_VEL+1;
  1772. break;
  1773. case N_GNAARMALE:
  1774. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+20,EvoPratim->getX(),EvoPratim->getY());
  1775. brzina=GNAAR_VEL;
  1776. break;
  1777. case N_GNAARFEMALE:
  1778. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()-5,EvoPratim->getX(),EvoPratim->getY());
  1779. brzina=GNAAR_VEL;
  1780. break;
  1781. case N_BIK:
  1782. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY(),EvoPratim->getX(),EvoPratim->getY());
  1783. brzina=BIK_VEL;
  1784. break;
  1785. case N_HARPIJA:
  1786. brzina=HARPIJA_VEL;
  1787. break;
  1788. }
  1789.  
  1790. Kut = 270 + g_engine->math->toDegrees( Kut );
  1791. double pmx = g_engine->math->LinearVelocityX(Kut) * brzina;
  1792. double pmy = g_engine->math->LinearVelocityY(Kut) * brzina;
  1793. EvoPratim->setVelocity(pmx, pmy);
  1794.  
  1795. if (EvoPratim->getObjectType() == BOSS_ROG)
  1796. {
  1797. EvoPratim->setRotation( g_engine->math->toRadians(Kut) );
  1798. }
  1799.  
  1800. if (Sam_energy > 0 && gameState == STATE_PLAY )
  1801. {
  1802. if (EvoPratim->getObjectType() == N_SETACPLAVI || EvoPratim->getObjectType() == N_BIK || EvoPratim->getObjectType() == N_SETACCRVENI || EvoPratim->getObjectType() == N_HARPIJA)
  1803. {
  1804.  
  1805. EvoPratim->setVelocity(-brzina,0);
  1806. if (EvoPratim->getObjectType() == N_SETACCRVENI)
  1807. {
  1808. if (EvoPratim->Gledam=='D') EvoPratim->setVelocity(brzina,0);
  1809. else EvoPratim->setVelocity(-brzina,0);
  1810. }
  1811. if (EvoPratim->getObjectType() == N_SETACPLAVI)
  1812. {
  1813. if (EvoPratim->Gledam=='D') EvoPratim->setVelocity(brzina,0);
  1814. else EvoPratim->setVelocity(-brzina,0);
  1815. }
  1816. }
  1817. }
  1818. }
  1819.  
  1820. void BotuniMenu()
  1821. {
  1822. g_engine->audio->StopAllExcept("Sam_Sam_I_Am");
  1823. cursor->loadImage("Textures/Cursor_Menu.tga");
  1824. cursor->setVisible(true);
  1825. background->setImage(B_Menu);
  1826. StartS->setImage(M_Start_T);
  1827. StartS->setSize(150,50);
  1828. StartS->setColor(0xFFFFFFFF);
  1829. StartS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2-105);
  1830. LoadS->setImage(M_Load_T);
  1831. LoadS->setSize(150,50);
  1832. LoadS->setColor(0xFFFFFFFF);
  1833. LoadS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2-50);SaveS->setImage(M_Save_T);
  1834. SaveS->setImage(M_Save_T);
  1835. SaveS->setSize(150,50);
  1836. SaveS->setColor(0xFFFFFFFF);
  1837. SaveS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2+5);QuitS->setImage(M_Quit_T);
  1838. QuitS->setImage(M_Quit_T);
  1839. QuitS->setSize(150,50);
  1840. QuitS->setColor(0xFFFFFFFF);
  1841. QuitS->setPosition(g_engine->getScreenWidth()/2-75, g_engine->getScreenHeight()/2+60);
  1842. gameState=STATE_MENU;
  1843. }
  1844.  
  1845. void addPtica( char smjer)
  1846. {
  1847. Sprite *PticaS = new Sprite();
  1848.  
  1849. int x=rand()%400+20;
  1850. int y=rand()%50+10;
  1851.  
  1852. if (smjer == 'L')
  1853. {
  1854. PticaS->setImage(I_PticaL_T);
  1855. PticaS->setVelocity(-3+SmanjiSamBrzinu,0);
  1856. PticaS->setPosition( x, y );
  1857. }
  1858. else if (smjer == 'D')
  1859. {
  1860. PticaS->setImage(I_PticaD_T);
  1861. PticaS->setVelocity(3-SmanjiSamBrzinu,0);
  1862. PticaS->setPosition( SCREENW-x, y );
  1863. }
  1864. else return;
  1865.  
  1866. PticaS->setObjectType(PTICA);
  1867. PticaS->setTotalFrames(4);
  1868. PticaS->setColumns(4);
  1869. PticaS->setSize(70,40);
  1870. PticaS->LevelID=level;
  1871. PticaS->setFrameTimer(200);
  1872. if (level==3) PticaS->setColor(0xFFBBEEFF);
  1873. if (level>=6 && level<8) PticaS->setColor(0xFFFFCCCC);
  1874. g_engine->addEntity( PticaS );
  1875. }
  1876.  
  1877.  
  1878. void addKamikaza( char smjer)
  1879. {
  1880.  
  1881. int GornjaGranica;
  1882. int DonjaGranica;
  1883. int Y;
  1884. int Dolje;
  1885. if (level == 6 || level == 7) Dolje = 60;
  1886. else Dolje=0;
  1887.  
  1888. Sprite *block = new Sprite();
  1889. if ( smjer == 'D')
  1890. {
  1891. block->setImage(N_KamikazaD_T);
  1892. }
  1893. else if ( smjer == 'L' )
  1894. {
  1895. block->setImage(N_KamikazaL_T);
  1896. }
  1897. else return;
  1898.  
  1899. block->setObjectType(N_KAMIKAZA);
  1900. block->setTotalFrames(12);
  1901. block->setColumns(5);
  1902. block->setSize(93,116);
  1903. block->setFrameTimer(70);
  1904. block->setCurrentFrame( rand()%10 );
  1905. block->energy = 2;
  1906. block->LevelID=level;
  1907.  
  1908. GornjaGranica=325-block->getHeight()+Dolje;
  1909. DonjaGranica=SCREENH-block->getHeight();
  1910. Y = DonjaGranica - ( rand() % ( DonjaGranica - GornjaGranica ) );
  1911.  
  1912. if ( smjer == 'D')
  1913. {
  1914. block->setPosition(SCREENW,Y);
  1915. }
  1916. else if ( smjer == 'L' )
  1917. {
  1918. block->setPosition(-89,Y);
  1919. }
  1920. else return;
  1921.  
  1922. block->setVelocity(-KAMIKAZA_VEL,0);
  1923.  
  1924. //upali se zvuk samo ako nema istog spritea i ako vec ne svira
  1925. if ((g_engine->findEntity(N_KAMIKAZA) == NULL) || (g_engine->audio->IsPlaying("N_Kamikaza") == FALSE )) g_engine->audio->Play("N_Kamikaza");
  1926.  
  1927. if (level==3) block->setColor(0xFFBBEEFF);
  1928. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  1929. g_engine->addEntity( block );
  1930. }
  1931.  
  1932. void addHarpija( char smjer)
  1933. {
  1934.  
  1935. Sprite *block = new Sprite();
  1936.  
  1937. if ( smjer == 'D')
  1938. {
  1939. block->setImage(N_HarpijaD_T);
  1940. block->Gledam='L';
  1941. }
  1942. else if ( smjer == 'L' )
  1943. {
  1944. block->setImage(N_HarpijaL_T);
  1945. block->Gledam='D';
  1946. }
  1947. else return;
  1948.  
  1949. block->setObjectType(N_HARPIJA);
  1950. block->setTotalFrames(9);
  1951. block->setColumns(5);
  1952. block->setSize(93,110);
  1953. block->setFrameTimer(100);
  1954. block->setCurrentFrame( rand()%8 );
  1955. block->pucaj=2100 + (rand() % 500);
  1956. block->energy = 4;
  1957. block->LevelID=level;
  1958.  
  1959. if ( smjer == 'D')
  1960. {
  1961. block->setPosition(SCREENW+rand()%100,-5+rand()%100);
  1962. block->setVelocity(-HARPIJA_VEL, 0);
  1963. }
  1964. else if ( smjer == 'L' )
  1965. {
  1966. block->setPosition(-(rand()%100),-5+rand()%100);
  1967. block->setVelocity(HARPIJA_VEL, 0);
  1968. }
  1969. else return;
  1970.  
  1971. if (level==3) block->setColor(0xFFBBEEFF);
  1972. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  1973. g_engine->addEntity( block );
  1974. }
  1975.  
  1976. void addSetacPlavi( char Polozaj)
  1977. {
  1978.  
  1979. int GornjaGranica;
  1980. int DonjaGranica;
  1981. int Y;
  1982. int Dolje;
  1983. if (level == 6 || level == 7) Dolje = 60;
  1984. else Dolje=0;
  1985.  
  1986. Sprite *block = new Sprite();
  1987. block->setObjectType(N_SETACPLAVI);
  1988. if (Polozaj == 'D')
  1989. {
  1990. block->setImage(N_SetacPlaviD_T);
  1991. block->Gledam='L';
  1992. }
  1993. else
  1994. {
  1995. block->setImage(N_SetacPlaviL_T);
  1996. block->Gledam='D';
  1997. }
  1998. block->setTotalFrames(16);
  1999. block->setColumns(4);
  2000. block->setSize(217,235);
  2001. block->setFrameTimer(60);
  2002. block->setCurrentFrame(rand()%15);
  2003. block->energy = 10;
  2004. block->pucaj = 1800 + (rand() % 950);
  2005. block->LevelID=level;
  2006.  
  2007. GornjaGranica=340-block->getHeight()+Dolje;
  2008. DonjaGranica=SCREENH-block->getHeight();
  2009. Y = DonjaGranica - ( rand() % ( DonjaGranica - GornjaGranica ) );
  2010.  
  2011. if (Polozaj == 'D')
  2012. {
  2013. block->setPosition(SCREENW-15,Y);
  2014. block->setVelocity(-(SETAC_VEL+1)+1*SmanjiSamBrzinu,0);
  2015. // polozaj na ekranu dokle ce hodati
  2016. block->PolozajX=(rand()%350)+650;
  2017. }
  2018. else
  2019. {
  2020. block->setPosition(-block->getWidth()+15,Y);
  2021. block->setVelocity((SETAC_VEL+1)-1*SmanjiSamBrzinu,0);
  2022. // polozaj na ekranu dokle ce hodati
  2023. block->PolozajX=(rand()%100)+200;
  2024. }
  2025.  
  2026. if (level==3) block->setColor(0xFFBBEEFF);
  2027. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  2028. g_engine->addEntity( block );
  2029. }
  2030.  
  2031. void addSetacCrveni( char Polozaj)
  2032. {
  2033.  
  2034. int GornjaGranica;
  2035. int DonjaGranica;
  2036. int Y;
  2037. int Dolje;
  2038. if (level == 6 || level == 7) Dolje = 60;
  2039. else Dolje=0;
  2040.  
  2041. Sprite *block = new Sprite();
  2042. block->setObjectType(N_SETACCRVENI);
  2043. if (Polozaj == 'D')
  2044. {
  2045. block->setImage(N_SetacCrveniD_T);
  2046. block->Gledam='L';
  2047. }
  2048. else
  2049. {
  2050. block->setImage(N_SetacCrveniL_T);
  2051. block->Gledam='D';
  2052. }
  2053. block->setTotalFrames(16);
  2054. block->setColumns(5);
  2055. block->setSize(295,345);
  2056. block->setFrameTimer(80);
  2057. block->setCurrentFrame(rand()%15);
  2058. block->energy = 50;
  2059. block->pucaj = 2500 + (rand()%1000);
  2060. block->LevelID=level;
  2061.  
  2062. GornjaGranica=340-block->getHeight()+Dolje;
  2063. DonjaGranica=SCREENH-block->getHeight();
  2064. Y = DonjaGranica - ( rand() % ( DonjaGranica - GornjaGranica ) );
  2065.  
  2066. if (Polozaj == 'D')
  2067. {
  2068. block->setPosition(SCREENW-15,Y);
  2069. block->setVelocity(-SETAC_VEL+1*SmanjiSamBrzinu,0);
  2070. // polozaj na ekranu dokle ce hodati
  2071. block->PolozajX=(rand()%200)+850;
  2072. }
  2073. else
  2074. {
  2075. block->setPosition(-block->getWidth()+15,Y);
  2076. block->setVelocity(SETAC_VEL-1*SmanjiSamBrzinu,0);
  2077. // polozaj na ekranu dokle ce hodati
  2078. block->PolozajX=(rand()%100)+50;
  2079. }
  2080.  
  2081. if (level==3) block->setColor(0xFFBBEEFF);
  2082. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  2083. g_engine->addEntity( block );
  2084. }
  2085.  
  2086. void addBik()
  2087. {
  2088.  
  2089. Sprite *block = new Sprite();
  2090. int GornjaGranica;
  2091. int DonjaGranica;
  2092. double Y;
  2093. int Dolje;
  2094. if (level == 6 || level == 7) Dolje = 60;
  2095. else Dolje=0;
  2096.  
  2097. block->setObjectType(N_BIK);
  2098. block->setImage(N_Bik_T);
  2099. block->setTotalFrames(20);
  2100. block->setColumns(5);
  2101. block->setSize(239,149);
  2102. block->setFrameTimer(30);
  2103. block->setCurrentFrame(rand()%15);
  2104. block->energy = 16;
  2105. block->pucaj = 2500;
  2106. block->LevelID=level;
  2107.  
  2108. GornjaGranica=340-block->getHeight()+Dolje;
  2109. DonjaGranica=SCREENH-block->getHeight();
  2110.  
  2111. Y = DonjaGranica - ( rand() % ( DonjaGranica - GornjaGranica ) );
  2112. block->setPosition(SCREENW, Y);
  2113.  
  2114. block->setVelocity(-BIK_VEL,0);
  2115.  
  2116. //upali se zvuk samo ako nema istog spritea i ako vec ne svira
  2117. if ((g_engine->findEntity(N_BIK) == NULL) || (g_engine->audio->IsPlaying("N_BikRun") == FALSE )) g_engine->audio->Play("N_BikRun");
  2118.  
  2119. if (level==3) block->setColor(0xFFBBEEFF);
  2120. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  2121. g_engine->addEntity( block );
  2122. }
  2123.  
  2124. void addGnaarFemale()
  2125. {
  2126.  
  2127. Sprite *block = new Sprite();
  2128. int GornjaGranica;
  2129. int DonjaGranica;
  2130. int Y;
  2131. int Dolje;
  2132. if (level == 6 || level == 7) Dolje = 60;
  2133. else Dolje=0;
  2134.  
  2135. block->setObjectType(N_GNAARFEMALE);
  2136. block->setImage(N_GnaarFemale_T);
  2137. block->setTotalFrames(9);
  2138. block->setColumns(5);
  2139. block->setSize(144,125);
  2140. block->setFrameTimer(65);
  2141. block->setCurrentFrame(rand()%7);
  2142. block->energy = 6;
  2143. block->pucaj = 500;
  2144. block->LevelID=level;
  2145.  
  2146. GornjaGranica=330-block->getHeight()+Dolje;
  2147. DonjaGranica=SCREENH-block->getHeight();
  2148. Y = DonjaGranica - ( rand() % ( DonjaGranica - GornjaGranica ) );
  2149. block->setPosition(SCREENW,Y);
  2150.  
  2151. Vector3 Gnaar_FPos = block->getPosition();
  2152. block->setVelocity(-GNAAR_VEL,0);
  2153.  
  2154. if (level==3) block->setColor(0xFFBBEEFF);
  2155. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  2156. g_engine->addEntity( block );
  2157. }
  2158.  
  2159. void addGnaarMale()
  2160. {
  2161.  
  2162. Sprite *block = new Sprite();
  2163. int GornjaGranica;
  2164. int DonjaGranica;
  2165. int Y;
  2166. int Dolje;
  2167. if (level == 6 || level == 7) Dolje = 60;
  2168. else Dolje=0;
  2169.  
  2170. block->setObjectType(N_GNAARMALE);
  2171. block->setImage(N_GnaarMale_T);
  2172. block->setTotalFrames(9);
  2173. block->setColumns(5);
  2174. block->setSize(109,89);
  2175. block->setFrameTimer(65);
  2176. block->setCurrentFrame(rand()%7);
  2177. block->energy = 2;
  2178. block->pucaj = 500;
  2179. block->LevelID=level;
  2180.  
  2181. GornjaGranica=330-block->getHeight()+Dolje;
  2182. DonjaGranica=SCREENH-block->getHeight();
  2183. Y = DonjaGranica - ( rand() % ( DonjaGranica - GornjaGranica ) );
  2184. if ( rand()%2 == 0 ) block->setPosition(SCREENW,Y);
  2185. else block->setPosition(SCREENW+50,Y);
  2186.  
  2187. block->setVelocity(-GNAAR_VEL,0);
  2188.  
  2189. if (level==3) block->setColor(0xFFBBEEFF);
  2190. if (level>=6 && level<8) block->setColor(0xFFFFCCCC);
  2191. g_engine->addEntity( block );
  2192. }
  2193.  
  2194. void addPalma(double x , double y, double velicina)
  2195. {
  2196. Sprite *palma = new Sprite();
  2197. palma->setObjectType(OBJECT_PALMA);
  2198. palma->setImage(I_PalmaT);
  2199. palma->setTotalFrames(8);
  2200. palma->setColumns(5);
  2201. palma->setCollidable(false);
  2202. palma->setSize(165,355);
  2203. palma->setScale(velicina);
  2204. palma->setCurrentFrame( rand()%4);
  2205. palma->setFrameTimer(200);
  2206. palma->setPosition(x,y);
  2207. palma->LevelID=level;
  2208. if (level==3) palma->setColor(0xFFBBEEFF);
  2209. if (level>=6 && level<8) palma->setColor(0xFFFFCCCC);
  2210. g_engine->addEntity( palma );
  2211. }
  2212.  
  2213. void addStup(double x , double y, double velicina , char smjer)
  2214. {
  2215. Sprite *stup = new Sprite();
  2216. stup->setObjectType(OBJECT_STUP);
  2217. if ( smjer =='D' ) stup->setImage(I_StupD_T);
  2218. if ( smjer =='L' ) stup->setImage(I_StupL_T);
  2219. stup->setCollidable(false);
  2220. stup->setSize(60,126);
  2221. stup->setScale(velicina);
  2222. stup->setCurrentFrame( rand()%4);
  2223. stup->setFrameTimer(200);
  2224. stup->setPosition(x,y);
  2225. stup->LevelID=level;
  2226. if (level==3) stup->setColor(0xFFBBEEFF);
  2227. if (level>=6 && level<8) stup->setColor(0xFFFFCCCC);
  2228. g_engine->addEntity( stup );
  2229. }
  2230.  
  2231. void addLGB()
  2232. {
  2233. Sprite *LGB = new Sprite();
  2234. LGB->setObjectType(OBJECT_LGB);
  2235. LGB->setImage(I_LGB_T);
  2236. LGB->setLifetime(3500);
  2237. LGB->setCollidable(false);
  2238. LGB->LevelID=level;
  2239. LGB->setPosition(META->getX()+45,META->getY()-160);
  2240. g_engine->addEntity( LGB );
  2241. g_engine->audio->Play("Sam_Hey");
  2242. }
  2243.  
  2244. void addCreditsText()
  2245. {
  2246. Sprite *CreditsS = new Sprite();
  2247. CreditsS->setObjectType(CREDITS);
  2248. CreditsS->setImage(CreditsText);
  2249. CreditsS->setCollidable(false);
  2250. CreditsS->setSize(414,3600);
  2251. CreditsS->setPosition(SCREENW/2-207,SCREENH-205);
  2252. CreditsS->setVelocity(0,-1.7+SmanjiSamBrzinu*0.8);
  2253. g_engine->addEntity( CreditsS );
  2254. }
  2255.  
  2256. void addCreditsB()
  2257. {
  2258. Sprite *CreditsB = new Sprite();
  2259. CreditsB->setObjectType(CREDITSB);
  2260. CreditsB->setImage(B_Credits2);
  2261. CreditsB->setCollidable(false);
  2262. CreditsB->setPosition(0,0);
  2263. g_engine->addEntity( CreditsB );
  2264. }
  2265.  
  2266. void addIntroText()
  2267. {
  2268. Sprite *IntroText = new Sprite();
  2269. IntroText->setObjectType(CREDITS);
  2270. IntroText->setImage(IntroText_T);
  2271. IntroText->setCollidable(false);
  2272. IntroText->setVelocity(0,-2+SmanjiSamBrzinu);
  2273. IntroText->setSize(425,400);
  2274. IntroText->setPosition(SCREENW/2-212,SCREENH);
  2275. g_engine->addEntity( IntroText );
  2276. }
  2277.  
  2278. void addExplosionR( double x, double y)
  2279. {
  2280. Sprite *expl = new Sprite();
  2281. expl->setObjectType(OBJECT_EXPLOSION);
  2282. expl->setImage(Explosion_R);
  2283. expl->setColumns(5);
  2284. expl->setCollidable(false);
  2285. expl->setSize(107,150);
  2286. expl->setPosition(x,y);
  2287. expl->setTotalFrames(17);
  2288. expl->setFrameTimer(40);
  2289. expl->setLifetime(700-SmanjiLifeTime);
  2290. expl->LevelID=level;
  2291. g_engine->addEntity( expl );
  2292. g_engine->audio->Play("explode2");
  2293. }
  2294.  
  2295. void addExplosionK(double x , double y)
  2296. {
  2297. Sprite *expl2 = new Sprite();
  2298. expl2->setObjectType(OBJECT_EXPLOSION);
  2299. expl2->setImage(Explosion_K);
  2300. expl2->setColumns(5);
  2301. expl2->setCollidable(false);
  2302. expl2->setSize(272,204);
  2303. expl2->setPosition(x,y);
  2304. expl2->setTotalFrames(13);
  2305. expl2->setFrameTimer(40);
  2306. expl2->setLifetime(550-SmanjiLifeTime);
  2307. expl2->LevelID=level;
  2308. g_engine->addEntity( expl2 );
  2309. g_engine->audio->Play("explode2");
  2310. }
  2311.  
  2312. void addExplosionV(double x , double y)
  2313. {
  2314. Sprite *expl2 = new Sprite();
  2315. expl2->setObjectType(OBJECT_EXPLOSION);
  2316. expl2->setImage(Explosion_V);
  2317. expl2->setColumns(6);
  2318. expl2->setCollidable(false);
  2319. expl2->setSize(183,183);
  2320. expl2->setPosition(x,y);
  2321. expl2->setTotalFrames(18);
  2322. expl2->setFrameTimer(25);
  2323. expl2->setLifetime(430-SmanjiLifeTime);
  2324. expl2->LevelID=level;
  2325. g_engine->addEntity( expl2 );
  2326. g_engine->audio->Play("explode2");
  2327. }
  2328.  
  2329. void addHarpijaKrila(double x , double y)
  2330. {
  2331. Sprite *HarpijaKrilo = new Sprite();
  2332. HarpijaKrilo->setObjectType(OBJECT_KRV);
  2333. HarpijaKrilo->setImage(HarpijaKrilo_T);
  2334. HarpijaKrilo->setCollidable(false);
  2335. HarpijaKrilo->setSize(38,67);
  2336. HarpijaKrilo->setPosition(x,y);
  2337. HarpijaKrilo->setLifetime(450);
  2338. HarpijaKrilo->setRotation(g_engine->math->toRadians(rand()%360));
  2339. HarpijaKrilo->setVelocity(-4+1*SmanjiSamBrzinu,5-1*SmanjiSamBrzinu);
  2340. HarpijaKrilo->LevelID=level;
  2341. g_engine->addEntity( HarpijaKrilo );
  2342.  
  2343. Sprite *HarpijaKrilo2 = new Sprite();
  2344. HarpijaKrilo2->setObjectType(OBJECT_KRV);
  2345. HarpijaKrilo2->setImage(HarpijaKrilo_T);
  2346. HarpijaKrilo2->setCollidable(false);
  2347. HarpijaKrilo2->setSize(38,67);
  2348. HarpijaKrilo2->setPosition(x,y);
  2349. HarpijaKrilo2->setLifetime(450);
  2350. HarpijaKrilo2->setRotation(g_engine->math->toRadians(rand()%360));
  2351. HarpijaKrilo2->setVelocity(4-1*SmanjiSamBrzinu,5-1*SmanjiSamBrzinu);
  2352. HarpijaKrilo2->LevelID=level;
  2353. g_engine->addEntity( HarpijaKrilo2 );
  2354.  
  2355. }
  2356.  
  2357. void addKrilo(double x , double y, double r)
  2358. {
  2359. Sprite *krv = new Sprite();
  2360. krv->setObjectType(OBJECT_MISC);
  2361. krv->setImage(Krilo);
  2362. krv->setCollidable(false);
  2363. krv->setSize(357,150);
  2364. krv->setPosition(boss->getX()+300,boss->getY()+150);
  2365. krv->setLifetime(4000);
  2366. krv->setRotation(g_engine->math->toRadians(r));
  2367. krv->setVelocity(x,y);
  2368. krv->LevelID=level;
  2369. g_engine->addEntity( krv );
  2370. }
  2371.  
  2372. void addRuka(double x , double y, double r)
  2373. {
  2374. Sprite *krv = new Sprite();
  2375. krv->setObjectType(OBJECT_MISC);
  2376. krv->setImage(Ruka);
  2377. krv->setCollidable(false);
  2378. krv->setSize(184,86);
  2379. krv->setPosition(boss->getX()+300,boss->getY()+150);
  2380. krv->setLifetime(4000);
  2381. krv->setRotation(g_engine->math->toRadians(r));
  2382. krv->setVelocity(x,y);
  2383. krv->LevelID=level;
  2384. g_engine->addEntity( krv );
  2385. }
  2386.  
  2387. void addKrv(double x , double y , char boja)
  2388. {
  2389. Sprite *krv = new Sprite();
  2390. krv->setObjectType(OBJECT_KRV);
  2391. if ( boja == 'C' ) krv->setImage(Krv_C);
  2392. if ( boja == 'Z' ) {krv->setImage(Krv_Z);krv->setScale(1.2);}
  2393. krv->setTotalFrames(12);
  2394. krv->setColumns(6);
  2395. krv->setCollidable(false);
  2396. krv->setSize(60,60);
  2397. krv->setFrameTimer(25);
  2398. krv->setPosition(x,y);
  2399. krv->setLifetime(280-SmanjiLifeTime);
  2400. krv->LevelID=level;
  2401. if (level==3) krv->setColor(0xFFBBEEFF);
  2402. if (level>=6) krv->setColor(0xFFFFCCCC);
  2403. g_engine->addEntity( krv );
  2404. }
  2405.  
  2406. void addGMan()
  2407. {
  2408. Sprite *GMan = new Sprite();
  2409. GMan->setImage(I_GM_T);
  2410. GMan->setObjectType(GMAN);
  2411. GMan->setSize(67,144);
  2412. GMan->setTotalFrames(7);
  2413. GMan->setColumns(5);
  2414. GMan->setCollidable(false);
  2415. GMan->setFrameTimer(150);
  2416. GMan->setPosition(1150,400);
  2417. GMan->setVelocity(4-SmanjiSamBrzinu*2,0);
  2418. GMan->LevelID=level;
  2419. g_engine->addEntity( GMan );
  2420. }
  2421.  
  2422. void addCrowbar(double x , double y )
  2423. {
  2424. Sprite *Crowbar = new Sprite();
  2425. Crowbar->setImage(I_CB_T);
  2426. Crowbar->setObjectType(CROWBAR);
  2427. Crowbar->setRotation(0.5);
  2428. Crowbar->setVelocity(0,9-SmanjiSamBrzinu*3);
  2429. Crowbar->setPosition(x,y);
  2430. Crowbar->LevelID=level;
  2431. g_engine->addEntity( Crowbar );
  2432. }
  2433.  
  2434. void addSamMrtav(double x, double y, char gledam)
  2435. {
  2436. Sprite *Sam_mrtav=new Sprite();
  2437.  
  2438. if (gledam=='D') Sam_mrtav->setImage(Sam_MrtavD_T);
  2439. else Sam_mrtav->setImage(Sam_MrtavL_T);
  2440. Sam_mrtav->setObjectType(MRTVAC_SAM);
  2441. Sam_mrtav->setSize(133,62);
  2442. Sam_mrtav->setPosition(x,y);
  2443. Sam_mrtav->LevelID=level;
  2444. Sam_mrtav->setCollidable(true);
  2445. g_engine->addEntity(Sam_mrtav);
  2446. }
  2447.  
  2448. void addItem( int vrsta , double x , double y , bool oruzje, int kolicina)
  2449. {
  2450. Sprite *Item=new Sprite();
  2451. Item->setTotalFrames(1);
  2452. Item->setColumns(1);
  2453. Item->LevelID=level;
  2454. Item->setPosition(x,y);
  2455. Item->energy=kolicina;
  2456. switch(vrsta)
  2457. {
  2458. case 999:
  2459. Item->setObjectType(SSF);
  2460. Item->setImage(I_SeriousSecondaryFire_T);
  2461. break;
  2462. case 25:
  2463. Item->setObjectType(HEALTH_25);
  2464. Item->setImage(I_Health25_T);
  2465. break;
  2466. case 100:
  2467. Item->setObjectType(HEALTH_100);
  2468. Item->setImage(Health100);
  2469. break;
  2470. case 4:
  2471. Item->setObjectType(MM);
  2472. if ( oruzje == false )
  2473. {
  2474. Item->setImage(MunicijaMinigun);
  2475. Item->Stanje=2;
  2476. }
  2477. else
  2478. {
  2479. Item->setImage(I_Minigun_T);
  2480. Item->Stanje=1;
  2481. }
  2482. break;
  2483. case 5:
  2484. Item->setObjectType(MR);
  2485. if ( oruzje == false )
  2486. {
  2487. Item->setImage(MunicijaRaketa);
  2488. Item->Stanje=2;
  2489. }
  2490. else
  2491. {
  2492. Item->setImage(I_RocketLauncher_T);
  2493. Item->Stanje=1;
  2494. }
  2495. break;
  2496. case 7:
  2497. Item->setObjectType(ML);
  2498. if ( oruzje == false )
  2499. {
  2500. Item->setImage(MunicijaLaser);
  2501. Item->Stanje=2;
  2502. }
  2503. else
  2504. {
  2505. Item->setImage(I_Laser_T);
  2506. Item->Stanje=1;
  2507. }
  2508. break;
  2509. case 8:
  2510. Item->setObjectType(MT);
  2511. if ( oruzje == false )
  2512. {
  2513. Item->setImage(MunicijaTop);
  2514. Item->Stanje=2;
  2515. }
  2516. else
  2517. {
  2518. Item->setImage(I_Top_T);
  2519. Item->Stanje=1;
  2520. }
  2521. break;
  2522. }
  2523.  
  2524. if (level==3) Item->setColor(0xFFBBEEFF);
  2525. if (level>=6 && level<8) Item->setColor(0xFFFFCCCC);
  2526. g_engine->addEntity(Item);
  2527. }
  2528.  
  2529. //UREDJENO
  2530. void firebullet( int Mod ) //igrac puca
  2531. {
  2532.  
  2533. Sprite *bullet = new Sprite();
  2534. int k;
  2535. double brzina,pmx,pmy,x,y;
  2536.  
  2537. //Kut za rotiranje metka i odreðivanje smjera
  2538. Kut_Pucanja = -(g_engine->math->toDegrees(paddle_angle)) + 90 ;
  2539. //Kut za odreðivanje položaja metka
  2540. NekiKut = g_engine->math->toDegrees(paddle_angle);
  2541. //Rotacija
  2542. bullet->setRotation( g_engine->math->toRadians(Kut_Pucanja) );
  2543.  
  2544. //NOVO 7.9.2010.- PUCANJE IZ VRHA ORUZJA
  2545. switch(oruzje)
  2546. {
  2547. case 0:
  2548. brzina=pistoljV;
  2549. //Smjer metka
  2550. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja) * brzina;
  2551. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja) * brzina;
  2552. bullet->setVelocity(pmx, pmy);
  2553. x = META->getX() + META->getWidth()/2;
  2554. y = META->getY() + META->getHeight()/2;
  2555. d=g_engine->math->Distance(x,y,x+50,y-30);
  2556. polx=d* ( cos(NekiKut*(3.141592654/180)));
  2557. poly=d* ( sin(NekiKut*(3.141592654/180)));
  2558. if (paddle->Gledam == 'D') bullet->setPosition( x+polx-20, y-poly-50 );
  2559. if ((paddle->Gledam == 'D') && ((NekiKut<-50) && (NekiKut>-69))) bullet->setPosition( x+polx-5, y-poly-50 );
  2560. if (paddle->Gledam == 'L') bullet->setPosition( x+polx-10, y-poly-50 );
  2561. if ((paddle->Gledam == 'L') && ((NekiKut>110) && (NekiKut<125))) bullet->setPosition( x+polx+15, y-poly-20 );
  2562. if ((paddle->Gledam == 'L') && ((NekiKut<-110) && (NekiKut>-150))) bullet->setPosition( x+polx-35, y-poly-40 );
  2563. bullet->setObjectType(METAK);
  2564. bullet->setImage(A_MetakP_T);
  2565. bullet->setLifetime(2000);
  2566. bullet->setSize(30,50);
  2567. g_engine->audio->Play("fire");
  2568. break;
  2569. case 3:
  2570. brzina=sacmaricaV;
  2571. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja) * brzina;
  2572. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja) * brzina;
  2573. bullet->setVelocity(pmx, pmy);
  2574. x = META->getX() + META->getWidth()/2;
  2575. y = META->getY() + META->getHeight()/2;
  2576. d=g_engine->math->Distance(x,y,x+60,y-30);
  2577. polx=d* ( cos(NekiKut*(3.141592654/180)));
  2578. poly=d* ( sin(NekiKut*(3.141592654/180)));
  2579. if (paddle->Gledam == 'D') bullet->setPosition( x+polx-20, y-poly-45 );
  2580. if ((paddle->Gledam == 'D') && ((NekiKut>47) && (NekiKut<69))) bullet->setPosition( x+polx-35, y-poly-45 );
  2581. if ((paddle->Gledam == 'D') && ((NekiKut<-35) && (NekiKut>-69))) bullet->setPosition( x+polx-10, y-poly-30 );
  2582. if (paddle->Gledam == 'L') bullet->setPosition( x+polx-20, y-poly-50 );
  2583. if ((paddle->Gledam == 'L') && ((NekiKut>111) && (NekiKut<115))) bullet->setPosition( x+polx-15, y-poly-45 );
  2584. if ((paddle->Gledam == 'L') && ((NekiKut<-110) && (NekiKut>-150))) bullet->setPosition( x+polx-40, y-poly-40 );
  2585. bullet->setObjectType(SACMA);
  2586. bullet->setImage(A_Sacma_T);
  2587. bullet->setSize(48,48);
  2588. bullet->setLifetime(2000);
  2589. g_engine->audio->Play("FireSacmarica");
  2590. break;
  2591. case 4:
  2592. brzina=minigunV;
  2593. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja) * brzina;
  2594. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja) * brzina;
  2595. bullet->setVelocity(pmx, pmy);
  2596. x = META->getX() + META->getWidth()/2;
  2597. y = META->getY() + META->getHeight()*0.1;
  2598. d=g_engine->math->Distance(x,y,x+125,y);
  2599. polx=d* ( cos(NekiKut*(3.141592654/180)));
  2600. poly=d* ( sin(NekiKut*(3.141592654/180)));
  2601. if (Mod == 2)
  2602. {
  2603. k=rand()%10;
  2604. pmx = g_engine->math->LinearVelocityX(-5+Kut_Pucanja+k) * brzina;
  2605. pmy = g_engine->math->LinearVelocityY(-5+Kut_Pucanja+k) * brzina;
  2606. }
  2607. else
  2608. {
  2609. k=rand()%4;
  2610. pmx = g_engine->math->LinearVelocityX(-2+Kut_Pucanja+k) * brzina;
  2611. pmy = g_engine->math->LinearVelocityY(-2+Kut_Pucanja+k) * brzina;
  2612. }
  2613. bullet->setVelocity(pmx, pmy);
  2614. bullet->setRotation( g_engine->math->toRadians(Kut_Pucanja) );
  2615. bullet->setPosition( x+polx -10 , y-poly+35 );
  2616. bullet->setObjectType(METAK);
  2617. bullet->setImage(A_Minigun_T);
  2618. bullet->setLifetime(2000);
  2619. bullet->setSize(24,40);
  2620. g_engine->audio->Play("FireMinigun");
  2621. MunicijaMG--;
  2622. break;
  2623. case 5:
  2624. brzina=rocketV;
  2625. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja) * brzina;
  2626. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja) * brzina;
  2627. bullet->setVelocity(pmx, pmy);
  2628. x = META->getX() + META->getWidth()/2;
  2629. y = META->getY() + META->getHeight()*0.1;
  2630. d=g_engine->math->Distance(x,y,x+30,y);
  2631. polx=d* ( cos(NekiKut*(3.141592654/180)));
  2632. poly=d* ( sin(NekiKut*(3.141592654/180)));
  2633. bullet->setPosition( x+polx-10 , y-poly+5 );
  2634. bullet->setObjectType(RAKETA);
  2635. bullet->setImage(A_Raketa_T);
  2636. bullet->setSize(21,68);
  2637. bullet->setLifetime(2000);
  2638. if (Mod==1)
  2639. {
  2640. bullet->setVelocity(pmx,pmy);
  2641. g_engine->audio->Play("rocket");
  2642. MunicijaRL--;
  2643. }
  2644.  
  2645. if (Mod==2 && MunicijaRL==1)
  2646. {
  2647. bullet->setVelocity(pmx,pmy);
  2648. g_engine->audio->Play("rocket");
  2649. MunicijaRL--;
  2650. }
  2651.  
  2652. if((Mod==2) && (MunicijaRL>1))
  2653. {
  2654. Sprite *bullet2 = new Sprite();
  2655. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja-3) * brzina;
  2656. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja-3) * brzina;
  2657. bullet->setVelocity(pmx,pmy);
  2658. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja+3) * brzina;
  2659. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja+3) * brzina;
  2660. bullet2->setObjectType(RAKETA);
  2661. bullet2->setImage(A_Raketa_T);
  2662. bullet2->setPosition( x+polx-10 , y-poly+5 );
  2663. bullet2->setRotation( g_engine->math->toRadians(Kut_Pucanja));
  2664. bullet2->setSize(21,68);
  2665. bullet2->setLifetime(2000);
  2666. bullet2->setVelocity(pmx,pmy);
  2667. MunicijaRL--;
  2668. MunicijaRL--;
  2669. bullet2->LevelID=level;
  2670. g_engine->addEntity(bullet2);
  2671. g_engine->audio->Play("rocket3");
  2672. }
  2673. break;
  2674. case 7:
  2675. brzina=laserV;
  2676. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja) * brzina;
  2677. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja) * brzina;
  2678. bullet->setVelocity(pmx, pmy);
  2679. x = META->getX() + META->getWidth()/2;
  2680. y = META->getY() + META->getHeight()/2;
  2681. d=g_engine->math->Distance(x,y,x+60,y-30);
  2682. polx=d* ( cos(NekiKut*(3.141592654/180)));
  2683. poly=d* ( sin(NekiKut*(3.141592654/180)));
  2684. if (paddle->Gledam == 'D') bullet->setPosition( x+polx-20, y-poly-45 );
  2685. if ((paddle->Gledam == 'D') && ((NekiKut<-35) && (NekiKut>-69))) bullet->setPosition( x+polx-5, y-poly-50 );
  2686. if (paddle->Gledam == 'L') bullet->setPosition( x+polx-10, y-poly-45 );
  2687. if ((paddle->Gledam == 'L') && ((NekiKut>110) && (NekiKut<125))) bullet->setPosition( x+polx+10, y-poly-25 );
  2688. if ((paddle->Gledam == 'L') && ((NekiKut<-110) && (NekiKut>-150))) bullet->setPosition( x+polx-30, y-poly-40 );
  2689. bullet->setSize(24,40);
  2690. bullet->setLifetime(2000);
  2691. if (Mod==1)
  2692. {
  2693. bullet->setObjectType(LASER);
  2694. bullet->setImage(A_Laser_T);
  2695. g_engine->audio->Play("FireLaser");
  2696. MunicijaL--;
  2697. }
  2698. if (Mod==2)
  2699. {
  2700. if ( MunicijaL <= 1 ) return;
  2701. bullet->setObjectType(LASER2);
  2702. bullet->setImage(A_Laser2_T);
  2703. g_engine->audio->Play("FireLaser2");
  2704. MunicijaL--;
  2705. MunicijaL--;
  2706. }
  2707. break;
  2708. case 8:
  2709. brzina=kuglaV;
  2710. pmx = g_engine->math->LinearVelocityX(Kut_Pucanja) * brzina;
  2711. pmy = g_engine->math->LinearVelocityY(Kut_Pucanja) * brzina;
  2712. bullet->setVelocity(pmx, pmy);
  2713. x = META->getX() + META->getWidth()/2;
  2714. y = META->getY() + META->getHeight()/2;
  2715. d=g_engine->math->Distance(x,y,x+35,y);
  2716. polx=d* ( cos(NekiKut*(3.141592654/180)));
  2717. poly=d* ( sin(NekiKut*(3.141592654/180)));
  2718. bullet->setPosition( x+polx , y-poly-15 );
  2719. if ((paddle->Gledam == 'D') && ((NekiKut<69) && (NekiKut>25))) bullet->setPosition( x+polx-10 , y-poly-30 );
  2720. if ((paddle->Gledam == 'D') && ((NekiKut<-10) && (NekiKut>-69))) bullet->setPosition( x+polx-10 , y-poly-5 );
  2721. if (paddle->Gledam == 'L') bullet->setPosition( x+polx-30 , y-poly-15 );
  2722. if ((paddle->Gledam == 'L') && ((NekiKut>110) && (NekiKut<175))) bullet->setPosition( x+polx-30 , y-poly-25 );
  2723. if ((paddle->Gledam == 'L') && ((NekiKut<-110) && (NekiKut>-155))) bullet->setPosition( x+polx-20 , y-poly-5 );
  2724. bullet->setObjectType(TOPOVSKA_KUGLA);
  2725. bullet->setImage(A_Kugla_T);
  2726. bullet->setSize(40,40);
  2727. bullet->setLifetime(2000);
  2728. g_engine->audio->Play("FireTop");
  2729. MunicijaT--;
  2730. break;
  2731. }
  2732.  
  2733. bullet->LevelID=level;
  2734. g_engine->addEntity(bullet);
  2735. }
  2736.  
  2737. void N_FireSetacPlavi(Sprite *SetacPlavi)
  2738. {
  2739.  
  2740. double Kut;
  2741. Sprite *bullet1 = new Sprite();
  2742. bullet1->setObjectType(N_LASER);
  2743. bullet1->setImage(A_LaserSP_T);
  2744. bullet1->setSize(24,40);
  2745. bullet1->setLifetime(2500);
  2746. bullet1->LevelID=level;
  2747.  
  2748. Sprite *bullet2 = new Sprite();
  2749. bullet2->setObjectType(N_LASER);
  2750. bullet2->setImage(A_LaserSP_T);
  2751. bullet2->setSize(24,40);
  2752. bullet2->setLifetime(2500);
  2753. bullet2->LevelID=level;
  2754.  
  2755. double pxK = SetacPlavi->getX();
  2756. double pyK = SetacPlavi->getY();
  2757.  
  2758. if (SetacPlavi->Gledam=='L')
  2759. {
  2760. bullet1->setPosition(pxK+60,pyK+100);
  2761. bullet2->setPosition(pxK+30,pyK+90);
  2762. }
  2763. else
  2764. {
  2765. bullet1->setPosition(pxK+SetacPlavi->getWidth()-30,pyK+90);
  2766. bullet2->setPosition(pxK+SetacPlavi->getWidth()-60,pyK+100);
  2767. }
  2768.  
  2769. //calculate angle to target
  2770. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+META->getHeight()/2,bullet1->getX()+bullet1->getWidth()/2,bullet1->getY()+bullet1->getHeight()/2);
  2771. Kut = 270 + g_engine->math->toDegrees( Kut );
  2772. double vvx = g_engine->math->LinearVelocityX(Kut)*BULLET_VEL;
  2773. double vvy = g_engine->math->LinearVelocityY(Kut)*BULLET_VEL;
  2774. bullet1->setVelocity(vvx, vvy);
  2775. //pazi gdje trebaju radijani a gdje stupnjevi
  2776. Kut = g_engine->math->toRadians(Kut);
  2777. bullet1->setRotation(Kut);
  2778.  
  2779. //calculate angle to target
  2780. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+META->getHeight()/2,bullet2->getX()+bullet2->getWidth()/2,bullet2->getY()+bullet2->getHeight()/2);
  2781. Kut = 270 + g_engine->math->toDegrees( Kut );
  2782. vvx = g_engine->math->LinearVelocityX(Kut)*BULLET_VEL;
  2783. vvy = g_engine->math->LinearVelocityY(Kut)*BULLET_VEL;
  2784. bullet2->setVelocity(vvx, vvy);
  2785. //pazi gdje trebaju radijani a gdje stupnjevi
  2786. Kut = g_engine->math->toRadians(Kut);
  2787. bullet2->setRotation(Kut);
  2788.  
  2789. //fire bullet
  2790. g_engine->addEntity(bullet1);
  2791. g_engine->addEntity(bullet2);
  2792. g_engine->audio->Play("Fire_Setac_plavi2");
  2793. SetacPlavi->pucaj = 0.0f;
  2794. }
  2795.  
  2796. void N_FireSetacCrveni(Sprite *SetacCrveni)
  2797. {
  2798.  
  2799. double Kut;
  2800. //stvori raketu1
  2801. Sprite *Rocket1 = new Sprite();
  2802. Rocket1->setObjectType(N_RAKETA);
  2803. Rocket1->setImage(A_RaketaSC_T);
  2804. Rocket1->setSize(25,81);
  2805. Rocket1->setLifetime(2500);
  2806. Rocket1->energy=1;
  2807. Rocket1->LevelID=level;
  2808.  
  2809. //stvori raketu2
  2810. Sprite *Rocket2 = new Sprite();
  2811. Rocket2->setObjectType(N_RAKETA);
  2812. Rocket2->setImage(A_RaketaSC_T);
  2813. Rocket2->setSize(25,81);
  2814. Rocket2->setLifetime(2500);
  2815. Rocket2->energy=1;
  2816. Rocket2->LevelID=level;
  2817.  
  2818. //raketa krece sa pozicije neprijatelja
  2819. double pxK = SetacCrveni->getX();
  2820. double pyK = SetacCrveni->getY();
  2821.  
  2822. if (SetacCrveni->Gledam=='L')
  2823. {
  2824.  
  2825. Rocket1->setPosition(pxK+30,pyK+125);
  2826. Rocket2->setPosition(pxK+120,pyK+125);
  2827. }
  2828. else
  2829. {
  2830. Rocket1->setPosition(pxK+SetacCrveni->getWidth()-30,pyK+125);
  2831. Rocket2->setPosition(pxK+SetacCrveni->getWidth()-120,pyK+125);
  2832. }
  2833.  
  2834. //calculate angle to target
  2835. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+META->getHeight()/2,Rocket1->getX()+Rocket1->getWidth()/2,Rocket1->getY()+Rocket1->getHeight()/2);
  2836. Kut = 270 + g_engine->math->toDegrees( Kut );
  2837. double vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-3-1*SmanjiSamBrzinu);
  2838. double vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-3-1*SmanjiSamBrzinu);
  2839. Rocket1->setVelocity(vvx, vvy);
  2840. //pazi gdje trebaju radijani,a gdje stupnjevi
  2841. Kut = g_engine->math->toRadians(Kut);
  2842. Rocket1->setRotation(Kut);
  2843.  
  2844. //calculate angle to target
  2845. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+META->getHeight()/2,Rocket2->getX()+Rocket2->getWidth()/2,Rocket2->getY()+Rocket2->getHeight()/2);
  2846. Kut = 270 + g_engine->math->toDegrees( Kut );
  2847. vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-3-1*SmanjiSamBrzinu);
  2848. vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-3-1*SmanjiSamBrzinu);
  2849. Rocket2->setVelocity(vvx, vvy);
  2850. //pazi gdje trebaju radijani,a gdje stupnjevi
  2851. Kut = g_engine->math->toRadians(Kut);
  2852. Rocket2->setRotation(Kut);
  2853.  
  2854. //fire bullet
  2855. g_engine->addEntity(Rocket1);
  2856. g_engine->addEntity(Rocket2);
  2857. g_engine->audio->Play("rocket");
  2858. g_engine->audio->Play("rocket");
  2859. SetacCrveni->pucaj = 0.0f;
  2860. }
  2861.  
  2862. //UREDJENO
  2863. void N_FireHarpija(Sprite *Harpija)//HARPIJA PUCA
  2864. {
  2865.  
  2866. double Kut;
  2867. Sprite *bullet1 = new Sprite();
  2868. bullet1->setObjectType(N_HARPIJAPROJEKTIL);
  2869. bullet1->setImage(A_HarpijaP_T);
  2870. bullet1->setSize(9,36);
  2871. bullet1->setLifetime(2500);
  2872. bullet1->LevelID=level;
  2873.  
  2874. //metak krece sa pozicije neprijatelja
  2875. double pxK = Harpija->getX();
  2876. double pyK = Harpija->getY();
  2877.  
  2878. if (Harpija->Gledam=='L')
  2879. {
  2880. bullet1->setPosition(pxK+20,pyK+80);
  2881. }
  2882. else
  2883. {
  2884. bullet1->setPosition(pxK+Harpija->getWidth()-20,pyK+80);
  2885. }
  2886.  
  2887. //calculate angle to target
  2888. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+META->getHeight()/2,bullet1->getX()+bullet1->getWidth()/2,bullet1->getY()+bullet1->getHeight()/2);
  2889. Kut = 270 + g_engine->math->toDegrees( Kut );
  2890. double vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-8);
  2891. double vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-8);
  2892. bullet1->setVelocity(vvx, vvy);
  2893.  
  2894. //pazi gdje trebaju radijani, a gdje stupnjevi
  2895. Kut = g_engine->math->toRadians(Kut);
  2896. bullet1->setRotation(Kut);
  2897.  
  2898. g_engine->addEntity(bullet1);
  2899. g_engine->audio->Play("N_Harpija_Fire");
  2900. //resetiranje brojaca
  2901. Harpija->pucaj = 0.0f;
  2902. }
  2903.  
  2904. void fireB1( double x , double y )
  2905. {
  2906.  
  2907. Sprite *Vatra = new Sprite();
  2908. Vatra->setObjectType(BOSS_VATRA);
  2909. Vatra->setImage(FireBoss1);
  2910. Vatra->setSize(74,521);
  2911. Vatra->setColumns(5);
  2912. Vatra->setTotalFrames(5);
  2913. Vatra->setFrameTimer(50);
  2914. Vatra->setLifetime(4500);
  2915. Vatra->setPosition(x+189,y+280);
  2916. Vatra->LevelID=level;
  2917. g_engine->addEntity(Vatra);
  2918.  
  2919. Sprite *Vatra2 = new Sprite();
  2920. Vatra2->setObjectType(BOSS_VATRA);
  2921. Vatra2->setImage(FireBoss1);
  2922. Vatra2->setSize(74,521);
  2923. Vatra2->setColumns(5);
  2924. Vatra2->setTotalFrames(5);
  2925. Vatra2->setFrameTimer(50);
  2926. Vatra2->setLifetime(4500);
  2927. Vatra2->setPosition(x+609,y+278);
  2928. Vatra2->LevelID=level;
  2929. g_engine->addEntity(Vatra2);
  2930.  
  2931. FireBoss1i2=FireBoss1i2+1;
  2932. if (FireBoss1i2==6)
  2933. {
  2934. boss->Stanje=2;
  2935. FireBoss1i2=0;
  2936. }
  2937.  
  2938. if (g_engine->audio->IsPlaying("BossFly") == true ) g_engine->audio->Stop("BossFly");
  2939. g_engine->audio->Play("B_B1");
  2940. }
  2941.  
  2942. void fireB11( double x , double y )
  2943. {
  2944.  
  2945.  
  2946. Sprite *Vatra = new Sprite();
  2947. Vatra->setObjectType(BOSS_VATRA);
  2948. Vatra->setImage(FireBoss1);
  2949. Vatra->setSize(74,521);
  2950. Vatra->setColumns(5);
  2951. Vatra->setTotalFrames(5);
  2952. Vatra->setFrameTimer(50);
  2953. Vatra->setLifetime(2000);
  2954.  
  2955. if (rand()%2==0)
  2956. {
  2957. Vatra->setPosition(x+189,y+280);
  2958. }
  2959. else
  2960. {
  2961. Vatra->setPosition(x+609,y+278);
  2962. }
  2963.  
  2964. Vatra->LevelID=level;
  2965. g_engine->addEntity(Vatra);
  2966. if (g_engine->audio->IsPlaying("BossFly") == true ) g_engine->audio->Stop("BossFly");
  2967. g_engine->audio->Play("B_B1");
  2968. }
  2969.  
  2970. void fireB2(Sprite *SetacCrveni, int x1, int y1, int x2, int y2, int x3, int y3)
  2971. {
  2972.  
  2973. double Kut;
  2974. //stvori raketu1
  2975. Sprite *Rocket1 = new Sprite();
  2976. Rocket1->setObjectType(BOSS_ROG);
  2977. Rocket1->setImage(A_BRaketa_T);
  2978. Rocket1->setSize(25,81);
  2979. Rocket1->setLifetime(7000);
  2980. Rocket1->energy=1;
  2981. Rocket1->LevelID=level;
  2982.  
  2983. //stvori raketu2
  2984. Sprite *Rocket2 = new Sprite();
  2985. Rocket2->setObjectType(BOSS_ROG);
  2986. Rocket2->setImage(A_BRaketa_T);
  2987. Rocket2->setSize(25,81);
  2988. Rocket2->setLifetime(7000);
  2989. Rocket2->energy=1;
  2990. Rocket2->LevelID=level;
  2991.  
  2992. //stvori raketu3
  2993. Sprite *Rocket3 = new Sprite();
  2994. Rocket3->setObjectType(BOSS_ROG);
  2995. Rocket3->setImage(A_BRaketa_T);
  2996. Rocket3->setSize(25,81);
  2997. Rocket3->setLifetime(7000);
  2998. Rocket3->energy=1;
  2999. Rocket3->LevelID=level;
  3000.  
  3001. //raketa krece sa pozicije neprijatelja
  3002. double pxK = SetacCrveni->getX();
  3003. double pyK = SetacCrveni->getY();
  3004. Rocket1->setPosition(pxK+x1,pyK+y1);
  3005. Rocket2->setPosition(pxK+x2,pyK+y2);
  3006. Rocket3->setPosition(pxK+x3,pyK+y3);
  3007.  
  3008.  
  3009. Kut = g_engine->math->toDegrees( -0.8 );
  3010. double vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-4);
  3011. double vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-4);
  3012. Rocket1->setVelocity(vvx, vvy);
  3013. //pazi gdje trebaju radijani,a gdje stupnjevi
  3014. Kut = g_engine->math->toRadians(Kut);
  3015. Rocket1->setRotation(Kut);
  3016.  
  3017.  
  3018. Kut = g_engine->math->toDegrees( 0 );
  3019. vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-2);
  3020. vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-2);
  3021. Rocket2->setVelocity(vvx, vvy);
  3022. //pazi gdje trebaju radijani,a gdje stupnjevi
  3023. Kut = g_engine->math->toRadians(Kut);
  3024. Rocket2->setRotation(Kut);
  3025.  
  3026. Kut = g_engine->math->toDegrees( 0.8 );
  3027. vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-4);
  3028. vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-4);
  3029. Rocket3->setVelocity(vvx, vvy);
  3030. //pazi gdje trebaju radijani,a gdje stupnjevi
  3031. Kut = g_engine->math->toRadians(Kut);
  3032. Rocket3->setRotation(Kut);
  3033.  
  3034. //fire bullet
  3035. g_engine->addEntity(Rocket1);
  3036. g_engine->addEntity(Rocket2);
  3037. g_engine->addEntity(Rocket3);
  3038. g_engine->audio->Play("rocket");
  3039.  
  3040. FireBoss1i2=FireBoss1i2+1;
  3041. if (FireBoss1i2==6)
  3042. {
  3043. SetacCrveni->Stanje=2;
  3044. FireBoss1i2=0;
  3045. }
  3046. }
  3047.  
  3048. void fireB3(Sprite *SetacCrveni, int x1, int y1, int x2, int y2)
  3049. {
  3050.  
  3051. double Kut;
  3052. //stvori raketu1
  3053. Sprite *Rocket1 = new Sprite();
  3054. Rocket1->setObjectType(BOSS_OKO);
  3055. Rocket1->setImage(A_BOko_T);
  3056. Rocket1->setSize(25,25);
  3057. Rocket1->setLifetime(2000);
  3058. Rocket1->LevelID=level;
  3059.  
  3060. //stvori raketu2
  3061. Sprite *Rocket2 = new Sprite();
  3062. Rocket2->setObjectType(BOSS_OKO);
  3063. Rocket2->setImage(A_BOko_T);
  3064. Rocket2->setSize(25,25);
  3065. Rocket2->setLifetime(2000);
  3066. Rocket2->LevelID=level;
  3067.  
  3068. //raketa krece sa pozicije neprijatelja
  3069. double pxK = SetacCrveni->getX();
  3070. double pyK = SetacCrveni->getY();
  3071. Rocket1->setPosition(pxK+x1,pyK+y1);
  3072. Rocket2->setPosition(pxK+x2,pyK+y2);
  3073.  
  3074. if (SetacCrveni->getObjectType() == BOSS)
  3075. {
  3076. //calculate angle to target
  3077. double vvx = g_engine->math->LinearVelocityX(FireBoss3)*(rocketV-3);
  3078. double vvy = g_engine->math->LinearVelocityY(FireBoss3)*(rocketV-3);
  3079. Rocket1->setVelocity(vvx, vvy);
  3080. Rocket2->setVelocity(vvx, vvy);
  3081. }
  3082.  
  3083. if (SetacCrveni->getObjectType() == BOSS_HEAD && SetacCrveni->Stanje==1)
  3084. {
  3085. //calculate angle to target
  3086. Kut = g_engine->math->AngleToTarget(META->getX()+META->getWidth()/2,META->getY()+META->getHeight()/2,Rocket1->getX()+Rocket1->getWidth()/2,Rocket1->getY()+Rocket1->getHeight()/2);
  3087. Kut = 270 + g_engine->math->toDegrees( Kut );
  3088. double vvx = g_engine->math->LinearVelocityX(Kut)*(rocketV-4);
  3089. double vvy = g_engine->math->LinearVelocityY(Kut)*(rocketV-4);
  3090. Rocket1->setVelocity(vvx, vvy);
  3091. Rocket2->setVelocity(vvx, vvy);
  3092. }
  3093.  
  3094. g_engine->addEntity(Rocket1);
  3095. g_engine->addEntity(Rocket2);
  3096. g_engine->audio->Play("Fire_Setac_plavi");
  3097. SetacCrveni->pucaj = 0.0f;
  3098.  
  3099. FireBoss3=FireBoss3-FireBoss33;
  3100. if ( FireBoss3 < -225 )
  3101. {
  3102. FireBoss33=-15;
  3103. }
  3104. if (FireBoss3 > -120)
  3105. {
  3106. FireBoss33=15;
  3107. FireBoss3=-120;
  3108. SetacCrveni->Stanje=1;
  3109. }
  3110. }
  3111.  
  3112. void fireB4(Sprite *BossS, int x1, int y1)
  3113. {
  3114.  
  3115. double pxK = BossS->getX();
  3116. double pyK = BossS->getY();
  3117.  
  3118. Sprite *VatrenaKugla = new Sprite();
  3119. VatrenaKugla->setObjectType(BOSS_VATRENAKUGLA);
  3120. VatrenaKugla->setImage(vatrena_kugla);
  3121. VatrenaKugla->setSize(89,116);
  3122. VatrenaKugla->setLifetime(2000);
  3123. VatrenaKugla->LevelID=level;
  3124. VatrenaKugla->energy=2;
  3125. VatrenaKugla->setPosition(pxK+x1,pyK+y1);
  3126. VatrenaKugla->setVelocity(0, rocketV-4);
  3127. g_engine->addEntity(VatrenaKugla);
  3128. g_engine->audio->Play("FireLaser2");
  3129. }
  3130.  
  3131. void addBoss()
  3132. {
  3133.  
  3134. FireBoss3=-120;
  3135. FireBoss33=15;
  3136. FireBoss1i2=0;
  3137. MrtavBoss=false;
  3138. boss_krik=true;
  3139. boss_krik2=true;
  3140. spustanje=true;
  3141. lijevoidesno=true;
  3142. VatraKraj=true;
  3143. ProciCu=false;
  3144.  
  3145. BossEnergyTriger1=(rand()%100)+550;
  3146. BossEnergyTriger2=(rand()%100)+250;;
  3147.  
  3148. boss->setObjectType(BOSS);
  3149. boss->setImage(N_TheBoss);
  3150. boss->Stanje2=1;
  3151. boss->setTotalFrames(8);
  3152. boss->setColumns(3);
  3153. boss->setSize(870,350);
  3154. boss->setFrameTimer(110);
  3155. boss->setPosition(200,-300);
  3156. boss->LevelID=level;
  3157. boss->setVelocity(0,2-SmanjiSamBrzinu);
  3158. boss->energy=2000;
  3159. boss->setCollidable(false);
  3160. boss->setVisible(true);
  3161. boss->setRotation(0);
  3162. boss->Stanje=1;
  3163. g_engine->audio->Play("B_Start");
  3164. g_engine->audio->Play("BossFly");
  3165. g_engine->addEntity( boss );
  3166.  
  3167. //BOSS META 1 i 2
  3168. MetaG = new Sprite();
  3169. MetaG->setObjectType(BOSS_METAG);
  3170. MetaG->setImage(B_METAG_T);
  3171. MetaG->setSize(842,124);
  3172. MetaG->setPosition(boss->getX()+12,boss->getY()+50);
  3173. if (ShowCollisionBox == 0) MetaG->setVisible(false);
  3174. MetaG->LevelID=level;
  3175. MetaG->setCollidable(true);
  3176. g_engine->addEntity(MetaG);
  3177.  
  3178. MetaD = new Sprite();
  3179. MetaD->setObjectType(BOSS_METAD);
  3180. MetaD->setImage(B_METAD_T);
  3181. MetaD->setSize(472,70);
  3182. MetaD->setPosition(boss->getX()+200,boss->getY()+190);
  3183. if (ShowCollisionBox == 0) MetaD->setVisible(false);
  3184. MetaD->LevelID=level;
  3185. MetaD->setCollidable(true);
  3186. g_engine->addEntity(MetaD);
  3187. }
  3188.  
  3189. void addBossHead()
  3190. {
  3191.  
  3192. DieWhenIKillYou=false;
  3193. Sprite *BossH = new Sprite();
  3194. BossH->setObjectType(BOSS_HEAD);
  3195. BossH->setImage(N_TheBossH);
  3196. BossH->setTotalFrames(5);
  3197. BossH->setColumns(5);
  3198. BossH->setSize(154,150);
  3199. BossH->setFrameTimer(100);
  3200. BossH->setPosition(boss->getX()+300,boss->getY()+150);
  3201. BossH->LevelID=level;
  3202. BossH->setVelocity(12-(5*SmanjiSamBrzinu),4-(2*SmanjiSamBrzinu));
  3203. BossH->energy=1000;
  3204. BossEnergy=1000;
  3205. BossH->Stanje=1;
  3206. g_engine->audio->Play("B_Start");
  3207. g_engine->addEntity( BossH );
  3208. }
  3209.  
  3210. void updateSam(Sprite *paddle)//obnavljanje pozicije igraca
  3211. {
  3212. if (oruzje == 0) paddle->setCurrentFrame(0);
  3213. if (oruzje == 3) paddle->setCurrentFrame(4);
  3214. if (oruzje == 4) paddle->setCurrentFrame(6);
  3215. if (oruzje == 5) paddle->setCurrentFrame(2);
  3216. if (oruzje == 7) paddle->setCurrentFrame(3);
  3217. if (oruzje == 8) paddle->setCurrentFrame(1);
  3218.  
  3219. //sve puno minusa tako da bude kao normalni krug u lijevo
  3220. paddle_angle = -(g_engine->math->AngleToTarget(META->getX() + META->getWidth()/2,META->getY() + META->getHeight()/2,cursor->getX() + cursor->getWidth()/2,cursor->getY() + cursor->getWidth()/2));
  3221.  
  3222. //ROTIRAJ SE KAD GLEDAS LIJEVO
  3223. if ( cursor->getX() + cursor->getWidth()/2 <= META->getX()+META->getWidth()/2)
  3224. {
  3225. if( paddle_angle <= 2.13 && paddle_angle >= 1.1 ) paddle_angle=2.13;
  3226. if( paddle_angle >= -2.4 && paddle_angle <= -0.74 ) paddle_angle=-2.4;
  3227. paddle->setRotation( g_engine->math->toRadians(-(180 + g_engine->math->toDegrees( paddle_angle ))) );
  3228. }
  3229.  
  3230. //ROTIRAJ SE KAD GLEDAS DESNO
  3231. if (cursor->getX() + cursor->getWidth()/2 >META->getX()+META->getWidth()/2)
  3232. {
  3233. if( paddle_angle < 2.13 && paddle_angle > 1.1 ) paddle_angle=1.1;
  3234. if( paddle_angle > -2.4 && paddle_angle < -0.74 ) paddle_angle=-0.74;
  3235. paddle->setRotation( g_engine->math->toRadians(-(g_engine->math->toDegrees( paddle_angle ))) );
  3236. }
  3237.  
  3238. //OKRENI SE LIJEVO
  3239. if ( cursor->getX() + cursor->getWidth()/2 <= paddle->getX()+paddle->getWidth()/2 && paddle->Gledam=='D')
  3240. {
  3241. Pupak->setImage(Sam_PupakL);
  3242. paddle->Gledam='L';
  3243. paddle->setImage(Sam_Lijevo);
  3244. paddle->setTotalFrames(1);
  3245. paddle->setColumns(6);
  3246. paddle->setSize(324,104);
  3247. paddle->setFrameTimer(100);
  3248. }
  3249.  
  3250. //OKRENI SE DESNO
  3251. if (cursor->getX() + cursor->getWidth()/2 >paddle->getX()+paddle->getWidth()/2 && paddle->Gledam=='L')
  3252. {
  3253. Pupak->setImage(Sam_PupakD);
  3254. paddle->Gledam='D';
  3255. paddle->setImage(Sam_Desno);
  3256. paddle->setTotalFrames(1);
  3257. paddle->setColumns(6);
  3258. paddle->setSize(324,104);
  3259. paddle->setFrameTimer(100);
  3260. }
  3261.  
  3262. if (level == 3)
  3263. {
  3264. paddle->setColor(0xFFBBEEFF);
  3265. noge->setColor(0xFFBBEEFF);
  3266. Pupak->setColor(0xFFBBEEFF);
  3267. }
  3268. else if (level >= 6 && level < 8)
  3269. {
  3270. paddle->setColor(0xFFFFCCCC);
  3271. noge->setColor(0xFFFFCCCC);
  3272. Pupak->setColor(0xFFFFCCCC);
  3273. }
  3274. else
  3275. {
  3276. paddle->setColor(0xFFFFFFFF);
  3277. noge->setColor(0xFFFFFFFF);
  3278. Pupak->setColor(0xFFFFFFFF);
  3279. }
  3280.  
  3281. switch( paddle->Gledam )
  3282. {
  3283. case 'D':
  3284. if (Kretanje >= 0)
  3285. {
  3286. if ( trcanjeD == false )
  3287. {
  3288. noge->setImage(NogeT_Desno);
  3289. noge->setSize(98,78);
  3290. noge->setFrameTimer(55);
  3291. }
  3292. else
  3293. {
  3294. noge->setImage(Noge_Desno);
  3295. noge->setSize(65,80);
  3296. noge->setFrameTimer(65);
  3297. }
  3298. noge->setColumns(5);
  3299. }
  3300. else
  3301. {
  3302. if ( trcanjeL == false )
  3303. {
  3304. noge->setImage(Noge_UnazadD);
  3305. noge->setSize(75,77);
  3306. noge->setFrameTimer(55);
  3307. }
  3308. else
  3309. {
  3310. noge->setImage(Noge_UnazadD);
  3311. noge->setSize(75,77);
  3312. noge->setFrameTimer(75);
  3313. }
  3314. noge->setColumns(5);
  3315. }
  3316. break;
  3317.  
  3318. case 'L':
  3319. if (Kretanje <= 0)
  3320. {
  3321. if ( trcanjeL == false )
  3322. {
  3323. noge->setImage(NogeT_Lijevo);
  3324. noge->setSize(98,78);
  3325. noge->setFrameTimer(55);
  3326. }
  3327. else
  3328. {
  3329. noge->setImage(Noge_Lijevo);
  3330. noge->setSize(65,80);
  3331. noge->setFrameTimer(65);
  3332. }
  3333. noge->setColumns(5);
  3334. }
  3335. else
  3336. {
  3337. if ( trcanjeL == false )
  3338. {
  3339. noge->setImage(Noge_UnazadL);
  3340. noge->setSize(75,77);
  3341. noge->setFrameTimer(55);
  3342. }
  3343. else
  3344. {
  3345. noge->setImage(Noge_UnazadL);
  3346. noge->setSize(75,77);
  3347. noge->setFrameTimer(75);
  3348. }
  3349. noge->setColumns(5);
  3350. }
  3351. break;
  3352. }
  3353.  
  3354. if ( paddle->Gledam =='D' && Kretanje==0 && KretanjeY==0)
  3355. {
  3356. noge->setImage(Noge_Desno);
  3357. noge->setSize(65,80);
  3358. noge->setCurrentFrame(0);
  3359. noge->setX(META->getX() + paddleVelocity - paddle->getWidth()/2 + META->getWidth()/2 + 133);Pupak->setX(META->getX() - paddle->getWidth()/2 + META->getWidth()/2 + 153);
  3360. }
  3361.  
  3362. if ( paddle->Gledam =='L' && Kretanje==0 && KretanjeY==0)
  3363. {
  3364. noge->setImage(Noge_Lijevo);
  3365. noge->setSize(65,80);
  3366. noge->setCurrentFrame(0);
  3367. noge->setX(META->getX() + paddleVelocity - paddle->getWidth()/2 + META->getWidth()/2 + 127);Pupak->setX(META->getX() - paddle->getWidth()/2 + META->getWidth()/2 + 156);
  3368. }
  3369.  
  3370. double desno = g_engine->getScreenWidth() - META->getWidth() - 10;
  3371. double dno = g_engine->getScreenHeight() - META->getHeight() - 20;
  3372. double gore;
  3373.  
  3374. if (level != 9) gore = 320-META->getHeight();
  3375. else gore = 500 - META->getHeight();
  3376. if (level == 6) gore = 375-META->getHeight();
  3377. if (level == 7) gore = 380-META->getHeight();
  3378.  
  3379. if ( level == 8 )
  3380. {
  3381. paddleVelocity2=0;
  3382. }
  3383.  
  3384. if ( level == 8 && META->getX()>=600 && Tezina == NORMAL)
  3385. {
  3386. paddleVelocity2=10-SmanjiSamBrzinu*1;
  3387. dno=1100;
  3388. LOF=true;
  3389. }
  3390.  
  3391. if ( level == 8 && META->getX()>=650 && Tezina == SERIOUS && LOF2==true)
  3392. {
  3393. g_engine->audio->Play("Sam_LOF");
  3394. LOF2=false;
  3395. }
  3396.  
  3397. if ( LOF==true && LOF2==true)
  3398. {
  3399. g_engine->audio->Play("Sam_Noooo");
  3400. LOF=false;
  3401. LOF2=false;
  3402. }
  3403.  
  3404. if ( level == 8 && META->getY()>1000)
  3405. {
  3406. gameState=STATE_LOSER;
  3407. boss->energy=0;
  3408. BossEnergy=0;
  3409. cursor->setVisible(false);
  3410. StartS->setImage(M_GameOver_T);
  3411. StartS->setPosition(g_engine->getScreenWidth()/2-150, g_engine->getScreenHeight()/2-150);
  3412. StartS->setColor(0xFFFFFFFF);
  3413. }
  3414.  
  3415. //px,py -> stanje na x i y osi, igrac ne smije prijeci rubove ekrana
  3416. double px = META->getX() + paddleVelocity;
  3417. double py = META->getY() + paddleVelocity2;
  3418.  
  3419. //GRANICA LIJEVO
  3420. if (px < 10)
  3421. {
  3422. paddleVelocity = 0.0;
  3423. px = 10;
  3424. }
  3425.  
  3426. //GRANICA DESNO
  3427. if ( (g_engine->findEntity(BOSS_HEAD) == NULL) && (ProciCu==true) && (g_engine->findEntity(N_BIK) == NULL) && (g_engine->findEntity(N_KAMIKAZA) == NULL) && (g_engine->findEntity(N_GNAARMALE) == NULL) && (g_engine->findEntity(N_GNAARFEMALE) == NULL) && (g_engine->findEntity(N_SETACCRVENI) == NULL) && (g_engine->findEntity(N_SETACPLAVI) == NULL) && (g_engine->findEntity(N_HARPIJA) == NULL ))
  3428. Level_End=1;
  3429. else
  3430. Level_End=0;
  3431.  
  3432. if (enemy_spawn_count > 0 || Level_End == 0)
  3433. {
  3434. if (px > desno)
  3435. {
  3436. paddleVelocity = 0.0;
  3437. px = desno;
  3438. }
  3439. }
  3440. //GRANICA GORE
  3441. if (py < gore)
  3442. {
  3443. paddleVelocity2 = 0.0;
  3444. py = gore; //koliko moze gore
  3445. }
  3446. //GRANICA DOLJE
  3447. if (py > dno)
  3448. {
  3449. paddleVelocity2 = 0.0;
  3450. py = dno;
  3451. }
  3452.  
  3453. //Pozicija igraca
  3454. META->setX( px );
  3455. META->setY( py );
  3456. paddle->setX( px - paddle->getWidth()/2 + META->getWidth()/2 );
  3457. paddle->setY( py );
  3458. Pupak->setY(py+41);
  3459.  
  3460. switch( paddle->Gledam )
  3461. {
  3462. case 'D':
  3463. if (Kretanje >= 0)
  3464. {
  3465. if ( trcanjeD == false )
  3466. {
  3467. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 111);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 152);
  3468. }
  3469. else
  3470. {
  3471. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 133);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 153);
  3472. }
  3473. }
  3474. else
  3475. {
  3476. if ( trcanjeL == false )
  3477. {
  3478. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 135);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 154);
  3479. }
  3480. else
  3481. {
  3482. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 135);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 154);
  3483. }
  3484. }
  3485. break;
  3486.  
  3487. case 'L':
  3488. if (Kretanje <= 0)
  3489. {
  3490. if ( trcanjeL == false )
  3491. {
  3492. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 113);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 154);
  3493. }
  3494. else
  3495. {
  3496. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 127);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 156);
  3497. }
  3498. }
  3499. else
  3500. {
  3501. if ( trcanjeL == false )
  3502. {
  3503. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 111);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 154);
  3504. }
  3505. else
  3506. {
  3507. noge->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 111);Pupak->setX(px - paddle->getWidth()/2 + META->getWidth()/2 + 154);
  3508. }
  3509. }
  3510. break;
  3511. }
  3512.  
  3513. if ( paddle->Gledam =='D' && Kretanje==0 && KretanjeY==0 )
  3514. {
  3515. noge->setImage(Noge_Desno);
  3516. noge->setSize(65,80);
  3517. noge->setCurrentFrame(0);
  3518. noge->setX(META->getX() + paddleVelocity - paddle->getWidth()/2 + META->getWidth()/2 + 133);Pupak->setX(META->getX() - paddle->getWidth()/2 + META->getWidth()/2 + 153);
  3519. }
  3520.  
  3521. if ( paddle->Gledam =='L' && Kretanje==0 && KretanjeY==0 )
  3522. {
  3523. noge->setImage(Noge_Lijevo);
  3524. noge->setSize(65,80);
  3525. noge->setCurrentFrame(0);
  3526. noge->setX(META->getX() + paddleVelocity - paddle->getWidth()/2 + META->getWidth()/2 + 127);Pupak->setX(META->getX() - paddle->getWidth()/2 + META->getWidth()/2 + 156);
  3527. }
  3528.  
  3529. noge->setY(py+49);
  3530.  
  3531. /*ostringstream ostr;
  3532. ostr << "Paddle pos [" << fixed << setprecision(0) << px << "] vel [" << setprecision(2) << paddleVelocity << "]";
  3533. console->print(ostr.str(),27);*/
  3534. }
  3535.  
  3536. void IGES()
  3537. {
  3538. switch ( level )
  3539. {
  3540. //IGES0
  3541. case 0:
  3542. if (g_engine->audio->IsPlaying("Music_Level000") == false) g_engine->audio->Play("Music_Level000");
  3543. break;
  3544.  
  3545. //IGES1
  3546. case 1:
  3547. if (g_engine->audio->IsPlaying("Music_Level001") == false) g_engine->audio->Play("Music_Level001");
  3548. if (g_engine->audio->IsPlaying("BossFly") == true ) g_engine->audio->Stop("BossFly");
  3549. if (Tezina==NORMAL)
  3550. {
  3551. if ( enemy_spawn_count > 10 && N_Timer1.stopwatch(1850))
  3552. {
  3553. addGnaarMale();
  3554. enemy_spawn_count--;
  3555.  
  3556. if (enemy_spawn_count > 10)
  3557. {
  3558. addGnaarMale();
  3559. enemy_spawn_count--;
  3560. g_engine->audio->Play("gnaar_sight");
  3561. }
  3562. g_engine->audio->Play("gnaar_sight");
  3563. }
  3564.  
  3565. if (enemy_spawn_count <= 10 && enemy_spawn_count > 0 && N_Timer1.stopwatch(1850))
  3566. {
  3567. addKamikaza('L');
  3568. enemy_spawn_count--;
  3569.  
  3570. if (enemy_spawn_count > 0)
  3571. {
  3572. addKamikaza('L');
  3573. enemy_spawn_count--;
  3574. }
  3575. }
  3576. }
  3577. else
  3578. {
  3579. if ( enemy_spawn_count > 10 && N_Timer1.stopwatch(2500))
  3580. {
  3581. addGnaarMale();
  3582. enemy_spawn_count--;
  3583.  
  3584.  
  3585. if (enemy_spawn_count > 10)
  3586. {
  3587. addGnaarMale();
  3588. enemy_spawn_count--;
  3589. }
  3590.  
  3591. if (enemy_spawn_count > 10)
  3592. {
  3593. addKamikaza('D');
  3594. enemy_spawn_count--;
  3595. }
  3596. g_engine->audio->Play("gnaar_sight");
  3597. }
  3598. if (enemy_spawn_count <= 10 && enemy_spawn_count > 0 && N_Timer1.stopwatch(2000))
  3599. {
  3600. addKamikaza('L');
  3601. enemy_spawn_count--;
  3602.  
  3603. if (enemy_spawn_count > 0)
  3604. {
  3605. addKamikaza('D');
  3606. enemy_spawn_count--;
  3607. }
  3608. }
  3609. }
  3610. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  3611. break;
  3612.  
  3613. //IGES2
  3614. case 2:
  3615. if (g_engine->audio->IsPlaying("Music_Level001") == false) g_engine->audio->Play("Music_Level001");
  3616. if (enemy_spawn_count > 0 && enemy_spawn_count < 10 && (g_engine->findEntity(N_GNAARMALE)== NULL) && N_Timer1.stopwatch(3000+TezinaRazlika*250))
  3617. {
  3618. if ( rand()%2==0 )addHarpija('D');
  3619. else addHarpija('L');
  3620. enemy_spawn_count--;
  3621. g_engine->audio->Play("N_Harpija_Sight");
  3622. }
  3623.  
  3624. if (enemy_spawn_count > 0 && N_Timer2.stopwatch(6000))
  3625. {
  3626. addSetacPlavi('D');
  3627. enemy_spawn_count--;
  3628. g_engine->audio->Play("setac_plavi_sight");
  3629. }
  3630.  
  3631. if (enemy_spawn_count > 10 && N_Timer3.stopwatch(2750))
  3632. {
  3633. if (Tezina==SERIOUS)
  3634. {
  3635. if (rand()%2) addGnaarMale();
  3636. else addGnaarFemale();
  3637. enemy_spawn_count--;
  3638. g_engine->audio->Play("gnaar_sight");
  3639. }
  3640. else
  3641. {
  3642. addGnaarMale();
  3643. enemy_spawn_count--;
  3644. g_engine->audio->Play("gnaar_sight");
  3645. }
  3646. }
  3647. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  3648. break;
  3649.  
  3650. //IGES3
  3651. case 3:
  3652. if (g_engine->audio->IsPlaying("Music_Level003") == false) g_engine->audio->Play("Music_Level003");
  3653. if (Tezina==SERIOUS)
  3654. {
  3655. if ( (enemy_spawn_count > 50 && enemy_spawn_count < 80) && QWERTZ==0)
  3656. {
  3657. addSetacCrveni('D');
  3658. enemy_spawn_count--;
  3659. addSetacCrveni('D');
  3660. enemy_spawn_count--;
  3661. addSetacPlavi('D');
  3662. enemy_spawn_count--;
  3663. addSetacPlavi('D');
  3664. enemy_spawn_count--;
  3665. g_engine->audio->Play("setac_plavi_sight");
  3666. QWERTZ=QWERTZ+1;
  3667. }
  3668. }
  3669. else
  3670. {
  3671. if ( (enemy_spawn_count > 50 && enemy_spawn_count < 80) && QWERTZ==0)
  3672. {
  3673. addSetacPlavi('D');
  3674. enemy_spawn_count--;
  3675. addSetacPlavi('D');
  3676. enemy_spawn_count--;
  3677. addSetacPlavi('D');
  3678. enemy_spawn_count--;
  3679. g_engine->audio->Play("setac_plavi_sight");
  3680. QWERTZ=QWERTZ+1;
  3681. }
  3682. }
  3683.  
  3684. if ( LudePtice==true && enemy_spawn_count > 0 && N_Timer2.stopwatch(1300))
  3685. {
  3686. addGnaarMale();
  3687. enemy_spawn_count--;
  3688.  
  3689. if (enemy_spawn_count > 0)
  3690. {
  3691. addGnaarMale();
  3692. enemy_spawn_count--;
  3693. }
  3694. g_engine->audio->Play("gnaar_sight");
  3695. }
  3696.  
  3697. if (LudePtice==true && enemy_spawn_count > 0 && N_Timer3.stopwatch(1300))
  3698. {
  3699. addKamikaza('D');
  3700. enemy_spawn_count--;
  3701.  
  3702. if (enemy_spawn_count > 0)
  3703. {
  3704. addKamikaza('D');
  3705. enemy_spawn_count--;
  3706. }
  3707. }
  3708.  
  3709. if (LudePtice==true && enemy_spawn_count > 0 && N_Timer4.stopwatch(1200))
  3710. {
  3711. addKamikaza('D');
  3712. enemy_spawn_count--;
  3713.  
  3714. if (enemy_spawn_count > 0)
  3715. {
  3716. addKamikaza('D');
  3717. enemy_spawn_count--;
  3718. }
  3719. }
  3720.  
  3721. if (Tezina==SERIOUS)
  3722. {
  3723. if ( LudePtice==true && enemy_spawn_count > 0 && N_Timer5.stopwatch(2200))
  3724. {
  3725. addGnaarMale();
  3726. enemy_spawn_count--;
  3727.  
  3728. if (enemy_spawn_count > 0)
  3729. {
  3730. addGnaarFemale();
  3731. enemy_spawn_count--;
  3732. }
  3733. g_engine->audio->Play("gnaar_sight");
  3734. }
  3735. }
  3736. else
  3737. {
  3738. if ( LudePtice==true && enemy_spawn_count > 0 && N_Timer5.stopwatch(1300))
  3739. {
  3740. addGnaarMale();
  3741. enemy_spawn_count--;
  3742.  
  3743. if (enemy_spawn_count > 0)
  3744. {
  3745. addGnaarMale();
  3746. enemy_spawn_count--;
  3747. }
  3748. g_engine->audio->Play("gnaar_sight");
  3749. }
  3750. }
  3751. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  3752. break;
  3753.  
  3754. //IGES4
  3755. case 4:
  3756. if (g_engine->audio->IsPlaying("Music_Level004") == false) g_engine->audio->Play("Music_Level004");
  3757. if (QWERTZ==0)
  3758. {
  3759. addSetacPlavi('D');
  3760. enemy_spawn_count--;
  3761. addSetacPlavi('D');
  3762. enemy_spawn_count--;
  3763. addSetacPlavi('D');
  3764. enemy_spawn_count--;
  3765. addSetacPlavi('D');
  3766. enemy_spawn_count--;
  3767. addSetacPlavi('D');
  3768. enemy_spawn_count--;
  3769. g_engine->audio->Play("setac_plavi_sight");
  3770. QWERTZ=1;
  3771. }
  3772. if ((g_engine->findEntity(N_SETACCRVENI)== NULL) && (g_engine->findEntity(N_SETACPLAVI)== NULL) && (g_engine->findEntity(N_BIK)== NULL) && (g_engine->findEntity(N_GNAARMALE)== NULL) && (QWERTZ==1 || QWERTZ==2))
  3773. {
  3774. addBik();
  3775. enemy_spawn_count--;
  3776. addBik();
  3777. enemy_spawn_count--;
  3778. addBik();
  3779. enemy_spawn_count--;
  3780. addGnaarMale();
  3781. enemy_spawn_count--;
  3782. addGnaarMale();
  3783. enemy_spawn_count--;
  3784. addSetacCrveni('D');
  3785. enemy_spawn_count--;
  3786. addSetacCrveni('D');
  3787. enemy_spawn_count--;
  3788. g_engine->audio->Play("BikSight");
  3789. g_engine->audio->Play("gnaar_sight");
  3790. g_engine->audio->Play("setac_plavi_sight");
  3791. QWERTZ=QWERTZ+1;
  3792. }
  3793.  
  3794. if ( (g_engine->findEntity(N_SETACCRVENI)== NULL) && (g_engine->findEntity(N_BIK)== NULL) && (g_engine->findEntity(N_GNAARMALE)== NULL) && (g_engine->findEntity(N_KAMIKAZA)== NULL) && QWERTZ==3 )
  3795. {
  3796. addItem(25,700,550,false,0);
  3797. addItem(25,780,550,false,0);
  3798. QWERTZ=QWERTZ+1;
  3799. }
  3800.  
  3801. if ( (g_engine->findEntity(N_SETACCRVENI)== NULL) && (g_engine->findEntity(N_BIK)== NULL) && (g_engine->findEntity(N_GNAARMALE)== NULL) && QWERTZ>=5 && QWERTZ<=9 && N_Timer1.stopwatch(1450+TezinaRazlika*150) && enemy_spawn_count > 0 )
  3802. {
  3803. addKamikaza('D');
  3804. enemy_spawn_count--;
  3805.  
  3806. if (enemy_spawn_count > 0)
  3807. {
  3808. addKamikaza('L');
  3809. enemy_spawn_count--;
  3810. }
  3811. if (enemy_spawn_count > 0)
  3812. {
  3813. addKamikaza('D');
  3814. enemy_spawn_count--;
  3815. }
  3816. if (enemy_spawn_count > 0)
  3817. {
  3818. addKamikaza('L');
  3819. enemy_spawn_count--;
  3820. }
  3821. QWERTZ=QWERTZ+1;
  3822. }
  3823.  
  3824. if ( (g_engine->findEntity(N_SETACCRVENI)== NULL) && (g_engine->findEntity(N_BIK)== NULL) && (g_engine->findEntity(N_GNAARMALE)== NULL) && (g_engine->findEntity(N_KAMIKAZA)== NULL) && QWERTZ>=10 && N_Timer1.stopwatch(1800+TezinaRazlika*400) && enemy_spawn_count > 0 )
  3825. {
  3826. addHarpija('D');
  3827. enemy_spawn_count--;
  3828. g_engine->audio->Play("N_Harpija_Sight");
  3829.  
  3830. if (enemy_spawn_count > 0)
  3831. {
  3832. addHarpija('L');
  3833. enemy_spawn_count--;
  3834. }
  3835. if (enemy_spawn_count > 0)
  3836. {
  3837. addHarpija('D');
  3838. enemy_spawn_count--;
  3839. }
  3840.  
  3841. if (Tezina==SERIOUS)
  3842. {
  3843. if (rand()%2==0) addKamikaza('D');
  3844. else addKamikaza('L');
  3845. enemy_spawn_count--;
  3846. }
  3847. else
  3848. {
  3849. if (enemy_spawn_count > 0)
  3850. {
  3851. addHarpija('L');
  3852. enemy_spawn_count--;
  3853. }
  3854. }
  3855. QWERTZ=QWERTZ+1;
  3856. }
  3857. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  3858. break;
  3859.  
  3860. //IGES5
  3861. case 5:
  3862. if (QWERTZ==1)
  3863. {
  3864. if (g_engine->audio->IsPlaying("Music_Level005") == false) g_engine->audio->Play("Music_Level005");
  3865. }
  3866.  
  3867. if (QWERTZ==1)
  3868. {
  3869. if (Tezina==SERIOUS)
  3870. {
  3871. if (enemy_spawn_count > 0 && N_Timer2.stopwatch(7500))
  3872. {
  3873. if (rand()%2==0)
  3874. {
  3875. addSetacCrveni('D');
  3876. enemy_spawn_count--;
  3877. addSetacPlavi('L');
  3878. enemy_spawn_count--;
  3879. addSetacPlavi('L');
  3880. enemy_spawn_count--;
  3881. g_engine->audio->Play("setac_plavi_sight");
  3882. }
  3883. else
  3884. {
  3885. addSetacCrveni('L');
  3886. enemy_spawn_count--;
  3887. addSetacPlavi('L');
  3888. enemy_spawn_count--;
  3889. g_engine->audio->Play("setac_plavi_sight");
  3890. }
  3891. }
  3892.  
  3893. if (enemy_spawn_count > 0 && N_Timer3.stopwatch(1700))
  3894. {
  3895. addSetacPlavi('D');
  3896. enemy_spawn_count--;
  3897. g_engine->audio->Play("setac_plavi_sight");
  3898. }
  3899. }
  3900.  
  3901. if (Tezina==NORMAL)
  3902. {
  3903. if (enemy_spawn_count > 0 && N_Timer2.stopwatch(8000))
  3904. {
  3905. addSetacCrveni('D');
  3906. enemy_spawn_count--;
  3907. g_engine->audio->Play("setac_plavi_sight");
  3908. }
  3909.  
  3910. if (enemy_spawn_count > 0 && N_Timer3.stopwatch(1400))
  3911. {
  3912. addSetacPlavi('D');
  3913. enemy_spawn_count--;
  3914. g_engine->audio->Play("setac_plavi_sight");
  3915. }
  3916. }
  3917. }
  3918.  
  3919. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  3920. break;
  3921.  
  3922. //IGES6
  3923. case 6:
  3924. if (g_engine->audio->IsPlaying("Music_Level006") == false) g_engine->audio->Play("Music_Level006");
  3925. if ( LudePtice==true && BrPtica > 0 && N_Timer1.stopwatch(2200))
  3926. {
  3927. addHarpija('D');
  3928. BrPtica--;
  3929.  
  3930. if (BrPtica > 0)
  3931. {
  3932. addHarpija('L');
  3933. BrPtica--;
  3934. }
  3935. if (BrPtica > 0)
  3936. {
  3937. addHarpija('D');
  3938. BrPtica--;
  3939. }
  3940. g_engine->audio->Play("N_Harpija_Sight");
  3941. }
  3942.  
  3943. if (enemy_spawn_count > 0 && N_Timer2.stopwatch(2300+TezinaRazlika*200))
  3944. {
  3945. addBik();
  3946. enemy_spawn_count--;
  3947. g_engine->audio->Play("BikSight");
  3948. }
  3949.  
  3950. if (enemy_spawn_count > 0 && N_Timer3.stopwatch(2900+TezinaRazlika*400))
  3951. {
  3952. addBik();
  3953. enemy_spawn_count--;
  3954. g_engine->audio->Play("BikSight");
  3955. }
  3956.  
  3957. if (Tezina==SERIOUS)
  3958. {
  3959. if (enemy_spawn_count > 0 && N_Timer4.stopwatch(5400))
  3960. {
  3961. addSetacPlavi('D');
  3962. enemy_spawn_count--;
  3963. g_engine->audio->Play("setac_plavi_sight");
  3964. }
  3965. if (enemy_spawn_count > 0 && N_Timer5.stopwatch(5100))
  3966. {
  3967. addSetacPlavi('D');
  3968. enemy_spawn_count--;
  3969. g_engine->audio->Play("setac_plavi_sight");
  3970. }
  3971. }
  3972. else
  3973. {
  3974. if (enemy_spawn_count > 0 && N_Timer4.stopwatch(3800))
  3975. {
  3976. addKamikaza('D');
  3977. enemy_spawn_count--;
  3978. }
  3979. if (enemy_spawn_count > 0 && N_Timer5.stopwatch(2900))
  3980. {
  3981. addKamikaza('D');
  3982. enemy_spawn_count--;
  3983. }
  3984. }
  3985. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  3986. break;
  3987.  
  3988. //IGES7
  3989. case 7:
  3990. if (g_engine->audio->IsPlaying("Music_Level007") == false) g_engine->audio->Play("Music_Level007");
  3991.  
  3992. if (META->getX() >= 200) QWERTZ=1;
  3993.  
  3994. if (QWERTZ==1)
  3995. {
  3996. if (Tezina==SERIOUS)
  3997. {
  3998. if (enemy_spawn_count > 0 && N_Timer1.stopwatch(6500))
  3999. {
  4000. addSetacPlavi('D');
  4001. enemy_spawn_count--;
  4002. g_engine->audio->Play("setac_plavi_sight");
  4003. }
  4004. }
  4005. else
  4006. {
  4007. if (enemy_spawn_count > 0 && N_Timer1.stopwatch(8000))
  4008. {
  4009. addSetacPlavi('D');
  4010. enemy_spawn_count--;
  4011. g_engine->audio->Play("setac_plavi_sight");
  4012. }
  4013. }
  4014.  
  4015.  
  4016. if (enemy_spawn_count > 0 && N_Timer2.stopwatch(10000))
  4017. {
  4018. addSetacCrveni('D');
  4019. enemy_spawn_count--;
  4020. g_engine->audio->Play("setac_plavi_sight");
  4021. }
  4022.  
  4023. if ( enemy_spawn_count > 0 && N_Timer3.stopwatch(1600))
  4024. {
  4025. addGnaarFemale();
  4026. enemy_spawn_count--;
  4027. if (enemy_spawn_count > 0)
  4028. {
  4029. addGnaarMale();
  4030. enemy_spawn_count--;
  4031. }
  4032. g_engine->audio->Play("gnaar_sight");
  4033. }
  4034.  
  4035. if (enemy_spawn_count > 0 && N_Timer4.stopwatch(1500))
  4036. {
  4037. addKamikaza('D');
  4038. enemy_spawn_count--;
  4039. if (enemy_spawn_count > 0)
  4040. {
  4041. addKamikaza('D');
  4042. enemy_spawn_count--;
  4043. }
  4044. }
  4045.  
  4046. if (enemy_spawn_count > 0 && N_Timer5.stopwatch(4000))
  4047. {
  4048. addBik();
  4049. enemy_spawn_count--;
  4050. g_engine->audio->Play("BikSight");
  4051. }
  4052. }
  4053.  
  4054. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  4055. break;
  4056.  
  4057. //IGES8
  4058. case 8:
  4059. if (g_engine->audio->IsPlaying("Music_Level008") == false) g_engine->audio->Play("Music_Level008");
  4060. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  4061. break;
  4062.  
  4063. //IGES9
  4064. case 9:
  4065. if (g_engine->audio->IsPlaying("Music_Level009") == false) g_engine->audio->Play("Music_Level009");
  4066. if (enemy_spawn_count < 0) enemy_spawn_count=0;
  4067. break;
  4068. }
  4069. }
  4070.  
  4071. void ProvjeriFPS()
  4072. {
  4073. if ( g_engine->getFrameRate_real() > 64 )
  4074. {
  4075. SmanjiLifeTime=SmanjiLifeTime_U;
  4076. }
  4077. else
  4078. {
  4079. SmanjiLifeTime=0;
  4080. }
  4081. }
  4082.  
  4083. void PrikaziKonzolu()
  4084. {
  4085. //print program title
  4086. ostringstream title;
  4087. title << "GAME TITLE [" << "Serious Sam 2D The Last Game Hero " << "]";
  4088. verdana10->Print(10,10,title.str(),0xFFFFFFFF);
  4089.  
  4090. ostringstream version;
  4091. version << "VERSION [" << "1.2" << "]";
  4092. verdana10->Print(10,30,version.str(),0xFFFFFFFF);
  4093.  
  4094. ostringstream author;
  4095. author << "AUTHOR [" << "AntonioR Software" << "]";
  4096. verdana10->Print(10,50,author.str(),0xFFFFFFFF);
  4097.  
  4098. ostringstream engine;
  4099. engine << "ENGINE [" << "Advanced2D Engine" << "]";
  4100. verdana10->Print(10,70,engine.str(),0xFFFFFFFF);
  4101.  
  4102. //print screen resolution
  4103. ostringstream screen;
  4104. screen << "SCREEN RESOLUTION [" << g_engine->getScreenWidth() << "," << g_engine->getScreenHeight() << "] Depth [" << g_engine->getColorDepth() << "]";
  4105. verdana10->Print(10,100,screen.str(),0xFFFFFFFF);
  4106.  
  4107. ostringstream color;
  4108. color << "COLOR DEPTH [" << g_engine->getColorDepth() << "]";
  4109. verdana10->Print(10,120,color.str(),0xFFFFFFFF);
  4110.  
  4111. //print core rate
  4112. ostringstream core;
  4113. core << "CORE UPDATE [" << fixed << setprecision(4) << 1000.0 / g_engine->getFrameRate_core() << "]";
  4114. verdana10->Print(10,140,core.str(),0xFFFFFFFF);
  4115.  
  4116. //print screen fps
  4117. ostringstream fps;
  4118. fps << "SCREEN REFRESH [" << fixed << setprecision(2) << g_engine->getFrameRate_real() << "]";
  4119. verdana10->Print(10,160,fps.str(),0xFFFFFFFF);
  4120.  
  4121. //print entity count
  4122. ostringstream entities;
  4123. entities << "ENTITY COUNT [" << g_engine->getEntityCount() << "]";
  4124. verdana10->Print(10,180,entities.str(),0xFFFFFFFF);
  4125. }
  4126.  
  4127. void game_update()
  4128. {
  4129. ProvjeriFPS();
  4130.  
  4131. SkyBox1_S->setVelocity(-0.2+SmanjiSamBrzinu*0.1,0);
  4132. SkyBox2_S->setVelocity(-0.2+SmanjiSamBrzinu*0.1,0);
  4133. if (SkyBox1_S->getX() <= -SCREENW ) SkyBox1_S->setPosition(SCREENW,0);
  4134. if (SkyBox2_S->getX() <= -SCREENW ) SkyBox2_S->setPosition(SCREENW,0);
  4135.  
  4136. switch (gameState)
  4137. {
  4138. case STATE_ANTONIOR:
  4139. case STATE_CROTEAM:
  4140. case STATE_SS2DTLGH:
  4141. if ( g_engine->audio->IsPlaying("Music_AntonioR")==false ) g_engine->audio->Play("Music_AntonioR");
  4142. break;
  4143.  
  4144. case STATE_INTRO:
  4145. if ( g_engine->audio->IsPlaying("Music_SpaceIntro")==false ) g_engine->audio->Play("Music_SpaceIntro");
  4146. break;
  4147.  
  4148. case STATE_PLAY:
  4149. if (g_engine->findEntity(N_KAMIKAZA) == NULL) g_engine->audio->Stop("N_Kamikaza");
  4150. if (g_engine->findEntity(N_BIK) == NULL) g_engine->audio->Stop("N_BikRun");
  4151. if ((g_engine->findEntity(N_BIK) != NULL) && (g_engine->audio->IsPlaying("N_BikRun") == false )) g_engine->audio->Play("N_BikRun");
  4152. if ((g_engine->findEntity(N_KAMIKAZA) != NULL) && (g_engine->audio->IsPlaying("N_Kamikaza") == false )) g_engine->audio->Play("N_Kamikaza");
  4153. if ((g_engine->findEntity(BOSS_VATRA) == NULL) && (g_engine->audio->IsPlaying("B_B1") == true )) g_engine->audio->Stop("B_B1");
  4154. if ((g_engine->findEntity(BOSS_VATRA) == NULL) && (g_engine->findEntity(BOSS) != NULL) && (g_engine->audio->IsPlaying("BossFly") == false ) && (BossEnergy > 0 )) g_engine->audio->Play("BossFly");
  4155. if (BossEnergy <= 0 ) g_engine->audio->Stop("BossFly");
  4156.  
  4157. noge->animate();
  4158.  
  4159. IGES();
  4160.  
  4161. if (Sam_energy <= 0)
  4162. {
  4163. if (g_engine->audio->IsPlaying("N_Kamikaza")) g_engine->audio->Stop("N_Kamikaza");
  4164. if (g_engine->audio->IsPlaying("N_BikRun")) g_engine->audio->Stop("N_BikRun");
  4165. g_engine->audio->Play("Sam_Smrt");
  4166. if (level==9) g_engine->audio->Play("B_Start");
  4167. if (paddle->Gledam=='D') addSamMrtav(META->getX()-100,META->getY()+80,'D');
  4168. else addSamMrtav(META->getX(),META->getY()+80,'L');
  4169. gameState=STATE_LOSER;
  4170. cursor->setVisible(false);
  4171. StartS->setImage(M_GameOver_T);
  4172. StartS->setPosition(g_engine->getScreenWidth()/2-150, g_engine->getScreenHeight()/2-150);
  4173. StartS->setColor(0xFFFFFFFF);
  4174. }
  4175.  
  4176. //print status info
  4177. /*if (console->isShowing())
  4178. {
  4179. //print program title
  4180. ostringstream title;
  4181. title << "Game title [" << g_engine->getAppTitle() << "]";
  4182. console->print(title.str(), 0);
  4183.  
  4184. //print screen resolution
  4185. ostringstream screen;
  4186. screen << "Screen res [" << g_engine->getScreenWidth() << "," << g_engine->getScreenHeight() << "] depth [" << g_engine->getColorDepth() << "]";
  4187. console->print(screen.str(), 2);
  4188.  
  4189. //print engine version
  4190. console->print(g_engine->getVersionText(), 4);
  4191.  
  4192. //print core rate
  4193. ostringstream core;
  4194. core << "Core update [" << fixed << setprecision(4) << 1000.0 / g_engine->getFrameRate_core() << "]";
  4195. console->print(core.str(), 6);
  4196.  
  4197. //print screen fps
  4198. ostringstream fps;
  4199. fps << "Screen refresh [" << fixed << setprecision(2) << g_engine->getFrameRate_real() << "]";
  4200. console->print(fps.str(), 8);
  4201.  
  4202. //print entity count
  4203. ostringstream entities;
  4204. entities << "Entitiy count [" << g_engine->getEntityCount() << "]";
  4205. console->print(entities.str(), 10);
  4206. }*/
  4207. break;
  4208.  
  4209. case STATE_RESTART_L:
  4210. case STATE_GAMEOVER:
  4211. g_engine->audio->StopAll();
  4212. SkyBox1_S->setVelocity(0,0);
  4213. SkyBox2_S->setVelocity(0,0);
  4214. break;
  4215.  
  4216. case STATE_LOSER:
  4217. if ((g_engine->findEntity(BOSS_VATRA) == NULL) && (g_engine->audio->IsPlaying("B_B1") == true )) g_engine->audio->Stop("B_B1");
  4218. if ((g_engine->findEntity(BOSS_VATRA) == NULL) && (g_engine->findEntity(BOSS) != NULL) && (g_engine->audio->IsPlaying("BossFly") == false ) && (BossEnergy > 0 )) g_engine->audio->Play("BossFly");
  4219. if (BossEnergy <= 0 ) g_engine->audio->Stop("BossFly");
  4220. break;
  4221. }
  4222. }
  4223.  
  4224. void game_render2d()
  4225. {
  4226.  
  4227. ostringstream loser,loser2,Boss_Energy,kut,pauza,sc,lvl,pow,energy,enemy_c,MunMG,MunL,MunRL,MunT,Varanje;
  4228. static Timer timer;
  4229. static D3DCOLOR color = 0xFFFFF000;
  4230. static bool toggle = false;
  4231.  
  4232. switch (gameState)
  4233. {
  4234. case STATE_RESTART_L:
  4235. PanelQuit->draw();
  4236. loser << "Loading complete";
  4237. pauza << "PRESS ANY KEY TO CONTINUE ... ";
  4238. times24->Print(350,SCREENH/2-145,loser.str(), 0xFFFF0000);
  4239. times24->Print(400,SCREENH/2-50,pauza.str(), 0xFFFF0000);
  4240. break;
  4241.  
  4242. case STATE_PLAY:
  4243. Pupak->draw();
  4244. noge->draw();
  4245. paddle->draw();
  4246.  
  4247. if (ShowCollisionBox == 1) META->draw();
  4248.  
  4249. HUD->draw();
  4250.  
  4251. if (level == 8)
  4252. {
  4253. S_LOF->draw();
  4254. S_LOF->setVisible(true);
  4255. }
  4256. else
  4257. {
  4258. S_LOF->setVisible(false);
  4259. }
  4260. cursor->draw();
  4261.  
  4262. /*kut << paddle_angle << " "<< d<<" "<< polx << " "<< poly <<" " <<paddle->Gledam;
  4263. times24->Print(600,100,kut.str(), 0xFFFF0000);*/
  4264.  
  4265. //print score #,energy #,enemy_count #
  4266. if ( level == 9 )
  4267. {
  4268. if ( BossEnergy < 0 ) BossEnergy=0;
  4269. Boss_Energy << " BESHTIYA " << BossEnergy;
  4270. times24->Print(SCREENW-260,20,Boss_Energy.str(), 0xFFFF0000);
  4271. }
  4272.  
  4273. Varanje << "CHEATER";
  4274. if (Cheater==true) times24->Print(1025,SCREENH-42,Varanje.str(), 0xFFFF0000);
  4275.  
  4276. sc << "SCORE " << score;
  4277. times24->Print(20,20,sc.str(), color);
  4278.  
  4279. energy <<Sam_energy;
  4280. times24->Print(55,SCREENH-42,energy.str(), color);
  4281.  
  4282. MunMG << MunicijaMG;
  4283. times24->Print(380,SCREENH-42,MunMG.str(), color);
  4284. MunRL << MunicijaRL;
  4285. times24->Print(480,SCREENH-42,MunRL.str(), color);
  4286. MunL << MunicijaL;
  4287. times24->Print(865,SCREENH-42,MunL.str(), color);
  4288. MunT << MunicijaT;
  4289. times24->Print(965,SCREENH-42,MunT.str(), color);
  4290.  
  4291. enemy_c << enemy_spawn_count;
  4292. times24->Print(1220,SCREENH-42,enemy_c.str(), color);
  4293. break;
  4294.  
  4295. case STATE_END:
  4296. if (Cheater==true)
  4297. {
  4298. Varanje << "THERE IS NO GLORY IN CHEATING !";
  4299. times24->Print(20,SCREENH-42,Varanje.str(), 0xFFFF0000);
  4300. }
  4301. else
  4302. {
  4303. Varanje << "CONGRATULATIONS !";
  4304. times24->Print(20,SCREENH-42,Varanje.str(), 0xFFFF0000);
  4305. }
  4306. break;
  4307.  
  4308. case STATE_MENU:
  4309. S_LOF->setVisible(false);
  4310. StartS->draw();
  4311. QuitS->draw();
  4312. LoadS->draw();
  4313. SaveS->draw();
  4314.  
  4315. if ((cursor->getX() > StartS->getX()) && (cursor->getX() < StartS->getX()+StartS->getWidth()) && (cursor->getY() > StartS->getY()) && (cursor->getY() < StartS->getY()+StartS->getHeight()))
  4316. {
  4317. if ( menustart == true )
  4318. {
  4319. g_engine->audio->Play("Select");
  4320. }
  4321. menustart = false;
  4322. StartS->setColor(0x55FFFFFF);
  4323. }
  4324. else {
  4325. StartS->setColor(0xFFFFFFFF);
  4326. menustart = true;
  4327. }
  4328.  
  4329.  
  4330. if ((cursor->getX() > QuitS->getX()) && (cursor->getX() < QuitS->getX()+QuitS->getWidth()) && (cursor->getY() > QuitS->getY()) && (cursor->getY() < QuitS->getY()+QuitS->getHeight()))
  4331. {
  4332. if ( menuquit == true )
  4333. {
  4334. g_engine->audio->Play("Select");
  4335. }
  4336. menuquit = false;
  4337. QuitS->setColor(0x55FFFFFF);
  4338. }
  4339. else {
  4340. QuitS->setColor(0xFFFFFFFF);
  4341. menuquit = true;
  4342. }
  4343.  
  4344. if ((cursor->getX() > LoadS->getX()) && (cursor->getX() < LoadS->getX()+LoadS->getWidth()) && (cursor->getY() > LoadS->getY()) && (cursor->getY() < LoadS->getY()+LoadS->getHeight()))
  4345. {
  4346. if ( menuload == true )
  4347. {
  4348. g_engine->audio->Play("Select");
  4349. }
  4350. if ( RL_Level != 0 )
  4351. {
  4352. menuload = false;
  4353. LoadS->setColor(0x55FFFFFF);
  4354. LoadS->setSize(150,50);
  4355. }
  4356. else
  4357. {
  4358. menuload = false;
  4359. LoadS->setImage(M_NSG_T);
  4360. LoadS->setSize(150,50);
  4361. }
  4362. }
  4363. else
  4364. {
  4365. if ( RL_Level != 0 )
  4366. {
  4367. LoadS->setColor(0xFFFFFFFF);
  4368. LoadS->setSize(150,50);
  4369. menuload = true;
  4370. }
  4371. else
  4372. {
  4373. menuload = true;
  4374. LoadS->setImage(M_Load_T);
  4375. LoadS->setSize(150,50);
  4376. }
  4377. }
  4378.  
  4379.  
  4380. if ((cursor->getX() > SaveS->getX()) && (cursor->getX() < SaveS->getX()+SaveS->getWidth()) && (cursor->getY() > SaveS->getY()) && (cursor->getY() < SaveS->getY()+SaveS->getHeight()))
  4381. {
  4382. if ( menusave == true )
  4383. {
  4384. g_engine->audio->Play("Select");
  4385. }
  4386. menusave = false;
  4387. SaveS->setImage(M_ASO_T);
  4388. SaveS->setSize(150,50);
  4389. }
  4390. else
  4391. {
  4392. SaveS->setImage(M_Save_T);
  4393. SaveS->setSize(150,50);
  4394. menusave = true;
  4395. }
  4396.  
  4397. //times24->Print(SCREENW-100,5,"DEMO",0xFFFFF000);
  4398. times24->Print(SCREENW/2-190 ,SCREENH-45,"antonior.software@gmail.com",0xFFFFF000);
  4399. Glupost->draw();
  4400. cursor->draw();
  4401. break;
  4402.  
  4403. //TEZINA
  4404. case STATE_TEZINA:
  4405. StartS->draw();
  4406. LoadS->draw();
  4407. SaveS->draw();
  4408.  
  4409. //NORMAL
  4410. if ((cursor->getX() > LoadS->getX()) && (cursor->getX() < LoadS->getX()+LoadS->getWidth()) && (cursor->getY() > LoadS->getY()) && (cursor->getY() < LoadS->getY()+LoadS->getHeight()))
  4411. {
  4412. if ( menunormal == true )
  4413. {
  4414. g_engine->audio->Play("Select");
  4415. }
  4416. menunormal = false;
  4417. LoadS->setColor(0x55FFFFFF);
  4418. }
  4419. else
  4420. {
  4421. LoadS->setColor(0xFFFFFFFF);
  4422. menunormal = true;
  4423. }
  4424.  
  4425. //SERIOUS
  4426. if ((cursor->getX() > SaveS->getX()) && (cursor->getX() < SaveS->getX()+SaveS->getWidth()) && (cursor->getY() > SaveS->getY()) && (cursor->getY() < SaveS->getY()+SaveS->getHeight()))
  4427. {
  4428. if ( menuserious == true )
  4429. {
  4430. g_engine->audio->Play("Select");
  4431. }
  4432. menuserious = false;
  4433. SaveS->setColor(0x55FFFFFF);
  4434. }
  4435. else
  4436. {
  4437. SaveS->setColor(0xFFFFFFFF);
  4438. menuserious = true;
  4439. }//TEZINA
  4440.  
  4441. //times24->Print(SCREENW-100,5,"DEMO",0xFFFFF000);
  4442. times24->Print(SCREENW/2-190 ,SCREENH-45,"antonior.software@gmail.com",0xFFFFF000);
  4443. Glupost->draw();
  4444. cursor->draw();
  4445. break;
  4446.  
  4447. case STATE_GAMEOVER:
  4448. StartS->draw();
  4449. PanelQuit->draw();
  4450. loser << "ENTER - RESTART LEVEL";
  4451. loser2 << "ESCAPE - MAIN MENU";
  4452. times24->Print(452,SCREENH/2-25,loser.str(), 0xFFFF0000);
  4453. times24->Print(470,SCREENH/2+25,loser2.str(), 0xFFFF0000);
  4454. StartS->draw();
  4455. break;
  4456.  
  4457. case STATE_LOSER:
  4458. if ( level == 9 && BossEnergy > 0 )
  4459. {
  4460. if ( BossEnergy < 0 ) BossEnergy=0;
  4461. Boss_Energy << " BESHTIYA " << BossEnergy;
  4462. times24->Print(SCREENW-260,20,Boss_Energy.str(), 0xFFFF0000);
  4463. }
  4464.  
  4465. HUD->draw();
  4466.  
  4467. energy << 0;
  4468. times24->Print(55,SCREENH-42,energy.str(), color);
  4469. MunMG << MunicijaMG;
  4470. times24->Print(380,SCREENH-42,MunMG.str(), color);
  4471. MunRL << MunicijaRL;
  4472. times24->Print(480,SCREENH-42,MunRL.str(), color);
  4473. MunL << MunicijaL;
  4474. times24->Print(865,SCREENH-42,MunL.str(), color);
  4475. MunT << MunicijaT;
  4476. times24->Print(965,SCREENH-42,MunT.str(), color);
  4477. enemy_c << enemy_spawn_count;
  4478. times24->Print(1220,SCREENH-42,enemy_c.str(), color);
  4479.  
  4480. //game over
  4481. StartS->draw();
  4482.  
  4483. //print score #,energy #,enemy_count #
  4484. sc << "SCORE " << score;
  4485. times24->Print(20,20,sc.str(), color);
  4486.  
  4487. PanelQuit->draw();
  4488. loser << "ENTER - RESTART LEVEL";
  4489. loser2 << "ESCAPE - MAIN MENU";
  4490. times24->Print(452,SCREENH/2-25,loser.str(), 0xFFFF0000);
  4491. times24->Print(470,SCREENH/2+25,loser2.str(), 0xFFFF0000);
  4492. StartS->draw();
  4493. break;
  4494.  
  4495. case STATE_EXIT:
  4496. LoadS->draw();
  4497. SaveS->draw();
  4498. StartS->draw();
  4499.  
  4500. if ((cursor->getX() > LoadS->getX()) && (cursor->getX() < LoadS->getX()+LoadS->getWidth()) && (cursor->getY() > LoadS->getY()) && (cursor->getY() < LoadS->getY()+LoadS->getHeight()))
  4501. {
  4502. if ( menuload == true )
  4503. {
  4504. g_engine->audio->Play("Select");
  4505. }
  4506. menuload = false;
  4507. LoadS->setColor(0x55FFFFFF);
  4508. }
  4509. else
  4510. {
  4511. LoadS->setColor(0xFFFFFFFF);
  4512. menuload = true;
  4513. }
  4514.  
  4515.  
  4516. if ((cursor->getX() > SaveS->getX()) && (cursor->getX() < SaveS->getX()+SaveS->getWidth()) && (cursor->getY() > SaveS->getY()) && (cursor->getY() < SaveS->getY()+SaveS->getHeight()))
  4517. {
  4518. if ( menusave == true )
  4519. {
  4520. g_engine->audio->Play("Select");
  4521. }
  4522. menusave = false;
  4523. SaveS->setColor(0x55FFFFFF);
  4524. }
  4525. else
  4526. {
  4527. SaveS->setColor(0xFFFFFFFF);
  4528. menusave = true;
  4529. }
  4530.  
  4531. //times24->Print(SCREENW-100,5,"DEMO",0xFFFFF000);
  4532. times24->Print(SCREENW/2-190 ,SCREENH-45,"antonior.software@gmail.com",0xFFFFF000);
  4533. Glupost->draw();
  4534. cursor->draw();
  4535. break;
  4536.  
  4537. }
  4538.  
  4539. if (konzola)
  4540. {
  4541. Konzola->setVisible(true);
  4542. Konzola->draw();
  4543. PrikaziKonzolu();
  4544. }
  4545. else
  4546. {
  4547. Konzola->setVisible(false);
  4548. }
  4549. //console->draw();
  4550. }
  4551.  
  4552. void UpdateBoss()
  4553. {
  4554. if ( boss->energy > 0 ) BossEnergy = boss->energy;
  4555.  
  4556. if ( boss->energy <= 0 && MrtavBoss==false)
  4557. {
  4558. VatraKraj=false;
  4559. boss->Stanje2=2;
  4560. score=score+3000;
  4561. MrtavBoss=true;
  4562. }
  4563.  
  4564. if ( boss->Stanje2 == 2 )
  4565. {
  4566. BossEnergy = boss->energy;
  4567. boss->setRotation(0.3);
  4568. boss->setVelocity(0,-1);
  4569. g_engine->audio->Play("B_Death");
  4570. boss->Stanje2=3;
  4571. }
  4572.  
  4573. if ( boss->Stanje2 == 3)
  4574. {
  4575. if (boss->getY() >= -90)
  4576. {
  4577. if (N_Timer1.stopwatch(550)) addExplosionK(boss->getX()-50+(rand()%800),boss->getY()+(rand()%250)-120);
  4578. }
  4579. else
  4580. {
  4581. boss->Stanje2=4;
  4582. MetaG->setCollidable(false);
  4583. MetaD->setCollidable(false);
  4584. boss->setVisible(false);
  4585. addExplosionK(boss->getX()-50+(rand()%800),boss->getY()+(rand()%250)-120);
  4586. addExplosionK(boss->getX()-50+(rand()%800),boss->getY()+(rand()%250)-120);
  4587. addExplosionK(boss->getX()-50+(rand()%800),boss->getY()+(rand()%250)-120);
  4588. if (g_engine->audio->IsPlaying("BossFly") == true ) g_engine->audio->Stop("BossFly");
  4589. if (g_engine->audio->IsPlaying("B_B1") == true ) g_engine->audio->Stop("B_B1");
  4590. addKrilo(-10,5,50);
  4591. addRuka(5,-10,65);
  4592. addKrilo(10,-5,-25);
  4593. addRuka(10,5,-80);
  4594. addBossHead();
  4595. addItem(25,1200,450,false,0);
  4596. addItem(25,80,450,false,0);
  4597. addItem(5,600,500,false,50);
  4598. if (Tezina==SERIOUS)
  4599. {
  4600. addItem(7,1200,650,false,200);
  4601. addItem(8,80,650,false,3);
  4602. }
  4603. }
  4604.  
  4605. }
  4606.  
  4607. if (spustanje==true && boss->getY()>0 && boss->energy>0)
  4608. {
  4609. boss->setVelocity(-(2-SmanjiSamBrzinu),0);
  4610. spustanje=false;
  4611. }
  4612.  
  4613. if (spustanje==false && boss->energy > BossEnergyTriger1 )
  4614. {
  4615. if (boss->getX()<-155) boss->setVelocity(2-SmanjiSamBrzinu,0);
  4616. if (boss->getX()>555) boss->setVelocity(-(2-SmanjiSamBrzinu),0);
  4617.  
  4618. if ( (g_engine->findEntity(BOSS_OKO) == NULL) && (boss->Stanje == 1) )
  4619. {
  4620. if (N_Timer1.stopwatch(8000)) fireB1(boss->getX(),boss->getY());
  4621. if (N_Timer2.stopwatch(3000)) fireB2(boss,365,70,420,50,465,70);
  4622. }
  4623.  
  4624. if ( (g_engine->findEntity(BOSS_ROG) == NULL) && (g_engine->findEntity(BOSS_VATRA) == NULL) && (boss->Stanje == 2) )
  4625. {
  4626. if (N_Timer3.stopwatch(200)) fireB3(boss,415,120,450,120);
  4627. }
  4628. }
  4629.  
  4630. if ( lijevoidesno==true && boss->energy <= BossEnergyTriger1 )
  4631. {
  4632. addExplosionK(boss->getX()+189-115,boss->getY()+230-110);
  4633. addExplosionK(boss->getX()+609-115,boss->getY()+228-110);
  4634. g_engine->audio->Play("B_EndClose");
  4635. lijevoidesno=false;
  4636. addItem(25,600,550,false,0);
  4637. addItem(4,140,500,false,200);
  4638. addItem(5,1100,500,false,50);
  4639. }
  4640.  
  4641. if( boss->energy <= BossEnergyTriger2 && boss_krik == true)
  4642. {
  4643. g_engine->audio->Play("B_EndClose");
  4644. boss->setVelocity(2-SmanjiSamBrzinu,0);
  4645. boss_krik=false;
  4646. }
  4647.  
  4648. //GASI SE VATRA U ENTITYUP
  4649. if( boss->energy <= BossEnergyTriger1 && boss->energy > BossEnergyTriger2 )
  4650. {
  4651. if (boss->getY()<100)
  4652. {
  4653. VatraKraj=false;
  4654. boss->setVelocity(0,2-SmanjiSamBrzinu);
  4655. }
  4656. else
  4657. {
  4658. VatraKraj=true;
  4659. boss->setVelocity(0,0);
  4660. if (N_Timer4.stopwatch(900)) fireB2(boss,365,70,420,50,465,70);
  4661. if (N_Timer5.stopwatch(3500)) fireB11(boss->getX(),boss->getY());
  4662. }
  4663. }
  4664.  
  4665. if( boss->energy <= BossEnergyTriger2 && boss->energy > 0)
  4666. {
  4667. VatraKraj=true;
  4668. if (boss->getX()<-155) boss->setVelocity(2-SmanjiSamBrzinu,0);
  4669. if (boss->getX()>555) boss->setVelocity(-(2-SmanjiSamBrzinu),0);
  4670. if (N_Timer1.stopwatch(4000)) fireB11(boss->getX(),boss->getY());
  4671. if ((g_engine->findEntity(BOSS_ROG)==NULL) && N_Timer2.stopwatch(300)) fireB3(boss,415,120,450,120);
  4672. }
  4673. }
  4674.  
  4675. void UpdateHead(Sprite *head)
  4676. {
  4677. BossEnergy=head->energy;
  4678.  
  4679. if (head->energy<600 && DieWhenIKillYou==false)
  4680. {
  4681. g_engine->audio->Play("Sam_Die_When_I_Kill_You");
  4682. DieWhenIKillYou=true;
  4683. }
  4684.  
  4685. double vx = head->getVelocity().getX();
  4686. double vy = head->getVelocity().getY();
  4687. int rightEdge = g_engine->getScreenWidth() - head->getWidth() + 5;
  4688. int bottomEdge = g_engine->getScreenHeight() - head->getHeight()-325;
  4689.  
  4690. if ( head->Stanje == 1 )
  4691. {
  4692. if ( ( (g_engine->findEntity(OBJECT_MISC)== NULL) && (g_engine->findEntity(BOSS_ROG)== NULL) && ( g_engine->findEntity(BOSS_VATRENAKUGLA)== NULL) ) && N_Timer1.stopwatch(500)) fireB3(head,45,80,80,80);
  4693.  
  4694. if (head->getX() < -5)//lijevo
  4695. {
  4696. vx = fabs(vx);
  4697. head->setX(-2);
  4698. head->Stanje2=head->Stanje2+1;
  4699. if(head->Stanje2>=7)
  4700. {
  4701. vy=0;
  4702. head->Stanje=2;
  4703. if ( rand()%2 ) head->Stanje2=1;
  4704. else head->Stanje2=2;
  4705. }
  4706. }
  4707.  
  4708. if (head->getX() > rightEdge)//desno
  4709. {
  4710. vx = fabs(vx) * -1;
  4711. head->setX(rightEdge-3);
  4712. head->Stanje2=head->Stanje2+1;
  4713. if(head->Stanje2>=7)
  4714. {
  4715. vy=0;
  4716. head->Stanje=2;
  4717. if ( rand()%2 ) head->Stanje2=1;
  4718. else head->Stanje2=2;
  4719. }
  4720. }
  4721.  
  4722. if (head->getY() < 10)
  4723. {
  4724. vy = fabs(vy);
  4725. head->setY(10);
  4726. head->Stanje2=head->Stanje2+1;
  4727.  
  4728. }
  4729.  
  4730. if (head->getY() > bottomEdge)
  4731. {
  4732. vy = fabs(vy) * -1;
  4733. head->setY(bottomEdge);
  4734. head->Stanje2=head->Stanje2+1;
  4735.  
  4736. }
  4737.  
  4738. //update head's velocity
  4739. head->setVelocity(vx, vy);
  4740.  
  4741. }//Stanje 1
  4742.  
  4743. if ( head->Stanje == 2 )
  4744. {
  4745. if ( head->Stanje2 == 1 )
  4746. {
  4747. if (N_Timer2.stopwatch(170)) fireB4(head,35,40);
  4748. }
  4749.  
  4750. if ( head->Stanje2 == 2 )
  4751. {
  4752. if (N_Timer3.stopwatch(500)) fireB2(head,45,40,70,40,95,40);
  4753. }
  4754.  
  4755. //update ball velocity x
  4756. if (head->getX() < -5)//lijevo
  4757. {
  4758. //update ball's velocity
  4759. head->setVelocity(-(12-(5*SmanjiSamBrzinu)),-(4-(2*SmanjiSamBrzinu)));
  4760. head->setX(-2);
  4761. if (rand()%2==0) head->Stanje2=0;
  4762. else head->Stanje2=1;
  4763. head->Stanje=1;
  4764. }
  4765. if (head->getX() > rightEdge)//desno
  4766. {
  4767. head->setVelocity(12-(5*SmanjiSamBrzinu),4-(2*SmanjiSamBrzinu));
  4768. head->setX(rightEdge-3);
  4769. if (rand()%2==0) head->Stanje2=0;
  4770. else head->Stanje2=1;
  4771. head->Stanje=1;
  4772. }
  4773. }//Stanje 2
  4774. }
  4775.  
  4776. void Varalica()
  4777. {
  4778. //HEALTH25
  4779. if (Cheat1.compare(CheatUlaz)==0)
  4780. {
  4781. Sam_energy=Sam_energy+25;
  4782. Cheater=true;
  4783. }
  4784.  
  4785. //SSF
  4786. if (Cheat2.compare(CheatUlaz)==0)
  4787. {
  4788. SecondaryFire=true;
  4789. Cheater=true;
  4790. }
  4791.  
  4792. //CHEATER_I_AM
  4793. if (Cheat3.compare(CheatUlaz)==0)
  4794. {
  4795. SecondaryFire=true;
  4796. Sam_energy=199;
  4797. MunicijaRL = 99;
  4798. MunicijaT = 9;
  4799. MunicijaMG = 999;
  4800. MunicijaL = 499;
  4801. Cheater=true;
  4802. }
  4803. }
  4804.  
  4805. ////////////////////////////////////////////////////////////////////////////////Load Level And Items
  4806. void LLAI( int level_X )
  4807. {
  4808. switch(level_X)
  4809. {
  4810. case 0:
  4811. g_engine->audio->StopAll();
  4812. g_engine->audio->Play("Music_Level000");
  4813. if (Tezina==SERIOUS) TezinaRazlika=0;
  4814. else TezinaRazlika=1;
  4815. level=0;
  4816. QWERTZ=0;
  4817. ProciCu=true;
  4818. SecondaryFire=false;
  4819. paddleVelocity = 0.00;
  4820. paddleVelocity2 = 0.00;
  4821. Kretanje=0;
  4822. KretanjeY=0;
  4823. noge->setTotalFrames(1);
  4824. paddle->setTotalFrames(1);
  4825. Sam_BrzinaX = 3.5-SmanjiSamBrzinu;
  4826. Sam_BrzinaY = 3.0-SmanjiSamBrzinu;
  4827. META->setPosition(SCREENW/2-30,SCREENH/2);
  4828. background->setImage(B_Level000);
  4829. SkyBox1_S->setVisible(true);
  4830. SkyBox2_S->setVisible(true);
  4831. SkyBox1_S->setImage(SB_Vedrosoblacima);
  4832. SkyBox2_S->setImage(SB_Vedrosoblacima);
  4833. //addBossHead();
  4834. /*addItem(4,100,600,false,500);
  4835. addItem(5,200,600,false,500);
  4836. addItem(7,800,600,false,500);
  4837. addItem(8,900,600,false,500);*/
  4838. gameState=STATE_PLAY;
  4839. cursor->loadImage("Textures/Cursor_InGame.tga");
  4840. cursor->setVisible(true);
  4841. Level_End=0;
  4842. Sam_energy = 100;
  4843. level=0;
  4844. score = 0;
  4845. MunicijaT = 0;
  4846. MunicijaRL = 0;
  4847. MunicijaMG = 0;
  4848. MunicijaL = 0;
  4849. oruzje=0;
  4850. enemy_count=0;
  4851. enemy_spawn_count=0;
  4852. addLGB();
  4853. Varalica();
  4854. break;
  4855.  
  4856. case 1:
  4857. g_engine->audio->StopAll();
  4858. g_engine->audio->Play("Music_Level001");
  4859. g_engine->audio->Play("Sam_Ready_For_Battle");
  4860. level=1;
  4861. QWERTZ=0;
  4862. SecondaryFire=false;
  4863. ProciCu=true;
  4864. gameState=STATE_PLAY;
  4865. background->setImage(B_Level001);
  4866. SkyBox1_S->setImage(SB_Vedrosoblacima);
  4867. SkyBox2_S->setImage(SB_Vedrosoblacima);
  4868. cursor->loadImage("Textures/Cursor_InGame.tga");
  4869. cursor->setVisible(true);
  4870. addStup(100,130,1.3,'D');
  4871. addStup(300,130,1.3,'D');
  4872. addStup(500,130,1.3,'D');
  4873. addStup(700,130,1.3,'D');
  4874. addStup(900,130,1.3,'D');
  4875. addStup(1100,130,1.3,'D');
  4876. Level_End=0;
  4877. domamami=true;
  4878. if (Tezina==SERIOUS)
  4879. {
  4880. enemy_count=BrojN[level]+5;
  4881. enemy_spawn_count=BrojN[level]+5;
  4882. }
  4883. else
  4884. {
  4885. enemy_count=BrojN[level];
  4886. enemy_spawn_count=BrojN[level];
  4887. }
  4888. Varalica();
  4889. break;
  4890.  
  4891. case 2:
  4892. g_engine->audio->StopAllExcept("Music_Level001");
  4893. if (g_engine->audio->IsPlaying("Music_Level001") == false) g_engine->audio->Play("Music_Level001");
  4894. level=2;
  4895. QWERTZ=0;
  4896. SecondaryFire=false;
  4897. ProciCu=true;
  4898. gameState=STATE_PLAY;
  4899. Level_End=0;
  4900. background->setImage(B_Level002);
  4901. SkyBox1_S->setImage(SB_Vedrosoblacima);
  4902. SkyBox2_S->setImage(SB_Vedrosoblacima);
  4903. cursor->loadImage("Textures/Cursor_InGame.tga");
  4904. cursor->setVisible(true);
  4905. addPtica('D');
  4906. addPtica('L');
  4907. addItem(25,350,500,false,0);
  4908. if (Tezina==SERIOUS)
  4909. {
  4910. enemy_count=BrojN[level];
  4911. enemy_spawn_count=BrojN[level];
  4912. }
  4913. else
  4914. {
  4915. enemy_count=BrojN[level];
  4916. enemy_spawn_count=BrojN[level];
  4917. }
  4918. background->setImage(B_Level002);
  4919. Varalica();
  4920. break;
  4921.  
  4922. case 3://NOC
  4923. g_engine->audio->StopAll();
  4924. g_engine->audio->Play("Music_Level003");
  4925. level=3;
  4926. QWERTZ=0;
  4927. SecondaryFire=false;
  4928. Level_End=0;
  4929. ProciCu=true;
  4930. gameState=STATE_PLAY;
  4931. LudePtice = false;
  4932. background->setImage(B_Level003);
  4933. cursor->loadImage("Textures/Cursor_InGame.tga");
  4934. cursor->setVisible(true);
  4935. addPtica('D');
  4936. addItem(25,500,500,false,0);
  4937. if (Tezina==SERIOUS)
  4938. {
  4939. enemy_count=BrojN[level]+45;
  4940. enemy_spawn_count=BrojN[level]+45;
  4941. addItem(4,450,600,true,450);
  4942. }
  4943. else
  4944. {
  4945. addItem(4,450,600,true,500);
  4946. enemy_count=BrojN[level];
  4947. enemy_spawn_count=BrojN[level];
  4948. }
  4949. Varalica();
  4950. break;
  4951.  
  4952. case 4:
  4953. g_engine->audio->StopAll();
  4954. g_engine->audio->Play("Music_Level004");
  4955. level=4;
  4956. QWERTZ=0;
  4957. SecondaryFire=false;
  4958. ProciCu=true;
  4959. gameState=STATE_PLAY;
  4960. Level_End=0;
  4961. background->setImage(B_Level004);
  4962. SkyBox1_S->setImage(SB_Vedrosoblacima2);
  4963. SkyBox2_S->setImage(SB_Vedrosoblacima2);
  4964. mraketa=false;
  4965. cursor->loadImage("Textures/Cursor_InGame.tga");
  4966. cursor->setVisible(true);
  4967. addItem(5,400,500,true,50);
  4968. addItem(25,300,500,false,0);
  4969. if (Tezina==SERIOUS)
  4970. {
  4971. enemy_count=BrojN[level]+15;
  4972. enemy_spawn_count=BrojN[level]+15;
  4973. }
  4974. else
  4975. {
  4976. enemy_count=BrojN[level];
  4977. enemy_spawn_count=BrojN[level];
  4978. }
  4979. gameState=STATE_PLAY;
  4980. Varalica();
  4981. break;
  4982.  
  4983. case 5:
  4984. g_engine->audio->StopAll();
  4985. level=5;
  4986. QWERTZ=0;
  4987. SecondaryFire=false;
  4988. ProciCu=true;
  4989. gameState=STATE_PLAY;
  4990. Level_End=0;
  4991. background->setImage(B_Level005);
  4992. SkyBox1_S->setImage(SB_Vedrosoblacima2);
  4993. SkyBox2_S->setImage(SB_Vedrosoblacima2);
  4994. addItem(999,615,450,false,0);
  4995. addItem(5,615,350,false,50);
  4996. addItem(100,625,550,false,0);
  4997. addGMan();
  4998. cursor->loadImage("Textures/Cursor_InGame.tga");
  4999. cursor->setVisible(true);
  5000. if (Tezina==SERIOUS)
  5001. {
  5002. enemy_count=BrojN[level]+5;
  5003. enemy_spawn_count=BrojN[level]+5;
  5004. addItem(4,800,450,false,200);
  5005. addItem(5,615,600,false,50);
  5006. }
  5007. else
  5008. {
  5009. addItem(4,800,450,false,200);
  5010. enemy_count=BrojN[level];
  5011. enemy_spawn_count=BrojN[level];
  5012. }
  5013. gameState=STATE_PLAY;
  5014. Varalica();
  5015. break;
  5016.  
  5017. case 6:
  5018. g_engine->audio->StopAll();
  5019. g_engine->audio->Play("Music_Level006");
  5020. level=6;
  5021. QWERTZ=0;
  5022. ProciCu=true;
  5023. gameState=STATE_PLAY;
  5024. Level_End=0;
  5025. background->setImage(B_Level006);
  5026. cursor->loadImage("Textures/Cursor_InGame.tga");
  5027. cursor->setVisible(true);
  5028. LudePtice = false;
  5029. mtop=false;
  5030. BrPtica=15;
  5031. addPalma(50,200,0.2);
  5032. addPalma(600,200,0.2);
  5033. addPalma(795,200,0.2);
  5034. addPalma(1215,200,0.2);
  5035. addPalma(400,185,0.3);
  5036. addPalma(750,185,0.3);
  5037. addPalma(60,135,0.6);
  5038. addPalma(430,135,0.6);
  5039. addPalma(800,135,0.6);
  5040. addPalma(1170,135,0.6);
  5041. addItem(5,700,500,false,50);
  5042. addItem(25,600,500,false,0);
  5043. addItem(8,250,500,true,3);
  5044. addPtica('L');
  5045. if (Tezina==SERIOUS)
  5046. {
  5047. enemy_count=BrojN[level]+15;
  5048. enemy_spawn_count=BrojN[level]+15;
  5049. }
  5050. else
  5051. {
  5052. enemy_count=BrojN[level];
  5053. enemy_spawn_count=BrojN[level];
  5054. }
  5055. Varalica();
  5056. break;
  5057.  
  5058. case 7:
  5059. g_engine->audio->StopAll();
  5060. g_engine->audio->Play("Music_Level007");
  5061. level=7;
  5062. Level_End=0;
  5063. ProciCu=true;
  5064. QWERTZ=0;
  5065. gameState=STATE_PLAY;
  5066. background->setImage(B_Level007);
  5067. cursor->loadImage("Textures/Cursor_InGame.tga");
  5068. cursor->setVisible(true);
  5069. addItem(7,600,450,true,500);
  5070. addItem(5,620,550,false,50);
  5071. addItem(8,350,450,false,3);
  5072. if (Tezina==SERIOUS)
  5073. {
  5074. enemy_count=BrojN[level]+40;
  5075. enemy_spawn_count=BrojN[level]+40;
  5076. addItem(100,625,650,false,0);
  5077. }
  5078. else
  5079. {
  5080. enemy_count=BrojN[level];
  5081. enemy_spawn_count=BrojN[level];
  5082. addItem(25,620,650,false,0);
  5083. }
  5084. Varalica();
  5085. break;
  5086.  
  5087. case 8://LEAP OF FAITH
  5088. LOF=false;
  5089. LOF2=true;
  5090. g_engine->audio->StopAll();
  5091. g_engine->audio->Play("Music_Level008");
  5092. level=8;
  5093. Level_End=0;
  5094. ProciCu=true;
  5095. QWERTZ=0;
  5096. gameState=STATE_PLAY;
  5097. background->setImage(B_Level008);
  5098. cursor->loadImage("Textures/Cursor_InGame.tga");
  5099. cursor->setVisible(true);
  5100. enemy_count=0;
  5101. enemy_spawn_count=0;
  5102. break;
  5103.  
  5104. case 9://BOSS
  5105. g_engine->audio->StopAll();
  5106. g_engine->audio->Play("Music_Level009");
  5107. level=9;
  5108. Level_End=0;
  5109. ProciCu=true;
  5110. QWERTZ=0;
  5111. gameState=STATE_PLAY;
  5112. background->setImage(B_Level009);
  5113. cursor->loadImage("Textures/Cursor_InGame.tga");
  5114. cursor->setVisible(true);
  5115. addBoss();
  5116. addItem(100,620,450,false,0);
  5117. addItem(7,800,650,false,200);
  5118. addItem(8,1100,650,false,3);
  5119. addItem(5,1200,650,false,50);
  5120. enemy_count=0;
  5121. enemy_spawn_count=0;
  5122. break;
  5123.  
  5124. case 10://KRAJ
  5125. g_engine->audio->StopAll();
  5126. level=10;
  5127. gameState=STATE_END;
  5128. background->setImage(B_End);
  5129. cursor->setVisible(false);
  5130. Sprite *expl = new Sprite();
  5131. expl->setObjectType(OBJECT_IKI);
  5132. expl->setImage(I_Knew_It);
  5133. expl->setColumns(4);
  5134. expl->setCollidable(false);
  5135. expl->setSize(150,257);
  5136. expl->setPosition(420,380);
  5137. expl->setTotalFrames(4);
  5138. expl->setFrameTimer(110);
  5139. g_engine->addEntity( expl );
  5140. g_engine->audio->Play("Sam_I_Knew_It");
  5141. break;
  5142. }
  5143. }
  5144.  
  5145. ////////////////////////////////////////////////////////////////////////////////Delete Level And Entities - DLAE
  5146. void DLAE( Entity* entity, int L )
  5147. {
  5148. Sprite *IzbrisiMe = (Sprite*)entity;
  5149.  
  5150. switch (entity->getObjectType())
  5151. {
  5152. case OBJECT_MISC:
  5153. case CREDITSB:
  5154. case SSF:
  5155. case GMAN:
  5156. case CROWBAR:
  5157. case OBJECT_LGB:
  5158. case BOSS_METAG:
  5159. case BOSS_METAD:
  5160. case BOSS_HEAD:
  5161. case BOSS_VATRA:
  5162. case BOSS_ROG:
  5163. case BOSS_OKO:
  5164. case BOSS_VATRENAKUGLA:
  5165. case OBJECT_PALMA:
  5166. case OBJECT_STUP:
  5167. case OBJECT_EXPLOSION:
  5168. case OBJECT_KRV:
  5169. case N_LASER:
  5170. case N_RAKETA:
  5171. case N_HARPIJAPROJEKTIL:
  5172. case SACMA:
  5173. case PTICA:
  5174. case METAK:
  5175. case RAKETA:
  5176. case LASER:
  5177. case LASER2:
  5178. case TOPOVSKA_KUGLA:
  5179. case MRTVAC_SAM:
  5180. case MRTVAC:
  5181. case HEALTH_100:
  5182. case HEALTH_25:
  5183. case MR:
  5184. case MM:
  5185. case MM2:
  5186. case ML:
  5187. case MT:
  5188. case N_BIK:
  5189. case N_KAMIKAZA:
  5190. case N_HARPIJA:
  5191. case N_SETACPLAVI:
  5192. case N_SETACCRVENI:
  5193. case N_GNAARFEMALE:
  5194. case N_GNAARMALE:
  5195. case CREDITS:
  5196. if ( L == 1 )
  5197. {
  5198. if (IzbrisiMe->LevelID != level) IzbrisiMe->setAlive(false);
  5199. }
  5200. else
  5201. IzbrisiMe->setAlive(false);
  5202. break;
  5203. }
  5204. }
  5205.  
  5206. void UpdateSetacCrveni(Sprite *setac_crveni)
  5207. {
  5208. //okrece se ovisno o polozaju igraca
  5209. if ((META->getX()+META->getWidth()/2) > (setac_crveni->getX()+setac_crveni->getWidth()/2))
  5210. {
  5211. if (setac_crveni->Gledam=='L')
  5212. {
  5213. setac_crveni->Gledam='D';
  5214. setac_crveni->setImage(N_SetacCrveniL_T);
  5215. setac_crveni->setSize(295,345);
  5216. setac_crveni->setCurrentFrame(7);
  5217. setac_crveni->PolozajX=setac_crveni->getX();
  5218. }
  5219. }
  5220. else
  5221. {
  5222. if (setac_crveni->Gledam=='D')
  5223. {
  5224. setac_crveni->Gledam='L';
  5225. setac_crveni->setImage(N_SetacCrveniD_T);
  5226. setac_crveni->setSize(295,345);
  5227. setac_crveni->setCurrentFrame(7);
  5228. setac_crveni->PolozajX=setac_crveni->getX();
  5229. }
  5230. }
  5231.  
  5232. //pucanje
  5233. if (Sam_energy > 0 && gameState == STATE_PLAY)
  5234. {
  5235. setac_crveni->pucaj = setac_crveni->pucaj + 15;
  5236. if ( setac_crveni->pucaj >= 4070 ) N_FireSetacCrveni(setac_crveni);
  5237. }
  5238.  
  5239. //zaustavljanje
  5240. if (setac_crveni->Gledam=='L')
  5241. {
  5242. if (setac_crveni->getX() <= setac_crveni->PolozajX )
  5243. {
  5244. setac_crveni->setCurrentFrame(7);
  5245. setac_crveni->setVelocity(0,0);
  5246. }
  5247. else PratiMe(setac_crveni);
  5248. }
  5249. else
  5250. {
  5251. if (setac_crveni->getX() >= setac_crveni->PolozajX )
  5252. {
  5253. setac_crveni->setCurrentFrame(7);
  5254. setac_crveni->setVelocity(0,0);
  5255. }
  5256. else PratiMe(setac_crveni);
  5257. }
  5258. }
  5259.  
  5260. void UpdateSetacPlavi(Sprite *setac_plavi)
  5261. {
  5262. //okrece se ovisno o polozaju igraca
  5263. if ((META->getX()+META->getWidth()/2) > (setac_plavi->getX()+setac_plavi->getWidth()/2))
  5264. {
  5265. if (setac_plavi->Gledam=='L')
  5266. {
  5267. setac_plavi->Gledam='D';
  5268. setac_plavi->setImage(N_SetacPlaviL_T);
  5269. setac_plavi->setSize(217,235);
  5270. setac_plavi->setCurrentFrame(0);
  5271. setac_plavi->PolozajX=setac_plavi->getX();
  5272. }
  5273. }
  5274. else
  5275. {
  5276. if (setac_plavi->Gledam=='D')
  5277. {
  5278. setac_plavi->Gledam='L';
  5279. setac_plavi->setImage(N_SetacPlaviD_T);
  5280. setac_plavi->setSize(217,235);
  5281. setac_plavi->setCurrentFrame(0);
  5282. setac_plavi->PolozajX=setac_plavi->getX();
  5283. }
  5284. }
  5285.  
  5286. if (Sam_energy > 0 && gameState == STATE_PLAY)
  5287. {
  5288. setac_plavi->pucaj = setac_plavi->pucaj + 15;
  5289. if ( setac_plavi->pucaj >= 3150 ) N_FireSetacPlavi(setac_plavi);
  5290. }
  5291.  
  5292. //zaustavljanje
  5293. if (setac_plavi->Gledam=='L')
  5294. {
  5295. if (setac_plavi->getX() <= setac_plavi->PolozajX )
  5296. {
  5297. setac_plavi->setCurrentFrame(0);
  5298. setac_plavi->setVelocity(0,0);
  5299. }
  5300. else PratiMe(setac_plavi);
  5301. }
  5302. else
  5303. {
  5304. if (setac_plavi->getX() >= setac_plavi->PolozajX )
  5305. {
  5306. setac_plavi->setCurrentFrame(0);
  5307. setac_plavi->setVelocity(0,0);
  5308. }
  5309. else PratiMe(setac_plavi);
  5310. }
  5311. }
  5312.  
  5313. void UpdateHarpija(Sprite* harpija)
  5314. {
  5315. if (harpija->getX() <= -10)
  5316. {
  5317. harpija->setVelocity(HARPIJA_VEL,0);
  5318. harpija->setImage(N_HarpijaL_T);
  5319. harpija->setTotalFrames(9);
  5320. harpija->setColumns(5);
  5321. harpija->setSize(93,110);
  5322. harpija->Gledam='D';
  5323. }
  5324.  
  5325. if (harpija->getX() >= 1180)
  5326. {
  5327. harpija->setVelocity(-HARPIJA_VEL,0);
  5328. harpija->setImage(N_HarpijaD_T);
  5329. harpija->setTotalFrames(9);
  5330. harpija->setColumns(5);
  5331. harpija->setSize(93,110);
  5332. harpija->Gledam='L';
  5333. }
  5334.  
  5335. if (Sam_energy > 0 && gameState == STATE_PLAY)
  5336. {
  5337. harpija->pucaj = harpija->pucaj + 15;
  5338. if ( harpija->pucaj >= 2800 ) N_FireHarpija(harpija);
  5339. }
  5340. }
  5341.  
  5342. void game_entityUpdate(Entity* entity)
  5343. {
  5344.  
  5345. }
  5346.  
  5347. void game_entityUpdateFPS(Entity* entity)
  5348. {
  5349. Sprite *Objekt;
  5350.  
  5351. if (gameState == STATE_INTRO)
  5352. {
  5353. switch (entity->getObjectType())
  5354. {
  5355. case CREDITS:
  5356. Objekt = (Sprite*)entity;
  5357. if ( Objekt->getY() <= -425 )
  5358. {
  5359. gameState=STATE_UPUTE;
  5360. background->setImage(B_Upute);
  5361. Objekt->setAlive(false);
  5362. g_engine->audio->Stop("Music_SpaceIntro");
  5363. boss->setVisible(false);
  5364. boss->setCollidable(false);
  5365. boss->energy=0;
  5366. BossEnergy=0;
  5367. }
  5368. break;
  5369. default:
  5370. DLAE(entity,0);
  5371. boss->setVisible(false);
  5372. boss->setCollidable(false);
  5373. boss->energy=0;
  5374. BossEnergy=0;
  5375. break;
  5376. }
  5377. }
  5378.  
  5379. if (gameState == STATE_RESTART_L || gameState == STATE_UPUTE ||gameState == STATE_MENU || gameState == STATE_END || gameState == STATE_GAMEOVER)
  5380. {
  5381. boss->setVisible(false);
  5382. boss->setCollidable(false);
  5383. boss->energy=0;
  5384. //Delete Level And Entities - DLAE
  5385. DLAE(entity,0);
  5386.  
  5387. }
  5388.  
  5389. if (gameState == STATE_MENU || gameState == STATE_CREDITS_K)
  5390. {
  5391. if (entity->getObjectType()==OBJECT_IKI) entity->setAlive(false);
  5392.  
  5393. }
  5394.  
  5395. if (gameState == STATE_PLAY)
  5396. {
  5397. DLAE(entity,1); //mozda dodati return u dlae i ovdje takodjer
  5398. switch(entity->getObjectType())
  5399. {
  5400. case SPRITE_PADDLE:
  5401. updateSam(paddle);
  5402. break;
  5403.  
  5404. case SPRITE_META:
  5405. if ( META->getX() >= SCREENW-10 && enemy_count <= 0 )
  5406. {
  5407. level=level+1;
  5408. boss->setVisible(false);
  5409. boss->setCollidable(false);
  5410. if (level != 8 ) META->setPosition(10,META->getY());
  5411. else META->setPosition(10,390);
  5412.  
  5413. if ( level != 10 )
  5414. {
  5415. RL_Level=level;
  5416. RL_Score=score;
  5417. RL_Sam_energy=Sam_energy;
  5418. RL_oruzje=oruzje;
  5419. RL_MunicijaRL = MunicijaRL;
  5420. RL_MunicijaT = MunicijaT;
  5421. RL_MunicijaMG = MunicijaMG;
  5422. RL_MunicijaL = MunicijaL;
  5423. RL_Tezina = Tezina;
  5424. }
  5425. //Load Level And Items - LLAI
  5426. LLAI (level);
  5427. }
  5428. break;
  5429.  
  5430. case N_HARPIJAPROJEKTIL:
  5431. case BOSS_OKO:
  5432. case METAK:
  5433. case LASER:
  5434. case LASER2:
  5435. case SACMA:
  5436. Objekt=(Sprite*)entity;
  5437. if (Objekt->getX()<0 || Objekt->getX()>SCREENW || Objekt->getY()<0 || Objekt->getY()>SCREENH ) Objekt->setAlive(false);
  5438. break;
  5439.  
  5440. case OBJECT_MISC:
  5441. Objekt=(Sprite*)entity;
  5442. if (Objekt->getX()<-150 || Objekt->getX()>SCREENW || Objekt->getY()<-150 || Objekt->getY()>SCREENH ) Objekt->setAlive(false);
  5443. break;
  5444.  
  5445. case TOPOVSKA_KUGLA:
  5446. Objekt = (Sprite*)entity;
  5447. if ( Objekt->getY() > SCREENH-30 )
  5448. {
  5449. Objekt->setY(SCREENH-35);
  5450. Objekt->setVelocity(Objekt->getVelocity().getX(), fabs(Objekt->getVelocity().getY()) * -1);
  5451. }
  5452. if (Objekt->getX()<-30 || Objekt->getX()>1280) Objekt->setAlive(false);
  5453. break;
  5454.  
  5455. case RAKETA:
  5456. case N_RAKETA:
  5457. Objekt = (Sprite*)entity;
  5458. if (Objekt->getY()>=SCREENH-20)
  5459. {
  5460. addExplosionR(Objekt->getX()-55,SCREENH-80);
  5461. Objekt->setAlive(false);
  5462. }
  5463. if (Objekt->getX()<-40 || Objekt->getX()>1300) Objekt->setAlive(false);
  5464. break;
  5465.  
  5466. case BOSS_METAG:
  5467. Objekt = (Sprite*)entity;
  5468. Objekt->setPosition(boss->getX()+12,boss->getY()+50);
  5469. break;
  5470.  
  5471. case BOSS_METAD:
  5472. Objekt = (Sprite*)entity;
  5473. Objekt->setPosition(boss->getX()+200,boss->getY()+190);
  5474. break;
  5475.  
  5476. case BOSS_VATRENAKUGLA:
  5477. Objekt = (Sprite*)entity;
  5478. if (Objekt->getY()>=SCREENH-25)
  5479. {
  5480. addExplosionV(Objekt->getX()-45,SCREENH-125);
  5481. Objekt->setAlive(false);
  5482. }
  5483. break;
  5484.  
  5485. case BOSS_ROG:
  5486. Objekt = (Sprite*)entity;
  5487. if (Objekt->getY()<-250) PratiMe(Objekt);
  5488. if (Objekt->getY()>=SCREENH-20)
  5489. {
  5490. addExplosionR(Objekt->getX()-55,SCREENH-80);
  5491. Objekt->setAlive(false);
  5492. }
  5493. if ((Objekt->getX()<-20 || Objekt->getX()>1300) && (Objekt->getY()>500)) Objekt->setAlive(false);
  5494. break;
  5495.  
  5496. case BOSS_VATRA:
  5497. Objekt = (Sprite*)entity;
  5498. if( VatraKraj==false) Objekt->setAlive(false);
  5499. if (g_engine->findEntity(BOSS)) Objekt->setVelocity(boss->getVelocityX(),boss->getVelocityY());
  5500. break;
  5501.  
  5502. case BOSS_HEAD:
  5503. Objekt = (Sprite*)entity;
  5504. UpdateHead(Objekt);
  5505. break;
  5506.  
  5507. case BOSS:
  5508. if ( level == 9 ) UpdateBoss();
  5509. break;
  5510.  
  5511. case PTICA:
  5512. Objekt = (Sprite*)entity;
  5513. if (Objekt->getX() > SCREENW-Objekt->getWidth()+5)
  5514. {
  5515. Objekt->setImage(I_PticaL_T);
  5516. Objekt->setTotalFrames(4);
  5517. Objekt->setColumns(4);
  5518. Objekt->setSize(70,40);
  5519. Objekt->setVelocity(-3+SmanjiSamBrzinu,0);
  5520. }
  5521. if (Objekt->getX() < -5)
  5522. {
  5523. Objekt->setImage(I_PticaD_T);
  5524. Objekt->setTotalFrames(4);
  5525. Objekt->setColumns(4);
  5526. Objekt->setSize(70,40);
  5527. Objekt->setVelocity(3-SmanjiSamBrzinu,0);
  5528. }
  5529. break;
  5530.  
  5531. case N_KAMIKAZA:
  5532. Objekt = (Sprite*)entity;
  5533. PratiMe(Objekt);
  5534. break;
  5535.  
  5536. case N_GNAARFEMALE:
  5537. case N_GNAARMALE:
  5538. Objekt = (Sprite*)entity;
  5539. if (Sam_energy > 0 && gameState == STATE_PLAY)
  5540. {
  5541. Objekt->pucaj = Objekt->pucaj + 15;
  5542. }
  5543. PratiMe(Objekt);
  5544. break;
  5545.  
  5546. case N_BIK:
  5547. Objekt = (Sprite*)entity;
  5548. if (Objekt->getX() <= -225)
  5549. {
  5550. if ( META->getY() < 340-Objekt->getHeight() ) Objekt->setPosition(SCREENW+rand()%80, 340-Objekt->getHeight());
  5551. else if ( META->getY() > SCREENH-Objekt->getHeight() ) Objekt->setPosition(SCREENW+rand()%80, SCREENH-Objekt->getHeight());
  5552. else Objekt->setPosition(SCREENW+rand()%80, META->getY());
  5553. }
  5554. if (Sam_energy > 0 && gameState == STATE_PLAY) Objekt->pucaj = Objekt->pucaj + 15;
  5555. break;
  5556.  
  5557. case N_HARPIJA:
  5558. Objekt = (Sprite*)entity;
  5559. UpdateHarpija(Objekt);
  5560. break;
  5561.  
  5562. case N_SETACPLAVI:
  5563. Objekt = (Sprite*)entity;
  5564. UpdateSetacPlavi(Objekt);
  5565. break;
  5566.  
  5567. case N_SETACCRVENI:
  5568. Objekt = (Sprite*)entity;
  5569. UpdateSetacCrveni(Objekt);
  5570. break;
  5571.  
  5572. case GMAN:
  5573. Objekt=(Sprite*)entity;
  5574. if (Objekt->getX() > SCREENW ) Objekt->setAlive(false);
  5575. break;
  5576.  
  5577. case OBJECT_LGB:
  5578. Objekt=(Sprite*)entity;
  5579. Objekt->setPosition(META->getX()+45,META->getY()-160);
  5580. break;
  5581.  
  5582. case CROWBAR:
  5583. Objekt = (Sprite*)entity;
  5584. if (Objekt->getY()>=550) Objekt->setVelocity(0,0);
  5585. break;
  5586. }
  5587. }
  5588.  
  5589. if (gameState == STATE_LOSER )
  5590. {
  5591. Objekt = (Sprite*)entity;
  5592. switch (Objekt->getObjectType())
  5593. {
  5594. case N_HARPIJA:
  5595. UpdateHarpija(Objekt);
  5596. break;
  5597.  
  5598. case BOSS_HEAD:
  5599. case BOSS:
  5600. Objekt->setVelocity(0,0);
  5601. break;
  5602.  
  5603. case BOSS_VATRA:
  5604. if( VatraKraj==false) Objekt->setAlive(false);
  5605. if (g_engine->findEntity(BOSS)) Objekt->setVelocity(boss->getVelocityX(),boss->getVelocityY());
  5606. break;
  5607.  
  5608. case N_SETACCRVENI:
  5609. Objekt->setVelocity(0,0);
  5610. Objekt->setCurrentFrame(7);
  5611. break;
  5612.  
  5613. case N_SETACPLAVI:
  5614. Objekt->setVelocity(0,0);
  5615. Objekt->setCurrentFrame(0);
  5616. break;
  5617. case N_KAMIKAZA:
  5618. Objekt->setVelocity(0,0);
  5619. Objekt->setCurrentFrame(12);
  5620. break;
  5621.  
  5622. case N_GNAARMALE:
  5623. case N_GNAARFEMALE:
  5624. Objekt->setVelocity(0,0);
  5625. Objekt->setCurrentFrame(3);
  5626. break;
  5627.  
  5628. case N_BIK:
  5629. Objekt->setVelocity(0,0);
  5630. Objekt->setCurrentFrame(7);
  5631. break;
  5632.  
  5633. case CROWBAR:
  5634. Objekt = (Sprite*)entity;
  5635. if (Objekt->getY()>=550) Objekt->setVelocity(0,0);
  5636. break;
  5637. }
  5638. }
  5639.  
  5640. if (gameState == STATE_CREDITS_K)
  5641. {
  5642. switch (entity->getObjectType())
  5643. {
  5644. case CREDITS:
  5645. Objekt = (Sprite*)entity;
  5646. if ( Objekt->getY() <= -3200 )
  5647. {
  5648. Objekt->setVelocity(0,0);
  5649. }
  5650. break;
  5651. }
  5652. }
  5653.  
  5654. if (gameState == STATE_CREDITS)
  5655. {
  5656. switch (entity->getObjectType())
  5657. {
  5658. case CREDITS:
  5659. Objekt = (Sprite*)entity;
  5660. if ( Objekt->getY() <= -3200 )
  5661. {
  5662. Objekt->setVelocity(0,0);
  5663. }
  5664. break;
  5665. }
  5666. }
  5667. }
  5668.  
  5669. void addMrtvac(Sprite *block, double x, double y, double xx, double yy)
  5670. {
  5671. Sprite *Mrtvac = new Sprite();
  5672.  
  5673. switch(block->getObjectType())
  5674. {
  5675. case N_HARPIJA:
  5676. addHarpijaKrila(xx-20,yy-30);
  5677. g_engine->audio->Play("N_Harpija_Death");
  5678. score=score+25;
  5679. break;
  5680.  
  5681. case N_KAMIKAZA:
  5682. addExplosionK(xx-135,yy-102);
  5683. score=score+20;
  5684. break;
  5685.  
  5686. case N_GNAARMALE:
  5687. Mrtvac = new Sprite();
  5688. Mrtvac->setImage(N_GnaarMaleMrtav_T);
  5689. Mrtvac->setObjectType(MRTVAC);
  5690. Mrtvac->setTotalFrames(8);
  5691. Mrtvac->setColumns(5);
  5692. Mrtvac->setCollidable(false);
  5693. Mrtvac->setSize(94,139);
  5694. Mrtvac->setFrameTimer(100);
  5695. Mrtvac->setPosition(xx-47,yy-70);
  5696. Mrtvac->setLifetime(750-SmanjiLifeTime);
  5697. Mrtvac->setVelocity(4-2*SmanjiSamBrzinu,0);
  5698. Mrtvac->LevelID=level;
  5699. if (level == 3 ) Mrtvac->setColor(0xFFBBEEFF);
  5700. if (level>=6 && level<8) Mrtvac->setColor(0xFFFFCCCC);
  5701. g_engine->addEntity( Mrtvac );
  5702. g_engine->audio->Play("GnaarDeath");
  5703. score=score+15;
  5704. break;
  5705.  
  5706. case N_GNAARFEMALE:
  5707. Mrtvac = new Sprite();
  5708. Mrtvac->setImage(N_GnaarFemaleMrtav_T);
  5709. Mrtvac->setObjectType(MRTVAC);
  5710. Mrtvac->setTotalFrames(8);
  5711. Mrtvac->setColumns(5);
  5712. Mrtvac->setCollidable(false);
  5713. Mrtvac->setSize(123,180);
  5714. Mrtvac->setFrameTimer(100);
  5715. Mrtvac->setPosition(xx-61,yy-90);
  5716. Mrtvac->setLifetime(750-SmanjiLifeTime);
  5717. Mrtvac->setVelocity(4-2*SmanjiSamBrzinu,0);
  5718. Mrtvac->LevelID=level;
  5719. if (level == 3 ) Mrtvac->setColor(0xFFBBEEFF);
  5720. if (level>=6 && level<8) Mrtvac->setColor(0xFFFFCCCC);
  5721. g_engine->addEntity( Mrtvac );
  5722. g_engine->audio->Play("GnaarDeath");
  5723. score=score+25;
  5724. break;
  5725.  
  5726. case N_SETACPLAVI:
  5727. Mrtvac = new Sprite();
  5728. if (block->Gledam=='L') Mrtvac->setImage(N_SetacPlaviMrtavD_T);
  5729. else Mrtvac->setImage(N_SetacPlaviMrtavL_T);
  5730. Mrtvac->setObjectType(MRTVAC);
  5731. Mrtvac->setTotalFrames(12);
  5732. Mrtvac->setColumns(4);
  5733. Mrtvac->setPosition(xx-82,yy-115);
  5734. Mrtvac->setSize(165,231);
  5735. Mrtvac->setFrameTimer(100);
  5736. Mrtvac->setLifetime(1200-SmanjiLifeTime);
  5737. Mrtvac->LevelID=level;
  5738. if (level == 3 ) Mrtvac->setColor(0xFFBBEEFF);
  5739. if (level>=6 && level<8) Mrtvac->setColor(0xFFFFCCCC);
  5740. g_engine->addEntity( Mrtvac );
  5741. g_engine->audio->Play("SetacPlaviDeath");
  5742. score=score+40;
  5743. break;
  5744.  
  5745. case N_SETACCRVENI:
  5746. Mrtvac = new Sprite();
  5747. if (block->Gledam=='L') Mrtvac->setImage(N_SetacCrveniMrtavD_T);
  5748. else Mrtvac->setImage(N_SetacCrveniMrtavL_T);
  5749. Mrtvac->setObjectType(MRTVAC);
  5750. Mrtvac->setTotalFrames(14);
  5751. Mrtvac->setColumns(5);
  5752. Mrtvac->setPosition(xx-130,yy-172);
  5753. Mrtvac->setSize(260,345);
  5754. Mrtvac->setFrameTimer(100);
  5755. Mrtvac->setLifetime(1400-SmanjiLifeTime);
  5756. Mrtvac->LevelID=level;
  5757. if (level == 3 ) Mrtvac->setColor(0xFFBBEEFF);
  5758. if (level>=6 && level<8) Mrtvac->setColor(0xFFFFCCCC);
  5759. g_engine->addEntity( Mrtvac );
  5760. g_engine->audio->Play("SetacPlaviDeath");
  5761. score=score+100;
  5762. break;
  5763.  
  5764. case N_BIK:
  5765. Mrtvac = new Sprite();
  5766. Mrtvac->setImage(N_BikMrtav_T);
  5767. Mrtvac->setObjectType(MRTVAC);
  5768. Mrtvac->setColumns(5);
  5769. Mrtvac->setCollidable(false);
  5770. Mrtvac->setSize(267,171);
  5771. Mrtvac->setVelocity(-BIK_VEL+3,0);
  5772. Mrtvac->setPosition(xx-134,yy-85);
  5773. Mrtvac->setTotalFrames(18);
  5774. Mrtvac->setFrameTimer(40);
  5775. Mrtvac->setLifetime(750-SmanjiLifeTime);
  5776. Mrtvac->LevelID=level;
  5777. if (level == 3 ) Mrtvac->setColor(0xFFBBEEFF);
  5778. if (level>=6 && level<8) Mrtvac->setColor(0xFFFFCCCC);
  5779. g_engine->addEntity( Mrtvac );
  5780. g_engine->audio->Play("BikDeath");
  5781. score=score+50;
  5782. break;
  5783.  
  5784. case BOSS_VATRENAKUGLA:
  5785. addExplosionV(xx-91,yy-91);
  5786. break;
  5787.  
  5788. case BOSS_ROG:
  5789. case N_RAKETA:
  5790. addExplosionR(xx-55,yy-85);
  5791. break;
  5792.  
  5793. case PTICA:
  5794. LudePtice=true;
  5795. if (level==6)
  5796. {
  5797. addItem(5,1000,450,false,50);
  5798. addItem(25,1100,450,false,0);
  5799. }
  5800. break;
  5801.  
  5802. case BOSS_HEAD:
  5803. g_engine->audio->Play("B_EndClose");
  5804. addCrowbar(xx-47,yy-12);
  5805. addExplosionK(xx-75,yy-75);
  5806. BossEnergy=0;
  5807. ProciCu=true;
  5808. score=score+5000;
  5809. break;
  5810. }
  5811.  
  5812. if ( (block->getObjectType()!=BOSS_METAG) && (block->getObjectType()!=BOSS_METAD)) block->setAlive(false);
  5813. enemy_count=enemy_count-1;
  5814. }
  5815.  
  5816. void hitBlock(Sprite *block,Sprite *bullet)
  5817. {
  5818. if (bullet->getObjectType()==N_KAMIKAZA) return;
  5819.  
  5820. //pozicija metka
  5821. double x = bullet->getX() + bullet->getWidth()/2;
  5822. double y = bullet->getY() + bullet->getHeight()/2 ;
  5823. double xx = block->getX() + block->getWidth()/2;
  5824. double yy = block->getY() + block->getHeight()/2;
  5825.  
  5826. if ( block->getObjectType() == BOSS_VATRA )
  5827. {
  5828. switch (bullet->getObjectType())
  5829. {
  5830. case SACMA:
  5831. case METAK:
  5832. bullet->setAlive(false);
  5833. break;
  5834. case RAKETA:
  5835. addExplosionR(x-55,y-85);
  5836. bullet->setAlive(false);
  5837. break;
  5838. case TOPOVSKA_KUGLA:
  5839. addExplosionK(x-135,y-102);
  5840. bullet->setAlive(false);
  5841. break;
  5842. }
  5843. return;
  5844. }
  5845.  
  5846. switch (bullet->getObjectType())
  5847. {
  5848. case METAK:
  5849. block->energy=block->energy - 1;
  5850. bullet->setAlive(false);
  5851. if((block->getObjectType() == BOSS_METAG) || (block->getObjectType() == BOSS_METAD)) boss->energy=boss->energy - 1;
  5852. if (block->energy <= 0 )
  5853. {
  5854. addMrtvac(block,x,y,xx,yy);
  5855. if (block->getObjectType()!=N_KAMIKAZA && block->getObjectType()!=N_RAKETA && block->getObjectType()!=BOSS_ROG && block->getObjectType()!=BOSS_VATRENAKUGLA)
  5856. addKrv(x-30,y-30,'C');
  5857. }
  5858. else if (block->getObjectType()!=BOSS_VATRENAKUGLA) addKrv(x-30,y-30,'C');
  5859. break;
  5860.  
  5861. case SACMA:
  5862. block->energy=block->energy - 2;
  5863. bullet->setAlive(false);
  5864. if((block->getObjectType() == BOSS_METAG) || (block->getObjectType() == BOSS_METAD)) boss->energy=boss->energy - 2;
  5865. if (block->energy <= 0 )
  5866. {
  5867. addMrtvac(block,x,y,xx,yy);
  5868. if (block->getObjectType()!=N_KAMIKAZA && block->getObjectType()!=N_RAKETA && block->getObjectType()!=BOSS_ROG && block->getObjectType()!=BOSS_VATRENAKUGLA)
  5869. {
  5870. addKrv(x-30,y-30,'C');
  5871. addKrv(x-20,y-20,'C');
  5872. addKrv(x-25,y-10,'C');
  5873. }
  5874. }
  5875. else
  5876. {
  5877. addKrv(x-30,y-30,'C');
  5878. addKrv(x-20,y-20,'C');
  5879. addKrv(x-25,y-10,'C');
  5880. }
  5881. break;
  5882.  
  5883. case RAKETA:
  5884. block->energy=block->energy - 10;
  5885. bullet->setAlive(false);
  5886. if((block->getObjectType() == BOSS_METAG) || (block->getObjectType() == BOSS_METAD)) boss->energy=boss->energy - 10;
  5887. if (block->energy <= 0 )
  5888. {
  5889. addMrtvac(block,x,y,xx,yy);
  5890. if (block->getObjectType()!=N_KAMIKAZA && block->getObjectType()!=N_RAKETA && block->getObjectType()!=BOSS_ROG && block->getObjectType()!=BOSS_VATRENAKUGLA)
  5891. addExplosionR(x-55,y-85);
  5892. }
  5893. else addExplosionR(x-55,y-85);
  5894. break;
  5895.  
  5896. case LASER:
  5897. block->energy=block->energy - 2;
  5898. bullet->setAlive(false);
  5899. if((block->getObjectType() == BOSS_METAG) || (block->getObjectType() == BOSS_METAD)) boss->energy=boss->energy - 2;
  5900. if (block->energy <= 0 )
  5901. {
  5902. addMrtvac(block,x,y,xx,yy);
  5903. if (block->getObjectType()!=N_KAMIKAZA && block->getObjectType()!=N_RAKETA && block->getObjectType()!=BOSS_ROG && block->getObjectType()!=BOSS_VATRENAKUGLA)
  5904. addKrv(x-32,y-32,'Z');
  5905. }
  5906. else addKrv(x-32,y-32,'Z');
  5907. break;
  5908.  
  5909. case LASER2:
  5910. block->energy=block->energy - 4;
  5911. bullet->setAlive(false);
  5912. if((block->getObjectType() == BOSS_METAG) || (block->getObjectType() == BOSS_METAD)) boss->energy=boss->energy - 4;
  5913. if (block->energy <= 0 )
  5914. {
  5915. addMrtvac(block,x,y,xx,yy);
  5916. if (block->getObjectType()!=N_KAMIKAZA && block->getObjectType()!=N_RAKETA && block->getObjectType()!=BOSS_ROG && block->getObjectType()!=BOSS_VATRENAKUGLA)
  5917. addKrv(x-32,y-32,'Z');
  5918. }
  5919. else addKrv(x-32,y-32,'Z');
  5920. break;
  5921.  
  5922. case TOPOVSKA_KUGLA:
  5923. block->energy=block->energy - 80;
  5924. if((block->getObjectType() == BOSS_METAG) || (block->getObjectType() == BOSS_METAD))
  5925. {
  5926. boss->energy=boss->energy - 75;
  5927. addExplosionK(x-135,y-102);
  5928. bullet->setAlive(false);
  5929. break;
  5930. }
  5931.  
  5932. if (block->getObjectType()== BOSS_HEAD || block->getObjectType()== N_SETACCRVENI)
  5933. {
  5934. addExplosionK(x-135,y-102);
  5935. bullet->setAlive(false);
  5936. if (block->energy <= 0 )
  5937. {
  5938. addMrtvac(block,x,y,xx,yy);
  5939. }
  5940. break;
  5941. }
  5942. else
  5943. {
  5944. addMrtvac(block,x,y,xx,yy);
  5945. if (block->getObjectType()!=N_KAMIKAZA && block->getObjectType()!=N_RAKETA && block->getObjectType()!=BOSS_ROG && block->getObjectType()!=BOSS_VATRENAKUGLA)
  5946. {
  5947. addKrv(x-30,y-30,'C');
  5948. addKrv(x-20,y-20,'C');
  5949. addKrv(x-25,y-10,'C');
  5950. }
  5951. }
  5952. break;
  5953. }
  5954.  
  5955. if (level==1 && enemy_count==0 && domamami==true)
  5956. {
  5957. g_engine->audio->Play("Sam_Aaa_Yourself");
  5958. domamami=false;
  5959. }
  5960. }
  5961.  
  5962. void hitSam( Sprite *b , Sprite *a )
  5963. {
  5964. double SamSredinaX = a->getX() + a->getWidth()/2;
  5965. double SamSredinaY = a->getY() + a->getHeight()/2;
  5966. double ObjektSredinaX = b->getX() + b->getWidth()/2;
  5967. double ObjektSredinaY = b->getY() + b->getHeight()/2;
  5968.  
  5969. if (Tezina==SERIOUS) TezinaRazlika=0;
  5970. else TezinaRazlika=1;
  5971.  
  5972. switch( b->getObjectType() )
  5973. {
  5974.  
  5975. //NEPRIJATELJI
  5976. case N_KAMIKAZA:
  5977. addExplosionK(ObjektSredinaX-135,ObjektSredinaY-102);
  5978. b->setAlive(false);
  5979. if (g_engine->findEntity(N_KAMIKAZA) == NULL) g_engine->audio->Stop("N_Kamikaza");
  5980. enemy_count=enemy_count-1;
  5981. Sam_energy=Sam_energy-(20-TezinaRazlika*5);
  5982. if ((Sam_energy>0) && (WoundStrong == false )) {g_engine->audio->Play("Sam_WoundStrong");WoundStrong =true;}
  5983. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundStrong") == false )) g_engine->audio->Play("Sam_WoundStrong");
  5984. break;
  5985.  
  5986. case N_GNAARFEMALE:
  5987. if(b->pucaj >= 1000)
  5988. {
  5989. g_engine->audio->Play("Punch");
  5990. Sam_energy=Sam_energy-(5-TezinaRazlika*1);
  5991. b->pucaj=0;
  5992. }
  5993. break;
  5994.  
  5995. case N_GNAARMALE:
  5996. if(b->pucaj >= 1000)
  5997. {
  5998. g_engine->audio->Play("Punch");
  5999. Sam_energy=Sam_energy-(3-TezinaRazlika*1);
  6000. b->pucaj=0;
  6001. }
  6002. break;
  6003.  
  6004. case N_BIK:
  6005. if(b->pucaj >= 3500)
  6006. {
  6007. if (Unutra(b,30,45,205,120,a) || Unutra(b,75,5,155,125,a))
  6008. {
  6009. if ((Sam_energy>0) && (WoundStrong == false )) {g_engine->audio->Play("Sam_WoundStrong");WoundStrong =true;}
  6010. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundStrong") == false )) g_engine->audio->Play("Sam_WoundStrong");
  6011. Sam_energy=Sam_energy-(10-TezinaRazlika*2);
  6012. addKrv(SamSredinaX-35,SamSredinaY-50,'C');
  6013. addKrv(SamSredinaX-20,SamSredinaY-35,'C');
  6014. addKrv(SamSredinaX-25,SamSredinaY,'C');
  6015. addKrv(SamSredinaX,SamSredinaY+10,'C');
  6016. b->pucaj=2500;
  6017. }
  6018. }
  6019. break;
  6020.  
  6021. //N_PROJEKTILI
  6022. case BOSS_OKO:
  6023. Sam_energy=Sam_energy-9;
  6024. addKrv(b->getX(),b->getY(),'C');
  6025. b->setAlive(false);
  6026. if ((Sam_energy>0) && (WoundWeak == false )) {g_engine->audio->Play("Sam_WoundWeak");WoundWeak =true;}
  6027. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundWeak") == false )) g_engine->audio->Play("Sam_WoundWeak");
  6028. break;
  6029.  
  6030. case BOSS_VATRA:
  6031. Sam_energy=Sam_energy-2;
  6032. if ((Sam_energy>0) && (WoundStrong == false )) {g_engine->audio->Play("Sam_WoundStrong");WoundStrong =true;}
  6033. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundStrong") == false )) g_engine->audio->Play("Sam_WoundStrong");
  6034. break;
  6035.  
  6036. case BOSS_ROG:
  6037. case N_RAKETA:
  6038. addExplosionR(ObjektSredinaX-55,ObjektSredinaY-85);
  6039. b->setAlive(false);
  6040. Sam_energy=Sam_energy-(15-TezinaRazlika*5);
  6041. if ((Sam_energy>0) && (WoundStrong == false )) {g_engine->audio->Play("Sam_WoundStrong");WoundStrong =true;}
  6042. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundStrong") == false )) g_engine->audio->Play("Sam_WoundStrong");
  6043. break;
  6044.  
  6045. case BOSS_VATRENAKUGLA:
  6046. addExplosionV(ObjektSredinaX-91,ObjektSredinaY-91);
  6047. b->setAlive(false);
  6048. Sam_energy=Sam_energy-20;
  6049. if ((Sam_energy>0) && (WoundStrong == false )) {g_engine->audio->Play("Sam_WoundStrong");WoundStrong =true;}
  6050. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundStrong") == false )) g_engine->audio->Play("Sam_WoundStrong");
  6051. break;
  6052.  
  6053. case N_HARPIJAPROJEKTIL:
  6054. addKrv(b->getX(),b->getY(),'C');
  6055. b->setAlive(false);
  6056. Sam_energy=Sam_energy-(5-TezinaRazlika*1);
  6057. if ((Sam_energy>0) && (WoundWeak == false )) {g_engine->audio->Play("Sam_WoundWeak");WoundWeak =true;}
  6058. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundWeak") == false )) g_engine->audio->Play("Sam_WoundWeak");
  6059. break;
  6060.  
  6061. case N_LASER:
  6062. addKrv(b->getX(),b->getY(),'C');
  6063. b->setAlive(false);
  6064. Sam_energy=Sam_energy-(5-TezinaRazlika*1);
  6065. if ((Sam_energy>0) && (WoundWeak == false )) {g_engine->audio->Play("Sam_WoundWeak");WoundWeak =true;}
  6066. if ((Sam_energy>0) && (g_engine->audio->IsPlaying("Sam_WoundWeak") == false )) g_engine->audio->Play("Sam_WoundWeak");
  6067. break;
  6068.  
  6069. //PREDMETI
  6070. case HEALTH_100:
  6071. if ( Sam_energy == 200 ) break;
  6072. else
  6073. {
  6074. Sam_energy = Sam_energy + 100;
  6075. if (Sam_energy>200) Sam_energy = 200;
  6076. g_engine->audio->Play("Health_100");
  6077. b->setAlive(false);
  6078. break;
  6079. }
  6080.  
  6081. case HEALTH_25:
  6082. if ( level==4 && QWERTZ==4 ) QWERTZ=QWERTZ+1;
  6083. if ( Sam_energy == 200 ) break;
  6084. else
  6085. {
  6086. Sam_energy = Sam_energy + 25;
  6087. if (Sam_energy>200) Sam_energy = 200;
  6088. g_engine->audio->Play("Health_25");
  6089. b->setAlive(false);
  6090. break;
  6091. }
  6092.  
  6093. case MM:
  6094. if (b->Stanje==2)
  6095. {
  6096. if (MunicijaMG == 999 ) break;
  6097. else
  6098. {
  6099. MunicijaMG = MunicijaMG + b->energy;
  6100. if (MunicijaMG>999) MunicijaMG=999;
  6101. g_engine->audio->Play("Ammo");
  6102. b->setAlive(false);
  6103. break;
  6104. }
  6105. }
  6106. else
  6107. {
  6108. MunicijaMG = MunicijaMG + b->energy;
  6109. if (MunicijaMG>999) MunicijaMG=999;
  6110. g_engine->audio->Play("Weapon");
  6111. g_engine->audio->Play("Sam_Aaah_Its_Just_What_I_Have_Always_Wanted");
  6112. if (Tezina==SERIOUS) addItem(4,150,400,false,200);
  6113. b->setAlive(false);
  6114. break;
  6115. }
  6116.  
  6117. case MR:
  6118. if ( level==4 && mraketa==false)
  6119. {
  6120. mraketa=true;
  6121. addItem(5,600,500,false,50);
  6122. addItem(4,200,500,false,200);
  6123. }
  6124. if (MunicijaRL == 100) break;
  6125. else
  6126. {
  6127. if (b->Stanje==2) g_engine->audio->Play("Ammo");
  6128. else g_engine->audio->Play("Weapon");
  6129. MunicijaRL = MunicijaRL + b->energy;
  6130. if (MunicijaRL>100) MunicijaRL=100;
  6131. b->setAlive(false);
  6132. break;
  6133. }
  6134.  
  6135. case ML:
  6136. if (MunicijaL == 500 ) break;
  6137. else
  6138. {
  6139. if (b->Stanje==2) g_engine->audio->Play("Ammo");
  6140. else g_engine->audio->Play("Weapon");
  6141. MunicijaL = MunicijaL + b->energy;
  6142. if (MunicijaL>500) MunicijaL=500;
  6143. b->setAlive(false);
  6144. break;
  6145. }
  6146.  
  6147. case MT:
  6148. if ( level==6 && mtop==false)
  6149. {
  6150. mtop=true;
  6151. }
  6152. if (MunicijaT == 10 ) break;
  6153. else
  6154. {
  6155. if (b->Stanje==2) g_engine->audio->Play("Ammo");
  6156. else g_engine->audio->Play("Weapon");
  6157. MunicijaT = MunicijaT + b->energy;
  6158. if (MunicijaT>10) MunicijaT=10;
  6159. b->setAlive(false);
  6160. break;
  6161. }
  6162.  
  6163. case SSF:
  6164. b->setAlive(false);
  6165. SecondaryFire=true;
  6166. QWERTZ=1;
  6167. g_engine->audio->Play("Sam_Now_I_Am_Seriously_Serious");
  6168. if (level==5)g_engine->audio->Play("Music_Level005");
  6169. break;
  6170.  
  6171. case CROWBAR:
  6172. g_engine->audio->Play("Weapon");
  6173. b->setAlive(false);
  6174. break;
  6175. }
  6176. }
  6177.  
  6178. void game_entityCollision(Entity* entity1,Entity* entity2)
  6179. {
  6180. Sprite *a = (Sprite*)entity1;
  6181. Sprite *b = (Sprite*)entity2;
  6182.  
  6183. if ( a->getAlive()==false || b->getAlive()==false ) return;
  6184.  
  6185. if ( gameState == STATE_PLAY )
  6186. {
  6187. switch (a->getObjectType())
  6188. {
  6189. case N_SETACCRVENI:
  6190. switch (b->getObjectType())
  6191. {
  6192. case METAK:
  6193. case RAKETA:
  6194. case TOPOVSKA_KUGLA:
  6195. case LASER:
  6196. case LASER2:
  6197. case SACMA:
  6198. if (a->Gledam=='L')
  6199. {
  6200. if (Unutra(a,150,40,220,105,b) || Unutra(a,80,105,220,330,b))
  6201. {
  6202. hitBlock(a,b);
  6203. break;
  6204. }
  6205. }
  6206. else
  6207. {
  6208. if (Unutra(a,70,40,150,105,b) || Unutra(a,70,105,210,330,b))
  6209. {
  6210. hitBlock(a,b);
  6211. break;
  6212. }
  6213. }
  6214. break;
  6215. }
  6216. break;
  6217.  
  6218. case N_SETACPLAVI:
  6219. switch (b->getObjectType())
  6220. {
  6221. case METAK:
  6222. case RAKETA:
  6223. case TOPOVSKA_KUGLA:
  6224. case LASER:
  6225. case LASER2:
  6226. case SACMA:
  6227. if (a->Gledam=='L')
  6228. {
  6229. if (Unutra(a,110,15,170,65,b) || Unutra(a,75,65,170,220,b) )
  6230. {
  6231. hitBlock(a,b);
  6232. break;
  6233. }
  6234. }
  6235. else
  6236. {
  6237. if (Unutra(a,50,15,105,65,b) || Unutra(a,50,65,140,220,b))
  6238. {
  6239. hitBlock(a,b);
  6240. break;
  6241. }
  6242. }
  6243. break;
  6244. }
  6245. break;
  6246. case N_BIK:
  6247. switch (b->getObjectType())
  6248. {
  6249. case METAK:
  6250. case RAKETA:
  6251. case TOPOVSKA_KUGLA:
  6252. case LASER:
  6253. case LASER2:
  6254. case SACMA:
  6255. if (Unutra(a,30,45,205,120,b) || Unutra(a,75,5,155,125,b))
  6256. {
  6257. hitBlock(a,b);
  6258. break;
  6259. }
  6260. break;
  6261. case SPRITE_META:
  6262. hitSam(a,b);
  6263. break;
  6264. }
  6265. break;
  6266.  
  6267. case N_HARPIJA:
  6268. switch (b->getObjectType())
  6269. {
  6270. case METAK:
  6271. case RAKETA:
  6272. case TOPOVSKA_KUGLA:
  6273. case LASER:
  6274. case LASER2:
  6275. case SACMA:
  6276. if (a->Gledam=='L')
  6277. {
  6278. if (Unutra(a,5,25,50,60,b) || Unutra(a,5,60,85,85,b) )
  6279. {
  6280. hitBlock(a,b);
  6281. break;
  6282. }
  6283. }
  6284. else
  6285. {
  6286. if (Unutra(a,45,25,85,60,b) || Unutra(a,5,60,85,85,b))
  6287. {
  6288. hitBlock(a,b);
  6289. break;
  6290. }
  6291. }
  6292. }
  6293. break;
  6294.  
  6295. case N_GNAARMALE:
  6296. switch (b->getObjectType())
  6297. {
  6298. case METAK:
  6299. case RAKETA:
  6300. case TOPOVSKA_KUGLA:
  6301. case LASER:
  6302. case LASER2:
  6303. case SACMA:
  6304. if (Unutra(a,25,5,105,85,b))
  6305. {
  6306. hitBlock(a,b);
  6307. break;
  6308. }
  6309. break;
  6310. case SPRITE_META:
  6311. hitSam(a,b);
  6312. break;
  6313. }
  6314. break;
  6315.  
  6316. case N_GNAARFEMALE:
  6317. switch (b->getObjectType())
  6318. {
  6319. case METAK:
  6320. case RAKETA:
  6321. case TOPOVSKA_KUGLA:
  6322. case LASER:
  6323. case LASER2:
  6324. case SACMA:
  6325. if (Unutra(a,25,10,140,115,b))
  6326. {
  6327. hitBlock(a,b);
  6328. break;
  6329. }
  6330. break;
  6331. case SPRITE_META:
  6332. hitSam(a,b);
  6333. break;
  6334. }
  6335. break;
  6336.  
  6337. case N_KAMIKAZA:
  6338. switch (b->getObjectType())
  6339. {
  6340. case METAK:
  6341. case RAKETA:
  6342. case TOPOVSKA_KUGLA:
  6343. case LASER:
  6344. case LASER2:
  6345. case SACMA:
  6346. if (Unutra(a,10,10,60,95,b))
  6347. {
  6348. hitBlock(a,b);
  6349. break;
  6350. }
  6351. break;
  6352. case SPRITE_META:
  6353. hitSam(a,b);
  6354. break;
  6355. }
  6356. break;
  6357.  
  6358. case BOSS_HEAD:
  6359. switch (b->getObjectType())
  6360. {
  6361. case METAK:
  6362. case RAKETA:
  6363. case TOPOVSKA_KUGLA:
  6364. case LASER:
  6365. case LASER2:
  6366. case SACMA:
  6367. if (Unutra(a,0,0,153,55,b) || Unutra(a,25,55,125,150,b))
  6368. {
  6369. hitBlock(a,b);
  6370. break;
  6371. }
  6372. }
  6373. break;
  6374.  
  6375. case HEALTH_100:
  6376. case HEALTH_25:
  6377. case MM:
  6378. case MM2:
  6379. case ML:
  6380. case MR:
  6381. case MT:
  6382. case SSF:
  6383. case CROWBAR:
  6384. if (b->getObjectType()==SPRITE_META) hitSam(a,b);
  6385. break;
  6386. case N_RAKETA:
  6387. case BOSS_METAG:
  6388. case BOSS_METAD:
  6389. case PTICA:
  6390. case BOSS_VATRA:
  6391. case BOSS_ROG:
  6392. case BOSS_VATRENAKUGLA:
  6393. switch (b->getObjectType())
  6394. {
  6395. case METAK:
  6396. case RAKETA:
  6397. case TOPOVSKA_KUGLA:
  6398. case LASER:
  6399. case LASER2:
  6400. case SACMA:
  6401. hitBlock(a,b);
  6402. break;
  6403. case SPRITE_META:
  6404. hitSam(a,b);
  6405. break;
  6406. }
  6407. break;
  6408.  
  6409. case SPRITE_META:
  6410. switch (b->getObjectType())
  6411. {
  6412. case BOSS_ROG:
  6413. case BOSS_OKO:
  6414. case BOSS_VATRENAKUGLA:
  6415. case BOSS_VATRA:
  6416. case N_RAKETA:
  6417. case N_HARPIJAPROJEKTIL:
  6418. case N_LASER:
  6419. case HEALTH_100:
  6420. case HEALTH_25:
  6421. case MM:
  6422. case MM2:
  6423. case ML:
  6424. case MR:
  6425. case MT:
  6426. case SSF:
  6427. case CROWBAR:
  6428. case N_GNAARMALE:
  6429. case N_GNAARFEMALE:
  6430. case N_BIK:
  6431. hitSam(b,a);
  6432. break;
  6433. }
  6434. break;
  6435. }
  6436. }
  6437.  
  6438. if ( gameState == STATE_LOSER )
  6439. {
  6440. switch (a->getObjectType())
  6441. {
  6442. case N_SETACCRVENI:
  6443. switch (b->getObjectType())
  6444. {
  6445. case METAK:
  6446. case RAKETA:
  6447. case TOPOVSKA_KUGLA:
  6448. case LASER:
  6449. case LASER2:
  6450. case SACMA:
  6451. if (Unutra(a,150,40,220,100,b))
  6452. {
  6453. hitBlock(a,b);
  6454. break;
  6455. }
  6456. if (Unutra(a,80,90,220,330,b))
  6457. {
  6458. hitBlock(a,b);
  6459. break;
  6460. }
  6461. break;
  6462. }
  6463. break;
  6464.  
  6465. case N_KAMIKAZA:
  6466. case N_GNAARFEMALE:
  6467. case N_GNAARMALE:
  6468. case N_SETACPLAVI:
  6469. case N_BIK:
  6470. case N_HARPIJA:
  6471. case N_RAKETA:
  6472. case BOSS_METAG:
  6473. case BOSS_METAD:
  6474. case PTICA:
  6475. case BOSS_VATRA:
  6476. case BOSS_ROG:
  6477. case BOSS_HEAD:
  6478. case BOSS_VATRENAKUGLA:
  6479. switch (b->getObjectType())
  6480. {
  6481. case METAK:
  6482. case RAKETA:
  6483. case TOPOVSKA_KUGLA:
  6484. case LASER:
  6485. case LASER2:
  6486. case SACMA:
  6487. hitBlock(a,b);
  6488. break;
  6489. }
  6490. break;
  6491.  
  6492. case MRTVAC_SAM:
  6493. switch (b->getObjectType())
  6494. {
  6495. case BOSS_ROG:
  6496. case BOSS_OKO:
  6497. case BOSS_VATRENAKUGLA:
  6498. case N_RAKETA:
  6499. case N_HARPIJAPROJEKTIL:
  6500. case N_LASER:
  6501. hitSam(b,a);
  6502. break;
  6503. }
  6504. break;
  6505. }
  6506. }
  6507. }
  6508.  
  6509. void ProvjeriSama()
  6510. {
  6511. switch( paddle->Gledam )
  6512. {
  6513. case 'D':
  6514. if (Kretanje >= 0)
  6515. {
  6516. if ( trcanjeD == false ) noge->setTotalFrames(12);
  6517. else noge->setTotalFrames(12);
  6518.  
  6519. }
  6520. else
  6521. {
  6522. if ( trcanjeL == false ) noge->setTotalFrames(10);
  6523. else noge->setTotalFrames(10);
  6524. }
  6525. break;
  6526.  
  6527. case 'L':
  6528. if (Kretanje <= 0)
  6529. {
  6530. if ( trcanjeL == false ) noge->setTotalFrames(12);
  6531. else noge->setTotalFrames(12);
  6532. }
  6533. else
  6534. {
  6535. if ( trcanjeL == false ) noge->setTotalFrames(10);
  6536. else noge->setTotalFrames(10);
  6537. }
  6538. break;
  6539. }
  6540. }
  6541.  
  6542. void game_keyPress(int key)
  6543. {
  6544. double px = META->getX() + paddleVelocity;
  6545. double py = META->getY() + paddleVelocity2;
  6546.  
  6547. switch (gameState)
  6548. {
  6549. case STATE_PLAY:
  6550. switch (key)
  6551. {
  6552. //UPRAVLJANJE IGRACEM
  6553.  
  6554. //KRETANJE
  6555. //lijevo (-)
  6556. case DIK_A:
  6557. paddleVelocity = -(Sam_BrzinaX);
  6558. Kretanje = -1;
  6559. ProvjeriSama();
  6560. break;
  6561. //desno (+)
  6562. case DIK_D:
  6563. paddleVelocity = (Sam_BrzinaX);
  6564. Kretanje = 1;
  6565. ProvjeriSama();
  6566. break;
  6567. //gore (-)
  6568. case DIK_W:
  6569. paddleVelocity2 = -(Sam_BrzinaY);
  6570. KretanjeY=1;
  6571. ProvjeriSama();
  6572. break;
  6573. //dolje (+)
  6574. case DIK_S:
  6575. paddleVelocity2 = (Sam_BrzinaY);
  6576. KretanjeY=1;
  6577. ProvjeriSama();
  6578. break;
  6579.  
  6580. //TRCANJE
  6581. case DIK_LSHIFT:
  6582. Sam_BrzinaX = 5-(2*SmanjiSamBrzinu);
  6583. Sam_BrzinaY = 4-(2*SmanjiSamBrzinu);
  6584. //TRCI LIJEVO
  6585. if ( cursor->getX() + cursor->getWidth()/2 <= paddle->getX()+paddle->getWidth()/2 && trcanjeL == true)
  6586. {
  6587. trcanjeL=false;
  6588. break;
  6589. }
  6590. //TRCI DESNO
  6591. if (cursor->getX() + cursor->getWidth()/2 >=paddle->getX()+paddle->getWidth()/2 && trcanjeD == true)
  6592. {
  6593. trcanjeD=false;
  6594. break;
  6595. }
  6596. break;
  6597. }
  6598. break;
  6599. }
  6600. }
  6601.  
  6602. void LoadLevel()
  6603. {
  6604. if (RL_Level == 10) RL_Level = 9;
  6605. g_engine->audio->StopAll();
  6606. level=RL_Level;
  6607. score=RL_Score;
  6608. Sam_energy=RL_Sam_energy;
  6609. oruzje=RL_oruzje;
  6610. MunicijaRL=RL_MunicijaRL;
  6611. MunicijaT=RL_MunicijaT;
  6612. MunicijaMG=RL_MunicijaMG;
  6613. MunicijaL=RL_MunicijaL;
  6614. Tezina=RL_Tezina;
  6615. if (RL_Tezina==SERIOUS) TezinaRazlika=0;
  6616. else TezinaRazlika=1;
  6617. enemy_count=BrojN[level];
  6618. enemy_spawn_count=BrojN[level];
  6619. noge->setTotalFrames(1);
  6620. paddle->setTotalFrames(1);
  6621. META->setPosition(100,400);
  6622. paddleVelocity = 0.00;
  6623. paddleVelocity2 = 0.00;
  6624. Kretanje=0;
  6625. KretanjeY=0;
  6626. Sam_BrzinaX = 3.5-SmanjiSamBrzinu;
  6627. Sam_BrzinaY = 3.0-SmanjiSamBrzinu;
  6628. trcanjeD=true;
  6629. trcanjeL=true;
  6630.  
  6631. switch(RL_Level)
  6632. {
  6633. case 0:
  6634. SkyBox1_S->setImage(SB_Vedrosoblacima);
  6635. SkyBox2_S->setImage(SB_Vedrosoblacima);
  6636. background->setImage(B_Level000);
  6637. break;
  6638.  
  6639. case 1:
  6640. SkyBox1_S->setImage(SB_Vedrosoblacima);
  6641. SkyBox2_S->setImage(SB_Vedrosoblacima);
  6642. background->setImage(B_Level001);
  6643. break;
  6644.  
  6645. case 2:
  6646. SkyBox1_S->setImage(SB_Vedrosoblacima);
  6647. SkyBox2_S->setImage(SB_Vedrosoblacima);
  6648. background->setImage(B_Level002);
  6649. break;
  6650.  
  6651. case 3:
  6652. background->setImage(B_Level003);
  6653. break;
  6654. case 4:
  6655. SkyBox1_S->setImage(SB_Vedrosoblacima2);
  6656. SkyBox2_S->setImage(SB_Vedrosoblacima2);
  6657. background->setImage(B_Level004);
  6658. break;
  6659. case 5:
  6660. SkyBox1_S->setImage(SB_Vedrosoblacima2);
  6661. SkyBox2_S->setImage(SB_Vedrosoblacima2);
  6662. background->setImage(B_Level005);
  6663. break;
  6664. case 6:
  6665. background->setImage(B_Level006);
  6666. break;
  6667. case 7:
  6668. background->setImage(B_Level007);
  6669. break;
  6670. case 8:
  6671. background->setImage(B_Level008);
  6672. break;
  6673. case 9:
  6674. background->setImage(B_Level009);
  6675. break;
  6676.  
  6677. }
  6678.  
  6679. if (level == 8 ) META->setPosition(10,390);
  6680. cursor->setVisible(false);
  6681. gameState = STATE_RESTART_L;
  6682. }
  6683.  
  6684. void game_keyRelease(int key)
  6685. {
  6686. switch (gameState)
  6687. {
  6688. case STATE_ANTONIOR:
  6689. switch (key)
  6690. {
  6691. case DIK_ESCAPE:
  6692. case DIK_RETURN:
  6693. case DIK_SPACE:
  6694. background->setImage(B_Croteam);
  6695. gameState=STATE_CROTEAM;
  6696. break;
  6697. }
  6698. break;
  6699.  
  6700. case STATE_CROTEAM:
  6701. switch (key)
  6702. {
  6703. case DIK_ESCAPE:
  6704. case DIK_RETURN:
  6705. case DIK_SPACE:
  6706. g_engine->audio->Play("Sam_Sam_I_Am");
  6707. background->setImage(B_SS2DTLGH);
  6708. gameState=STATE_SS2DTLGH;
  6709. break;
  6710. }
  6711. break;
  6712.  
  6713. case STATE_SS2DTLGH:
  6714. switch (key)
  6715. {
  6716. case DIK_ESCAPE:
  6717. case DIK_RETURN:
  6718. case DIK_SPACE:
  6719. if ( g_engine->audio->IsPlaying("Music_AntonioR")==true ) g_engine->audio->Stop("Music_AntonioR");
  6720. background->setImage(B_Menu);
  6721. cursor->setVisible(true);
  6722. gameState=STATE_MENU;
  6723. break;
  6724. }
  6725. break;
  6726.  
  6727. case STATE_INTRO:
  6728. switch (key)
  6729. {
  6730. case DIK_ESCAPE:
  6731. case DIK_RETURN:
  6732. case DIK_SPACE:
  6733. g_engine->audio->Stop("Music_SpaceIntro");
  6734. background->setImage(B_Upute);
  6735. gameState=STATE_UPUTE;
  6736. break;
  6737. }
  6738. break;
  6739.  
  6740. case STATE_UPUTE:
  6741. switch (key)
  6742. {
  6743. default:
  6744. LLAI(0);
  6745. break;
  6746. }
  6747. break;
  6748.  
  6749. case STATE_PLAY:
  6750. switch (key)
  6751. {
  6752. //UPRAVLJANJE IGRACEM
  6753. //HODANJE
  6754. case DIK_LSHIFT:
  6755. Sam_BrzinaX = 3.5-SmanjiSamBrzinu;
  6756. Sam_BrzinaY = 3.0-SmanjiSamBrzinu;
  6757. trcanjeD=true;
  6758. trcanjeL=true;
  6759. break;
  6760.  
  6761. //BIRANJE ORUŽJA
  6762. case DIK_2:
  6763. oruzje=0;
  6764. break;
  6765. case DIK_3:
  6766. oruzje=3;
  6767. break;
  6768. case DIK_4:
  6769. if ( MunicijaMG > 0 ) oruzje=4;
  6770. break;
  6771. case DIK_5:
  6772. if ( MunicijaRL > 0 ) oruzje=5;
  6773. break;
  6774. case DIK_7:
  6775. if ( MunicijaL > 0 ) oruzje=7;
  6776. break;
  6777. case DIK_8:
  6778. if ( MunicijaT > 0 ) oruzje=8;
  6779. break;
  6780.  
  6781. //BRZO BIRANJE NAJJACEG ORUZJA
  6782. case DIK_Q:
  6783. if ( MunicijaL > 0 ) {oruzje=7;break;}
  6784. if ( MunicijaMG > 0 ) {oruzje=4;break;}
  6785. oruzje=0;
  6786. break;
  6787. case DIK_E:
  6788. if ( MunicijaT > 0 ) {oruzje=8;break;}
  6789. if ( MunicijaRL > 0 ) {oruzje=5;break;}
  6790. oruzje=3;
  6791. break;
  6792.  
  6793. //ZAUSTAVLJANJE
  6794. case DIK_D:
  6795. case DIK_A:
  6796. paddleVelocity = 0.00;
  6797. Kretanje = 0;
  6798. noge->setTotalFrames(1);
  6799. break;
  6800. case DIK_S:
  6801. case DIK_W:
  6802. paddleVelocity2 = 0.00;
  6803. KretanjeY=0;
  6804. noge->setTotalFrames(1);
  6805. break;
  6806.  
  6807. case DIK_F9:
  6808. g_engine->audio->StopAll();
  6809. LoadLevel();
  6810. break;
  6811.  
  6812. //PREKID IGRE
  6813. case DIK_ESCAPE:
  6814. g_engine->audio->StopAll();
  6815. gameState=STATE_GAMEOVER;
  6816. boss->energy=0;
  6817. BossEnergy=0;
  6818. cursor->loadImage("Textures/Cursor_Menu.tga");
  6819. cursor->setVisible(false);
  6820. StartS->setImage(M_GameOver_T);
  6821. StartS->setPosition(g_engine->getScreenWidth()/2-150, g_engine->getScreenHeight()/2-150);
  6822. StartS->setColor(0xFFFFFFFF);
  6823. break;
  6824.  
  6825. /*case DIK_J:
  6826. addBik();
  6827. break;
  6828. case DIK_T:
  6829. addKamikaza('D');
  6830. break;
  6831.  
  6832. case DIK_Z:
  6833. addGnaarFemale();
  6834. break;
  6835.  
  6836. case DIK_U:
  6837. addGnaarMale();
  6838. break;
  6839.  
  6840. case DIK_I:
  6841. addHarpija('D');
  6842. break;
  6843.  
  6844. case DIK_O:
  6845. addSetacPlavi('D');
  6846. break;
  6847.  
  6848. case DIK_K:
  6849. addSetacPlavi('L');
  6850. break;
  6851.  
  6852. case DIK_P:
  6853. addSetacCrveni('D');
  6854. break;
  6855.  
  6856. case DIK_L:
  6857. addSetacCrveni('L');
  6858. break;
  6859.  
  6860. case DIK_M:
  6861. addBossHead();
  6862. break;*/
  6863.  
  6864.  
  6865. }//case STATE_PLAY
  6866. break;
  6867.  
  6868. case STATE_RESTART_L:
  6869. switch (key)
  6870. {
  6871. default:
  6872. LLAI(level);
  6873. }
  6874. break;
  6875.  
  6876. case STATE_END:
  6877. switch (key)
  6878. {
  6879. case DIK_RETURN:
  6880. case DIK_ESCAPE:
  6881. case DIK_SPACE:
  6882. background->setImage(B_Credits);
  6883. addCreditsText();
  6884. addCreditsB();
  6885. g_engine->audio->StopAll();
  6886. g_engine->audio->Play("Music_Credits");
  6887. gameState = STATE_CREDITS_K;
  6888. break;
  6889. }
  6890. break;
  6891.  
  6892. case STATE_TEZINA:
  6893. switch (key)
  6894. {
  6895. case DIK_ESCAPE:
  6896. g_engine->audio->Play("Press");
  6897. BotuniMenu();
  6898. break;
  6899. }
  6900. break;
  6901.  
  6902. case STATE_GAMEOVER:
  6903. case STATE_LOSER:
  6904. switch (key)
  6905. {
  6906. case DIK_RETURN:
  6907. LoadLevel();
  6908. break;
  6909.  
  6910. case DIK_ESCAPE:
  6911. BotuniMenu();
  6912. break;
  6913. }
  6914. break;
  6915.  
  6916. case STATE_CREDITS:
  6917. switch (key)
  6918. {
  6919. case DIK_ESCAPE:
  6920. case DIK_RETURN:
  6921. case DIK_SPACE:
  6922. g_engine->Close();
  6923. break;
  6924. }
  6925. break;
  6926.  
  6927. case STATE_CREDITS_K:
  6928. switch (key)
  6929. {
  6930. case DIK_SPACE:
  6931. case DIK_RETURN:
  6932. case DIK_ESCAPE:
  6933. BotuniMenu();
  6934. g_engine->audio->StopAll();
  6935. break;
  6936. }
  6937. break;
  6938. }//switch gamestate
  6939.  
  6940. switch (key)
  6941. {
  6942. case DIK_F12:
  6943. konzola=!konzola;
  6944. break;
  6945. }
  6946. }
  6947.  
  6948. //UREDJENO
  6949. void game_render3d()
  6950. {
  6951. g_engine->ClearScene(D3DCOLOR_XRGB(0,0,0));
  6952. }
  6953.  
  6954. void game_mouseButton(int button)
  6955. {
  6956. switch(button)
  6957. {
  6958. case 1:
  6959. if (SecondaryFire==true)
  6960. {
  6961. //DESNI BOTUN - SECONDARY FIRE
  6962. //MINIGUN
  6963. if (gameState == STATE_PLAY && oruzje == 4 && MunicijaMG > 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[2]-25))
  6964. {
  6965. firebullet(2);
  6966. break;
  6967. }
  6968. //ROCKET LAUNCHER
  6969. if (gameState == STATE_PLAY && oruzje == 5 && MunicijaRL > 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[3]+150))
  6970. {
  6971. firebullet(2);
  6972. break;
  6973. }
  6974. //LASER
  6975. if (gameState == STATE_PLAY && oruzje == 7 && MunicijaL > 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[4]+20))
  6976. {
  6977. firebullet(2);
  6978. break;
  6979. }
  6980. }
  6981. break;
  6982.  
  6983. case 0:
  6984. //LIJEVI BOTUN - PRIMARY FIRE
  6985. if (gameState==STATE_PLAY)
  6986. {
  6987. if (oruzje == 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[0])) firebullet(1);
  6988. if (oruzje == 3 && Sam_Pucaj.stopwatch(BrzinaOruzja[1])) firebullet(1);
  6989. if (oruzje == 4 && MunicijaMG > 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[2])) firebullet(1);
  6990. if (oruzje == 5 && MunicijaRL > 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[3])) firebullet(1);
  6991. if (oruzje == 7 && MunicijaL > 0 && Sam_Pucaj.stopwatch(BrzinaOruzja[4])) firebullet(1);
  6992. if (oruzje == 8 && MunicijaT > 0 && Sam_PucajTop.stopwatch(BrzinaOruzja[5]))
  6993. {
  6994. firebullet(1);
  6995. }
  6996. }
  6997. //MAIN MENU
  6998. if (gameState==STATE_MENU)
  6999. {
  7000. //MENU START
  7001. if ((cursor->getX() > StartS->getX()) && (cursor->getX() < StartS->getX()+StartS->getWidth()) && (cursor->getY() > StartS->getY()) && (cursor->getY() < StartS->getY()+StartS->getHeight()))
  7002. {
  7003. g_engine->audio->Play("Press");
  7004. StartS->setImage(M_Tezina_T);
  7005. StartS->setPosition(g_engine->getScreenWidth()/2-150, g_engine->getScreenHeight()/2-150);
  7006. StartS->setColor(0xFFFFFFFF);
  7007. LoadS->setImage(M_Normal_T);
  7008. LoadS->setSize(150,50);
  7009. LoadS->setColor(0xFFFFFFFF);
  7010. SaveS->setImage(M_Serious_T);
  7011. SaveS->setSize(150,50);
  7012. SaveS->setColor(0xFFFFFFFF);
  7013. gameState = STATE_TEZINA;
  7014. }
  7015. //MENU LOAD
  7016. if ((cursor->getX() > LoadS->getX()) && (cursor->getX() < LoadS->getX()+LoadS->getWidth()) && (cursor->getY() > LoadS->getY()) && (cursor->getY() < LoadS->getY()+LoadS->getHeight()))
  7017. {
  7018. if (RL_Level != 0)
  7019. {
  7020. g_engine->audio->Play("Press");
  7021. LoadLevel();
  7022. }
  7023. }
  7024. //MENU QUIT
  7025. if ((cursor->getX() > QuitS->getX()) && (cursor->getX() < QuitS->getX()+QuitS->getWidth()) && (cursor->getY() > QuitS->getY()) && (cursor->getY() < QuitS->getY()+QuitS->getHeight()))
  7026. {
  7027. g_engine->audio->Play("Press");
  7028. StartS->setImage(M_AreYouSerious_T);
  7029. StartS->setSize(300,50);
  7030. StartS->setPosition(g_engine->getScreenWidth()/2-150, g_engine->getScreenHeight()/2-105);
  7031. StartS->setColor(0xFFFFFFFF);
  7032. LoadS->setImage(M_Yes_T);
  7033. LoadS->setSize(150,50);
  7034. LoadS->setColor(0xFFFFFFFF);
  7035. SaveS->setImage(M_No_T);
  7036. SaveS->setSize(150,50);
  7037. SaveS->setColor(0xFFFFFFFF);
  7038. gameState=STATE_EXIT;
  7039. }
  7040. }
  7041.  
  7042. //TEZINA
  7043. if (gameState==STATE_TEZINA)
  7044. {
  7045. //NORMAL
  7046. if ((cursor->getX() > LoadS->getX()) && (cursor->getX() < LoadS->getX()+LoadS->getWidth()) && (cursor->getY() > LoadS->getY()) && (cursor->getY() < LoadS->getY()+LoadS->getHeight()))
  7047. {
  7048. background->setImage(B_Intro);
  7049. Tezina=NORMAL;
  7050. cursor->setVisible(false);
  7051. g_engine->audio->Play("Press");
  7052. gameState = STATE_INTRO;
  7053. g_engine->audio->Play("Music_SpaceIntro");
  7054. addIntroText();
  7055. }
  7056. //SERIOUS
  7057. if ((cursor->getX() > SaveS->getX()) && (cursor->getX() < SaveS->getX()+SaveS->getWidth()) && (cursor->getY() > SaveS->getY()) && (cursor->getY() < SaveS->getY()+SaveS->getHeight()))
  7058. {
  7059. background->setImage(B_Intro);
  7060. Tezina=SERIOUS;
  7061. cursor->setVisible(false);
  7062. g_engine->audio->Play("Press");
  7063. gameState = STATE_INTRO;
  7064. g_engine->audio->Play("Music_SpaceIntro");
  7065. addIntroText();
  7066. }
  7067. }//TEZINA
  7068.  
  7069. //EXIT GAME MENU
  7070. if (gameState==STATE_EXIT)
  7071. {
  7072. //EXIT YES
  7073. if ((cursor->getX() > LoadS->getX()) && (cursor->getX() < LoadS->getX()+LoadS->getWidth()) && (cursor->getY() > LoadS->getY()) && (cursor->getY() < LoadS->getY()+LoadS->getHeight()))
  7074. {
  7075. g_engine->audio->Play("Press");
  7076. cursor->setVisible(false);
  7077. background->setImage(B_Credits);
  7078. addCreditsText();
  7079. addCreditsB();
  7080. g_engine->audio->Play("Music_Credits");
  7081. gameState=STATE_CREDITS;
  7082. }
  7083. //EXIT NO
  7084. if ((cursor->getX() > SaveS->getX()) && (cursor->getX() < SaveS->getX()+SaveS->getWidth()) && (cursor->getY() > SaveS->getY()) && (cursor->getY() < SaveS->getY()+SaveS->getHeight()))
  7085. {
  7086. g_engine->audio->Play("Press");
  7087. BotuniMenu();
  7088. }
  7089. }
  7090. break;
  7091. }
  7092. }
  7093.  
  7094. void game_mouseMove(int x,int y)
  7095. {
  7096. float fx = (float)x;
  7097. float fy = (float)y;
  7098.  
  7099. cursor->setPosition(fx,fy);
  7100. }
  7101.  
  7102. void game_mouseWheel(int wheel){ }
  7103. void game_mouseMotion(int x,int y) { }
  7104. void game_entityRender(Entity* entity){ }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement