{
for (act=0; act<NUM_ACTIONS; act++)
{
- if (graphic_info[element_info[i].graphic[act]].bitmap == NULL)
+ int graphic;
+
+ graphic = element_info[i].graphic[act];
+ if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
element_info[i].graphic[act] = -1;
- if (graphic_info[element_info[i].crumbled[act]].bitmap == NULL)
+ graphic = element_info[i].crumbled[act];
+ if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
element_info[i].crumbled[act] = -1;
for (dir=0; dir<NUM_DIRECTIONS; dir++)
{
- int graphic;
-
graphic = element_info[i].direction_graphic[act][dir];
- if (graphic_info[graphic].bitmap == NULL)
+ if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
element_info[i].direction_graphic[act][dir] = -1;
graphic = element_info[i].direction_crumbled[act][dir];
- if (graphic_info[graphic].bitmap == NULL)
+ if (graphic > 0 && graphic_info[graphic].bitmap == NULL)
element_info[i].direction_crumbled[act][dir] = -1;
}
}
graphic_info[graphic].offset_y = 0; /* ... will be corrected later */
graphic_info[graphic].crumbled_like = -1; /* do not use clone element */
graphic_info[graphic].diggable_like = -1; /* do not use clone element */
+ graphic_info[graphic].border_size = TILEX / 8; /* "CRUMBLED" border size */
/* optional x and y tile position of animation frame sequence */
if (parameter[GFX_ARG_XPOS] != ARG_UNDEFINED_VALUE)
if (parameter[GFX_ARG_DIGGABLE_LIKE] != ARG_UNDEFINED_VALUE)
graphic_info[graphic].diggable_like = parameter[GFX_ARG_DIGGABLE_LIKE];
+ /* optional border size for "crumbling" diggable graphics */
+ if (parameter[GFX_ARG_BORDER_SIZE] != ARG_UNDEFINED_VALUE)
+ graphic_info[graphic].border_size = parameter[GFX_ARG_BORDER_SIZE];
+
/* this is only used for toon animations */
graphic_info[graphic].step_offset = parameter[GFX_ARG_STEP_OFFSET];
graphic_info[graphic].step_delay = parameter[GFX_ARG_STEP_DELAY];
/* this is only used for drawing font characters */
graphic_info[graphic].draw_x = parameter[GFX_ARG_DRAW_XOFFSET];
graphic_info[graphic].draw_y = parameter[GFX_ARG_DRAW_YOFFSET];
+
+ /* this is only used for drawing envelope graphics */
+ graphic_info[graphic].draw_masked = parameter[GFX_ARG_DRAW_MASKED];
}
static void InitGraphicInfo()
graphic_info = checked_calloc(num_images * sizeof(struct GraphicInfo));
+#if 0
+ printf("::: graphic_info: %d entries\n", num_images);
+#endif
+
#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND)
if (clipmasks_initialized)
{