function scr_exportsprites(arg0) { scr_debug_print("Sprite export called for: " + arg0); var spritesDumped = ""; for (var i = 0; sprite_exists(i); i++) { if (!sprite_exists(i)) break; var sprite_name = sprite_get_name(i); if (string_pos(arg0, sprite_name) > 0) { spritesDumped += (sprite_name + "\n"); var spr = i; var imageindex_count = sprite_get_number(spr); var spritewidth = sprite_get_width(spr); var spriteheight = sprite_get_height(spr); var origin_x = sprite_get_xoffset(spr); var origin_y = sprite_get_yoffset(spr); var surf = surface_create(spritewidth * imageindex_count, spriteheight); surface_set_target(surf); draw_clear_alpha(c_white, 0); for (var j = 0; j < imageindex_count; j++) draw_sprite(spr, j, (j * spritewidth) + origin_x, origin_y); surface_reset_target(); var ext = ""; if (imageindex_count > 1) ext = "_strip" + string(imageindex_count); var file_name = working_directory + "/spriteDump/" + "chapter" + string(global.chapter) + "/" + arg0 + "/" + sprite_name + ext + ".png"; surface_save(surf, file_name); surface_free(surf); show_debug_message("sprite sheet saved: " + sprite_name); show_debug_message_concat(spritesDumped); clipboard_set_text(spritesDumped); } } } function scr_exportsheets(arg0) { show_debug_message_concat("Sprite export called for: ", arg0); var surfs = []; var mastersurfwidth = 0; var spritesdumped = ""; for (var i = 0; sprite_exists(i); i++) { var sprite_name = sprite_get_name(i); if (string_pos(arg0, sprite_name) > 0) { spritesdumped += ("\n" + sprite_name); var spr = i; var imageindex_count = sprite_get_number(spr); var spritewidth = sprite_get_width(spr) + 12; var spriteheight = sprite_get_height(spr); var origin_x = sprite_get_xoffset(spr); var origin_y = sprite_get_yoffset(spr); var surf_width = max(spritewidth * imageindex_count, string_width(sprite_name) + 20); var surf_height = spriteheight + 48; var surf = surface_create(surf_width, surf_height); mastersurfwidth = max(mastersurfwidth, surf_width); surface_set_target(surf); draw_clear_alpha(c_white, 0); for (var j = 0; j < imageindex_count; j++) { if (imageindex_count > 1) { draw_set_font(fnt_small); draw_text_outline((j * spritewidth) + 1, 1, string(j)); } draw_sprite(spr, j, (j * spritewidth) + origin_x + 10, origin_y); } draw_set_font(fnt_main); draw_text_outline(5, spriteheight + 2, sprite_get_name(i)); surface_reset_target(); array_push(surfs, surf); } } var maxsurfheight = 2500; var surfcount = array_length(surfs); if (surfcount == 0) { scr_debug_print("No sprites found to dump."); exit; } var mastersurfs = []; var mastersurf = -4; var drawy = 0; var sheet_index = 0; mastersurf = surface_create(mastersurfwidth, maxsurfheight); surface_set_target(mastersurf); draw_clear_alpha(c_white, 0); surface_reset_target(); for (var i = 0; i < surfcount; i++) { var current_surf = surfs[i]; var current_surf_height = surface_get_height(current_surf); if ((drawy + current_surf_height) > maxsurfheight) { array_push(mastersurfs, mastersurf); mastersurf = surface_create(mastersurfwidth, maxsurfheight); surface_set_target(mastersurf); draw_clear_alpha(c_white, 0); surface_reset_target(); drawy = 0; } surface_set_target(mastersurf); draw_surface(current_surf, 0, drawy); surface_reset_target(); drawy += current_surf_height; } if (mastersurf != -4) array_push(mastersurfs, mastersurf); var msurfcount = array_length(mastersurfs); for (var i = 0; i < msurfcount; i++) { var file_name = working_directory + "/spriteDump/" + arg0 + "_" + string(i) + ".png"; surface_save(mastersurfs[i], file_name); } scr_debug_print("Exported " + string(msurfcount) + " sprite sheets."); for (var i = 0; i < surfcount; i++) surface_free(surfs[i]); for (var i = 0; i < msurfcount; i++) surface_free(mastersurfs[i]); show_debug_message_concat("all sprites dumped:", spritesdumped); } function scr_exportsheets_list(arg0, arg1 = []) { show_debug_message_concat("Sprite export called for: ", arg0); var surfs = []; var mastersurfwidth = 0; var spritesdumped = ""; for (var i = 0; i < array_length(arg1); i++) { if (sprite_exists(asset_get_index(arg1[i]))) { var sprite_name = arg1[i]; spritesdumped += ("\n" + arg1[i]); var spr = asset_get_index(arg1[i]); var imageindex_count = sprite_get_number(spr); var spritewidth = sprite_get_width(spr) + 12; var spriteheight = sprite_get_height(spr); var origin_x = sprite_get_xoffset(spr); var origin_y = sprite_get_yoffset(spr); var surf_width = max(spritewidth * imageindex_count, string_width(sprite_name) + 20); var surf_height = spriteheight + 48; var surf = surface_create(surf_width, surf_height); mastersurfwidth = max(mastersurfwidth, surf_width); surface_set_target(surf); draw_clear_alpha(c_white, 0); for (var j = 0; j < imageindex_count; j++) { if (imageindex_count > 1) { draw_set_font(fnt_small); draw_text_outline((j * spritewidth) + 1, 1, string(j)); } draw_sprite(spr, j, (j * spritewidth) + origin_x + 10, origin_y); } draw_set_font(fnt_main); draw_text_outline(5, spriteheight + 2, sprite_name); surface_reset_target(); array_push(surfs, surf); } } var maxsurfheight = 2500; var surfcount = array_length(surfs); if (surfcount == 0) { scr_debug_print("No sprites found to dump."); exit; } var mastersurfs = []; var mastersurf = -4; var drawy = 0; var sheet_index = 0; mastersurf = surface_create(mastersurfwidth, maxsurfheight); surface_set_target(mastersurf); draw_clear_alpha(c_white, 0); surface_reset_target(); for (var i = 0; i < surfcount; i++) { var current_surf = surfs[i]; var current_surf_height = surface_get_height(current_surf); if ((drawy + current_surf_height) > maxsurfheight) { array_push(mastersurfs, mastersurf); mastersurf = surface_create(mastersurfwidth, maxsurfheight); surface_set_target(mastersurf); draw_clear_alpha(c_white, 0); surface_reset_target(); drawy = 0; } surface_set_target(mastersurf); draw_surface(current_surf, 0, drawy); surface_reset_target(); drawy += current_surf_height; } if (mastersurf != -4) array_push(mastersurfs, mastersurf); var msurfcount = array_length(mastersurfs); for (var i = 0; i < msurfcount; i++) { var file_name = working_directory + "/spriteDump/" + arg0 + "_" + string(i) + ".png"; surface_save(mastersurfs[i], file_name); } scr_debug_print("Exported " + string(msurfcount) + " sprite sheets."); for (var i = 0; i < surfcount; i++) surface_free(surfs[i]); for (var i = 0; i < msurfcount; i++) surface_free(mastersurfs[i]); show_debug_message_concat("all sprites dumped:", spritesdumped); }