rnd-20040822-3-src
[rocksndiamonds.git] / src / game_em / main.c
index a477d1035c583fefaa526af624fe48a7ff1e1b62..39975801d7e46911998be5577381593b95df7b39 100644 (file)
@@ -25,9 +25,14 @@ 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();
 
+extern void game_menu_init();
+
 void em_open_all()
 {
   /* pre-calculate some data */
@@ -38,6 +43,8 @@ void em_open_all()
 
   if (open_all() != 0)
     Error(ERR_EXIT, "em_open_all(): open_all() failed");
+
+  game_init_vars();
 }
 
 void em_close_all()
@@ -45,18 +52,26 @@ void em_close_all()
   close_all();
 }
 
-void em_main()
+int em_main_init_game(int level_nr, char *filename)
 {
-#if 0
-  em_open_all();
-#endif
+  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();
+  }
 
-  if (game_start() != 0)
-    Error(ERR_EXIT, "em_main(): game_start() failed");
+  return 0;
+}
 
-#if 0
-  em_close_all();
-#endif
+int em_main_handle_game(byte action)
+{
+  return game_loop(action);
 }
 
 /* massive kludge for buffer overflows