252e45f24fc5b1eee2a6461a90156b379c36e176
[rocksndiamonds.git] / src / game_em / main.c
1 /* Emerald Mine
2  * 
3  * David Tritscher
4  * 
5  * v0.0 2000-01-06T06:43:39Z
6  *
7  * set everything up and close everything down
8  */
9
10 #include <stdlib.h>
11 #include <unistd.h>
12 #include <stdio.h>
13 #include <string.h>
14 #include <errno.h>
15
16 #include "global.h"
17
18
19 #if defined(TARGET_X11)
20
21 char *progname;
22 char *arg_basedir;
23 char *arg_display;
24 char *arg_geometry;
25 int arg_install;
26 int arg_silence;
27
28 int em_game_status;
29 boolean skip_menu = TRUE;
30
31 extern void tab_generate();
32 extern void ulaw_generate();
33
34 extern void game_menu_init();
35
36 void em_open_all()
37 {
38   /* pre-calculate some data */
39   tab_generate();
40   ulaw_generate();
41
42   progname = "emerald mine";
43
44   if (open_all() != 0)
45     Error(ERR_EXIT, "em_open_all(): open_all() failed");
46
47   game_init_vars();
48 }
49
50 void em_close_all()
51 {
52   close_all();
53 }
54
55 int em_main_init_game(int level_nr, char *filename)
56 {
57 #if 0
58   if (skip_menu)
59   {
60 #endif
61
62     em_game_status = EM_GAME_STATUS_PLAY;
63     if (game_play_init(level_nr, filename) != 0)
64       return 1;
65
66 #if 0
67   }
68   else
69   {
70     em_game_status = EM_GAME_STATUS_MENU;
71     game_menu_init();
72   }
73 #endif
74
75   return 0;
76 }
77
78 int em_main_handle_game(byte action)
79 {
80   return game_loop(action);
81 }
82
83 /* massive kludge for buffer overflows
84  * i cant think of an elegant way to handle this situation.
85  * oh wait yes i can. dynamically allocate each string. oh well
86  */
87 void snprintf_overflow(char *description)
88 {
89   fprintf(stderr, "%s: %s\n", progname,
90           "buffer overflow; check EMERALD_BASE environment variable");
91   fprintf(stderr, "%s %s\n", "Fault occured while attempting to", description);
92
93   abort();
94 }
95
96 #else
97
98 int em_main()
99 {
100   /* temporary dummy until X11->SDL conversion finished */
101   return 0;
102 }
103
104 #endif