6f50f84aa442ab2be2d1b421207aa88e471b8af3
[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
30 extern void tab_generate();
31 extern void ulaw_generate();
32
33 extern void game_menu_init();
34
35 void em_open_all()
36 {
37   /* pre-calculate some data */
38   tab_generate();
39   ulaw_generate();
40
41   progname = "emerald mine";
42
43   if (open_all() != 0)
44     Error(ERR_EXIT, "em_open_all(): open_all() failed");
45
46   game_init_vars();
47 }
48
49 void em_close_all()
50 {
51   close_all();
52 }
53
54 void em_main_init_game()
55 {
56   game_menu_init();
57   em_game_status = EM_GAME_STATUS_MENU;
58 }
59
60 int em_main_handle_game(byte action)
61 {
62   return game_loop(action);
63 }
64
65 /* massive kludge for buffer overflows
66  * i cant think of an elegant way to handle this situation.
67  * oh wait yes i can. dynamically allocate each string. oh well
68  */
69 void snprintf_overflow(char *description)
70 {
71   fprintf(stderr, "%s: %s\n", progname,
72           "buffer overflow; check EMERALD_BASE environment variable");
73   fprintf(stderr, "%s %s\n", "Fault occured while attempting to", description);
74
75   abort();
76 }
77
78 #else
79
80 int em_main()
81 {
82   /* temporary dummy until X11->SDL conversion finished */
83   return 0;
84 }
85
86 #endif