removed unused image file for native Boulder Dash graphics
[rocksndiamonds.git] / src / tools.c
index fe1cbc50ba63dcb5af3e7e955742eed1eea36575..39976f9d9522949cc221b0234f69950c968b4e08 100644 (file)
@@ -5517,6 +5517,8 @@ unsigned int MoveDoor(unsigned int door_state)
 
     SetDoorBackgroundImage(IMG_BACKGROUND_DOOR);
 
+    game.any_door_active = TRUE;
+
     for (k = start; k < num_move_steps; k++)
     {
       int last_frame = num_move_steps - 1;     // last frame of this "for" loop
@@ -5711,6 +5713,8 @@ unsigned int MoveDoor(unsigned int door_state)
        BackToFront();
       }
     }
+
+    game.any_door_active = FALSE;
   }
 
   if (door_state & DOOR_ACTION_1)
@@ -6008,6 +6012,88 @@ static void HandleToolButtons(struct GadgetInfo *gi)
   request_gadget_id = gi->custom_id;
 }
 
+static int getEngineElement_Ext(int element, int game_engine_type, boolean is_drawing_element)
+{
+  int el_empty;
+  int el_player;
+  int el_sand;
+  int el_wall;
+  int el_steelwall;
+  int el_exit_closed;
+
+  if (game_engine_type == -1)
+    game_engine_type = level.game_engine_type;
+
+  if (level.game_engine_type == GAME_ENGINE_TYPE_BD)
+  {
+    el_empty           = EL_EMPTY;
+    el_player          = EL_BD_PLAYER;
+    el_sand            = EL_BD_SAND;
+    el_wall            = EL_BD_WALL;
+    el_steelwall       = EL_BD_STEELWALL;
+    el_exit_closed     = EL_BD_EXIT_CLOSED;
+  }
+  else if (level.game_engine_type == GAME_ENGINE_TYPE_EM)
+  {
+    el_empty           = EL_EMPTY;
+    el_player          = EL_PLAYER_1;
+    el_sand            = EL_SAND;
+    el_wall            = EL_WALL;
+    el_steelwall       = EL_STEELWALL;
+    el_exit_closed     = EL_EM_EXIT_CLOSED;
+  }
+  else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
+  {
+    el_empty           = EL_EMPTY;
+    el_player          = EL_SP_MURPHY;
+    el_sand            = EL_SP_BASE;
+    el_wall            = EL_SP_CHIP_SINGLE;
+    el_steelwall       = EL_SP_HARDWARE_GRAY;
+    el_exit_closed     = EL_SP_EXIT_CLOSED;
+  }
+  else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
+  {
+    el_empty           = EL_EMPTY;
+    el_player          = EL_MM_MCDUFFIN_DOWN;
+    el_sand            = EL_EMPTY;
+    el_wall            = EL_MM_WOODEN_WALL;
+    el_steelwall       = EL_MM_STEEL_WALL;
+    el_exit_closed     = EL_MM_EXIT_CLOSED;
+
+    if (is_drawing_element)
+    {
+      el_wall          = EL_MM_MIRROR_START;
+      el_sand          = EL_MM_WOODEN_WALL;
+    }
+  }
+  else
+  {
+    el_empty           = EL_EMPTY;
+    el_player          = EL_PLAYER_1;
+    el_sand            = EL_SAND;
+    el_wall            = EL_WALL;
+    el_steelwall       = EL_STEELWALL;
+    el_exit_closed     = EL_EXIT_CLOSED;
+  }
+
+  return (element == EL_EMPTY          ? el_empty :
+         element == EL_PLAYER_1        ? el_player :
+         element == EL_SAND            ? el_sand :
+         element == EL_WALL            ? el_wall :
+         element == EL_STEELWALL       ? el_steelwall :
+         element == EL_EXIT_CLOSED     ? el_exit_closed : EL_EMPTY);
+}
+
+int getEngineElement(int element)
+{
+  return getEngineElement_Ext(element, -1, FALSE);
+}
+
+int getDrawingElement(int element)
+{
+  return getEngineElement_Ext(element, -1, TRUE);
+}
+
 static struct Mapping_BD_to_RND_object
 {
   int element_bd;
@@ -7395,6 +7481,14 @@ bd_object_mapping_list[] =
     O_PLAYER_RIGHT,                            FALSE,
     EL_BD_PLAYER,                              ACTION_MOVING, MV_BIT_RIGHT
   },
+  {
+    O_PLAYER_UP,                               FALSE,
+    EL_BD_PLAYER,                              ACTION_MOVING, MV_BIT_UP
+  },
+  {
+    O_PLAYER_DOWN,                             FALSE,
+    EL_BD_PLAYER,                              ACTION_MOVING, MV_BIT_DOWN
+  },
   {
     O_PLAYER_BLINK,                            FALSE,
     EL_BD_PLAYER,                              ACTION_BORING_1, -1
@@ -7407,6 +7501,14 @@ bd_object_mapping_list[] =
     O_PLAYER_TAP_BLINK,                                FALSE,
     EL_BD_PLAYER,                              ACTION_BORING_3, -1
   },
+  {
+    O_PLAYER_PUSH_LEFT,                                FALSE,
+    EL_BD_PLAYER,                              ACTION_PUSHING, MV_BIT_LEFT
+  },
+  {
+    O_PLAYER_PUSH_RIGHT,                       FALSE,
+    EL_BD_PLAYER,                              ACTION_PUSHING, MV_BIT_RIGHT
+  },
   {
     O_CREATURE_SWITCH_ON,                      FALSE,
     EL_BD_CREATURE_SWITCH_ACTIVE,              -1, -1