added optional button to restart game (door, panel and touch variants)
[rocksndiamonds.git] / src / libgame / sdl.c
index 64d28bdbb6fb5c17243947b6d81899324a2c32d2..0b3ec7f623383a26e07efc560938295438ae74dc 100644 (file)
@@ -62,14 +62,18 @@ static void FinalizeScreen(int draw_target)
   if (gfx.draw_global_anim_function != NULL)
     gfx.draw_global_anim_function(draw_target, DRAW_GLOBAL_ANIM_STAGE_2);
 
-  // copy tile selection cursor to render target buffer, if defined (above all)
+  // copy tile selection cursor to render target buffer, if defined (part 1)
   if (gfx.draw_tile_cursor_function != NULL)
-    gfx.draw_tile_cursor_function(draw_target);
+    gfx.draw_tile_cursor_function(draw_target, TRUE);
 
   // copy envelope request to render target buffer, if needed (above all)
   if (gfx.draw_envelope_request_function != NULL)
     gfx.draw_envelope_request_function(draw_target);
 
+  // copy tile selection cursor to render target buffer, if defined (part 2)
+  if (gfx.draw_tile_cursor_function != NULL)
+    gfx.draw_tile_cursor_function(draw_target, FALSE);
+
   // copy global animations to render target buffer, if defined (mouse pointer)
   if (gfx.draw_global_anim_function != NULL)
     gfx.draw_global_anim_function(draw_target, DRAW_GLOBAL_ANIM_STAGE_3);
@@ -1012,6 +1016,25 @@ void SDLFreeBitmapPointers(Bitmap *bitmap)
   bitmap->texture_masked = NULL;
 }
 
+void SDLBlitSurface(SDL_Surface *src_surface, SDL_Surface *dst_surface,
+                   int src_x, int src_y, int width, int height,
+                   int dst_x, int dst_y)
+{
+  SDL_Rect src_rect, dst_rect;
+
+  src_rect.x = src_x;
+  src_rect.y = src_y;
+  src_rect.w = width;
+  src_rect.h = height;
+
+  dst_rect.x = dst_x;
+  dst_rect.y = dst_y;
+  dst_rect.w = width;
+  dst_rect.h = height;
+
+  SDL_BlitSurface(src_surface, &src_rect, dst_surface, &dst_rect);
+}
+
 void SDLCopyArea(Bitmap *src_bitmap, Bitmap *dst_bitmap,
                 int src_x, int src_y, int width, int height,
                 int dst_x, int dst_y, int mask_mode)