rnd-20060216-1-src
[rocksndiamonds.git] / src / screens.c
index 90b987f3bfa4884ba1ab9e94388407326414550e..1b3de85223f0565546111589206ae7b4a1e387b8 100644 (file)
@@ -826,12 +826,15 @@ void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init)
     action = helpanim_info[j].action;
     direction = helpanim_info[j].direction;
 
+    if (element < 0)
+      element = EL_UNKNOWN;
+
     if (action != -1 && direction != -1)
       graphic = el_act_dir2img(element, action, direction);
     else if (action != -1)
       graphic = el_act2img(element, action);
     else if (direction != -1)
-      graphic = el_act2img(element, direction);
+      graphic = el_dir2img(element, direction);
     else
       graphic = el2img(element);
 
@@ -1000,7 +1003,7 @@ void HandleInfoScreen_Elements(int button)
   }
   else
   {
-    if (DelayReached(&info_delay, GAME_FRAME_DELAY))
+    if (DelayReached(&info_delay, GameFrameDelay))
       if (page < num_pages)
        DrawInfoScreen_HelpAnim(page * anims_per_page, num_anims, FALSE);
 
@@ -3085,16 +3088,36 @@ void HandleGameActions()
     byte tape_action[MAX_PLAYERS];
     int i;
 
+#if 1
     if (level.native_em_level->lev->home == 0) /* all players at home */
     {
+      local_player->LevelSolved = TRUE;
+      AllPlayersGone = TRUE;
+
+      level.native_em_level->lev->home = -1;
+    }
+
+    if (local_player->LevelSolved)
       GameWon();
 
-      if (!TAPE_IS_STOPPED(tape))
+    if (AllPlayersGone && !TAPE_IS_STOPPED(tape))
+      TapeStop();
+
+    if (game_status != GAME_MODE_PLAYING)
+      return;
+#else
+    if (level.native_em_level->lev->home == 0) /* all players at home */
+    {
+      if (local_player->LevelSolved)
+       GameWon();
+
+      if (AllPlayersGone && !TAPE_IS_STOPPED(tape))
        TapeStop();
 
       if (game_status != GAME_MODE_PLAYING)
        return;
     }
+#endif
 
     if (level.native_em_level->ply[0]->alive == 0 &&
        level.native_em_level->ply[1]->alive == 0 &&