moved workaround for BD runtime elements in editor to separate function
authorHolger Schemel <info@artsoft.org>
Sat, 27 Apr 2024 11:49:01 +0000 (13:49 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 27 Apr 2024 11:50:24 +0000 (13:50 +0200)
src/editor.c
src/tools.c
src/tools.h

index 34bcb2f9149665a85903828632a7414fb5f65712..6ec52ee30ac21c4100f3120c80d7c9d733b53696 100644 (file)
@@ -8102,8 +8102,7 @@ static void getEditorGraphicAndFrame(int element, int *graphic, int *frame, bool
 {
   if (use_editor_gfx)
   {
-    *graphic = el2edimg(element);
-    *frame = 0;
+    el2edimg_with_frame(element, graphic, frame);
   }
   else
   {
@@ -8113,21 +8112,6 @@ static void getEditorGraphicAndFrame(int element, int *graphic, int *frame, bool
              ANIM_MODE(*graphic) == ANIM_CE_SCORE ?
              custom_element.collect_score_initial : FrameCounter);
   }
-
-  if (*graphic == IMG_UNKNOWN)
-  {
-    // no graphic defined -- if BD style, try to get runtime ("effect") element graphics
-    // (normal BD style elements have graphics, but runtime ("effects") elements do not)
-    int element_bd = map_element_RND_to_BD_cave(element);
-
-    if (element_bd != O_UNKNOWN)
-    {
-      struct GraphicInfo_BD *g_bd = &graphic_info_bd_object[element_bd][0];
-
-      *graphic = g_bd->graphic;
-      *frame   = g_bd->frame;
-    }
-  }
 }
 
 static void getEditorGraphicSource(int element, int tile_size, Bitmap **bitmap,
index 7c81b8f7748ba8f67339e8d784d6898371729a8d..b12c7ea62cbdc5a7b48b28d2dc55a14ef1d7e551 100644 (file)
@@ -10163,6 +10163,31 @@ int el2edimg(int element)
   return element_info[element].special_graphic[GFX_SPECIAL_ARG_EDITOR];
 }
 
+int el2edimg_with_frame(int element, int *graphic, int *frame)
+{
+  element = GFX_ELEMENT(element);
+
+  *graphic = element_info[element].special_graphic[GFX_SPECIAL_ARG_EDITOR];
+  *frame = 0;
+
+  if (*graphic == IMG_UNKNOWN)
+  {
+    // no graphic defined -- if BD style, try to get runtime ("effect") element graphics
+    // (normal BD style elements have graphics, but runtime ("effects") elements do not)
+    int element_bd = map_element_RND_to_BD_cave(element);
+
+    if (element_bd != O_UNKNOWN)
+    {
+      struct GraphicInfo_BD *g_bd = &graphic_info_bd_object[element_bd][0];
+
+      *graphic = g_bd->graphic;
+      *frame   = g_bd->frame;
+    }
+  }
+
+  return *graphic;
+}
+
 int el2preimg(int element)
 {
   element = GFX_ELEMENT(element);
index 67e0d8c54ee4c2d15a9ef9fe36b90bd76eb57e64..112040052c8ddc9e6c5b817298656772f3cf123e 100644 (file)
@@ -264,6 +264,7 @@ int el_dir2img(int, int);
 int el2baseimg(int);
 int el2img(int);
 int el2edimg(int);
+int el2edimg_with_frame(int, int *, int *);
 int el2preimg(int);
 int el2panelimg(int);
 int font2baseimg(int);