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