29d18fd22bda56d29397f9aa175f569b1b1d8af4
[rocksndiamonds.git] / src / game_em / init.c
1 /* 2000-08-10T18:03:54Z
2  *
3  * open X11 display and sound
4  */
5
6 #include "main_em.h"
7
8 #include <signal.h>
9
10
11 Bitmap *objBitmap;
12 Bitmap *sprBitmap;
13
14 Bitmap *screenBitmap;
15
16 struct GlobalInfo_EM global_em_info;
17 struct GameInfo_EM game_em;
18
19 int open_all(void)
20 {
21   Bitmap *emc_bitmaps[2];
22
23   SetBitmaps_EM(emc_bitmaps);
24
25   objBitmap = emc_bitmaps[0];
26   sprBitmap = emc_bitmaps[1];
27
28   return 0;
29 }
30
31 void InitGfxBuffers_EM(void)
32 {
33   ReCreateBitmap(&screenBitmap, MAX_BUF_XSIZE * TILEX, MAX_BUF_YSIZE * TILEY);
34
35   global_em_info.screenbuffer = screenBitmap;
36 }
37
38 void em_open_all(void)
39 {
40   /* pre-calculate some data */
41   tab_generate();
42
43   if (open_all() != 0)
44     Error(ERR_EXIT, "em_open_all(): open_all() failed");
45
46   /* after "open_all()", because we need the graphic bitmaps to be defined */
47   tab_generate_graphics_info_em();
48
49   game_init_random();
50   game_init_cave_buffers();
51 }
52
53 void em_close_all(void)
54 {
55 }
56
57 /* ---------------------------------------------------------------------- */
58
59 extern int screen_x;
60 extern int screen_y;
61
62 void play_element_sound(int x, int y, int sample, int element)
63 {
64   PlayLevelSound_EM(x, y, element, sample);
65 }
66
67 void play_sound(int x, int y, int sample)
68 {
69   play_element_sound(x, y, sample, -1);
70 }
71
72 unsigned int InitEngineRandom_EM(int seed)
73 {
74   if (seed == NEW_RANDOMIZE)
75   {
76     int simple_rnd = GetSimpleRandom(1000);
77     int i;
78
79     for (i = 0; i < simple_rnd || RandomEM == NEW_RANDOMIZE; i++)
80       RandomEM = RandomEM * 129 + 1;
81
82     seed = RandomEM;
83   }
84
85   RandomEM = seed;
86
87   return (unsigned int) seed;
88 }