rnd-20040822-4-src
[rocksndiamonds.git] / src / game_em / input.c
index 385588c52cc00a0367b0ecc61fce355819b57843..81fa95ea4af8f4524e37312f746839ce6b859f41 100644 (file)
@@ -94,18 +94,18 @@ static void drawmenu(int pos)
       break;
 
     case 5:
-      title_string(10, 1, 13, "played");
+      title_string(10, 3, 13, "played");
       title_string(10, 14, 26, "score");
-      title_string(10, 27, 39, "won");
+      title_string(10, 27, 37, "won");
       break;
 
     case 6:
       sprintf(buffer, "%d", 0);
-      title_string(11, 1, 13, buffer);
+      title_string(11, 3, 13, buffer);
       sprintf(buffer, "%d", 0);
       title_string(11, 14, 26, buffer);
       sprintf(buffer, "%d", 0);
-      title_string(11, 27, 39, buffer);
+      title_string(11, 27, 37, buffer);
       break;
   }
 }
@@ -150,18 +150,28 @@ void game_init_vars(void)
   input_pause = 1    * 0;
 }
 
-int game_play_init(int player_level)
+int game_play_init(int level_nr, char *filename)
 {
-  char name[MAXNAME+2];
+  if (filename != NULL)
+  {
+    player_level = level_nr;
 
-  name[MAXNAME] = 0;
-  snprintf(name, MAXNAME+2, "%s/lev%02d", EM_LVL_DIR, player_level);
+    if (cave_convert(filename) != 0)
+      return 1;
+  }
+  else /* !!! SOON OBSOLETE !!! */
+  {
+    char name[MAXNAME+2];
 
-  if (name[MAXNAME])
-    snprintf_overflow("read a level in cave/");
+    name[MAXNAME] = 0;
+    snprintf(name, MAXNAME+2, "%s/lev%02d", EM_LVL_DIR, player_level);
 
-  if (cave_convert(name) != 0)
-    return 1;
+    if (name[MAXNAME])
+      snprintf_overflow("read a level in cave/");
+
+    if (cave_convert(name) != 0)
+      return 1;
+  }
 
   game_initscreen();
   game_blitscore();
@@ -320,8 +330,9 @@ int game_loop(byte action)
     {
       /* start playing */
 
-      if (game_play_init(player_level) == 0)
-       em_game_status = EM_GAME_STATUS_PLAY;
+      em_game_status = EM_GAME_STATUS_PLAY;
+      if (game_play_init(player_level, NULL) != 0)
+       em_game_status = EM_GAME_STATUS_MENU;
     }
   }
   else if (em_game_status == EM_GAME_STATUS_PLAY)
@@ -330,8 +341,11 @@ int game_loop(byte action)
     {
       /* stop playing */
 
-      game_menu_init();
+      if (skip_menu)
+       return 1;
+
       em_game_status = EM_GAME_STATUS_MENU;
+      game_menu_init();
     }
   }