Oe_winini.cpp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. /*
  2. Klasika - editor objektu & sceny
  3. */
  4. #define WM_MOUSEWHEEL 0x020A
  5. #include "mss_on.h"
  6. #include <windows.h>
  7. #include <winuser.h>
  8. #include <commctrl.h>
  9. #include <stdio.h>
  10. #include <math.h>
  11. #include <direct.h>
  12. #include <float.h>
  13. #include <assert.h>
  14. #include <time.h>
  15. #include "objekt_editor_all.h"
  16. //#pragma comment(lib,"mss.lib")
  17. #pragma comment(lib,"dxguid.lib")
  18. #pragma comment(lib,"dinput.lib")
  19. #define V_OKNE 1
  20. dword system_timer = 0;
  21. dword system_kurzor = 0;
  22. byte akt_editor = 1;
  23. dword karmin_aktivni = 1;
  24. HWND hwnd_plocha;
  25. HWND hwnd_aplikace;
  26. HWND hwnd_konzole;
  27. HWND hwnd_horni_lista;
  28. HWND hwnd_horni_lista_dialog;
  29. HWND hwnd_dolni_lista;
  30. HWND hwnd_dolni_lista_dialog;
  31. HWND hwnd_bocni_lista;
  32. HWND hwnd_bocni_lista_dialog;
  33. HWND hwnd_konzole;
  34. HWND hwnd_konzole_dialog;
  35. HINSTANCE hinst;
  36. HWND hwnd_bocni_lista2;
  37. HMENU handle_menu[10];
  38. byte work_dir[200];
  39. byte ini_file[300];
  40. int render_povolen;
  41. void go_fraktaly_3d(void);
  42. void go_object_editor(char *p_edit_kont, char *p_text_dir);
  43. void go_scene_editor(void);
  44. void doe_prekresli_hlavni_okno(void);
  45. void doe_proved_vybr_prikaz(void);
  46. void soe_prekresli_hlavni_okno(void);
  47. void soe_proved_prikaz_menu(UINT prikaz, int rychle);
  48. void soe_proved_vybr_prikaz(void);
  49. dword doe_get_vybr_prikaz(void);
  50. dword soe_get_vybr_prikaz(void);
  51. DLGTEMPLATE *load_dialog_resource(byte * p_res);
  52. int efile(byte * p_file);;
  53. void kprintf(byte log, byte * p_text, ...);
  54. void doe_hs_init(void);
  55. //#define VYSKA_HORNI_LISTY 21
  56. #define VYSKA_DOLNI_LISTY 21
  57. #define VYSKA_KONZOLE 70
  58. #define SIRKA_BOCNI_LISTY 220
  59. __inline void nacti_polohu_mysi(WPARAM wParam, LPARAM lParam)
  60. {
  61. mi.dx = LOWORD(lParam) - mi.x;
  62. mi.dy = HIWORD(lParam) - mi.y;
  63. mi.x += mi.dx;
  64. mi.y += mi.dy;
  65. }
  66. __inline void nacti_tlacitka_mysi(WPARAM wParam, LPARAM lParam)
  67. {
  68. mi.t1 = LOWORD(wParam) & MK_LBUTTON;
  69. mi.t2 = LOWORD(wParam) & MK_RBUTTON;
  70. }
  71. long CALLBACK WindowProc_master(HWND hwnd, UINT message, WPARAM wParam,
  72. LPARAM lParam)
  73. {
  74. switch (message) {
  75. /*
  76. #ifdef VYHRADNI_REZIM_MYSI
  77. case WM_ACTIVATE:
  78. if(LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE) {
  79. system_kurzor = FALSE;
  80. }
  81. if(LOWORD(wParam) == WA_INACTIVE) {
  82. system_kurzor = TRUE;
  83. }
  84. break;
  85. #endif
  86. */
  87. case WM_ACTIVATEAPP:
  88. if (wParam) {
  89. karmin_aktivni = TRUE;
  90. system_kurzor = FALSE;
  91. }
  92. else {
  93. karmin_aktivni = FALSE;
  94. system_kurzor = TRUE;
  95. }
  96. break;
  97. case WM_CLOSE:
  98. PostQuitMessage(0);
  99. return (FALSE);
  100. case WM_DESTROY:
  101. PostQuitMessage(0);
  102. return (FALSE);
  103. case WM_KEYDOWN:
  104. _a_klavesa = MapVirtualKey(wParam, 2);
  105. key[MapVirtualKey(wParam, 0)] = TRUE;
  106. break;
  107. case WM_KEYUP:
  108. key[MapVirtualKey(wParam, 0)] = FALSE;
  109. break;
  110. case WM_COMMAND:
  111. doe_proved_prikaz_menu(LOWORD(wParam), FALSE, TRUE);
  112. break;
  113. case WM_TIMER:
  114. system_timer++;
  115. break;
  116. }
  117. return DefWindowProc(hwnd, message, wParam, lParam);
  118. }
  119. HWND otevri_okno_master(HINSTANCE handle_aplikace)
  120. {
  121. WNDCLASS wc;
  122. HWND hwnd;
  123. wc.style = CS_HREDRAW | CS_VREDRAW;
  124. wc.lpfnWndProc = WindowProc_master;
  125. wc.cbClsExtra = 0;
  126. wc.cbWndExtra = 0;
  127. wc.hInstance = handle_aplikace;
  128. wc.hIcon = LoadIcon(handle_aplikace, MAKEINTRESOURCE(IDI_ICON3));
  129. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  130. wc.hbrBackground = GetStockObject(GRAY_BRUSH);
  131. wc.lpszMenuName = NULL;
  132. wc.lpszClassName = "3D Editor";
  133. RegisterClass(&wc);
  134. // vytvoreni okna
  135. hwnd = CreateWindow("3D Editor",
  136. "3D Editor",
  137. WS_OVERLAPPEDWINDOW | WS_MAXIMIZE | WS_VISIBLE,
  138. 0,
  139. 0,
  140. GetSystemMetrics(SM_CXSCREEN),
  141. GetSystemMetrics(SM_CYSCREEN),
  142. NULL, handle_menu[MENU_MESH_EDITOR], handle_aplikace, NULL);
  143. if (!hwnd)
  144. return NULL;
  145. ShowWindow(hwnd, SW_SHOWMAXIMIZED);
  146. UpdateWindow(hwnd);
  147. return (hwnd);
  148. }
  149. /*
  150. Obsluha plochy
  151. */
  152. long CALLBACK WindowProc_plocha(HWND hwnd, UINT message, WPARAM wParam,
  153. LPARAM lParam)
  154. {
  155. switch (message) {
  156. case WM_MOUSEMOVE:{
  157. if (!hwconf.fullscreen)
  158. nacti_polohu_mysi(wParam, lParam);
  159. if (GetFocus() != hwnd)
  160. SetFocus(hwnd);
  161. break;
  162. }
  163. case WM_MOUSEWHEEL:{
  164. oe_prikaz_scena_zoom((signed short) HIWORD(wParam) > 0 ? 1 : -1);
  165. break;
  166. }
  167. case WM_LBUTTONUP:
  168. if (!hwconf.fullscreen)
  169. nacti_tlacitka_mysi(wParam, lParam);
  170. break;
  171. case WM_LBUTTONDOWN:{
  172. if (!hwconf.fullscreen)
  173. nacti_tlacitka_mysi(wParam, lParam);
  174. if (GetFocus() != hwnd)
  175. SetFocus(hwnd);
  176. break;
  177. }
  178. case WM_RBUTTONDOWN:
  179. if (!hwconf.fullscreen)
  180. nacti_tlacitka_mysi(wParam, lParam);
  181. if (GetFocus() != hwnd)
  182. SetFocus(hwnd);
  183. break;
  184. case WM_SETCURSOR:
  185. if (!system_kurzor) {
  186. SetCursor(NULL);
  187. return TRUE;
  188. }
  189. if (GetFocus() != hwnd)
  190. SetFocus(hwnd);
  191. break;
  192. case WM_CLOSE:
  193. SendMessage(hwnd_aplikace, WM_CLOSE, 0, 0);
  194. PostQuitMessage(0);
  195. return (FALSE);
  196. case WM_DESTROY:
  197. SendMessage(hwnd_aplikace, WM_DESTROY, 0, 0);
  198. PostQuitMessage(0);
  199. return (FALSE);
  200. case WM_KEYDOWN:
  201. _a_klavesa = MapVirtualKey(wParam, 0);
  202. key[_a_klavesa] = TRUE;
  203. break;
  204. case WM_KEYUP:
  205. key[MapVirtualKey(wParam, 0)] = FALSE;
  206. break;
  207. case WM_PAINT:
  208. if (render_povolen)
  209. doe_prekresli_hlavni_okno();
  210. break;
  211. case WM_RBUTTONUP:{
  212. if (hwconf.fullscreen)
  213. break;
  214. if (wParam & MK_SHIFT)
  215. doe_proved_prikaz_menu(doe_get_vybr_prikaz(), TRUE, TRUE);
  216. else {
  217. system_kurzor = 1;
  218. nacti_tlacitka_mysi(wParam, lParam);
  219. if (akt_editor == 1)
  220. TrackPopupMenuEx(GetSubMenu(handle_menu[MENU_MESH_POPUP], 0),
  221. TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, mi.x, mi.y,
  222. hwnd, NULL);
  223. else
  224. TrackPopupMenuEx(GetSubMenu(handle_menu[MENU_GAME_POPUP], 0),
  225. TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, mi.x, mi.y,
  226. hwnd, NULL);
  227. system_kurzor = 0;
  228. }
  229. break;
  230. }
  231. case WM_COMMAND:
  232. doe_proved_prikaz_menu(LOWORD(wParam), FALSE, TRUE);
  233. break;
  234. }
  235. return DefWindowProc(hwnd, message, wParam, lParam);
  236. }
  237. HWND otevri_okno_plocha(HINSTANCE handle_aplikace, HWND hwnd_otec)
  238. {
  239. WNDCLASS wc;
  240. HWND hwnd;
  241. RECT r;
  242. int x, y, dx, dy;
  243. GetClientRect(hwnd_otec, &r);
  244. x = 0;
  245. y = 0;
  246. dx = r.right - SIRKA_BOCNI_LISTY;
  247. dy = r.bottom - VYSKA_DOLNI_LISTY - VYSKA_KONZOLE;
  248. wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
  249. wc.lpfnWndProc = WindowProc_plocha;
  250. wc.cbClsExtra = 0;
  251. wc.cbWndExtra = 0;
  252. wc.hInstance = handle_aplikace;
  253. wc.hIcon = LoadIcon(handle_aplikace, MAKEINTRESOURCE(IDI_ICON3));
  254. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  255. wc.hbrBackground = GetStockObject(GRAY_BRUSH);
  256. wc.lpszMenuName = NULL;
  257. wc.lpszClassName = "Plocha";
  258. RegisterClass(&wc);
  259. hwnd = CreateWindowEx(FALSE,
  260. "Plocha",
  261. "Plocha",
  262. WS_CHILD | WS_VISIBLE,
  263. x, y, dx, dy, hwnd_otec, NULL, handle_aplikace, NULL);
  264. if (!hwnd)
  265. return NULL;
  266. ShowWindow(hwnd, SW_SHOW);
  267. UpdateWindow(hwnd);
  268. return (hwnd);
  269. }
  270. /*
  271. Bocni lista
  272. */
  273. long CALLBACK WindowProc_bocni_lista(HWND hwnd, UINT message, WPARAM wParam,
  274. LPARAM lParam)
  275. {
  276. switch (message) {
  277. case WM_CLOSE:
  278. PostQuitMessage(0);
  279. return (FALSE);
  280. case WM_DESTROY:
  281. PostQuitMessage(0);
  282. return (FALSE);
  283. }
  284. return DefWindowProc(hwnd, message, wParam, lParam);
  285. }
  286. long CALLBACK WindowProc_bocni_lista_dialog(HWND hwnd, UINT message,
  287. WPARAM wParam, LPARAM lParam)
  288. {
  289. switch (message) {
  290. case WM_CLOSE:
  291. PostQuitMessage(0);
  292. return (FALSE);
  293. case WM_DESTROY:
  294. PostQuitMessage(0);
  295. return (FALSE);
  296. }
  297. return DefWindowProc(hwnd, message, wParam, lParam);
  298. }
  299. HWND otevri_bocni_listu(HINSTANCE handle_aplikace, HWND hwnd_otec)
  300. {
  301. WNDCLASS wc;
  302. HWND hwnd;
  303. RECT r;
  304. int x, y, dx, dy;
  305. GetClientRect(hwnd_otec, &r);
  306. x = r.right - SIRKA_BOCNI_LISTY - 1;
  307. y = 0;
  308. dx = SIRKA_BOCNI_LISTY;
  309. dy = r.bottom - VYSKA_DOLNI_LISTY + 1;
  310. wc.style = CS_HREDRAW | CS_VREDRAW;
  311. wc.lpfnWndProc = WindowProc_bocni_lista;
  312. wc.cbClsExtra = 0;
  313. wc.cbWndExtra = 0;
  314. wc.hInstance = handle_aplikace;
  315. wc.hIcon = LoadIcon(handle_aplikace, MAKEINTRESOURCE(IDI_ICON3));
  316. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  317. wc.hbrBackground = GetStockObject(COLOR_BACKGROUND);
  318. wc.lpszMenuName = NULL;
  319. wc.lpszClassName = "Bocni lista";
  320. RegisterClass(&wc);
  321. hwnd = CreateWindowEx(FALSE,
  322. "Bocni lista",
  323. "Bocni lista",
  324. WS_CHILD, x, y, dx, dy, hwnd_otec, NULL, handle_aplikace, NULL);
  325. if (!hwnd)
  326. return NULL;
  327. ShowWindow(hwnd, SW_SHOW);
  328. UpdateWindow(hwnd);
  329. //hwnd to je to kam budu sipat ten dialog
  330. hwnd_bocni_lista_dialog = doe_aktivace_bocni_listy_mesh_editor(hwnd);
  331. return (hwnd);
  332. }
  333. long CALLBACK doe_callback_konzole(HWND hwnd, UINT message, WPARAM wParam,
  334. LPARAM lParam);
  335. /*
  336. Otevri konzoli
  337. */
  338. HWND otevri_konzoli(HINSTANCE handle_aplikace, HWND hwnd_otec)
  339. {
  340. WNDCLASS wc;
  341. HWND hwnd;
  342. RECT r;
  343. int x, y, dx, dy;
  344. GetClientRect(hwnd_otec, &r);
  345. x = 0;
  346. y = r.bottom - VYSKA_DOLNI_LISTY - VYSKA_KONZOLE;
  347. dx = r.right - SIRKA_BOCNI_LISTY;
  348. dy = VYSKA_KONZOLE;
  349. wc.style = CS_HREDRAW | CS_VREDRAW;
  350. wc.lpfnWndProc = WindowProc_bocni_lista;
  351. wc.cbClsExtra = 0;
  352. wc.cbWndExtra = 0;
  353. wc.hInstance = handle_aplikace;
  354. wc.hIcon = NULL;
  355. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  356. wc.hbrBackground = GetStockObject(COLOR_BACKGROUND);
  357. wc.lpszMenuName = NULL;
  358. wc.lpszClassName = "Konzole";
  359. RegisterClass(&wc);
  360. hwnd = CreateWindowEx(FALSE,
  361. "Konzole",
  362. "Konzole",
  363. WS_CHILD, x, y, dx, dy, hwnd_otec, NULL, handle_aplikace, NULL);
  364. if (!hwnd)
  365. return NULL;
  366. ShowWindow(hwnd, SW_SHOW);
  367. UpdateWindow(hwnd);
  368. hwnd_konzole_dialog =
  369. CreateDialog(hinst, MAKEINTRESOURCE(IDD_KONZOLE), hwnd,
  370. doe_callback_konzole);
  371. return (hwnd);
  372. }
  373. /*
  374. Dolni lista
  375. */
  376. long CALLBACK WindowProc_dolni_lista(HWND hwnd, UINT message, WPARAM wParam,
  377. LPARAM lParam)
  378. {
  379. switch (message) {
  380. case WM_CLOSE:
  381. PostQuitMessage(0);
  382. return (FALSE);
  383. case WM_DESTROY:
  384. PostQuitMessage(0);
  385. return (FALSE);
  386. case WM_KEYDOWN:
  387. _a_klavesa = MapVirtualKey(wParam, 2);
  388. key[MapVirtualKey(wParam, 0)] = TRUE;
  389. break;
  390. }
  391. return DefWindowProc(hwnd, message, wParam, lParam);
  392. }
  393. HWND otevri_dolni_listu(HINSTANCE handle_aplikace, HWND hwnd_otec)
  394. {
  395. WNDCLASS wc;
  396. HWND hwnd;
  397. RECT r;
  398. int x, y, dx, dy;
  399. GetClientRect(hwnd_otec, &r);
  400. x = 0;
  401. y = r.bottom - VYSKA_DOLNI_LISTY;
  402. dx = r.right;
  403. dy = VYSKA_DOLNI_LISTY;
  404. wc.style = CS_HREDRAW | CS_VREDRAW;
  405. wc.lpfnWndProc = WindowProc_dolni_lista;
  406. wc.cbClsExtra = 0;
  407. wc.cbWndExtra = 0;
  408. wc.hInstance = handle_aplikace;
  409. wc.hIcon = LoadIcon(handle_aplikace, MAKEINTRESOURCE(IDI_ICON3));
  410. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  411. wc.hbrBackground = GetStockObject(COLOR_BACKGROUND);
  412. wc.lpszMenuName = NULL;
  413. wc.lpszClassName = "Dolni lista";
  414. RegisterClass(&wc);
  415. hwnd = CreateWindowEx(FALSE,
  416. "Dolni lista", "Dolni lista", WS_CHILD | WS_VISIBLE /*|WS_DLGFRAME */ ,
  417. x, y, dx, dy, hwnd_otec, NULL, handle_aplikace, NULL);
  418. if (!hwnd)
  419. return NULL;
  420. ShowWindow(hwnd, SW_SHOWNORMAL);
  421. UpdateWindow(hwnd);
  422. //hwnd to je to kam budu sipat ten dialog
  423. hwnd_dolni_lista_dialog =
  424. CreateDialog(hinst, MAKEINTRESOURCE(IDD_HORNI_LISTA), hwnd,
  425. DefWindowProc);
  426. return (hwnd);
  427. }
  428. //hwnd_horni_lista = WInit_dolni_lista(hinst,hwnd_aplikace,SW_SHOWNORMAL,"Horni lista","Horni lista",0,0,r.right,VYSKA_HORNI_LISTY,WindowProc_master);
  429. void get_work_dir(byte * p_work_dir, int max)
  430. {
  431. _getcwd(p_work_dir, max);
  432. }
  433. #define TYP_NIC 0
  434. #define TYP_LIST 1
  435. #define TYP_RENDER 2
  436. char *get_render_file(char *p_cmd, int *p_typ)
  437. {
  438. char *p_pom;
  439. char c;
  440. *p_typ = TYP_NIC;
  441. p_pom = strchr(p_cmd, '-');
  442. if (p_pom) {
  443. c = tolower(p_pom[1]);
  444. if (c == 'l')
  445. *p_typ = TYP_LIST;
  446. else if (c == 'r')
  447. *p_typ = TYP_RENDER;
  448. else
  449. return (NULL);
  450. if (p_pom = strchr(p_pom, ' ')) {
  451. p_pom++;
  452. while (*p_pom) {
  453. if (*p_pom != ' ')
  454. return (p_pom);
  455. p_pom++;
  456. }
  457. }
  458. }
  459. return (NULL);
  460. }
  461. int WINAPI WinMain(HINSTANCE hi, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
  462. int nCmdShow)
  463. {
  464. byte pom[500], pom2[500];
  465. char *p_file;
  466. int ren_typ;
  467. InitCommonControls();
  468. hinst = hi;
  469. get_work_dir(work_dir, 200);
  470. p_file = get_render_file(lpCmdLine, &ren_typ);
  471. if (!ren_typ) {
  472. atexit(konec_uvolni);
  473. handle_menu[MENU_GAME_EDITOR] =
  474. LoadMenu(hi, MAKEINTRESOURCE(IDR_MENU_GAME_EDIT));
  475. handle_menu[MENU_MESH_EDITOR] =
  476. LoadMenu(hi, MAKEINTRESOURCE(IDR_MENU_MESH_EDIT));
  477. handle_menu[MENU_GAME_POPUP] =
  478. LoadMenu(hi, MAKEINTRESOURCE(IDR_POPUP_GAME));
  479. handle_menu[MENU_MESH_POPUP] =
  480. LoadMenu(hi, MAKEINTRESOURCE(IDR_POPUP_MESH));
  481. hwnd_aplikace = otevri_okno_master(hi);
  482. hwnd_plocha = otevri_okno_plocha(hi, hwnd_aplikace);
  483. hwnd_bocni_lista = otevri_bocni_listu(hi, hwnd_aplikace);
  484. hwnd_dolni_lista = otevri_dolni_listu(hi, hwnd_aplikace);
  485. hwnd_konzole = otevri_konzoli(hi, hwnd_aplikace);
  486. SetFocus(hwnd_plocha);
  487. }
  488. _getcwd(ini_file, 500);
  489. strcat(ini_file, "\\berusky3d.ini");
  490. if (!efile(ini_file)) {
  491. kprintf(TRUE, "Pouzivam globalni konfiguraci v berusky3d.ini");
  492. strcpy(ini_file, "berusky3d.ini");
  493. }
  494. else {
  495. kprintf(TRUE, "Pouzivam lokalni konfiguraci \"%s\"", ini_file);
  496. }
  497. GetPrivateProfileString("editor", "log_file", "c:\\berusky2_editor.txt",
  498. pom, 500, ini_file);
  499. if (!(cnf.bnf.debug_file = fopen(pom, "a")))
  500. ddw("Nepodarilo se otevrit log. soubor !");
  501. kprintf(TRUE,
  502. "-----------------------Start editor - datum %s cas %s-----------------",
  503. _strdate(pom), _strtime(pom2));
  504. if (!ren_typ) {
  505. doe_hs_init();
  506. nahraj_device_config(ini_file, INI_SEKCE, &hwconf);
  507. nahraj_universal_device_config(ini_file, "hra", &hwconf);
  508. if (!grf_start(hinst, hwnd_plocha, ini_file, INI_SEKCE, TRUE))
  509. chyba("Inicializace");
  510. go_object_editor(lpCmdLine, "");
  511. grf_stop(hwnd_plocha);
  512. DestroyWindow(hwnd_aplikace);
  513. DestroyMenu(handle_menu[MENU_GAME_EDITOR]);
  514. DestroyMenu(handle_menu[MENU_MESH_EDITOR]);
  515. DestroyMenu(handle_menu[MENU_GAME_POPUP]);
  516. DestroyMenu(handle_menu[MENU_MESH_POPUP]);
  517. }
  518. else {
  519. render_povolen = FALSE;
  520. p_cnf->cnf.load_textur = FALSE;
  521. p_cnf->cnf.load_prvku = FALSE;
  522. oe_konfiguruj_editor(&cnf, INI_FILE, FALSE);
  523. if (ren_typ == TYP_LIST) {
  524. go_renderovac(p_file);
  525. }
  526. else {
  527. go_renderovac_renderuj(p_file, p_file);
  528. }
  529. }
  530. return (TRUE);
  531. }
  532. int spracuj_spravy_full_priorita(void)
  533. {
  534. MSG msg;
  535. while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
  536. TranslateMessage(&msg);
  537. DispatchMessage(&msg);
  538. if (msg.message == WM_QUIT) //return(0);
  539. oe_konec(&cnf);
  540. }
  541. return (TRUE);
  542. }
  543. int spracuj_spravy_iddle(void)
  544. {
  545. MSG msg;
  546. if (karmin_aktivni) {
  547. while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
  548. TranslateMessage(&msg);
  549. DispatchMessage(&msg);
  550. if (msg.message == WM_QUIT) //return(0);
  551. oe_konec(&cnf);
  552. }
  553. }
  554. else {
  555. while (!karmin_aktivni) {
  556. GetMessage(&msg, NULL, 0, 0);
  557. TranslateMessage(&msg);
  558. DispatchMessage(&msg);
  559. if (msg.message == WM_QUIT) //return(0);
  560. oe_konec(&cnf);
  561. }
  562. }
  563. return (TRUE);
  564. }
  565. int spracuj_spravy(int priorita)
  566. {
  567. if (p_cnf->cnf.editor_priorita)
  568. spracuj_spravy_full_priorita();
  569. else
  570. spracuj_spravy_iddle();
  571. return (1);
  572. }
  573. void konec_uvolni(void)
  574. {
  575. grf_stop(hwnd_aplikace);
  576. DestroyWindow(hwnd_aplikace);
  577. DestroyMenu(handle_menu[MENU_GAME_EDITOR]);
  578. DestroyMenu(handle_menu[MENU_MESH_EDITOR]);
  579. DestroyMenu(handle_menu[MENU_GAME_POPUP]);
  580. DestroyMenu(handle_menu[MENU_MESH_POPUP]);
  581. }
  582. void konec(void)
  583. {
  584. system_kurzor = 1;
  585. if (MessageBox(hwnd_aplikace,
  586. "Opravdu, ale opravdu si pøeješ skonèit ? Vážnì jsi peèlive zvážil vsechny negativní dùsledky unáhleného rozhodnutí ?",
  587. "Èubèí synu !", MB_ICONASTERISK | MB_YESNO | MB_SYSTEMMODAL) == IDYES) {
  588. exit(0);
  589. }
  590. system_kurzor = 0;
  591. }