onilink_

Untitled

May 27th, 2019
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. /// @description room_screenshot(background_sprite, tilemap, ...)
  2. // Example: room_screenshots(spr_background,"tile_forest", "tile_foliage");
  3. // Specify sprites / tilemaps in order of lowest -> highest depth
  4.  
  5. MAX_SIZE = 16536
  6. num_surf = ceil(room_width / MAX_SIZE)
  7.  
  8. if(num_surf == 1) {
  9.     // call old code here
  10.     room_screenshot( ... )
  11.     exit
  12. }
  13.  
  14. // Vars
  15. var r = room_get_name(room);
  16.  
  17. for(ss=0; ss<num_surf; ss++) {
  18.     dx = -MAX_SIZE*ss
  19.  
  20.     var s = surface_create(MAX_SIZE, room_height);
  21.     surface_set_target(s);
  22.    
  23.     // Draw arguments
  24.     for (var i=0; i<argument_count; i++)
  25.     {
  26.         // Draw tilemap
  27.         var tm = layer_tilemap_get_id(layer_get_id(argument[i]));
  28.         draw_tilemap(tm,dx,0);
  29.    
  30.         // Draw sprite / background
  31.         if (sprite_exists(argument[i]))
  32.             draw_sprite(argument[i],0,dx,0);
  33.     }
  34.    
  35.     // Draw visible objects
  36.     with (all) {
  37.         if ((sprite_index != -1) && (visible)) {
  38.             x += dx
  39.             draw_self();
  40.             x -= dx
  41.         }
  42.     }
  43.     // If any layers need to be drawn above objects, write the draw code here
  44.    
  45.     // Reset target, save, and clear surface
  46.     surface_reset_target();
  47.     surface_save(s, string(r) + "_" + string(ss) + ".png");
  48.     draw_clear_alpha(c_white,0);
  49.     surface_free(s);
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment