X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fmain.c;h=39975801d7e46911998be5577381593b95df7b39;hb=cee436b68cda95e13abc810235a11ce94bc79c95;hp=dc29189eb85deb8e4f08e81b12de039189570564;hpb=2b65ec99f743dde3ee41083cf89623d4d9b8740e;p=rocksndiamonds.git diff --git a/src/game_em/main.c b/src/game_em/main.c index dc29189e..39975801 100644 --- a/src/game_em/main.c +++ b/src/game_em/main.c @@ -25,71 +25,53 @@ char *arg_geometry; int arg_install; int arg_silence; +int em_game_status; +boolean skip_menu = TRUE; + extern void tab_generate(); extern void ulaw_generate(); -int em_main_OLD(int argc, char **argv) -{ - int result; - int option; - extern char *optarg; - - /* pre-calculate some data */ - tab_generate(); - ulaw_generate(); - - progname = strrchr(argv[0], '/'); progname = progname ? progname + 1 : argv[0]; - - while((option = getopt(argc, argv, "b:d:g:in")) != -1) { - switch(option) { - case 'b': arg_basedir = optarg; break; - case 'd': arg_display = optarg; break; - case 'g': arg_geometry = optarg; break; - case 'i': arg_install = 1; break; - case 'n': arg_silence = 1; break; - default: - printf("Emerald Mine for X11 © 2000,2001 David Tritscher\n\n"); - printf("usage: %s [options]\n", progname); - printf("\t-b set base directory\n"); - printf("\t-d server to contact\n"); - printf("\t-g geometry\n"); - printf("\t-i install colourmap\n"); - printf("\t-n no sounds\n"); - exit(option == 'h' ? 0 : 1); - } - } - if(arg_basedir == 0) arg_basedir = getenv("EMERALD_BASE"); - - result = open_all(); if(result) goto fail; - result = game_start(); if(result) goto fail; - result = 0; -fail: - close_all(); - return(result); -} +extern void game_menu_init(); -int em_main() +void em_open_all() { - int result; + /* pre-calculate some data */ + tab_generate(); + ulaw_generate(); - /* pre-calculate some data */ - tab_generate(); - ulaw_generate(); + progname = "emerald mine"; + + if (open_all() != 0) + Error(ERR_EXIT, "em_open_all(): open_all() failed"); + + game_init_vars(); +} - progname = "emerald mine"; +void em_close_all() +{ + close_all(); +} - result = open_all(); - if(result) - goto fail; +int em_main_init_game(int level_nr, char *filename) +{ + if (skip_menu) + { + em_game_status = EM_GAME_STATUS_PLAY; + if (game_play_init(level_nr, filename) != 0) + return 1; + } + else + { + em_game_status = EM_GAME_STATUS_MENU; + game_menu_init(); + } - result = game_start(); - if(result) - goto fail; + return 0; +} - result = 0; -fail: - close_all(); - return(result); +int em_main_handle_game(byte action) +{ + return game_loop(action); } /* massive kludge for buffer overflows @@ -98,9 +80,11 @@ fail: */ void snprintf_overflow(char *description) { - fprintf(stderr, "%s: %s\n", progname, "buffer overflow; check EMERALD_BASE environment variable"); - fprintf(stderr, "%s %s\n", "Fault occured while attempting to", description); - abort(); + fprintf(stderr, "%s: %s\n", progname, + "buffer overflow; check EMERALD_BASE environment variable"); + fprintf(stderr, "%s %s\n", "Fault occured while attempting to", description); + + abort(); } #else