#if DEBUG
if (!IN_SCR_FIELD(x,y))
{
- printf("DrawGraphic_MM(): x = %d, y = %d, graphic = %d\n",x,y,graphic);
- printf("DrawGraphic_MM(): This should never happen!\n");
+ Debug("game:mm:DrawGraphic_MM", "x = %d, y = %d, graphic = %d",
+ x, y, graphic);
+ Debug("game:mm:DrawGraphic_MM", "This should never happen!");
+
return;
}
#endif
#if DEBUG
if (!IN_SCR_FIELD(x,y))
{
- printf("DrawGraphicThruMask_MM(): x = %d,y = %d, graphic = %d\n",x,y,graphic);
- printf("DrawGraphicThruMask_MM(): This should never happen!\n");
+ Debug("game:mm:DrawGraphicThruMask_MM", "x = %d,y = %d, graphic = %d",
+ x, y, graphic);
+ Debug("game:mm:DrawGraphicThruMask_MM", "This should never happen!");
+
return;
}
#endif
#if DEBUG
if (!IN_SCR_FIELD(x,y))
{
- printf("DrawGraphicShifted_MM(): x = %d, y = %d, graphic = %d\n",x,y,graphic);
- printf("DrawGraphicShifted_MM(): This should never happen!\n");
+ Debug("game:mm:DrawGraphicShifted_MM", "x = %d, y = %d, graphic = %d",
+ x, y, graphic);
+ Debug("game:mm:DrawGraphicShifted_MM", "This should never happen!");
+
return;
}
#endif
void DrawLevelFieldThruMask_MM(int x, int y)
{
- DrawLevelElementExt_MM(x, y, 0, 0, Feld[x][y], NO_CUTTING, USE_MASKING);
+ DrawLevelElementExt_MM(x, y, 0, 0, Tile[x][y], NO_CUTTING, USE_MASKING);
}
void DrawScreenElement_MM(int x, int y, int element)
void DrawScreenField_MM(int x, int y)
{
- int element = Feld[x][y];
+ int element = Tile[x][y];
if (!IN_LEV_FIELD(x, y))
return;
DrawScreenElement_MM(x, y, EL_EMPTY);
- element = Feld[oldx][oldy];
+ element = Tile[oldx][oldy];
if (horiz_move)
DrawScreenElementShifted_MM(sx, sy, MovPos[oldx][oldy], 0, element,
if (x < -1 || x > lev_fieldx || y < -1 || y > lev_fieldy)
DrawMiniElement_MM(sx, sy, EL_EMPTY);
else if (x > -1 && x < lev_fieldx && y > -1 && y < lev_fieldy)
- DrawMiniElement_MM(sx, sy, Feld[x][y]);
+ DrawMiniElement_MM(sx, sy, Tile[x][y]);
}
void DrawField_MM(int x, int y)
{
- int element = Feld[x][y];
+ int element = Tile[x][y];
DrawElement_MM(x, y, element);
}
else if (IS_WALL(element))
DrawWalls_MM(x, y, element);
#if 0
- else if (IS_WALL_CHANGING(element) && IS_WALL_CHANGING(Feld[x][y]))
+ else if (IS_WALL_CHANGING(element) && IS_WALL_CHANGING(Tile[x][y]))
{
- int wall_element = Feld[x][y] - EL_WALL_CHANGING + Store[x][y];
+ int wall_element = Tile[x][y] - EL_WALL_CHANGING + Store[x][y];
DrawWalls_MM(x, y, wall_element);
}
redraw_mask |= REDRAW_FIELD;
}
+void DrawTileCursor_MM(int draw_target, boolean tile_cursor_active)
+{
+ Bitmap *fade_bitmap;
+ Bitmap *src_bitmap;
+ int src_x, src_y;
+ int dst_x, dst_y;
+ int graphic = IMG_GLOBAL_TILE_CURSOR;
+ int frame = 0;
+ int tilesize = TILESIZE_VAR;
+ int width = tilesize;
+ int height = tilesize;
+
+ if (!tile_cursor.enabled ||
+ !tile_cursor.active ||
+ !tile_cursor_active)
+ return;
+
+ if (tile_cursor.moving)
+ {
+ int step = TILESIZE_VAR / 4;
+ int dx = tile_cursor.target_x - tile_cursor.x;
+ int dy = tile_cursor.target_y - tile_cursor.y;
+
+ if (ABS(dx) < step)
+ tile_cursor.x = tile_cursor.target_x;
+ else
+ tile_cursor.x += SIGN(dx) * step;
+
+ if (ABS(dy) < step)
+ tile_cursor.y = tile_cursor.target_y;
+ else
+ tile_cursor.y += SIGN(dy) * step;
+
+ if (tile_cursor.x == tile_cursor.target_x &&
+ tile_cursor.y == tile_cursor.target_y)
+ tile_cursor.moving = FALSE;
+ }
+
+ dst_x = tile_cursor.x;
+ dst_y = tile_cursor.y;
+
+ frame = getGraphicAnimationFrame(graphic, -1);
+
+ getSizedGraphicSource(graphic, frame, tilesize, &src_bitmap, &src_x, &src_y);
+
+ fade_bitmap =
+ (draw_target == DRAW_TO_FADE_SOURCE ? gfx.fade_bitmap_source :
+ draw_target == DRAW_TO_FADE_TARGET ? gfx.fade_bitmap_target : NULL);
+
+ if (draw_target == DRAW_TO_SCREEN)
+ BlitToScreenMasked(src_bitmap, src_x, src_y, width, height, dst_x, dst_y);
+ else
+ BlitBitmapMasked(src_bitmap, fade_bitmap, src_x, src_y, width, height,
+ dst_x, dst_y);
+}
+
#if 0
static int REQ_in_range(int x, int y)
{