Object.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574
  1. //------------------------------------------------------------------------------------------------
  2. // version 0.0.6
  3. //------------------------------------------------------------------------------------------------
  4. #ifndef _OBJECT__
  5. #define _OBJECT__
  6. #include <stdio.h>
  7. #include <stdint.h>
  8. //#include <d3d.h>
  9. #include "3d_all.h"
  10. #include "Berusky_universal.h"
  11. #include "Berusky3d_castice.h"
  12. #include "camera.h"
  13. #define _3DKOREKCE 40
  14. #define SAVE_VER 2
  15. #define DEMO_VER 1
  16. #define PROFILE_VER 1
  17. typedef struct
  18. {
  19. int Index; // index wavu
  20. int Type; // typ wavu
  21. } SOUND;
  22. typedef struct
  23. {
  24. int item[16]; // predmety
  25. char Count_of_Items; // pocet predmetu co nese
  26. char Max_Items; // maximalni pocet predmetu
  27. int Strength; // sila(kolik utlaci)
  28. } BACK_PACK;
  29. typedef struct
  30. {
  31. char File_Name[10][30]; // jmena souboru (mesh, textury)
  32. } SECONDDATADESC;
  33. typedef struct
  34. {
  35. int handle_materialove_animace;
  36. int handle_meshe;
  37. int cislo_objektu;
  38. } MATERIAL_BUNKA_K;
  39. typedef struct
  40. {
  41. int bSwitch;
  42. int Mesh;
  43. int iRot;
  44. int Flag;
  45. int iID;
  46. DWORD dwTime;
  47. int iAnimCount;
  48. int iSound;
  49. int iEffect;
  50. int iEffectCounter;
  51. } BEETLEANIMATION;
  52. typedef struct
  53. {
  54. char cType;
  55. int iFlag;
  56. } MATERIAL_EVENT;
  57. typedef struct
  58. {
  59. char Name[30]; // jmeno
  60. int GUID; // Glabal Uniqe Identificator
  61. int Class; // trida objektu
  62. int SubClass; // pod-trida objektu
  63. int Material; // material pro zvuky
  64. SOUND Specific[3]; // specificke zvuky
  65. SOUND Reserved[3]; // jine zvuky
  66. SECONDDATADESC Out_File; // ponechano pro pridavani prvku do databaze
  67. MATERIAL_EVENT MatEvent[3];
  68. } OBJECTDESC;
  69. typedef struct
  70. {
  71. float pos[3];
  72. int Flag;
  73. float nx[3];
  74. float nz[3];
  75. float dx;
  76. float dy;
  77. int Rotation;
  78. int Material;
  79. size_ptr pFlek;
  80. } FLEK_K;
  81. typedef struct
  82. {
  83. FLEK_K Flek; // flek prvku
  84. int iUroven; // uroven fleku
  85. FLEK_K *pExtFlek; // pointer na flek privazany k nemu jinym prvkem (napr. predmetem)
  86. } SQUAREDESC;
  87. typedef struct
  88. {
  89. OBJECTDESC *p_Object; // pointer na objekt
  90. int Pos[3]; // logicka pozice
  91. int Connection[2]; // vazby
  92. int Rotation; // natoceni
  93. int Index_Of_Game_Mesh; // mesh
  94. BACK_PACK *p_Back_Pack; // pointer na batoh (predmety)
  95. char bDestroed; // indikator, ze prvek se nepouziva
  96. RunHandle a_run; // animace
  97. int a_flag; // flag_animace
  98. int iItem; // jaky sem index v poli Itemu
  99. char bMatEvent[3]; // Flag pouziti jednotlivych eventu (pro animace)
  100. MATERIAL_BUNKA_K *mMaterial; // pointer material (komat)
  101. SQUAREDESC Square; // Informace o vecech s prvkem
  102. int _3ds_flag; // flaq 3ds animace (beruska,...)
  103. int hSvetlo; // handle svetla
  104. } ITEMDESC;
  105. typedef struct
  106. {
  107. uint32_t room;
  108. float size;
  109. char bsize;
  110. int32_t wall_occlusion;
  111. char bwall_occlusion;
  112. float wall_occlusionLF;
  113. char bwall_occlusionLF;
  114. float wall_occlusion_room;
  115. char bwall_occlusion_room;
  116. int32_t out_room;
  117. char bout_room;
  118. int32_t out_roomHF;
  119. char bout_roomHF;
  120. float out_room_rolloff;
  121. char bout_room_rolloff;
  122. float out_air_absorbtion;
  123. char bout_air_absorbtion;
  124. int32_t id;
  125. char extsoundf[64];
  126. char bunderwater;
  127. } ENVIRONMENT;
  128. typedef struct
  129. {
  130. PAR_STREPINA *pCastice;
  131. int Sizeof;
  132. int flag;
  133. DWORD dwStart;
  134. } SYSTEMCASTIC;
  135. typedef struct
  136. {
  137. PAR_KOUR_STOPA *pCastice;
  138. size_ptr System;
  139. int Sizeof;
  140. int flag;
  141. size_ptr hHnizdo[64];
  142. float dir[64][3];
  143. float pivot[64][3];
  144. float nx[64][3];
  145. float ny[64][3];
  146. DWORD dwStart;
  147. DWORD dwTime;
  148. DWORD dwStop;
  149. DWORD dwExpire;
  150. DWORD dwExpireTime;
  151. } SYSTEMKOUROVYCHCASTIC;
  152. typedef struct
  153. {
  154. PAR_KOUR_STOPA *pCastice;
  155. PAR_KOUR_STOPA *pWCastice;
  156. int SizeofCastice;
  157. int SizeofWCastice;
  158. size_ptr pSystem;
  159. size_ptr pWSystem;
  160. int flag;
  161. size_ptr *hHnizdo;
  162. size_ptr *hWHnizdo;
  163. int SizeofHnizda;
  164. int SizeofWHnizda;
  165. BOD dir;
  166. BOD nx;
  167. BOD ny;
  168. BOD Wnx;
  169. BOD Wny;
  170. BOD *pivot;
  171. BOD *Wpivot;
  172. BOD *Wpos;
  173. BOD RainCenter;
  174. unsigned int uiDensity;
  175. unsigned int uiIntensity;
  176. float fmaxDivergence;
  177. float fDist;
  178. float fSky;
  179. float fLowPlain;
  180. char bRain;
  181. char bWaterCircles;
  182. } RAINSYSTEM;
  183. typedef struct
  184. {
  185. PAR_KOUR_STOPA *pCastice;
  186. int SizeofCastice;
  187. size_ptr pSystem;
  188. int flag;
  189. size_ptr *hHnizdo;
  190. int SizeofHnizda;
  191. BOD dir;
  192. BOD *pivot;
  193. BOD SnowCenter;
  194. unsigned int uiDensity;
  195. unsigned int uiIntensity;
  196. float fmaxDivergence;
  197. float fDist;
  198. float fSky;
  199. float fLowPlain;
  200. char bSnow;
  201. } SNOWSYSTEM;
  202. typedef struct
  203. {
  204. int hSvetlo;
  205. char bMist;
  206. } MISTSYSTEM;
  207. typedef struct
  208. {
  209. int EffectID;
  210. PAR_KOUR_STOPA *pCastice;
  211. int SizeofCastice;
  212. size_ptr pSystem;
  213. int flag;
  214. size_ptr *hHnizdo;
  215. int SizeofHnizda;
  216. BOD *dir;
  217. int SizeofDir;
  218. BOD *pivot;
  219. int SizeofPivot;
  220. BOD *nx;
  221. int SizeofNX;
  222. BOD *ny;
  223. int SizeofNY;
  224. float fRadius;
  225. unsigned int uiDensity;
  226. unsigned int uiIntensity;
  227. float fSky;
  228. float fLowPlain;
  229. char bEffect;
  230. DWORD dwTime;
  231. DWORD dwRegTime;
  232. DWORD dwGenTime;
  233. DWORD dwGenTimeCounter;
  234. int iGenProbability;
  235. BOD AddDir;
  236. } NATUREEFFECTSYSTEM;
  237. typedef struct
  238. {
  239. SYSTEMCASTIC System;
  240. int hSvetlo[64];
  241. size_ptr hFlare[64];
  242. int iKourStopa;
  243. } SYSTEMZHAVYCHCASTIC;
  244. typedef struct
  245. {
  246. PAR_FLEK *pCastice;
  247. int Sizeof;
  248. int flag;
  249. DWORD dwStart;
  250. } SYSTEMFLEKCASTIC;
  251. typedef struct
  252. {
  253. FlareHandle pFlare;
  254. int hSvetlo;
  255. int hEXSvetlo;
  256. int hEXSvetloAnim;
  257. int mesh;
  258. float mSpeed;
  259. float Speed[14];
  260. ITEMDESC *Item;
  261. void *pPointer;
  262. int Teleport;
  263. DWORD dwStart;
  264. } FLARESTRUCT;
  265. typedef struct
  266. {
  267. char bUnderWater;
  268. } SQUAREINFO;
  269. typedef struct
  270. {
  271. int mesh;
  272. int iItem;
  273. SYSTEMKOUROVYCHCASTIC System;
  274. int iStart;
  275. int bOn;
  276. } BUBLSYSTEM;
  277. typedef struct
  278. {
  279. DWORD dwTime;
  280. int actFrame;
  281. int forward;
  282. } MENUITEMANIM;
  283. typedef struct
  284. {
  285. int hSvetlo;
  286. int hEXSvetlo[2];
  287. SYSTEMKOUROVYCHCASTIC System;
  288. int mesh;
  289. } EXITEFECT;
  290. typedef struct
  291. {
  292. int hSvetlo;
  293. float pos[3];
  294. unsigned long eStart;
  295. unsigned long eCounter;
  296. unsigned long ePause;
  297. unsigned long epCounter;
  298. unsigned long dwEfTime;
  299. unsigned long dwRiseTime;
  300. unsigned long dwLightTime;
  301. float Speed;
  302. FlareHandle hFlare;
  303. float fdx;
  304. char bUsed;
  305. char bConnected;
  306. } STREET_LIGHT_EFFECT;
  307. typedef struct _KOFOLOVA_CARA2
  308. {
  309. BOD p1, p2;
  310. BODRGB b1, b2;
  311. } KOFOLOVA_CARA2;
  312. typedef struct
  313. {
  314. size_ptr hWater;
  315. size_ptr hVodnik[3];
  316. char bWater;
  317. } WATERDESC;
  318. typedef struct
  319. {
  320. DWORD dwTime;
  321. DWORD dwExpTime;
  322. DWORD dwRealTime;
  323. int iItem;
  324. SYSTEMKOUROVYCHCASTIC sStopy;
  325. int iStepc;
  326. } BEATLE_SMOKE_SYSTEM;
  327. typedef struct
  328. {
  329. PAR_KOUR_STOPA *pCastice;
  330. int csize;
  331. size_ptr hHnizdo;
  332. size_ptr pSystem;
  333. BOD pivot;
  334. BOD dir;
  335. float fLowPlain;
  336. int flag;
  337. DWORD dwTime;
  338. DWORD dwRegTime;
  339. RECT rScene;
  340. float pos[3];
  341. float speed;
  342. float faire_dir[3];
  343. int iSwampLight;
  344. float falngle[3];
  345. float fmult[3];
  346. float fsinspeed[3];
  347. float fScene[6];
  348. int iSound;
  349. } FAIRY_EFFECT;
  350. typedef struct
  351. {
  352. PAR_KOUR_STOPA *pCastice;
  353. int csize;
  354. size_ptr hHnizdo;
  355. size_ptr pSystem;
  356. BOD pivot;
  357. BOD dir;
  358. float fLowPlain;
  359. int flag;
  360. float pos[3];
  361. float speed;
  362. int hSvetlo;
  363. } CANDLE_EFFECT;
  364. typedef struct
  365. {
  366. int Size[3]; // rozmery levelu
  367. int Count_Of_Objects; // pocet objektu
  368. int Count_Of_Items; // pocet predmetu
  369. int Count_Of_Action_Items; // pocet akcnich prvku
  370. int Size_of_Level; // velikost levelu
  371. OBJECTDESC *Object; // pointer na objekty
  372. ITEMDESC **Level; // mapa
  373. ITEMDESC *Item; // pointer na prvky
  374. long *Action_Item; // seznam spec. log. prvku (teleport, tkacitko,...)
  375. long *Anim_Item; // seznam prvku, ktere se konstantne
  376. // HWND hWnd; // hWnd aplikace
  377. long Actual_Item; // aktualni predmet (brouk)
  378. int status; // status hry
  379. int Column[3]; // nejzassi posouvany sloupec
  380. char bColumn; // identifikace jeho zvoleni
  381. int SecColumn[3];
  382. char bSecColumn;
  383. char bExit; // identfifikater stoupnuti na exit
  384. char Level_Exit; // exit z levelu
  385. char Throw_off; // setrasat?
  386. int Base_Priority; // Zakladni priotita podle rychlosti CPU
  387. AUDIO_DATA *p_ad; // Audio Data
  388. char Item_Lock; // Zamikani predmetu
  389. char Move_Exeption; // Vijimka z pravidel posunu
  390. ENVIRONMENT Environment; // prostredi
  391. int Beetle[6]; // aktivni brouci;
  392. BEETLEANIMATION BeetleAnim[6]; // meshe brouku;
  393. char Beetle_Index; // index aktivniho brouka v strukture Beetle
  394. char Sikmina_Flag; // flag se nastavi, jestlize se sunulo na sikminu
  395. char Sikmina_FlagOld; // udrzuje posledni flag na sikminu;
  396. int Actual_Qset; // actual queue set
  397. int Actual_Anim_Qset; // actual animation queue set
  398. char bCheck_Result; // retrun value of gl_Check_Logical_Dependences
  399. char bCheck; // retrun value of gl_Throwoff_Test
  400. char Flip; // if animation set must be fliped
  401. char bAllow_Key; // player is allows to press next key
  402. ITEMDESC *pWall; // pointer na zed v levelu. Pouziva se u vytahu
  403. char bInventory; // kresleni inventorare
  404. char bLInventory;
  405. char bTopLedge; // kresleni horni listy
  406. char bLastTopLedge;
  407. char bSikminaSound; // slo se pres sikminu
  408. MATERIAL_BUNKA_K *pMaterialb; // seznam animujicich se materuali
  409. int iMaterialb; // pocet animujicich se materialu
  410. SQUAREDESC *pSquare; // informace o spodnim patre (fleky,...)
  411. char bSunuti; // indikator, zda beruska neco sune;
  412. char bVypniFlek; // indikator, ze se musi vypnout flek
  413. char bTriger; // indikator, trigeru
  414. SYSTEMCASTIC Exploze[20]; // 10 predvyrobenych vybuchu
  415. SYSTEMCASTIC Jiskra[20]; // 10 predvyrobenych vybuchu zhavych strepin
  416. SYSTEMCASTIC Propadla[20]; // 10 predvyrobenych propadel
  417. SYSTEMCASTIC Kamen[20]; // 10 predvyrobenych kamen
  418. SYSTEMCASTIC Krompac[10]; // 10 rozpad krompace
  419. int TrashFlag; // odpadni flag
  420. char bPohled_Berusky; // indikator pohledu berusky
  421. float fVitr[3]; // vitr v levelu
  422. SYSTEMZHAVYCHCASTIC ZhaveCastice[20]; // castice se zhavimi strepinamy (svetly)
  423. SYSTEMKOUROVYCHCASTIC KourovaStopa[20]; // system kourovych stop
  424. SYSTEMKOUROVYCHCASTIC Kour[20]; // kour po vybuchu;
  425. SYSTEMKOUROVYCHCASTIC KourKameni[20]; // kour po vybuchu;
  426. BEATLE_SMOKE_SYSTEM BeatleSmoke[6];
  427. SYSTEMKOUROVYCHCASTIC KourUst[10]; // kour z ust;
  428. SYSTEMFLEKCASTIC Prach[20]; // zvyrany prach po dopadu
  429. char Sub_Svetla; // flag, zda pouzivat sub svetla
  430. LEVEL_HEADER LevelHeader; // hlavicka nahraneho levelu
  431. char bSikminaUp; // posun bedny na sikminu smerem navrch
  432. char bSikminaDown;
  433. char bSikminaUpExeption; // vijimka na animaci na na sikmine
  434. FLARESTRUCT Flare[20]; // flary teleportu
  435. SYSTEMKOUROVYCHCASTIC TeleportSparks[20]; // jiskry po teleportaci
  436. SYSTEMKOUROVYCHCASTIC LiftParticles[10]; // caticky odpadavajici z vitahu za jizdy
  437. SYSTEMKOUROVYCHCASTIC LiftVParticles[10]; // caticky odpadavajici z vitahu za jizdy
  438. SYSTEMKOUROVYCHCASTIC VodniKola[10]; // kona na vode
  439. SYSTEMKOUROVYCHCASTIC VodniKolaB[100]; // kona na vode po pohybujicich se prvcich
  440. // (beruska, bedna,...)
  441. SYSTEMCASTIC VodniCakanec1[10]; // System tvorici hnanove castice pri dopadu
  442. // bedny do vody
  443. SYSTEMCASTIC VodniCakanec2[10]; // System tvorici hnanove castice pri dopadu
  444. // bedny do vody
  445. int LastMesh; // mesh posledniho prvku
  446. FLEK_K SelectionFlek; // flek ukazujici vybranou berusku
  447. SQUAREINFO *Square;
  448. BUBLSYSTEM BublSystem[6]; // system pro bublinky berusek pod vodou
  449. BUBLSYSTEM BublSystemE; // nature effect bubl system
  450. BUBLSYSTEM BublSystemC; // nature effect bubl system
  451. SYSTEMKOUROVYCHCASTIC BublVybuch[20]; // vybuch z bublin
  452. char bPosouvatKameru; // ma se posouvat kamera s beruskou?
  453. int KvalitaCastic; // kvalita castic
  454. int KvalitaCasticV; // kvalita castic vody
  455. MENUITEMANIM MenuItemAnim[6]; // animace predmetu v inventorari
  456. char bMenuRunning; // indikuje, ze bezi menu
  457. char bMenuButton; // je nad tlacitkem menu
  458. EXITEFECT ExitEfect[10]; // efekt exitu
  459. SYSTEMKOUROVYCHCASTIC ExitSparks[10]; // konstantni efekt exitu
  460. SYSTEMKOUROVYCHCASTIC TelCSparks[10]; // konstantni efekt teleportu
  461. SYSTEMKOUROVYCHCASTIC BarelSparks[30]; // konstantni efekt barelu
  462. KOFOLOVA_CARA2 *pCara; // list cas ke kresleni
  463. RAINSYSTEM Rain; // system na dest
  464. SNOWSYSTEM Snow; // system na snih
  465. NATUREEFFECTSYSTEM NatureESystem[10]; // system prirodnich efektu (chmiri,...)
  466. WATERDESC Water; // vlny na vode
  467. MISTSYSTEM Mist; // mlha
  468. long lLastKeyCounter;
  469. char bMultiConnect;
  470. char bCheckDependencesNeeded;
  471. char bB1ExtraCameraRot;
  472. CAMERA_STRUCT lCamera;
  473. long lLevel_Exitc;
  474. char bSetStep;
  475. int iNSrart;
  476. char bUnderWaterLevel;
  477. char bExtraSoundSunuti;
  478. STREET_LIGHT_EFFECT StreetL[8];
  479. STREET_LIGHT_EFFECT SwampL[10];
  480. RAINSYSTEM StreetRain;
  481. char bResetini;
  482. char bSaveDemo;
  483. FAIRY_EFFECT FairyEffect[4];
  484. int iFloorMaterial;
  485. STREET_LIGHT_EFFECT StarL[200];
  486. FAIRY_EFFECT StarFall[2];
  487. CANDLE_EFFECT CandleEffect[6];
  488. CANDLE_EFFECT CandleSmoke[6];
  489. char cLevelName[64];
  490. char cLoadedFrom[256+1];
  491. DWORD dwPlayTime;
  492. DWORD dwStartTime;
  493. int iNumOfSteps;
  494. int iWalkAnimation;
  495. char bStone;
  496. char bStoneSound;
  497. char bSikminaMoveExeption;
  498. int iCursor;
  499. int iKursorMesh;
  500. RunHandle iKursorAnimation;
  501. char bRestart;
  502. int iMessageBoxReturn;
  503. char bCancelMenu;
  504. char bReturnToMenu;
  505. DWORD dwLastMusicCheck;
  506. char bDemoSaveExeption;
  507. char bGameResume;
  508. } LEVELINFO;
  509. typedef struct
  510. {
  511. ITEMDESC Item;
  512. int GUID;
  513. int mesh;
  514. } SAVE_FILE_ITEM;
  515. extern int PRCameraFlag; //indikator, ze je pozno pohybovat kamerou pomoci P&R
  516. extern int PRCameraFlagChange; // byl pozit pohyb pomoci P&R
  517. int gl_Get_Active_Beetle_Mesh(void);
  518. // musi se volat az po kom_prvotni_init
  519. void gl_Get_PR_ScanCode(int *pPScan, int *pRScan);
  520. void gl_Kofola_Minimalize(void);
  521. void gl_Kofola_Maximalize(void);
  522. int gl_Allow_Key(int iScanCode);
  523. void gl_Kofola_End(int InMenu);
  524. extern char bInMenu;
  525. #endif