fixed bug in single button handling causing broken tapes (EM engine)
[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 char play[SAMPLE_MAX];
17 int play_x[SAMPLE_MAX];
18 int play_y[SAMPLE_MAX];
19 int play_element[SAMPLE_MAX];
20
21 struct GlobalInfo_EM global_em_info;
22 struct GameInfo_EM game_em;
23
24 char *progname;
25 char *arg_basedir;
26
27 extern void tab_generate();
28 extern void tab_generate_graphics_info_em();
29
30 int open_all(void)
31 {
32   Bitmap *emc_bitmaps[2];
33
34   SetBitmaps_EM(emc_bitmaps);
35
36   objBitmap = emc_bitmaps[0];
37   sprBitmap = emc_bitmaps[1];
38
39   return 0;
40 }
41
42 void InitGfxBuffers_EM()
43 {
44   ReCreateBitmap(&screenBitmap, MAX_BUF_XSIZE * TILEX, MAX_BUF_YSIZE * TILEY);
45
46   global_em_info.screenbuffer = screenBitmap;
47 }
48
49 void em_open_all()
50 {
51   /* pre-calculate some data */
52   tab_generate();
53
54   progname = "emerald mine";
55
56   if (open_all() != 0)
57     Error(ERR_EXIT, "em_open_all(): open_all() failed");
58
59   /* after "open_all()", because we need the graphic bitmaps to be defined */
60   tab_generate_graphics_info_em();
61
62   game_init_vars();
63 }
64
65 void em_close_all(void)
66 {
67 }
68
69 /* ---------------------------------------------------------------------- */
70
71 extern int screen_x;
72 extern int screen_y;
73
74 void play_element_sound(int x, int y, int sample, int element)
75 {
76   PlayLevelSound_EM(x, y, element, sample);
77 }
78
79 void play_sound(int x, int y, int sample)
80 {
81   play_element_sound(x, y, sample, -1);
82 }
83
84 void sound_play(void)
85 {
86 }
87
88 unsigned int InitEngineRandom_EM(int seed)
89 {
90   if (seed == NEW_RANDOMIZE)
91   {
92     int simple_rnd = GetSimpleRandom(1000);
93     int i;
94
95     for (i = 0; i < simple_rnd || RandomEM == NEW_RANDOMIZE; i++)
96       RandomEM = RandomEM * 129 + 1;
97
98     seed = RandomEM;
99   }
100
101   RandomEM = seed;
102
103   return (unsigned int) seed;
104 }